即使页面存在,sparql也不会返回结果

时间:2014-12-18 15:27:17

标签: rdf sparql dbpedia

运行SPARQL [http://dbpedia.org/sparql]以查找与某个单词相关的页面(作为标签或使用UNION重定向以支持每个单词,但不显示任何结果,甚至存在相关页面。

我的查询有问题或以错误的方式使用UNION?

SELECT ?resource ?name ?wikipage ?comment 
WHERE { 
{ ?resource rdfs:label 'Pencil lead'@en . }
UNION 
{ ?redirect rdfs:label 'Pencil lead'@en ; dbpedia-owl:wikiPageRedirects ?resource . }
?resource dbpprop:label ?name ; foaf:isPrimaryTopicOf ?wikipage ; rdfs:comment ?comment . 
FILTER (langMatches(lang(?comment ),'en')) . } 

但是,他们分别为http://dbpedia.org/page/Pencil工作并提供相同的结果:

SELECT ?resource ?name ?wikipage ?comment 
WHERE { 
?redirect rdfs:label ?name ; dbpedia-owl:wikiPageRedirects ?resource . FILTER (?name = 'Pencil lead'@en) . 
?resource foaf:isPrimaryTopicOf ?wikipage . 
?resource rdfs:comment ?comment . FILTER (langMatches(lang(?comment ),'en')) . 
}  

SELECT ?resource ?name ?wikipage ?comment 
WHERE { 
?resource rdfs:label ?name . FILTER (?name = 'Pencil'@en) . 
?resource foaf:isPrimaryTopicOf ?wikipage . 
?resource rdfs:comment ?comment . FILTER (langMatches(lang(?comment ),'en')) . 
} 

1 个答案:

答案 0 :(得分:1)

您的工作查询使用 rdfs:label

?resource rdfs:label ?name . FILTER (?name = 'Pencil'@en) .

您的查询损坏使用 dbprop:label

?resource dbpprop:label ?name ;
          foaf:isPrimaryTopicOf ?wikipage ; rdfs:comment ?comment . 

您应该在两者中使用 rdfs:label

那就是说,根本没有理由在这里使用 union 。您可以使用属性路径执行此操作,因为?resource 是具有的内容,或者是具有 rdfs:label' Pencil lead' @的内容的重定向。烯

SELECT ?resource ?name ?wikipage ?comment 
WHERE { 
  ?resource (^dbpedia-owl:wikiPageRedirects)?/rdfs:label 'Pencil lead'@en ;
            rdfs:label ?name ;
            foaf:isPrimaryTopicOf ?wikipage ;
            rdfs:comment ?comment . 
  FILTER (langMatches(lang(?comment ),'en')) .
}