获取作为给定项目实例的所有Wikidata项目



Wikidata有一个名为智能手机模型的项目
我想获取它的所有实例。

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

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

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

Wikidata在https://query.wikidata.org

您想要的查询是:

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)"智能手机型号"(Q197234.51)的项目。

这还不可能。(由于新的SPARQL接口解决了此类查询,添加它的任务被拒绝。)

在Mediawikineneneba API中,您目前能做的最好的事情就是使用action=queryprops=linkshere,并对名称空间进行过滤,如下所示:

https://www.wikidata.org/w/api.php?action=query&prop=链接器&format=json&lhprop=标题&lhnamespace=0&lhlimit=500&title=Q19723451

然而,有一个外部查询工具,Wikidata查询,它可以完全满足您对这个查询的要求:

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

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

EDIT:更新了任务的状态,并更改为新的查询工具。

这里的很多答案都涉及到使用Wikimedia的SparQL服务。我的不会。答案是:;这取决于主题;。如果你是一个讲英语的人,那么最好的办法就是找到与你想查询的主题相关联的类别。

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

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

有些类别的项目在Wikidata上已经成熟,有些则不然。这就是我说";这取决于主题;。从很多方面来看,截至2021年2月,使用MediaWiki API在英文维基百科上抓取类别可能比使用Wikidata更容易。这种情况可能会在2022年、2023年或以后(甚至到年底)发生变化。

请注意,Wikimedia Foundation提供JSON和RDF格式的常规数据转储。与尝试实时查询相比,一些用例可以通过下载数据转储并对文本文件执行文本处理来更好地服务。文本文件非常大,因此用例可能有限,但仍然值得考虑。

希望这个答案很快就会过时。情人节快乐!点击Wikidata时,请注意不要无意中发现1929年情人节芝加哥发生的事件(<<lt;触发警告:该链接指向暴力犯罪的详细信息。)

最新更新