如何从维基数据 ID 获取维基百科 pageid?

Yue*_*Cao 5 wikipedia wikidata

我想从维基数据id中获取维基百科pageid,我如何从维基数据查询服务或其他使用python的方法中获取它?因为我在 wikidata 中没有看到任何称为 wikipedia id 的属性。

Sta*_*lin 5

我不确定 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)} 
}
Run Code Online (Sandbox Code Playgroud)

尝试一下!

或者您可以在维基数据上尝试以下联合查询:

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 
    } 
}
Run Code Online (Sandbox Code Playgroud)

尝试一下!

更新

您可以使用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" .
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试一下!

不幸的是,你似乎必须使用发电机;allpages看来是最合适的一个。


max*_*ath 4

首先,您需要title从 Wikidata id 获取 Wikipedia 页面,这可以通过向 Wikidata API 模块发出请求来完成wbgetentities,如下所示:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q123&format=json&props=sitelinks

然后,一旦您从所需的维基百科版本中找到了维基百科标题,您就可以从该维基百科 API 获取关联的页面 ID:https://en.wikipedia.org/w/api.php?action=query&titles=September&format=json

因此,从这些示例 URL 中您可以得到:
Wikidata id = Q123
=> English Wikipedia ( enwiki) title = September
=> pageid =15580374