【问题标题】:How to get Wikipedia page id from Wikidata id?如何从 Wikidata id 获取 Wikipedia 页面 id?
【发布时间】:2017-05-02 20:36:59
【问题描述】:

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

【问题讨论】:

    标签: python wikipedia wikidata wikidata-query-service


    【解决方案1】:

    首先,您需要从 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

    【讨论】:

      【解决方案2】:

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

      Try it!

      或者您可以在 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 
          } 
      }
      

      Try it!

      更新

      您可以在 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" .
          }
      }
      

      Try it!

      不幸的是,您have to use 似乎是一个生成器; allpages 似乎是最合适的。

      【讨论】:

        【解决方案3】:

        在您的 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 调用中使用 this URL

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-22
          • 2014-11-27
          • 1970-01-01
          • 2013-04-25
          相关资源
          最近更新 更多