首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从维基数据Id获取维基百科页面Id?

如何从维基数据Id获取维基百科页面Id?
EN

Stack Overflow用户
提问于 2017-05-03 04:36:59
回答 3查看 3.1K关注 0票数 5

我想从维基数据id中获取维基百科的页面id,如何使用python从维基数据查询服务或其他方法中获取?因为我在维基数据中看不到任何类似维基百科id的属性。

EN

回答 3

Stack Overflow用户

发布于 2017-05-03 18:59:47

我不确定DBpedia是否总是同时包含wikiPageID和维基数据ID,但你可以在DBpedia上尝试以下查询:

代码语言:javascript
运行
复制
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上尝试以下联邦查询:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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似乎是最合适的。

票数 4
EN

Stack Overflow用户

发布于 2017-05-03 06:11:18

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

=>页面= 15580374

票数 3
EN

Stack Overflow用户

发布于 2017-08-09 14:59:30

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

例如,如果你想要wikiPageID of Taj_Mahal,然后在下面的链接中用Q9141替换Q243,然后做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)在CURL调用中使用this URL获取带标签的WikiPageID

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43746798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档