我使用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。我正在添加两个代码片段 - 一个有用(第一个 - 查询Allianz Arena:在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);
答案 0 :(得分:0)
我认为这根本不是jena的问题。尝试:
SELECT * WHERE {
<http://de.dbpedia.org/resource/Schloß_Nymphenburg> ?p ?o }
在http://dbpedia.org/sparql我没有收到任何结果:try it yourself。
SELECT * WHERE {
<http://de.dbpedia.org/resource/Schloss_Nymphenburg> ?p ?o }
相反,会返回一些东西,即使它只是一堆cross links。