我正在使用Jena Java框架使用SPARQL查询DBpedia端点,以获取德国城市中所有兴趣点的类型。对于有英语 DBpedia 条目的地方,我没有遇到任何问题。但是,当涉及到要从德语 DBpedia 端点 (http://de.dbpedia.org/resource/Schlo ß_Nymphenburg) 查询的地名时,此查询不返回任何结果。这里也提到了这个问题(http://mail-archives.apache.org/mod_mbox/jena-users/201110.mbox/%3C4E877C8A.4050705@apache.org%3E)。即使提到这一点,我也无法解决问题。我不知道如何使用QueryEngineHTTP。我正在添加两个代码片段 - 一个有效(第一个 - 查询安联竞技场:在 DBpedia 中有一个英文条目),另一个不起作用(第二个 - 对于 Schloß Nymphenburg,有一个德语条目)。这可能是一个非常微不足道的问题,但我无法解决它。任何指向解决方案的指针都将非常非常有帮助。多谢!代码 1 - 工作 :
String service = "http://dbpedia.org/sparql";
final ParameterizedSparqlString query = new ParameterizedSparqlString(
"PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>" +
"PREFIX dbo: <http://dbpedia.org/ontology/>" +
"PREFIX dcterms: <http://purl.org/dc/terms/>" +
"SELECT * WHERE {" +
"?s geo:lat ?lat ." +
"?s geo:long ?long ." +
"?s dcterms:subject ?sub}");
query.setIri("?s", "http://dbpedia.org/resource/Allianz_Arena");
QueryExecution qe = QueryExecutionFactory.sparqlService(service, query.toString());
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results);
代码 2 - 不工作:
String service = "http://dbpedia.org/sparql";
final ParameterizedSparqlString query = new ParameterizedSparqlString(
"PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>" +
"PREFIX dbo: <http://dbpedia.org/ontology/>" +
"PREFIX dcterms: <http://purl.org/dc/terms/>" +
"SELECT * WHERE {" +
"?s geo:lat ?lat ." +
"?s geo:long ?long ." +
"?s dcterms:subject ?sub}");
query.setIri("?s", "http://de.dbpedia.org/resource/Schloß_Nymphenburg");
QueryExecution qe = QueryExecutionFactory.sparqlService(service, query.toString());
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results);
我认为这根本不是耶拿的问题。正在尝试:
SELECT * WHERE {
<http://de.dbpedia.org/resource/Schloß_Nymphenburg> ?p ?o }
在 http://dbpedia.org/sparql 我没有得到任何结果:自己尝试一下。
SELECT * WHERE {
<http://de.dbpedia.org/resource/Schloss_Nymphenburg> ?p ?o }
相比之下,返回一些东西,即使它只是一堆交叉链接。