我尝试使用Jena创建一个SPARQL查询来查询DBpedia。
当我将它与独立工具(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() ;
任何想法我做错了什么?
答案 0 :(得分:10)
问题是你的FROM <...>
条款。删除它,一切都很好。使用该子句我怀疑端点是将查询限制为具有该名称的图形,但是不存在这样的图形,因此没有结果。
令人困惑的是,查询似乎在http://dbpedia.org/sparql的表单上运行。但是,设置了默认图形URI,因此查询也会覆盖该图形。清除它,查询不起作用。作为替代方案,您可以将其设置为检索远程数据。这引入了命名的rdf,它提到了三个出生地。
如果您正试图找到该音乐家使用的出生地:
{ <http://dbpedia.org/resource/Daphne_Oram> dbont:birthPlace ?place . }