DBpedia Sparql by 页面模板

DBpedia Sparql by page template

我正在尝试 运行 使用 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

至少有两个问题:(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 的查询像这样 returns 没有结果:

select distinct ?template where {
 [] dbpprop:wikiPageUsesTemplate ?template
}

SPARQL results

这很容易检查,并且可以快速确认没有数据可以可能 匹配您的查询。你在哪里找到这个属性?你见过它在什么地方使用过吗?我不相信您可以基于信息框模板查询 DBpedia。 DBpedia 与维基百科不一样,即使维基百科 API 支持它,也不意味着 DBpedia 有对应物。 DBpedia Data Set Properties 上有一条注释,上面写着:

http://xx.dbpedia.org/property/wikiPageUsesTemplate (will be changed to http://dbpedia.org/ontology/wikiPageUsesTemplate)

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