使用dbpedia返回查询的完整维基百科页面

时间:2015-02-23 17:31:29

标签: python sparql dbpedia

我使用以下代码检索给定查询的消歧页面。

#disambiguation function
def disambiguation(name, sparql):
  query = "SELECT DISTINCT ?syn WHERE { { ?disPage dbpedia-owl:wikiPageDisambiguates <http://dbpedia.org/resource/"+name+"> . ?disPage dbpedia-owl:wikiPageDisambiguates ?syn . }  UNION {<http://dbpedia.org/resource/"+name+"> dbpedia-owl:wikiPageDisambiguates ?syn . } }"
  sparql.setQuery(query)
  sparql.setReturnFormat(JSON)  
  results_list = sparql.query().convert()
  return results_list

问题:

  

是否可以返回results_list中每个元素的完整维基百科页面?

1 个答案:

答案 0 :(得分:2)

简化您的查询

SELECT DISTINCT ?syn WHERE {
  { ?disPage dbpedia-owl:wikiPageDisambiguates <http://dbpedia.org/resource/"+name+"> .
    ?disPage dbpedia-owl:wikiPageDisambiguates ?syn . }
  UNION
  { <http://dbpedia.org/resource/"+name+"> dbpedia-owl:wikiPageDisambiguates ?syn . }
}

此查询可以更清晰地写为

select distinct ?syn where {
  ?syn (dbpedia-owl:wikiPageDisambiguates|^dbpedia-owl:wikiPageDisambiguates)* dbpedia:name
}

此查询说明要通过 dbpedia-owl:wikiPageDisambiguates 路径在任何方向上找到与 dbpedia:name 相关的所有内容。

获取维基百科文章网址

  

I actually wanted to retrieve the whole wikipedia page. For example: When I find a name in a different language I want to Go to the corresponding wikipedia page and retrieve its corresponding page

如果您确实想要检索页面(使用其他库或任何其他库),那么您只需要获取Wikipedia文章URL。这是 foaf:isPrimaryTopicOf 属性的值。例如,如果你查看Johnny Cash的属性值,你会看到

http://dbpedia.org/resource/Johnny_Cash foaf:isPrimaryTopicOf http://en.wikipedia.org/wiki/Johnny_Cash

基于此,听起来您更希望查询更像:

select distinct ?page where {
  ?syn (dbpedia-owl:wikiPageDisambiguates|^dbpedia-owl:wikiPageDisambiguates)* dbpedia:name ;
       foaf:isPrimaryTopicOf ?page

}

然后?page 的每个值都应该是您可以下载的Wikipedia文章网址。