jcramalho

mapa.js (versão2)

May 7th, 2018
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var router = express.Router();
  3.  
  4. const SparqlClient = require('sparql-client-2')
  5. const SPARQL = SparqlClient.SPARQL
  6. const endpoint = 'http://localhost:7200/repositories/mapa-grande'
  7. const myupdateEndpoint = 'http://localhost:7200/repositories/mapa-grande/statements'
  8.  
  9. var client = new SparqlClient( endpoint, {updateEndpoint: myupdateEndpoint,
  10.                                defaultParameters: {format: 'json'}})
  11.  
  12. client.register({rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
  13.                  m: 'http://prc2018.di.uminho.pt/mapa#'})
  14.  
  15. /* GET home page. */
  16. router.get('/', function(req, res, next) {
  17.     var query = "select * where{\n" +
  18.                 "?d a m:Distrito .\n" +
  19.                 "?d m:nome ?nome } \n" +
  20.                 "order by ?nome"
  21.  
  22.     client.query(query)
  23.             .execute()
  24.             .then(function(qres){
  25.                 console.log(JSON.stringify(qres))
  26.                 var resList = qres.results.bindings
  27.                 var dot = "digraph Portugal {\n" +
  28.                           'rankdir=LR;'
  29.                           'PT [shape=box,label="Portugal"];\n' +
  30.                           'distritos [shape=diamond,label="Distritos"];\n' +
  31.                           'PT -> distritos [color=blue];\n'
  32.  
  33.                 for(var i in resList){
  34.                     var distrito = resList[i].d.value
  35.                     var did = distrito.slice(distrito.indexOf('#')+1)
  36.                     var dnome = resList[i].nome.value
  37.                     var url = "http://localhost:3000/mapa/distrito/" + did
  38.  
  39.                     dot += 'd' + i + '[label="' + did + '",href="' + url + '"];\n'
  40.                     dot += 'distritos -> d' + i + ' [color=blue];\n'
  41.                     dot += 'nomeD' + i + ' [shape=box,label="' + dnome + '"];\n'
  42.                     dot += 'd'+i+' -> nomeD'+i+' [label="nome"];\n'
  43.                 }
  44.                     dot += "}"      
  45.                 res.render("showMapa", {renderingCode: 'd3.select("#graph").graphviz().renderDot(\`' + dot + '\`)'})
  46.             })
  47.             .catch((error)=>{
  48.                 res.render("error", {error:error})
  49.             })
  50. })
  51.  
  52. router.get('/distrito/:did', (req, res, next)=>{
  53.     var did = req.params.did
  54.     var query = "select * where {\n" +
  55.                 "m:"+did+" m:nome ?nome .\n" +
  56.                 'OPTIONAL {\n' +
  57.                 'm:'+did+' m:temCidade ?c .\n' +
  58.                 '?c m:nome ?nomeC .\n' +
  59.                 '}\n' +
  60.                 "}"
  61.  
  62.     client.query(query)
  63.         .execute()
  64.         .then(function(qres){
  65.             var resList = qres.results.bindings
  66.             var dnome = resList[0].nome.value
  67.             var dot = "digraph Distrito {\n" +
  68.                     'rankdir=LR;\n' +
  69.                     'PT [label="Portugal",href="http://localhost:3000/mapa"];\n' +
  70.                     'distritos [shape=diamond,label="Distritos"];\n' +
  71.                     'PT -> distritos ;\n' +
  72.                     'distritos -> \"' + dnome + '\";\n' +
  73.                     '\"' + dnome + '\" -> cidades ;\n'
  74.    
  75.             for(var i in resList){
  76.                 var cidade = resList[i].c.value
  77.                 var cid = cidade.slice(cidade.indexOf('#')+1)
  78.                 var url = "http://localhost:3000/mapa/cidade/" + cid
  79.                 var cnome = resList[i].nomeC.value
  80.    
  81.                 dot += 'c' + i + '[label="' + cid + '",href="' + url + '"];\n'
  82.                 dot += 'cidades -> c' + i + ';\n'
  83.                 dot += 'nomeC' + i + ' [shape=box,label="' + cnome + '"];\n'
  84.                 dot += 'c'+i+' -> nomeC'+i+' [label="nome"];\n'
  85.             }
  86.             dot += "}"      
  87.             res.render("showMapa", {renderingCode: 'd3.select("#graph").graphviz().renderDot(\`' + dot + '\`)'})
  88.             })
  89.             .catch((error)=>{
  90.                 res.render("error", {error:error})
  91.             })    
  92. })
  93.  
  94. router.get('/cidade/:id', (req, res, next)=>{
  95.     var cid = req.params.id
  96.     var query = "select * where{\n" +
  97.                 "m:" + cid + " m:nome ?nome .\n" +
  98.                 "m:" + cid + " m:pertenceDistrito ?d .\n" +
  99.                 "?d m:nome ?dnome }"
  100.  
  101.     client.query(query)
  102.         .execute()
  103.         .then(function(qres){
  104.             var resList = qres.results.bindings
  105.             var cnome = resList[0].nome.value
  106.             //var cdesc = resList[0].desc.value
  107.             //var cpop = resList[0].pop.value
  108.             var dnome = resList[0].dnome.value
  109.             var distritoURI = resList[0].d.value
  110.             var did = distritoURI.slice(distritoURI.indexOf('#')+1)
  111.  
  112.             var dot = "digraph Cidade {\n" +
  113.                       'PT [label="Portugal",href="http://localhost:3000/mapa"];\n' +
  114.                       'distritos [shape=diamond,label="Distritos"];\n' +
  115.                       'cidades [shape=diamond,label="Cidades"];\n' +
  116.                       '\"' + dnome + '\" [href="http://localhost:3000/mapa/distrito/' + did + '"];\n' +
  117.                       'PT -> distritos ;\n' +
  118.                       'distritos -> \"' + dnome + '";\n' +
  119.                       '"'+ dnome + '" -> cidades ;\n'+
  120.                       'cidades -> cidade ; \n' +
  121.                       'cidade -> "' + cnome + '" [label="nome"];\n'
  122.                       //'cidade -> "' + cdesc + '" [label="descrição"];\n'+
  123.                       //'cidade -> "' + cpop + '" [label="população"];\n'
  124.  
  125.             dot += '}'
  126.             console.log('\n\nMapa:\n' + dot)
  127.             res.render("showMapa", {renderingCode: 'd3.select("#graph").graphviz().renderDot(\`' + dot + '\`)'})
  128.         })
  129.         .catch((error)=>{
  130.             res.render("error", {error:error})
  131.         })
  132.  })
  133.  
  134. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment