我试图使用SPARQL语法在dbpedia上运行一个查询,以查找某个模板的所有页面。似乎不起作用,我正在寻找dbpprop:wikiPageUsesTemplate的所有页面。有人知道如何纠正这个错误以正确查找模板吗?
SELECT ?name ?member_Of ?country ?lat ?lng ?link
WHERE {
?x dbpprop:wikiPageUsesTemplate "dbpedia:Template:Infobox_settlement" .
?x a <http://dbpedia.org/ontology/Settlement> .
?x foaf:name ?name .
?x dbpedia-owl:isPartOf ?member_Of.
?x dbpedia-owl:country ?country.
?x geo:lat ?lat .
?x geo:long ?lng .
?x foaf:isPrimaryTopicOf ?link .
}
LIMIT 2500 OFFSET 0我也尝试过只通过dbprop运行它,但没有结果。
SELECT * WHERE { ?page dbpprop:wikiPageUsesTemplate <http://dbpedia.org/resource/Template:Infobox_settlement> . ?page dbpedia:name ?name .}如果有人试图做类似的事情,也可以通过wiki实现,在这里您可以对所有结果进行分页。沉降
发布于 2015-01-12 21:44:06
至少有两个问题:(i)您需要在地方使用IRIs,而不是字符串;(ii)您需要使用DBpedia使用的属性。
使用虹膜
在……里面
?x a <http://dbpedia.org/ontology/Settlement> .和
?x foaf:isPrimaryTopicOf ?link .您已经证明,您知道URI需要用<和>编写,或者用前缀缩写。然而,
?x dbpprop:wikiPageUsesTemplate "dbpedia:Template:Infobox_settlement" .肯定没用的。这是合法的SPARQL,因为字符串可以是三元组的对象,但是您几乎肯定需要IRI。
使用DBpedia的词汇表
这样的dbpprop:wikiPageUsesTemplate查询不返回结果:
select distinct ?template where {
[] dbpprop:wikiPageUsesTemplate ?template
}SPARQL结果
这很容易检查,并且快速确认没有任何数据可以与您的查询相匹配。你在哪里找到这房子的?你见过它在什么地方用过吗?我不相信您可以基于信息框模板来查询DBpedia。DBpedia与维基百科不一样,即使维基百科API支持它,也不意味着DBpedia有对应的API。DBpedia数据集属性上有一条注释说:
http://xx.dbpedia.org/property/wikiPageUsesTemplate (将改为http://dbpedia.org/ontology/wikiPageUsesTemplate)
但后一种属性似乎也没有在端点上使用。有关详细信息,请参阅我的回答 to 具有特定信息框的页面的Sparql查询语法。
https://stackoverflow.com/questions/27894575
复制相似问题