DBpedia Sparql按页面模板

时间:2015-01-12 02:37:38

标签: sparql dbpedia

我正在尝试使用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 api,在那里你可以对所有结果进行分类。 http://en.wikipedia.org/w/api.php?action=query&list=embeddedin&eititle=Template:Infobox_settlement

1 个答案:

答案 0 :(得分:2)

至少有两个问题:(i)你需要在地方使用IRI,而不是字符串; (ii)您需要使用DBpedia使用的属性。

使用IRI

?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 results

这很容易检查,并且很快确认没有可能可能匹配您的查询的数据。你在哪里找到这家酒店?你见过它用过某个地方吗?我不相信您可以根据信息框模板查询DBpedia。 DBpedia与维基百科不同,即使维基百科API支持它,也不代表DBpedia有对应物。 DBpedia Data Set Properties上的一条说明:

  

http://xx.dbpedia.org/property/wikiPageUsesTemplate(将更改为http://dbpedia.org/ontology/wikiPageUsesTemplate)

但后一个属性似乎也没有在端点上使用。有关详细信息,请参阅my answerSyntax for Sparql query for pages with specific infobox