运行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')) .
}
答案 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')) .
}