2010-02-15 12 views
9

Ich versuche, eine SPARQL-Abfrage mit Jena zu DBpedia Abfrage erstellen.Verwenden von Jena zum Erstellen einer SPARQL-Abfrage auf DBpedia

Die Abfrage funktioniert, wenn ich es mit Standalone-Tools (Twinkle) verwende, aber wenn ich es in diesem Java-Code anschließen, gibt es eine leere Menge zurück.

String sparqlQueryString1 = "PREFIX dbont: <http://dbpedia.org/ontology/> " + 
     "PREFIX dbp: <http://dbpedia.org/property/>" + 
     "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>" + 
     " SELECT ?musician ?place" + 
     " FROM<http://dbpedia.org/resource/Daphne_Oram>" + 
     " WHERE { " + 
     "  ?musician dbont:birthPlace ?place ." + 
     " }"; 

Query query = QueryFactory.create(sparqlQueryString1); 
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query); 

ResultSet results = qexec.execSelect(); 
ResultSetFormatter.out(System.out, results, query);  

qexec.close() ; 

Irgendwelche Ideen, was ich falsch mache?

Antwort

10

Das Problem ist Ihre FROM <...> Klausel. Entferne es und alles ist gut. Mit dieser Klausel vermute ich, dass der Endpunkt die Abfrage auf den Graphen mit diesem Namen einschränkt, aber kein solcher Graph existiert und daher gibt es kein Ergebnis.

Die verwirrende Sache ist, dass es scheint, als ob die Abfrage auf dem Formular unter http://dbpedia.org/sparql funktioniert. Allerdings wird dort ein Standard-Graph-URI gesetzt, so dass die Abfrage auch über diesen Graphen geht. Löschen Sie es und die Abfrage funktioniert nicht. Alternativ können Sie festlegen, dass Remote-Daten abgerufen werden. Das zieht das genannte rdf an, das drei Geburtsorte erwähnt.

Wenn Sie versuchen, den Geburtsort des Musikers Verwendung zu finden:

{ <http://dbpedia.org/resource/Daphne_Oram> dbont:birthPlace ?place . } 
+0

, die gut gearbeitet. danke! – Marcom

Verwandte Themen