jcramalho

WebMapa: pedidos

May 7th, 2018
215
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://epl.di.uminho.pt:40003/repositories/mapa'
  7. const myupdateEndpoint = 'http://epl.di.uminho.pt:40003/repositories/mapa/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 }"
  20.  
  21.     client.query(query)
  22.             .execute()
  23.             .then(function(qres){
  24.                 console.log(JSON.stringify(qres))
  25.                 var resList = qres.results.bindings
  26.                 var dot = "digraph Portugal {\n" +
  27.                           'PT [shape=box,label="Portugal"];\n' +
  28.                           'distritos [shape=diamond,label="Distritos"];\n' +
  29.                           'PT -> distritos [color=blue];\n'
  30.  
  31.                 for(var i in resList){
  32.                     var distrito = resList[i].d.value
  33.                     var did = distrito.slice(distrito.indexOf('#')+1)
  34.                     var dnome = resList[i].nome.value
  35.                     var url = "http://localhost:3000/mapa/distrito/" + did
  36.  
  37.                     dot += 'd' + i + '[label="' + did + '",href="' + url + '"];\n'
  38.                     dot += 'distritos -> d' + i + ' [color=blue];\n'
  39.                     dot += 'nomeD' + i + ' [shape=box,label="' + dnome + '"];\n'
  40.                     dot += 'd'+i+' -> nomeD'+i+' [label="nome"];\n'
  41.                 }
  42.                     dot += "}"      
  43.                 res.render("showMapa", {renderingCode: 'd3.select("#graph").graphviz().renderDot(\`' + dot + '\`)'})
  44.             })
  45.             .catch((error)=>{
  46.                 res.render("error", {error:error})
  47.             })
  48. })
  49.  
  50. router.get('/distrito/:did', (req, res, next)=>{
  51.     var did = req.params.did
  52.     var query = "select * where {\n" +
  53.                 "m:"+did+" m:nome ?nome .\n" +
  54.                 "m:"+did+" m:temCidade ?c .\n" +
  55.                 "?c m:nome ?nomeC .\n" +
  56.                 "}"
  57.  
  58.     client.query(query)
  59.         .execute()
  60.         .then(function(qres){
  61.             console.log(JSON.stringify(qres))
  62.             var resList = qres.results.bindings
  63.             var dnome = resList[0].nome.value
  64.             var dot = "digraph Distrito {\n" +
  65.                     'PT [label="Portugal",href="http://localhost:3000/mapa"];\n' +
  66.                     'distritos [shape=diamond,label="Distritos"];\n' +
  67.                     'PT -> distritos ;\n' +
  68.                     'distritos -> \"' + dnome + '\";\n' +
  69.                     '\"' + dnome + '\" -> cidades ;\n'
  70.    
  71.             for(var i in resList){
  72.                 var cidade = resList[i].c.value
  73.                 var cid = cidade.slice(cidade.indexOf('#')+1)
  74.                 var url = "http://localhost:3000/mapa/cidade/" + cid
  75.                 var cnome = resList[i].nomeC.value
  76.    
  77.                 dot += 'c' + i + '[label="' + cid + '",href="' + url + '"];\n'
  78.                 dot += 'cidades -> c' + i + ';\n'
  79.                 dot += 'nomeC' + i + ' [shape=box,label="' + cnome + '"];\n'
  80.                 dot += 'c'+i+' -> nomeC'+i+' [label="nome"];\n'
  81.             }
  82.             dot += "}"      
  83.             res.render("showMapa", {renderingCode: 'd3.select("#graph").graphviz().renderDot(\`' + dot + '\`)'})
  84.             })
  85.             .catch((error)=>{
  86.                 res.render("error", {error:error})
  87.             })    
  88. })
  89.  
  90. router.get('/cidade/:id', (req, res, next)=>{
  91.     var cid = req.params.id
  92.     var query = "select * where{\n" +
  93.                 "m:" + cid + " m:nome ?nome .\n" +
  94.                 "m:" + cid + " m:descrição ?desc .\n" +
  95.                 "m:" + cid + " m:população ?pop .\n" +
  96.                 "m:" + cid + " m:pertenceDistrito ?d .\n" +
  97.                 "?d m:nome ?dnome }"
  98.  
  99.     client.query(query)
  100.         .execute()
  101.         .then(function(qres){
  102.             var resList = qres.results.bindings
  103.             var cnome = resList[0].nome.value
  104.             var cdesc = resList[0].desc.value
  105.             var cpop = resList[0].pop.value
  106.             var dnome = resList[0].dnome.value
  107.             var distritoURI = resList[0].d.value
  108.             var did = distritoURI.slice(distritoURI.indexOf('#')+1)
  109.  
  110.             var dot = "digraph Cidade {\n" +
  111.                       'PT [label="Portugal",href="http://localhost:3000/mapa"];\n' +
  112.                       'distritos [shape=diamond,label="Distritos"];\n' +
  113.                       'cidades [shape=diamond,label="Cidades"];\n' +
  114.                       '\"' + dnome + '\" [href="http://localhost:3000/mapa/distrito/' + did + '"];\n' +
  115.                       'PT -> distritos ;\n' +
  116.                       'distritos -> \"' + dnome + '";\n' +
  117.                       '"'+ dnome + '" -> cidades ;\n'+
  118.                       'cidades -> cidade ; \n' +
  119.                       'cidade -> "' + cnome + '" [label="nome"];\n'+
  120.                       'cidade -> "' + cdesc + '" [label="descrição"];\n'+
  121.                       'cidade -> "' + cpop + '" [label="população"];\n'
  122.  
  123.             dot += '}'
  124.             console.log('\n\nMapa:\n' + dot)
  125.             res.render("showMapa", {renderingCode: 'd3.select("#graph").graphviz().renderDot(\`' + dot + '\`)'})
  126.         })
  127.         .catch((error)=>{
  128.             res.render("error", {error:error})
  129.         })
  130.  })
  131.  
  132. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment