sparql - DBpedia 查询返回 Virtuoso 的结果,但不返回 Jena 的结果

标签 sparql jena dbpedia

我正在尝试使用 Jena 创建 SPARQL 查询来查询 DBpedia。当我使用 Virtuoso 时,查询正常工作,但是当我将其插入以下 Java 代码时,它返回一个空集。

String sr="Christopher_Nolan";
String sparqlQueryString1 = "PREFIX dbont: <http://dbpedia.org/ontology/> "+            
        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>"+ 
        "PREFIX foaf: <http://xmlns.com/foaf/0.1/> "+
        "   SELECT distinct   ?s"+        
        "   WHERE {  "+       
        "?s foaf:name ?label  ."  +
        "filter(?label=\"Christpher_Nolan\"@en)." +             
        "        }";
          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() ;    

最佳答案

我认为这不是耶拿的问题,而是您的特定查询的问题。您的查询在 DBpedia SPARQL 端点上运行时不会产生任何结果

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?s      
WHERE {
  ?s foaf:name ?label .
  filter(?label="Christpher_Nolan"@en)
}

SPARQL results (no results)

no results

但是,如果将 o 添加到 Christopher 的名字中,并将下划线更改为空格,则会得到三个结果:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?s      
WHERE {
  ?s foaf:name ?label .
  filter(?label="Christopher Nolan"@en)
}

SPARQL results (3 results)

s
http://dbpedia.org/resource/Christopher_Nolan_(author)
http://dbpedia.org/resource/Christopher_Nolan
http://dbpedia.org/resource/Chris_Nolan_(musician)

three results

我还想指出,这是 filter 的一种相当不寻常的用法。如果您想选择使用特定值的三元组,只需将该值放入三元组模式即可:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?s      
WHERE {
  ?s foaf:name "Christopher Nolan"@en 
}

SPARQL results (same 3 results)

关于sparql - DBpedia 查询返回 Virtuoso 的结果,但不返回 Jena 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19631246/

相关文章:

sparql - 属性路径深度实际上在 jena sparql 中可用吗?

sparql - 可选回退 SPARQL 模式的替代方案?

mysql - 如何在mysql和php中使用dmoz的rdf数据?

java - Hadoop NTriplesMapper (apache.jena) 无法正常工作,映射输入记录=0

java - Jena - 如何一起使用本体 + rdf

java - 计算JENA中DBPedia的两个资源之间的距离

java - SPARQL 构造查询在 java 上不起作用

sparql - 如何使用 Sesame 查询 SPARQL 端点,例如 DBPedia?

sparql - 如何使用 SPARQL 从维基词典中获取某种语言的所有名词

sparql - OWL本体: SPARQL query a range or domain of an ObjectProperty when they're unionOf classes