【发布时间】:2015-01-16 15:34:11
【问题描述】:
我正在使用 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。我正在添加两个代码 sn-ps - 一个有效(第一个 - 查询 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);
【问题讨论】: