【问题标题】:Get all Wikidata items that are an instance of a given item获取作为给定项目实例的所有 Wikidata 项目
【发布时间】:2015-04-27 02:48:30
【问题描述】:

维基数据有一个名为smartphone model的项目。
我想获取它的所有实例。

问题:如何使用实时服务器以编程方式获取实例的标识符?

最好不包括出现在 WhatLinksHere 中但位于“Wikidata:”命名空间而不是主命名空间中的误报。

【问题讨论】:

    标签: mediawiki-api wikidata wikidata-api


    【解决方案1】:

    您的问题指定了“Mediawiki API”,但这是不可能的。

    Wikidata 在https://query.wikidata.org 有一个 SPARQL 查询服务

    你想要的查询是:

    PREFIX wd: <http://www.wikidata.org/entity/>
    PREFIX wdt: <http://www.wikidata.org/prop/direct/>
    
    SELECT DISTINCT ?item
    WHERE {
        ?item wdt:P31/wdt:P279* wd:Q19723451
    }
    

    这将列出“实例”(P31)“智能手机模型”(Q19723451)或“子类”(P279)“智能手机模型”( Q19723451)。

    【讨论】:

    • 为了方便阅读,能否说明一下 P31、Q19723451、P279 和 Q19723451 代表什么?
    • 直接链接查询:query.wikidata.org/…
    • Hugo LOPEZ - 所有与属性对应的维基数据维基页面都以“P”开头。所有与“Q”对应的维基数据维基页面都是项目。 Wikidata 上的大多数页面都是项目。
    【解决方案2】:

    目前还不可能。 (添加它的task 被拒绝,因为新的 SPARQL 接口解决了此类查询。)

    您今天在 Mediawiki API 中所能做的最好的事情是使用 action=queryprops=linkshere 并像这样过滤命名空间:

    https://www.wikidata.org/w/api.php?action=query&prop=linkshere&format=json&lhprop=title&lhnamespace=0&lhlimit=500&titles=Q19723451

    但是,有一个外部查询工具 Wikidata query,可以完全按照您的查询要求完成:

    https://query.wikidata.org/#SELECT%20%3Fitem%20WHERE%20%7B%0A%3Fitem%20wdt%3AP31%20wd%3AQ19723451%20.%0A%20%20%7D

    运行后,有一个代码选项卡,您可以在其中获取有关如何在各种平台上使用结果的示例。

    编辑:更新任务状态并更改为新的查询工具。

    【讨论】:

    • 您可能希望将链接更改为“https”链接而不是“http”链接。此外,您链接到的任务 (T54385) 在 2018 年被开发人员拒绝。
    • 为什么不使用haswbstatement 是一个有效的解决方案?例如:https://www.wikidata.org/w/api.php?action=query&amp;list=search&amp;srsearch=haswbstatement:P31=Q744691
    • @S.D 现在是,但不是在最初写答案的时候。随时提交作为新答案。
    【解决方案3】:

    这里的很多答案都将涉及使用 Wikimedia 的 SparQL 服务。我的不会。答案将是:“这取决于主题”。如果您是说英语的人,那么最好的办法是找到与您要查询的主题相关联的类别。

    让我们以“智能手机模型”为例。这(截至 2021 年 2 月撰写本文时)与 Q19723451 相关联。它似乎在“主题的主要类别”下有一些东西,即“Q20195396”。这似乎与德语维基百科上的“类别:智能手机(产品)”有关,所以我们似乎走在了正确的轨道上。奇怪的是,在撰写本文时,这似乎被标记为“不同于(P1889)”维基媒体类别“类别:智能手机(Q6483807)”。不管;让我们看看英文维基百科链接给了我们什么。

    看起来像是精心挑选的智能手机型号列表:https://en.wikipedia.org/wiki/Category:Smartphones。 Category:Smartphones 中的每个页面通常都有一个与之关联的 Wikidata 项目(例如,“Fairphone 1”与 Q21041244 关联)。您会得到一些额外的结果(例如,Fairphone 是一家公司,而不是智能手机的型号),但这通常比尝试在 Wikidata 上进行广义查询要好。

    某些类别的项目在 Wikidata 上已经成熟,而有些则不成熟。这就是我说“这取决于主题”的原因。对于许多事情,截至 2021 年 2 月,使用MediaWiki API 在英文维基百科上抓取类别可能仍然比使用 Wikidata 更容易。这可能会在 2022 年、2023 年或以后(甚至by the end of the year)发生变化。

    请注意,维基媒体基金会在 JSON 和 RDF 中提供常规的data dumps。与其尝试实时查询,不如通过下载数据转储并对文本文件执行文本处理来更好地服务于某些用例。文本文件非常大,因此用例可能有限,但仍然值得考虑。

    希望这个答案很快就会过时。 Happy Valentines Day!在维基数据上四处点击时,请注意不要意外进入the events in Chicago on Valentine's Day, 1929(触发警告:该链接指向有关暴力犯罪的详细信息。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2011-09-01
      相关资源
      最近更新 更多