如何使用MediaWiki的页面属性API获得与Wikidata相关的信息

时间:2019-04-15 08:34:51

标签: mediawiki mediawiki-api wikidata

我看到了几种从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

1 个答案:

答案 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项。