2010-02-15 14 views
9

Je tente de créer une requête SPARQL en utilisant Jena pour interroger DBpedia.Utilisation de Jena pour créer une requête SPARQL sur DBpedia

La requête fonctionne lorsque je l'utilise avec des outils autonomes (Twinkle) mais lorsque je la branche dans ce code Java, elle renvoie un ensemble vide.

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() ; 

Des idées de ce que je fais mal?

Répondre

10

Le problème est votre clause FROM <...>. Retirez-le et tout va bien. Avec cette clause en place, je soupçonne que le point de terminaison limite la requête au graphique avec ce nom, mais aucun tel graphique n'existe et il n'y a donc pas de résultat. Le problème est qu'il semble que la requête fonctionne sur le formulaire http://dbpedia.org/sparql. Cependant, un URI de graphique par défaut est défini, de sorte que la requête passe également par dessus ce graphique. Effacez-le et la requête ne fonctionne pas. Comme alternative, vous pouvez le définir pour récupérer des données distantes. Cela tire dans le rdf nommé qui mentionne trois lieux de naissance.

Si vous essayez de trouver le lieu de naissance de cette utilisation du musicien:

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

qui a fonctionné bien. merci! – Marcom