diff --git a/README.md b/README.md
index 6e2bc68..1afa099 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,11 @@
-# gfs
+# GlobalFactSync
+
DBpedia, which frequently crawls and analyses over 120 Wikipedia language editions has near complete information about (1) which facts are in infoboxes across all Wikipedias (2) where Wikidata is already used in those infoboxes. GlobalFactSyncRE will extract all infobox facts and their references to produce a tool for Wikipedia editors that detects and displays differences across infobox facts in an intelligent way to help sync infoboxes between languages and/or Wikidata. The extracted references will also be used to enhance Wikidata. Click Join below to receive GFS updates via {{ping}} to your Wikiaccount.
+
+# Applications
+
+## Factual Consensus Finder
+
+**TODO**
+
+# Services
diff --git a/factual-consensus-finder/.gitignore b/factual-consensus-finder/.gitignore
new file mode 100644
index 0000000..c2658d7
--- /dev/null
+++ b/factual-consensus-finder/.gitignore
@@ -0,0 +1 @@
+node_modules/
diff --git a/factual-consensus-finder/README.md b/factual-consensus-finder/README.md
new file mode 100755
index 0000000..c6c5ff0
--- /dev/null
+++ b/factual-consensus-finder/README.md
@@ -0,0 +1,6 @@
+# TODO
+# Usage
+
+```
+npm install
+```
diff --git a/factual-consensus-finder/app.js b/factual-consensus-finder/app.js
new file mode 100755
index 0000000..bd702a4
--- /dev/null
+++ b/factual-consensus-finder/app.js
@@ -0,0 +1,129 @@
+var express = require('express');
+// var createError = require('http-errors');
+// var path = require('path');
+// var cookieParser = require('cookie-parser');
+// var logger = require('morgan');
+var expressLayouts = require('express-ejs-layouts');
+// var conf = require('config')
+// var indexRouter = require('./routes/index');
+// var usersRouter = require('./routes/users');
+var dateTime = require('node-datetime');
+
+var conf = require('./config');
+var MongoClient = require('mongodb').MongoClient;
+var util = require('util');
+var connection;
+
+var getJSON = require('get-json');
+
+var app = express();
+
+var sourceList = conf.preference.split(",");
+sourceList.push("general");
+sourceList.sort();
+
+app.use(expressLayouts);
+//app.set('views', path.join(__dirname, 'views'));
+app.set('view engine', 'ejs');
+app.use(express.static('public'));
+
+
+MongoClient.connect(conf.mongo_url, function(err, client) {
+
+ if (err) return console.log(err);
+
+ connection = client.db(conf.database_name)
+});
+
+app.get('/', function(req, res) {
+
+ var s = req.query.s;
+ var p = req.query.p;
+ var src = req.query.src;
+
+ if( s == null ) s = conf.default_subject;
+ if( p == null ) p = conf.default_predicate;
+ if( src == null ) src = "general";
+
+ var original = s;
+ var locals;
+
+ //TODO logging
+ if ( s.includes("wikipedia.org/wiki/") ) {
+ s = s.replace("https://","http://");
+ s = s.replace("http://en.","http://");
+ s = s.replace("wikipedia.org/wiki/","dbpedia.org/resource/");
+ }
+
+ getJSON(conf.id_management+s).then( function (idResponse) {
+
+ if( s.startsWith("https://global.dbpedia")) {
+ console.log("[ "+dateTime.create().format('Y-m-d H:M:S')+" ]\t/\t"+original+"\t"+p);
+ } else {
+ console.log("[ "+dateTime.create().format('Y-m-d H:M:S')+" ]\t/\t"+original+">>"+idResponse['global']+"\t"+p);
+ }
+
+ connection.collection(conf.collection).find( {"subject.@id" : idResponse['global'] }).toArray(function (mongoError, mongoResponse) {
+ res.render('clientbased',{jarray: mongoResponse, subject: idResponse['global'], predicate: p,
+ source: src, util: util, conf: conf, locals: idResponse['locals'] });
+ })
+
+ }).catch(function (idError) {
+ console.log("[ "+dateTime.create().format('Y-m-d H:M:S')+" ]\t/\t"+original+"\t"+p+"\tunmanaged id");
+
+ connection.collection(conf.collection).find( {"subject.@id" : s }).toArray(function (mongoError, mongoResponse) {
+ res.render('clientbased',{jarray: mongoResponse, subject: s, predicate: p,
+ source: src, util: util, conf: conf, locals: [s] });
+ })
+ });
+
+
+});
+
+
+app.get('/raw', function(req, res) {
+
+ var s = req.query.s;
+ var p = req.query.p;
+ var src = req.query.src;
+
+ if( s == null ) s = conf.default_subject;
+ if( p == null ) p = conf.default_predicate;
+ if( src == null ) src = "general";
+
+ var locals = [s];
+
+ getJSON(conf.id_management+s).then( function (idResponse) {
+ console.log("[ "+dateTime.create().format('Y-m-d H:M:S')+" ]\t/\t"+s+"\t"+p);
+ s = idResponse['global'];
+ locals = idResponse['locals'];
+ }).catch(function (idError) {
+ console.log("[ "+dateTime.create().format('Y-m-d H:M:S')+" ]\t/\t"+s+"\t"+p+"\tunmanaged id");
+ });
+
+ connection.collection(conf.collection).find( {"subject.@id" : s }).toArray(function (mongoError, mongoResponse) {
+ res.send(JSON.stringify({jarray: mongoResponse, subject: s, predicate: p, source: src}));
+ });
+});
+
+app.get('/label', function (req,res) {
+
+ var s = req.query.s;
+
+ //TODO better conf
+ var p = conf.default_predicate;
+
+ if( s == null ) s = conf.default_subject;
+
+ console.log("[ "+dateTime.create().format('Y-m-d H:M:S')+" ]\t/label\t"+s);
+
+ connection.collection(conf.collection)
+ .find( { "subject.@id" : s, "predicate.@id" : p } )
+ .project( { "objects.object.@value" :1, _id: 0 } )
+ .toArray(function (mongoError, mongoResponse) {
+ res.send(JSON.stringify(mongoResponse));
+ })
+});
+
+
+module.exports = app;
diff --git a/factual-consensus-finder/bin/www.js b/factual-consensus-finder/bin/www.js
new file mode 100755
index 0000000..bcdd405
--- /dev/null
+++ b/factual-consensus-finder/bin/www.js
@@ -0,0 +1,93 @@
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+var app = require('../app');
+
+var debug = require('debug')('fusion-wiki:server');
+var http = require('http');
+
+var conf = require('../config')
+
+/**
+ * Get port from environment and store in Express.
+ */
+
+// var port = normalizePort(process.env.PORT || process.argv[2]);
+var port = normalizePort(process.env.PORT || conf.expose_port);
+app.set('port', port);
+
+/**
+ * Create HTTP server.
+ */
+
+var server = http.createServer(app);
+
+/**
+ * Listen on provided port, on all network interfaces.
+ */
+
+server.listen(port, '0.0.0.0');
+server.on('error', onError);
+server.on('listening', onListening);
+console.log('listen on 0.0.0.0:'+port);
+/**
+ * Normalize a port into a number, string, or false.
+ */
+
+function normalizePort(val) {
+ var port = parseInt(val, 10);
+
+ if (isNaN(port)) {
+ // named pipe
+ return val;
+ }
+
+ if (port >= 0) {
+ // port number
+ return port;
+ }
+
+ return false;
+}
+
+/**
+ * Event listener for HTTP server "error" event.
+ */
+
+function onError(error) {
+ if (error.syscall !== 'listen') {
+ throw error;
+ }
+
+ var bind = typeof port === 'string'
+ ? 'Pipe ' + port
+ : 'Port ' + port;
+
+ // handle specific listen errors with friendly messages
+ switch (error.code) {
+ case 'EACCES':
+ console.error(bind + ' requires elevated privileges');
+ process.exit(1);
+ break;
+ case 'EADDRINUSE':
+ console.error(bind + ' is already in use');
+ process.exit(1);
+ break;
+ default:
+ throw error;
+ }
+}
+
+/**
+ * Event listener for HTTP server "listening" event.
+ */
+
+function onListening() {
+ var addr = server.address();
+ var bind = typeof addr === 'string'
+ ? 'pipe ' + addr
+ : 'port ' + addr.port;
+ debug('Listening on ' + bind);
+}
diff --git a/factual-consensus-finder/config.js b/factual-consensus-finder/config.js
new file mode 100755
index 0000000..cf6323a
--- /dev/null
+++ b/factual-consensus-finder/config.js
@@ -0,0 +1,14 @@
+module.exports = {
+ expose_port: "9005",
+
+ mongo_url: "mongodb://readonly:gfs@88.99.242.78:8989/prefusion",
+ database_name: "prefusion",
+ collection: "provenance",
+
+ id_management: "https://global.dbpedia.org/same-thing/lookup/?uri=",
+
+ preference: "wikidata.dbpedia.org,en.dbpedia.org,de.dbpedia.org,fr.dbpedia.org,nl.dbpedia.org,sv.dbpedia.org",
+
+ default_subject: "https://global.dbpedia.org/id/4KKSo",
+ default_predicate: "http://www.w3.org/2000/01/rdf-schema#label"
+};
diff --git a/factual-consensus-finder/file b/factual-consensus-finder/file
new file mode 100644
index 0000000..ba0fa0b
--- /dev/null
+++ b/factual-consensus-finder/file
@@ -0,0 +1,247 @@
+<%
+var othersrc = ["geonames.org","permid.org","dnb.de","kb.nl"];
+var labels = new Set();
+var ps = [];
+var selected;
+for(i = 0; i < jarray.length; i++) {
+ if ( jarray[i].predicate == "http://www.w3.org/2000/01/rdf-schema#label") {
+ var objectArray = jarray[i].objects;
+ for( k=0; k < objectArray.length; k++) {
+ labels.add(objectArray[k].value["@value"])
+ }
+ }
+ ps.push(jarray[i].predicate)
+ if ( jarray[i].predicate == predicate ) {
+ selected = jarray[i];
+ }
+}
+ps.sort();
+if( selected == null ) selected = jarray[0];
+var linkMap = new Map();
+var derivedFrom = [] //( iriprov == null ) ? [] : iriprov.derivedFrom; //selected == null || iriprov == null )
+if( iriprov == null ) { //selected == null || iriprov == null ) {
+ sourceList.forEach(function (value) {
+ if( value.includes("wikidata" ) ) {
+ linkMap.set("wikidata",' ')
+ } else if ( value.includes("dbpedia") ){ // HARDCODED LIST !
+ linkMap.set(value,' ')
+ } else {
+ linkMap.set(value,"");
+ }
+ })
+}
+derivedFrom.forEach(function (derived) {
+ var value = derived.value;
+ var tag = value.split("/").pop();
+ if( value.includes("wikidata") ) {
+ linkMap.set("wikidata.dbpedia.org",' ')
+ } else if (value.includes("dbpedia") ) {
+ var lan = value.split("//")[1].split(".")[0];
+ lan = ( lan == "dbpedia" ) ? "en" : lan;
+ var wikilink = ( value == "en" ) ? 'http://wikipedia.org/wiki/'+tag : 'http://'+lan+'.wikipedia.org/wiki/'+tag;
+ linkMap.set(lan+".dbpedia.org",' ')
+ } else if (value.includes("geonames.org") ) {
+ linkMap.set("geonames.org",'geonames.org ');
+ } else if (value.includes("permid.org") ) {
+ linkMap.set("permid.org",'permid.org ');
+ } else if (value.includes("d-nb.info") ) {
+ linkMap.set("dnb.de",'dnb.de ');
+ } else if (value.includes("data.bibliotheken.nl") ) {
+ linkMap.set("kb.nl",'kb.nl ');
+ } else {
+ linkMap.set(value,"");
+ }
+})
+%>
+
+
+ <%
+ var labarr = Array.from(labels);
+ labarr.sort();
+ %>
+
About: <%- labarr.join(' | ') %>
+
0 different values in 0 sources
+
+
+
+
+document.getElementById("info").innerText = '<%- objects.length %> different value/s in <%- Array.from(maxSources).length %> source/s';
\ No newline at end of file
diff --git a/factual-consensus-finder/package-lock.json b/factual-consensus-finder/package-lock.json
new file mode 100755
index 0000000..cd27b31
--- /dev/null
+++ b/factual-consensus-finder/package-lock.json
@@ -0,0 +1,995 @@
+{
+ "name": "fusion-wiki",
+ "version": "0.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
+ },
+ "acorn-globals": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
+ "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
+ "requires": {
+ "acorn": "^2.1.0"
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "asap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
+ "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0="
+ },
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
+ "basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
+ },
+ "body-parser": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.1",
+ "http-errors": "~1.6.2",
+ "iconv-lite": "0.4.19",
+ "on-finished": "~2.3.0",
+ "qs": "6.5.1",
+ "raw-body": "2.3.2",
+ "type-is": "~1.6.15"
+ }
+ },
+ "bson": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz",
+ "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ=="
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "character-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz",
+ "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY="
+ },
+ "clean-css": {
+ "version": "3.4.28",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
+ "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
+ "requires": {
+ "commander": "2.8.x",
+ "source-map": "0.4.x"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
+ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
+ "requires": {
+ "graceful-readlink": ">= 1.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+ }
+ }
+ },
+ "commander": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
+ "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0="
+ },
+ "constantinople": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz",
+ "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=",
+ "requires": {
+ "acorn": "^2.1.0"
+ }
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+ },
+ "cookie-parser": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz",
+ "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=",
+ "requires": {
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6"
+ }
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "css": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz",
+ "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=",
+ "requires": {
+ "css-parse": "1.0.4",
+ "css-stringify": "1.0.5"
+ }
+ },
+ "css-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz",
+ "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90="
+ },
+ "css-stringify": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz",
+ "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "ejs": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.8.tgz",
+ "integrity": "sha512-QIDZL54fyV8MDcAsO91BMH1ft2qGGaHIJsJIA/+t+7uvXol1dm413fPcUgUb4k8F/9457rx4/KFE4XfDifrQxQ=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "express": {
+ "version": "4.16.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+ "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+ "requires": {
+ "accepts": "~1.3.5",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.2",
+ "content-disposition": "0.5.2",
+ "content-type": "~1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.1.1",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.3",
+ "qs": "6.5.1",
+ "range-parser": "~1.2.0",
+ "safe-buffer": "5.1.1",
+ "send": "0.16.2",
+ "serve-static": "1.13.2",
+ "setprototypeof": "1.1.0",
+ "statuses": "~1.4.0",
+ "type-is": "~1.6.16",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "express-ejs-layouts": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/express-ejs-layouts/-/express-ejs-layouts-2.4.0.tgz",
+ "integrity": "sha512-RVQNw0tQLiRaNYoUKBqHsBbHVTrMNPUWS1D1NhKC4F0Hyf82fxCLk5pQJehUebcu5o7GWjhHBszLsaZ7SNAycg=="
+ },
+ "finalhandler": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.4.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "get-json": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-json/-/get-json-1.0.1.tgz",
+ "integrity": "sha512-buUOE2bLaxIsF6zGIrwvsTVlvgU85qwAWf0Hgq/EJBBoSssUqOauXWKpsh4wgPdTlZHEVllLtphiuIzFM4UEHQ==",
+ "requires": {
+ "is-node": "0.0.0",
+ "jsonp": "0.0.4",
+ "phin": "^2.2.6"
+ }
+ },
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ipaddr.js": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
+ "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "is-node": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/is-node/-/is-node-0.0.0.tgz",
+ "integrity": "sha1-h91lC4f7ajnFDKr+4On2g17BXkE="
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+ },
+ "jade": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz",
+ "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=",
+ "requires": {
+ "character-parser": "1.2.1",
+ "clean-css": "^3.1.9",
+ "commander": "~2.6.0",
+ "constantinople": "~3.0.1",
+ "jstransformer": "0.0.2",
+ "mkdirp": "~0.5.0",
+ "transformers": "2.1.0",
+ "uglify-js": "^2.4.19",
+ "void-elements": "~2.0.1",
+ "with": "~4.0.0"
+ }
+ },
+ "jsonp": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.0.4.tgz",
+ "integrity": "sha1-lGZaS3caq+y4qshBNbmVlHVpGL0=",
+ "requires": {
+ "debug": "*"
+ }
+ },
+ "jstransformer": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz",
+ "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=",
+ "requires": {
+ "is-promise": "^2.0.0",
+ "promise": "^6.0.1"
+ }
+ },
+ "kareem": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.0.tgz",
+ "integrity": "sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg=="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "mongodb": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.7.tgz",
+ "integrity": "sha512-n/14kMJEoARXz1qhpNPhUocqy+z5130jhqgEIX1Tsl8UVpHrndQ8et+VmgC4yPK/I8Tcgc93JEMQCHTekBUnNA==",
+ "requires": {
+ "mongodb-core": "3.0.7"
+ }
+ },
+ "mongodb-core": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.7.tgz",
+ "integrity": "sha512-z6YufO7s40wLiv2ssFshqoLS4+Kf+huhHq6KZ7gDArsKNzXYjAwTMnhEIJ9GQ8fIfBGs5tBLNPfbIDoCKGPmOw==",
+ "requires": {
+ "bson": "~1.0.4",
+ "require_optional": "^1.0.1"
+ }
+ },
+ "mongoose": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.5.3.tgz",
+ "integrity": "sha512-zlIiBhWHd5+mG3qJPcajrj9bMzjWesJeLaJsVrKVpOZy0XplphiQ8Evk9GiXJqy9IwDVDkoRFfzmBeiiVx2VYQ==",
+ "requires": {
+ "async": "2.6.1",
+ "bson": "~1.1.1",
+ "kareem": "2.3.0",
+ "mongodb": "3.2.2",
+ "mongodb-core": "3.2.2",
+ "mongoose-legacy-pluralize": "1.0.2",
+ "mpath": "0.5.1",
+ "mquery": "3.2.0",
+ "ms": "2.1.1",
+ "regexp-clone": "0.0.1",
+ "safe-buffer": "5.1.2",
+ "sift": "7.0.1",
+ "sliced": "1.0.1"
+ },
+ "dependencies": {
+ "bson": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
+ "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
+ },
+ "mongodb": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.2.tgz",
+ "integrity": "sha512-xQ6apOOV+w7VFApdaJpWhYhzartpjIDFQjG0AwgJkLh7dBs7PTsq4A3Bia2QWpDohmAzTBIdQVLMqqLy0mwt3Q==",
+ "requires": {
+ "mongodb-core": "3.2.2",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mongodb-core": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.2.tgz",
+ "integrity": "sha512-YRgC39MuzKL0uoGoRdTmV1e9m47NbMnYmuEx4IOkgWAGXPSEzRY7cwb3N0XMmrDMnD9vp7MysNyAriIIeGgIQg==",
+ "requires": {
+ "bson": "^1.1.1",
+ "require_optional": "^1.0.1",
+ "safe-buffer": "^5.1.2",
+ "saslprep": "^1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "mongoose-legacy-pluralize": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
+ "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
+ },
+ "morgan": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
+ "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
+ "requires": {
+ "basic-auth": "~2.0.0",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "on-headers": "~1.0.1"
+ }
+ },
+ "mpath": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.5.1.tgz",
+ "integrity": "sha512-H8OVQ+QEz82sch4wbODFOz+3YQ61FYz/z3eJ5pIdbMEaUzDqA268Wd+Vt4Paw9TJfvDgVKaayC0gBzMIw2jhsg=="
+ },
+ "mquery": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.0.tgz",
+ "integrity": "sha512-qPJcdK/yqcbQiKoemAt62Y0BAc0fTEKo1IThodBD+O5meQRJT/2HSe5QpBNwaa4CjskoGrYWsEyjkqgiE0qjhg==",
+ "requires": {
+ "bluebird": "3.5.1",
+ "debug": "3.1.0",
+ "regexp-clone": "0.0.1",
+ "safe-buffer": "5.1.2",
+ "sliced": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ },
+ "node-datetime": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/node-datetime/-/node-datetime-2.1.2.tgz",
+ "integrity": "sha512-eev1F0IPKSu3zvASMtH8ic4znGpfXdq9yc8yc/EVx6bk57u7bS2iZKVZ8ll1ZeH/IEQ3qFb04FB70PCNXSIp4w=="
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+ },
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+ "requires": {
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+ },
+ "promise": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
+ "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=",
+ "requires": {
+ "asap": "~1.0.0"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
+ "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.6.0"
+ }
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+ "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": ">= 1.3.1 < 2"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
+ }
+ }
+ },
+ "regexp-clone": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz",
+ "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "require_optional": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
+ "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
+ "requires": {
+ "resolve-from": "^2.0.0",
+ "semver": "^5.1.0"
+ }
+ },
+ "resolve-from": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ },
+ "saslprep": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.2.tgz",
+ "integrity": "sha512-4cDsYuAjXssUSjxHKRe4DTZC0agDwsCqcMqtJAQPzC74nJ7LfAJflAtC1Zed5hMzEQKj82d3tuzqdGNRsLJ4Gw==",
+ "optional": true,
+ "requires": {
+ "sparse-bitfield": "^3.0.3"
+ }
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.2",
+ "send": "0.16.2"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "sift": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
+ "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ },
+ "sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
+ "optional": true,
+ "requires": {
+ "memory-pager": "^1.0.2"
+ }
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+ },
+ "transformers": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz",
+ "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=",
+ "requires": {
+ "css": "~1.0.8",
+ "promise": "~2.0",
+ "uglify-js": "~2.2.5"
+ },
+ "dependencies": {
+ "is-promise": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
+ "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU="
+ },
+ "promise": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz",
+ "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=",
+ "requires": {
+ "is-promise": "~1"
+ }
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ },
+ "uglify-js": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz",
+ "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=",
+ "requires": {
+ "optimist": "~0.3.5",
+ "source-map": "~0.1.7"
+ }
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.6.16",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.18"
+ }
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "requires": {
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "optional": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ },
+ "with": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz",
+ "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=",
+ "requires": {
+ "acorn": "^1.0.1",
+ "acorn-globals": "^1.0.3"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz",
+ "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ="
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+}
diff --git a/factual-consensus-finder/package.json b/factual-consensus-finder/package.json
new file mode 100755
index 0000000..ccc0099
--- /dev/null
+++ b/factual-consensus-finder/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "fusion-wiki",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "start": "node ./bin/www"
+ },
+ "dependencies": {
+ "cookie-parser": "~1.4.3",
+ "debug": "~2.6.9",
+ "ejs": "^2.5.8",
+ "express": "~4.16.0",
+ "express-ejs-layouts": "^2.4.0",
+ "get-json": "^1.0.0",
+ "http-errors": "~1.6.2",
+ "jade": "~1.11.0",
+ "mongodb": "^3.0.7",
+ "mongoose": "^5.5.3",
+ "morgan": "^1.9.1",
+ "node-datetime": "^2.1.2"
+ }
+}
diff --git a/factual-consensus-finder/public/images/200px-dbpedia.png b/factual-consensus-finder/public/images/200px-dbpedia.png
new file mode 100755
index 0000000..aa605bc
Binary files /dev/null and b/factual-consensus-finder/public/images/200px-dbpedia.png differ
diff --git a/factual-consensus-finder/public/images/dbpedia.ico b/factual-consensus-finder/public/images/dbpedia.ico
new file mode 100755
index 0000000..ba4fb0f
Binary files /dev/null and b/factual-consensus-finder/public/images/dbpedia.ico differ
diff --git a/factual-consensus-finder/public/images/dbpedia.png b/factual-consensus-finder/public/images/dbpedia.png
new file mode 100755
index 0000000..c281183
Binary files /dev/null and b/factual-consensus-finder/public/images/dbpedia.png differ
diff --git a/factual-consensus-finder/public/images/wikidata.ico b/factual-consensus-finder/public/images/wikidata.ico
new file mode 100755
index 0000000..f56ae5b
Binary files /dev/null and b/factual-consensus-finder/public/images/wikidata.ico differ
diff --git a/factual-consensus-finder/public/images/wikipedia.ico b/factual-consensus-finder/public/images/wikipedia.ico
new file mode 100755
index 0000000..e700218
Binary files /dev/null and b/factual-consensus-finder/public/images/wikipedia.ico differ
diff --git a/factual-consensus-finder/public/javascripts/main.js b/factual-consensus-finder/public/javascripts/main.js
new file mode 100755
index 0000000..d03e2bc
--- /dev/null
+++ b/factual-consensus-finder/public/javascripts/main.js
@@ -0,0 +1,27 @@
+// jQuery.ajax({
+// url: "/dev4040/query",
+// type: "GET",
+//
+// contentType: 'application/json; charset=utf-8',
+// success: function(resultData) {
+// response = resultData;
+// },
+// error : function(jqXHR, textStatus, errorThrown) {
+// },
+//
+// timeout: 120000,
+// });
+//
+// document.getElementById("debug").innerText = response;
+// function createTable(data) {
+// var table = document.getElementById("fusionTable");
+// for(i=0; i< 2; i++) {
+// var row = table.insertRow();
+// var cell1 = row.insertCell(0);
+// var cell2 = row.insertCell(1);
+// cell1.innerHTML = "NEW CELL1";
+// cell2.innerHTML = "NEW CELL2";
+// }
+// }
+
+// <%- href == null ? "" : ''+x.value['@id']+" " %>
\ No newline at end of file
diff --git a/factual-consensus-finder/public/stylesheets/style.css b/factual-consensus-finder/public/stylesheets/style.css
new file mode 100755
index 0000000..a9e9367
--- /dev/null
+++ b/factual-consensus-finder/public/stylesheets/style.css
@@ -0,0 +1,37 @@
+body {
+ padding: 50px;
+ font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
+}
+
+a {
+ color: #0071ff;
+}
+
+.invis {
+ display: none;
+ border: 0;
+ border-bottom: 1px solid #ccc;
+}
+
+.content {
+ padding-left: 70px;
+ padding-right: 40px;
+}
+
+.foo {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ background: whitesmoke;
+ text-align: right;
+}
+
+.hidden-col {
+ visibility: hidden;
+}
+
+.iconlinks {
+ border-radius: 50%;
+ height: 20px;
+}
\ No newline at end of file
diff --git a/factual-consensus-finder/routes/index.js b/factual-consensus-finder/routes/index.js
new file mode 100755
index 0000000..ecca96a
--- /dev/null
+++ b/factual-consensus-finder/routes/index.js
@@ -0,0 +1,9 @@
+var express = require('express');
+var router = express.Router();
+
+/* GET home page. */
+router.get('/', function(req, res, next) {
+ res.render('index', { title: 'Express' });
+});
+
+module.exports = router;
diff --git a/factual-consensus-finder/routes/users.js b/factual-consensus-finder/routes/users.js
new file mode 100755
index 0000000..623e430
--- /dev/null
+++ b/factual-consensus-finder/routes/users.js
@@ -0,0 +1,9 @@
+var express = require('express');
+var router = express.Router();
+
+/* GET users listing. */
+router.get('/', function(req, res, next) {
+ res.send('respond with a resource');
+});
+
+module.exports = router;
diff --git a/factual-consensus-finder/views/clientbased.ejs b/factual-consensus-finder/views/clientbased.ejs
new file mode 100755
index 0000000..fc05947
--- /dev/null
+++ b/factual-consensus-finder/views/clientbased.ejs
@@ -0,0 +1,380 @@
+<%
+ var labels = new Set()
+ var objects = []
+ var sources = new Set()
+ sources.add('general')
+
+ var color = "white";
+
+ var predicates = new Set()
+
+ function getLangTag ( singleFileLocator ) {
+
+ var langTagStartPos = String(singleFileLocator).indexOf("lang=")
+
+ if ( langTagStartPos > -1 ) {
+
+ var afterLang = String(singleFileLocator).substr(langTagStartPos+5)
+
+ if ( afterLang.indexOf('_') > -1 ) {
+
+ return afterLang.substr(0,afterLang.indexOf('_'))
+
+ } else {
+
+ return afterLang.substr(0,afterLang.indexOf('.'))
+ }
+ } else {
+
+ return "wikidata"
+ }
+ }
+
+ jarray.forEach( function (response) {
+
+ predicates.add(response['predicate']['@id'])
+
+ if ( response['predicate']['@id'] == predicate ) {
+ response.objects.forEach( function ( prov ) {
+ prov["source"].forEach( function ( source ) {
+ sources.add(getLangTag(source['@id']))
+ })
+ })
+ objects.push(response['objects'])
+ }
+
+ if ( response['predicate']['@id'] == conf.default_predicate ) {
+ response['objects'].forEach( function ( prov ) {
+ labels.add(prov['object']['@value'])
+ })
+ }
+ })
+
+ var sourceList = Array.from(sources).sort()
+ var predicateList = Array.from(predicates).sort()
+
+ var refMap = new Map();
+
+ locals.forEach(function (iri) {
+
+ var tag = iri.split("/").pop();
+
+ if( iri.includes("www.wikidata") ) {
+
+ refMap.set("wikidata",' ')
+
+ } else if (iri.includes("dbpedia") ) {
+
+ var lan = iri.split("//")[1].split(".")[0];
+ lan = ( lan == "dbpedia" ) ? "en" : lan;
+ var wikilink = ( iri == "en" ) ? 'http://wikipedia.org/wiki/'+tag : 'http://'+lan+'.wikipedia.org/wiki/'+tag;
+ refMap.set(lan,' ')
+
+ } else {
+ refMap.set(iri,"");
+ }
+ })
+%>
+
+
+
+
About: <%- Array.from(labels).sort().join(' | ') %>
+
+
+<% if( false ) {%>
+
+<% } %>
+
+
+
+
+
+
+
+
+
0 different values from 0 sources
+
+
+
+
+
+
+
+
diff --git a/factual-consensus-finder/views/footer.ejs b/factual-consensus-finder/views/footer.ejs
new file mode 100755
index 0000000..8d52409
--- /dev/null
+++ b/factual-consensus-finder/views/footer.ejs
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/factual-consensus-finder/views/header.ejs b/factual-consensus-finder/views/header.ejs
new file mode 100755
index 0000000..7d9d72a
--- /dev/null
+++ b/factual-consensus-finder/views/header.ejs
@@ -0,0 +1,5 @@
+
+
+
Factual Consensus Finder
+
+
diff --git a/factual-consensus-finder/views/importhead.ejs b/factual-consensus-finder/views/importhead.ejs
new file mode 100755
index 0000000..98e98a3
--- /dev/null
+++ b/factual-consensus-finder/views/importhead.ejs
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/factual-consensus-finder/views/index.ejs b/factual-consensus-finder/views/index.ejs
new file mode 100755
index 0000000..a86b047
--- /dev/null
+++ b/factual-consensus-finder/views/index.ejs
@@ -0,0 +1,40 @@
+
+
+<% function getMethods(obj)
+{
+ var res = [];
+ for(var m in obj) {
+ if(typeof obj[m] == "function") {
+ res.push(m)
+ }
+ }
+ return res;
+}
+
+%>
+
+ Fixed s,p
+ Uri subject
+ Name label
+ Property
+
+ dbo:birthDate
+ rdf:type
+ rdfs:label (default)
+ dbo:leader
+
+
+ Stats s,p
+
+<% for(i= 0; i < 5; i++) { %>
+ Test
+<% }%>
\ No newline at end of file
diff --git a/factual-consensus-finder/views/layout.ejs b/factual-consensus-finder/views/layout.ejs
new file mode 100755
index 0000000..a7fa3f2
--- /dev/null
+++ b/factual-consensus-finder/views/layout.ejs
@@ -0,0 +1,17 @@
+
+
+
+ <%- include importhead.ejs%>
+
+ Factual Consensus Finder
+
+
+
+
+
+
+<%- include header.ejs%>
+<%- body %>
+<%- include footer.ejs%>
+
+
diff --git a/factual-consensus-finder/views/prop.ejs b/factual-consensus-finder/views/prop.ejs
new file mode 100755
index 0000000..0a74db1
--- /dev/null
+++ b/factual-consensus-finder/views/prop.ejs
@@ -0,0 +1,49 @@
+
+<%
+ var myMap = new Map();
+ jarray.forEach(function (v) {
+ v.objects.forEach(function (o) {
+ o.source.forEach(function (s) {
+ if(myMap.has(s['@value'])) {
+ myMap.set(s['@value'],myMap.get(s['@value'])+1)
+ } else {
+ myMap.set(s['@value'],1)
+
+ }
+ })
+
+ })
+})
+%>
+
+
+
diff --git a/factual-consensus-finder/views/test.ejs b/factual-consensus-finder/views/test.ejs
new file mode 100755
index 0000000..6738a7d
--- /dev/null
+++ b/factual-consensus-finder/views/test.ejs
@@ -0,0 +1,101 @@
+
+<%
+
+var srclist = ['general','fr','nl'];
+var labels = new Set();
+var ps = [];
+var selected;
+for(i = 0; i < jarray.length; i++) {
+ if ( jarray[i].predicate == "http://www.w3.org/2000/01/rdf-schema#label") {
+ var objects = jarray[i].objects;
+ for( k=0; k < objects.length; k++) {
+ labels.add(objects[k].value["@value"])
+ }
+ }
+ ps.push(jarray[i].predicate)
+ if ( jarray[i].predicate == predicate ) {
+ selected = jarray[i];
+ }
+}
+ps.sort();
+%>
+
+
+
+
+
About: <%- Array.from(labels).join(' | ') %>
+
+ value source selected
+<%
+var objects = selected.objects
+objects.forEach(function (x) {
+ var sources = [];
+ for( s = 0 ; s < x.source.length; s++ ) {
+ if(x.source[s]['@value'] == src ) {
+ sources.push(''+x.source[s]['@value']+" ")
+ } else {
+ sources.push(x.source[s]['@value'])
+ }
+ }
+ var color = "white";
+ if( x.selected == true ) color = "white";
+ // if( x.source.contains("fr") ) color = "grey";
+%>
+ <%- x.value['@value'] %><%- x.value['@id'] %> <%- sources.join(' | ')%> <%- x.selected %>
+<% }) %>
+
+
+
\ No newline at end of file