Wikipedia 和 Wikipedia 之间有一些链接。其他人在哪里?

The Wikipedia iwlinks table only stores some links to Wikidata pages. Where are the others?

我正在使用 Wikipedia dumps 摘录来处理维基百科而不是维基百科 API 因为我想 运行 快速处理大量查询。

我想将维基百科页面连接到它们各自的维基数据页面。我的理解是 iwlinks table 包含此信息。然而,尽管我已经能够为某些维基百科页面验证这一点,但我也能够验证其他页面并非如此。

例如,如果我们在 iwlinks table 中查找 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 table 使用:

SELECT * 从 iwlinks WHERE iwl_from = 277451;

我们得到:

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

这两行都不包含关于他的 his Wikidata page 的信息。然而,他的 Wikipedia 页面包含一个 "Wikidata item" link 到他的 Wikidata 页面,所以大概它必须存储在某个地方,但我找不到它。

如果您能提出任何建议,我将不胜感激。

P.S。如果你能指出我的奖励积分 在正确的方向找出维基百科中每个图像的许可信息存储位置。

我不太确定您的方法是否有希望。首先,我理解你想要达到的目的:

  • 鉴于您在维基百科上有一个页面
  • 您想获取对应的维基数据条目
  • 您可能想要获得此项目的其他连接页面?

如果这是正确的,我认为您最好的选择是维基数据的 wb_items_per_site table。为什么是维基数据而不是维基百科? Wikibase(维基数据背后的软件)的当前架构需要访问客户端(又名维基百科)和 repo(又名维基数据)数据库,因为有关 页面 的信息保存在客户端数据库,而有关连接项目的信息(包括信息,that 页面连接到一个项目)保存在 repo 数据库中。此信息保存在 wb_items_per_site table 中(至少我会使用那个,我不是 Wikibase 的开发人员,所以这可能也不是最好的解决方案)。

例如,如果您想获取维基百科文章的维基数据项,我会发出以下查询:

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

(请注意,您需要用空格替换下划线 (_)。这是由 MediaWiki 中的 Title class 完成的逻辑。输出看起来像:

ips_row_id     ips_item_id     ips_site_id     ips_site_page
540761088      213706          enwiki          Tom Selleck

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

要从此维基数据项获取其他连接页面,您可以发出第二个查询:

select * from wb_items_per_site where ips_item_id = 213706;

(查看输出 here,粘贴在这里太大了 :P)

你的 "bonus question":

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

这里的一个好处是:大多数图像不托管在 en.wikipedia.org 上,而是托管在 Wikimedia Commons 项目中。在那里,有一个名为结构化图像数据之类的项目,其目标是以结构化、机器可读的方式提供此类信息(许可证、标题、作者等)。不幸的是,甚至几乎所有保存在那里的图像和媒体都没有以结构化的方式包含这些信息。所以,回退总是解析维​​基文本。

维基百科安装了一个扩展程序,它可以为您部分接管这个解析部分。例如,此信息用于 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 根据 API 请求解析信息 "on-the-fly"。

您可以在 page_props table 中找到维基数据项。 iwlinks 包含出现在文本中的链接(查看 Metallica 文章的底部,您会看到一个小姊妹项目框,它只是一个 wiki 文本模板;这就是生成那些 iwlinks 条目的原因).侧边栏上的链接过去来自 langlinks,但维基数据已在很大程度上取代了跨语言链接系统,因此现在这些关联存储在维基数据中。