以前的答案似乎已经停止工作。不过,只需稍作改动即可让它们在http://live.dbpedia.org/sparql的新 dbpedia 查询端点上工作。
要获取所有页面和他们使用此查询的模板的列表,请执行以下操作:
SELECT * WHERE { ?page dbpprop:wikiPageUsesTemplate ?template . }
查看结果(限 100 个)
如果您正在寻找特定模板:
SELECT * WHERE {
?page
dbpprop:wikiPageUsesTemplate
<http://dbpedia.org/resource/Template:Infobox_website> .
}
查看结果
对于我的用例,我对 Wikipedia URL 而不是 DBPedia 页面感兴趣,所以我使用这个查询:
SELECT ?wikipedia_url WHERE {
?page
dbpprop:wikiPageUsesTemplate
<http://dbpedia.org/resource/Template:Infobox_website> .
?page foaf:isPrimaryTopicOf ?wikipedia_url .
}
查看结果
我还curl
用来将结果提取到脚本中:
$ curl -s "http://live.dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=SELECT+%3Fwikipedia_url+WHERE+%7B+%0D%0A%09+%3Fpage+%0D%0A%09+dbpprop%3AwikiPageUsesTemplate+%0D%0A%09+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3AInfobox_website%3E+.+%0D%0A+%3Fpage+foaf%3AisPrimaryTopicOf+%3Fwikipedia_url+.%0D%0A%0D%0A%09%7D&format=text%2Ftab-separated-values" \
| tr -d \" | grep -v "^wikipedia_url$" | head
http://en.wikipedia.org/wiki/U.S._News_&_World_Report
http://en.wikipedia.org/wiki/FriendFinder
http://en.wikipedia.org/wiki/Debkafile
http://en.wikipedia.org/wiki/GTPlanet
http://en.wikipedia.org/wiki/Lithuanian_Wikipedia
http://en.wikipedia.org/wiki/Connexions
http://en.wikipedia.org/wiki/Hypno5ive
http://en.wikipedia.org/wiki/Scoop_(website)
http://en.wikipedia.org/wiki/Bhoomi_(software)
http://en.wikipedia.org/wiki/Brainwashed_(website)
我不确定这是否给出了完整的结果集,因为它返回 1698 个结果,而wmflabs.org似乎建议应该有 4439 个。
对于您问题的第二部分,只需对上一个查询进行少量更改即可获取所有模板的列表:
SELECT DISTINCT ?template WHERE {
?page
dbpprop:wikiPageUsesTemplate
?template .
FILTER (regex(?template, "Infobox")) .
} ORDER BY ?template
查看结果