获取作为给定项目实例的所有维基数据项目

时间:2015-04-27 02:48:31

标签: mediawiki-api wikidata wikidata-api

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

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

最好不要包含在WhatLinksHere中显示但在“Wikidata:”命名空间而不是主命名空间中的误报。

3 个答案:

答案 0 :(得分:10)

您的问题指定了“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)或''{'3'}''子类的'实例' )'智能手机型号'(P279)。

答案 1 :(得分:7)

目前还不可能。 (如果你想跟随开发,这是task。)

今天Mediawiki API中最好的方法是使用action=queryprops=linkshere并过滤命名空间,如下所示:

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

但是,有一个外部查询工具Wikidata query,可以完全满足您对此查询的要求:

http://wdq.wmflabs.org/api?q=CLAIM[31:19723451]

只需在数字前添加Q即可获得商品ID。

答案 2 :(得分:0)

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

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

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

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

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

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