【问题标题】:DBpedia query returns results with Virtuoso but not with JenaDBpedia 查询使用 Virtuoso 返回结果,但不使用 Jena
【发布时间】:2013-10-28 09:34:18
【问题描述】:

我正在尝试使用 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() ;    

【问题讨论】:

  • 谁能帮我解决这个问题
  • Querying DBpedia with SPARQL and Jena 这样的问题有帮助吗?
  • 应该"Christpher_Nolan"@en"Christopher Nolan"@en 吗? (注意o,以及空格而不是下划线。)

标签: sparql jena dbpedia


【解决方案1】:

我认为这不是 Jena 的问题,而是您的特定查询。您的查询在 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)

但是,如果将 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)

我还要指出,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)

【讨论】:

  • 我尝试将您的查询复制并粘贴到 DBpedia。我没有得到任何结果,它只显示了表头。
  • @LVarayut DBpedia 的 endpoing 有时可能有点不稳定,但我仍然能够将这些查询复制并粘贴到 dbpedia.org/sparql 并获得预期的结果。请注意,预期结果是:第一个查询没有结果,第二个和第三个查询三个结果。我添加了截图作为证据。 :)
  • 感谢您的回复。我正在使用fr.dbpedia.org/sparql,但它不起作用。我刚试过dbpedia.org/sparql。它就像一个魅力。你能解释一下what is Default Data Set Name (Graph IRI),我应该在里面放什么吗?
  • @LVarayut 是的,我记得,本地化的 DBpedia 没有所有的多语言数据,所以法语 DBpedia 很可能没有英文数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
相关资源
最近更新 更多