Wikipedia iwlinks表仅存储一些指向Wikidata页面的链接。其他在哪里?

问题描述 投票:0回答:1

我正在使用Wikipedia dumps摘录而不是Wikipedia API来处理Wikipedia,因为我想快速运行很多查询。

我想将Wikipedia页面连接到各自的Wikidata页面。我的理解是iwlinks表包含此信息。但是,尽管我已经可以对某些Wikipedia页面进行验证,但我也可以对其他页面进行验证。

例如,如果我们在iwlinks表中查找Metallica's Wikipedia page,则会得到:

iwl_from, iwl_prefix, iwl_title
'18787', 'c', 'Special:Search/Metallica'
'18787', 'd', 'Q15920'
'18787', 'q', 'Special:Search/Metallica'

[在iwl_namespace列中包含'd'的行包含有关在哪里可以找到Metallica Wikidata page(即Q15920)的信息。

但是,如果我们使用以下命令查找Tom Selleck's Wikipedia page的iwlinks表:

SELECT * FROM iwlinks iwl_from = 277451;

我们得到:

iwl_from, iwl_prefix, iwl_title
'277451', 'commons', 'Tom_Selleck'
'277451', 'q', 'Special:Search/Tom_Selleck'

这些行均不包含有关其his Wikidata page的信息。但是,他的Wikipedia页面包含指向Wikidata页面的“ Wikidata item”链接,因此大概必须将其存储在某个位置,但我找不到它。

非常感谢您能想到的任何建议。

P.S。奖励积分(如果您可以指向我)正确的方向以找出Wikipedia中每个图像的许可证信息存储在哪里。

wikipedia wikipedia-api wikidata mediawiki-api
1个回答
0
投票

我不太确定,您的方法是否很有希望。首先,我了解您要实现的目标:

  • 给出您在Wikipedia上的页面
  • 您想要获得相应的Wikidata项
  • 您可能想将此项目连接到其他页面?

[如果正确,我认为您最好的选择是Wikidata的wb_items_per_site表。为什么是Wikidata而不是Wikipedia? Wikibase的当前体系结构(Wikidata背后的软件)要求访问客户端(aka Wikipedia)和repo(aka Wikidata)数据库,因为有关page的信息保存在客户端数据库中,而有关已连接项目的信息(包括信息,该页面已连接到该项目的信息)将存储在回购数据库中。此信息保存在wb_items_per_site表中(至少这是我要使用的表,我不是Wikibase的开发人员,因此这也不是最佳的解决方案)。例如,如果要获取Wikipedia文章的Wikidata项,我将发出以下查询:

select * from wb_items_per_site where ips_site_id = "enwiki" and ips_site_page = "Tom Selleck" limit 1;

((注意,您需要用下划线替换下划线(_)。这是由MediaWiki中的Title类完成的逻辑。输出如下所示:

ips_row_id ips_item_id ips_site_id ips_site_page 540761088 213706 enwiki Tom Selleck

(参考https://quarry.wmflabs.org/query/43884

要从此Wikidata项获得其他连接的页面,您可以发出第二个查询:

select * from wb_items_per_site where ips_item_id = 213706;

(请参阅输出here,要粘贴到此处很大:P)

关于您的“奖励问题”:

不幸的是,许可证信息保存在Wiki文本中。这意味着,对于保存在en.wikipedia.org上的图像,您需要解析Wikitext以获得相关的许可证信息。

这里的一个优点是:大多数图像不是托管在en.wikipedia.org上,而是托管在Wikimedia Commons项目中。那里有一个称为结构化图像数据的项目,其目标是以结构化的机器可读方式提供此类信息(许可证,标题,作者和资料)。不幸的是,保存在其中的所有图像和媒体甚至都没有以结构化的方式获得这些信息。因此,后备始终是解析Wikitext。

Wikipedia安装了一个扩展程序,该扩展程序可以部分为您接管此解析部分。该信息例如在MediaViewer功能中使用。该信息可通过api获得:https://en.wikipedia.org/w/api.php?action=query&titles=File:Albert%20Einstein%20Head.jpg&prop=imageinfo&iiprop=extmetadata

您得到License

"License": { "value": "pd", "source": "commons-templates", "hidden": "" }

和许可证简称:

"LicenseShortName": { "value": "Public domain", "source": "commons-desc-page", "hidden": "" }

对您来说很不幸,因为我想您想从转储中获取此信息,所以该信息在此处不可用。 API会根据Wikitext的API请求“即时”解析该信息。
© www.soinside.com 2019 - 2024. All rights reserved.