我想从维基数据ID获取维基百科的pageid,如何从wikidata查询服务或其他方法获取它与python?因为我没有在wikidata中看到任何名为wikipedia id的属性。
答案 0 :(得分:2)
首先,您需要从维基数据ID获取维基百科页面title
,这可以通过对维基数据API wbgetentities
模块的请求来完成,如下所示:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q123&format=json&props=sitelinks
然后,一旦您从所需的维基百科版本中找到维基百科标题,您就可以从该Wikipedia API获取相关的页面ID:https://en.wikipedia.org/w/api.php?action=query&titles=September&format=json
所以从这些示例网址中你可以得到:
Wikidata id = Q123
=>英语维基百科(enwiki
)title = September
=> pageid = 15580374
答案 1 :(得分:1)
我不确定,如果DBpedia始终同时包含wikiPageID和维基数据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)}
}
或者您可以在维基数据上尝试以下联合查询:
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
}
}
<强>更新强>
您可以使用维基数据上的MWAPI来呼叫维基百科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
似乎是最合适的。
答案 2 :(得分:1)
在CURL通话中使用以下网址。您必须在下面的链接中更改WikiDataID Q243。
例如,如果您希望wikiPageID为 Taj_Mahal ,则将Q243替换为Q9141 ,并执行CURL调用。
要通过wikiDataId获取WikiPageID,您必须修改上述链接或在上面的链接中替换您选择的wikiDataID。
注意:强>
1)在CURL Call
中使用标签this URL获取WikiPageID2)找到Q243并替换为你的wikiDataID