我经常遇到以下问题。当我向耶拿写查询时,他们无法工作。
以其他网站的这个好查询为例:
PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX mo: <http://purl.org/ontology/mo/>
SELECT *
WHERE {dbpedia:The_Beatles mo:member ?member .
?member foaf:name ?name
}
当我将它翻译成Java的Jena时,它应该是这样的:
public static String beatlesMembers =
"PREFIX dbpedia: <http://dbpedia.org/resource/> "+
"PREFIX foaf: <http://xmlns.com/foaf/0.1/> "+
"PREFIX mo: <http://purl.org/ontology/mo/> "+
"SELECT * " +
"WHERE {dbpedia:The_Beatles mo:member ?member . "+
"?member foaf:name ?name "+
"}";
然后我查询DBPEDIA
Query query = QueryFactory.create(Requests.beatlesMembers);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
try {
ResultSet results = qexec.execSelect();
for (; results.hasNext();) {
QuerySolution s = results.nextSolution();
System.out.println(s.toString());
}
}
finally {
qexec.close();
}
它什么都不返回......
知道为什么吗?我无法弄清楚如何在Java中正确编写这些查询。希望你能帮忙。
非常感谢您的帮助
答案 0 :(得分:1)
您是否在dbpedia.org上尝试过查询?
当我在那里运行时,通过Web表单界面,我得到零行。
{ dbpedia:The_Beatles mo:member ?member }
没有匹配。没有http://purl.org/ontology/mo/
三元组。
尝试{ dbpedia:The_Beatles ?pred ?obj}
并查看详细信息。