2010-02-15 115 views
9

我試圖使用Jena創建一個SPARQL查詢來查詢DBpedia。使用Jena在DBpedia上創建SPARQL查詢

該查詢正在與獨立工具(Twinkle)一起使用,但當我將其插入此Java代碼時,它將返回一個空集。

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

任何想法我做錯了什麼?

回答

10

問題是您的FROM <...>條款。刪除它,一切都很好。有了這個條款,我懷疑端點正在將查詢限制爲具有該名稱的圖形,但是不存在這樣的圖形,因此沒有結果。

令人困惑的是,它好像查詢在http://dbpedia.org/sparql的表單上工作。但是有一個默認的圖形URI被設置,所以查詢也會遍歷該圖形。清除它並且查詢不起作用。作爲替代方法,您可以將其設置爲檢索遠程數據。這拉入了名爲rdf的三個出生地點。

如果你想找到出生地是音樂家使用:

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

是很好的工作。 謝謝! – Marcom 2010-02-15 17:41:47