代码之家  ›  专栏  ›  技术社区  ›  Loredra L

如何使用mediawiki的page prop api获取相关的wikidata

  •  0
  • Loredra L  · 技术社区  · 6 年前

    我看到了一些从维基百科页面获取维基数据项的解决方案。通常,他们使用这个pageprop查询api:

    https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&redirects=1&titles=LONDON
    

    但在我的media wiki小版本中,当我执行相同的查询时,即使页面链接到wikidata项,结果也不包含任何wikidata id。

    有没有需要运行的数据/脚本?可能的原因是什么?

    其他信息:

    我还发现当我列出道具名称时, wikibase_item 不在那里。下面是wikipedia中同样的例子。

    https://en.wikipedia.org/w/api.php?action=query&list=pagepropnames&ppnlimit=100
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   RichS    6 年前

    如果我正确理解你的问题,你想用 webentityusage 在查询中获取wikidata id。因此,对于您的特定示例,使用伦敦,您将使用:

    https://en.wikipedia.org/w/api.php?action=query&prop=pageprops|wbentityusage&titles=London

    底部的条目具有与伦敦相关的所有数据: 在json中向下滚动,您将看到:

    "wbentityusage": {
        ...
        "Q84": {
          ...
        }
    }
    

    q84也显示为pageprops下的“wikibase_item”。

    然后,与伦敦有关的所有数据都是: https://www.wikidata.org/wiki/Q84

    (也可以通过wikidataapi访问)


    编辑:这里还有一个例子。(对于特定于wikidata的项,它有时有助于反向工作……即列出引用数据q[nnn]的所有页面)

    以下维基百科页面使用一些维基数据项: https://en.wikipedia.org/wiki/Template:Pageid_to_title

    具体来说,它使用地球(q2)。所以,如果我们使用维基百科API: https://en.wikipedia.org/w/api.php?action=query&prop=pageprops|wbentityusage&titles=Template:Pageid_to_title

    在下面显示q2 wbentityusage 页面ID 49086285。不在PageProps下。pageprops只显示wikibase_项。

    需要注意的是,尽管查询在维基百科和维基数据上都是相同的,但是根据运行查询的域,结果会有所不同。

    同样有用(反向工作):要查看维基百科页面引用的特定维基数据项,可以使用

    https://en.wikipedia.org/w/api.php?action=query&list=wblistentityusage&wbeuentities=Q2&wbeuprop=url -->显示所有 维基百科 参考q2(地球)的页面

    https://wikidata.org/w/api.php?action=query&list=wblistentityusage&wbeuentities=Q2&wbeuprop=url -->显示所有 维基数据 参考q2(地球)的页面

    为了好玩,我编辑了wikipedia页面模板:pageid_to_title以引用q3(life)和……在耐心等待同步之后,api现在以q3响应,因为q3也是与该页面相关联的wikidata项之一。