【发布时间】:2017-05-02 20:36:59
【问题描述】:
我想从 Wikidata id 中获取 Wikipedia 页面 id,如何从 Wikidata Query Service 或其他使用 python 的方法获取它?因为我在 wikidata 中没有看到任何类似于 wikipedia id 的属性。
【问题讨论】:
标签: python wikipedia wikidata wikidata-query-service
我想从 Wikidata id 中获取 Wikipedia 页面 id,如何从 Wikidata Query Service 或其他使用 python 的方法获取它?因为我在 wikidata 中没有看到任何类似于 wikipedia id 的属性。
【问题讨论】:
标签: python wikipedia wikidata wikidata-query-service
首先,您需要从 Wikidata id 获取 Wikipedia 页面 title,这可以通过对 Wikidata API wbgetentities 模块的请求来完成,如下所示:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q123&format=json&props=sitelinks
然后,一旦您从所需的 Wikipedia 版本中找到 Wikipedia 标题,您就可以从该 Wikipedia API 获取关联的页面 ID:https://en.wikipedia.org/w/api.php?action=query&titles=September&format=json
因此,您可以从这些示例 URL 中获得:
维基数据 id = Q123
=> 英文维基百科 (enwiki) 标题 = September
=> pageid = 15580374
【讨论】:
我不确定,如果 DBpedia 总是同时包含 wikiPageID 和 Wikidata ID,但您可以尝试 DBpedia 上的以下查询:
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?wikipedia_id WHERE {
?dbpedia_id owl:sameAs ?wikidata_id .
?dbpedia_id dbo:wikiPageID ?wikipedia_id .
VALUES (?wikidata_id) {(wd:Q123)}
}
或者您可以在 Wikidata 上尝试以下联合查询:
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?wikipedia_id where {
VALUES (?wikidata_id) {(wd:Q123)}
SERVICE <http://dbpedia.org/sparql> {
?dbpedia_id owl:sameAs ?wikidata_id .
?dbpedia_id dbo:wikiPageID ?wikipedia_id
}
}
更新
您可以在 Wikidata 上使用 MWAPI 调用 Wikipedia API:
SELECT ?pageid WHERE {
VALUES (?item) {(wd:Q123)}
[ schema:about ?item ; schema:name ?name ;
schema:isPartOf <https://en.wikipedia.org/> ]
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam mwapi:generator "allpages" .
bd:serviceParam mwapi:gapfrom ?name .
bd:serviceParam mwapi:gapto ?name .
?pageid wikibase:apiOutput "@pageid" .
}
}
不幸的是,您have to use 似乎是一个生成器; allpages 似乎是最合适的。
【讨论】:
在您的 CURL 调用中使用以下 URL。您必须在下面的链接中更改 WikiDataID Q243。
例如,如果您想要 Taj_Mahal 的 wikiPageID,则在下面的链接中将 Q243 替换为 Q9141 并进行 CURL 调用。
要通过 wikiDataId 获取 WikiPageID,您必须修改上面的链接或在上面的链接中替换您选择的 wikiDataID。
注意:
1) 要获取带有标签的 WikiPageID,请在 CURL 调用中使用 this URL
2) 找到 Q243 并替换为您的 wikiDataID
【讨论】: