我看到了几种从Wikipedia页面获取Wikidata项目的解决方案。通常,他们使用以下pageprop查询API:
https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&redirects=1&titles=LONDON
但是在我的小型媒体Wiki中,当我执行相同的查询时,即使该页面已站点链接至wikidata项,结果也不包含任何wikidata id。
我需要运行任何数据/脚本吗?可能是什么原因造成的?
其他信息:
我还发现,当我列出道具名称列表时,wikibase_item
不存在。以下是来自维基百科的有效示例。
https://en.wikipedia.org/w/api.php?action=query&list=pagepropnames&ppnlimit=100
答案 0 :(得分:0)
如果我正确理解了您的问题,那么您想在查询中使用webentityusage
来获取Wikidata ID。因此,对于您的特定示例,在伦敦,您将使用:
https://en.wikipedia.org/w/api.php?action=query&prop=pageprops|wbentityusage&titles=London
底部的条目包含与伦敦相关的所有数据: 在JSON中向下滚动,您将看到:
"wbentityusage": {
...
"Q84": {
...
}
}
Q84在pageprops下也显示为“ wikibase_item”。
然后,与london相关的所有数据都位于: https://www.wikidata.org/wiki/Q84
(也可以通过Wikidata API访问)
编辑:这是另一个例子。 (对于特定于Wikidata的项目,有时可以帮助您反向操作,即列出所有引用数据Q [nnn]的页面)
以下Wikipedia页面使用了一些Wikidata项目:https://en.wikipedia.org/wiki/Template:Pageid_to_title
具体地说,它使用地球(Q2)。因此,如果我们使用Wikipedia API: https://en.wikipedia.org/w/api.php?action=query&prop=pageprops|wbentityusage&titles=Template:Pageid_to_title
将在pageId 49086285的wbentityusage
下显示Q2。不在pageprops下显示。 Pageprops仅显示wikibase_item。
重要的是要注意,即使查询在Wikipedia和wikidata上都是相同的,结果也会根据您在哪个域上运行而有所不同。
也很有帮助(反向工作):要查看哪些Wikipedia页面引用了特定的wikidata项,
https://en.wikipedia.org/w/api.php?action=query&list=wblistentityusage&wbeuentities=Q2&wbeuprop=url ->显示所有引用Q2(地球)的 wikipedia 页面
https://wikidata.org/w/api.php?action=query&list=wblistentityusage&wbeuentities=Q2&wbeuprop=url ->显示引用Q2(地球)的所有 wikidata 页面
而且,为了娱乐,我编辑了维基百科页面Template:Pageid_to_title以引用Q3(生活),并且……在耐心等待同步之前,API现在以Q3响应,因为它也是其中之一与该页面关联的wikidata项。