此页面:http://wikidata.dbpedia.org/downloads/20160111/ 有一个名为wikidatawiki-20160111-page-ids.ttl.bz2的转储 其中包含维基数据ID,他们称之为wikipage id。 wikipage id似乎与维基百科的pageid不同。
e.g。对于德国:
所以基本上这个转储将Q183映射到322,而我需要将Q183映射到11867.
作为参考:https://en.wikipedia.org/w/index.php?title=Germany&curid=11867网址中的curid表示维基百科页面ID。
是否有任何具有维基数据ID和维基百科pageid的等效转储文件? (我不想使用API并逐个循环我的维基百科页面ID,如下所示:https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&format=xml&pageids=11867)
编辑:我不确定whtt究竟是wikipage id,但也许在我在问题中提到的转储顶部有一个wikipageId到Wikipedia pageid映射文件。
答案 0 :(得分:1)
我终于找到了上述请求的转储:
https://dumps.wikimedia.org/enwiki/20160720/
有一个文件:
enwiki-20160720-page_props.sql.gz < br />
问题是文件是MySql脚本,而我正在寻找JSON或XML文件。我写了一个非常简短的PHP脚本来提取括号块并提供符合我需要的格式。
答案 1 :(得分:1)
如果您愿意考虑API调用解决方案而不是使用转储加格式调整,则可以使用pageprops
操作的query
属性。
例如,如果我们想找到Albert Einstein的Wikidata项目,给定维基百科页面标题,你可以这样做:
https://en.wikipedia.org/w/api.php?action=query&format=json&prop=pageprops&titles=Albert Einstein
给出了:
{
"batchcomplete": "",
"query": {
"pages": {
"736": {
"pageid": 736,
"ns": 0,
"title": "Albert Einstein",
"pageprops": {
"defaultsort": "Einstein, Albert",
"page_image": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg",
"wikibase-badge-Q17437798": "1",
"wikibase_item": "Q937"
}
}
}
}
}
像这样我们可以在wikibase_item
检索wikidata项ID。
(这是Dmitry Brant)
中Mediawiki-api mailing list最初回答的问题这可能是一个更好的解决方案,因为:
答案 2 :(得分:0)
我创建了一个Python软件包和命令行工具来处理名为official documentation的问题。可以通过pip install wikimapper
安装。它使用Wikipedia SQL转储来创建索引,然后可以使用它非常快速地映射许多次(比Wikidata SPARQL端点要快得多)。您可以使用我的wikimapper之一并使用此sqlite3数据库,也可以使用该软件包将Wikipedia页面标题/ Wikipedia URL映射到Wikidata ID,反之亦然。使用页面名称或URL代替内部Wikipedia ID应该更方便。
答案 3 :(得分:-1)
我发现此链接可能对您有所帮助。
enwiki dump progress on 20190401
链接为:enwiki-20190401-wbc_entity_usage.sql.gz 212.5 MB
格式如下:
(43094421,'P1070','C.P1630',78195)
结构为:
`eu_row_id` bigint(20) NOT NULL AUTO_INCREMENT,
`eu_entity_id` varbinary(255) NOT NULL,
`eu_aspect` varbinary(37) NOT NULL,
`eu_page_id` int(11) NOT NULL,