2016-11-06 1 views
0

Je cherche des informations sur un lieu (ex: New York http://dbpedia.org/page/New_York). J'essaie d'avoir des informations suchs comme nearestCity, musée) ... Ma demande ne retourne rien ...Trouver des informations sur un lieu

String name = "New_York"; 
String s4 = "PREFIX g: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n" + 
      "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" + 
      "PREFIX onto: <http://dbpedia.org/ontology/>\n" + 
      "PREFIX dbpedia: <http://dbpedia.org/resource/>PREFIX dcterms: <http://purl.org/dc/terms/>\n"+ 
      "PREFIX dp: <http://dbpedia.org/resource/>\n"+ 
      "PREFIX dbprop: <http://dbpedia.org/property/>\n" + 
      "PREFIX grs: <http://www.georss.org/georss/>\n"+ 
      "PREFIX dbpedia-oll: <http://dbpedia.org/ontology/> \n"+ 
      "PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>PREFIX category: <http://dbpedia.org/resource/Category:>\n"+ 
      "\n" + 
      "SELECT ?nearestCity \n" + 

      "WHERE\n" + 
      "{ OPTIONAL{onto:"+name+" grs:nearestCity ?nearestCity .}\n"+ 
    " }\n" + 
      "LIMIT 300\n" + 
      ""; 
+0

Veuillez publier la véritable requête SPARQL, pas la concaténation Java String. – AKSW

Répondre

2

Il y a des problèmes de couple avec la requête que vous faites:

1) Quelques namespaces sont faux: la ressource New_York a l'URI: http://dbpedia.org/resource/New_York. Dans votre requête, cela se traduirait par "dbpedia:"+name au lieu de "onto:"+name.

2) Les propriétés que vous recherchez indiquent la ressource New_York, et non l'inverse. Par exemple, pour la ville la plus proche l'un, c'est la requête qui fonctionne (notez les espaces de noms à nouveau pour la propriété):

SELECT ?nearestCity where { 
?nearestCity <http://dbpedia.org/property/nearestCity> <http://dbpedia.org/resource/New_York>. 
}LIMIT 300 

(Voir results)

Et pour le musée:

SELECT ?m where { 
    ?m <http://dbpedia.org/ontology/museum> <http://dbpedia.org/resource/New_York>. 
    }LIMIT 300 

(Voir results)