5

我想从 Wikidata id 获取 Wikipedia 页面 id,如何从 Wikidata 查询服务或其他使用 python 的方法获取它?因为我在 wikidata 中没有看到任何类似于 wikipedia id 的属性。

4

3 回答 3

4

我不确定,如果 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" .
    }
}

试试看!

不幸的是,您似乎必须使用生成器。allpages似乎是最合适的一个。

于 2017-05-03T10:59:46.987 回答
3

首先,您需要title从 Wikidata id 获取 Wikipedia 页面,这可以通过对 Wikidata APIwbgetentities模块的请求来完成,如下所示: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 中,您可以得到:
Wikidata id = Q123
=> English Wikipedia ( enwiki) title = September
=> pageid =15580374

于 2017-05-02T22:11:18.180 回答
1

在您的 CURL 调用中使用以下 URL。您必须在下面的链接中更改 WikiDataID Q243。

例如,如果您想要 Taj_Mahal 的wikiPageID ,则在下面的链接中将 Q243替换为 Q9141并进行 CURL 调用。

http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=PREFIX+wd%3A+%3Chttp%3A%2F%2Fwww.wikidata.org%2Fentity%2F%3E+% 0D%0ASELECT+%3FwikiPageID+WHERE+%7B%0D%0A%3Fdbpedia_id+owl%3AsameAs+%3Fwikidata_id++.%0D%0A%3Fdbpedia_id+dbo%3AwikiPageID+%3FwikiPageID+.%0D%0AVALUES+%28%3Fwikidata_id%29+%7B%28wd %3AQ243%29%7D+%0D%0A%7D&format=application%2Fsparql-results%2Bjson&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000&debug=on&run=+Run+Query

要通过 wikiDataId 获取 WikiPageID,您必须修改上面的链接或在上面的链接中替换您选择的 wikiDataID。

笔记:

1) 要获取带有标签的 WikiPageID,请在 CURL 调用中使用此 URL

2) 找到 Q243 并替换为您的 wikiDataID

于 2017-08-09T06:59:30.440 回答