8

Wikidata 有一个项目叫做智能手机模型
我想获得它的所有实例。

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

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

4

3 回答 3

16

您的问题指定了“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)的“实例”。

于 2016-01-31T19:09:41.260 回答
9

现在还不可能。(由于新的 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

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

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

于 2015-04-27T05:30:42.477 回答
0

这里的很多答案都将涉及使用 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 年或以后(甚至到年底)发生变化。

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

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

于 2021-02-14T09:14:39.863 回答