如果页面不是英文,我如何使用 sparql 和 dbpedia 检索 wikipageID

How can I retrieve the wikipageID if the page is not in english using sparql and dbpedia

我想检索不同语言的相同查询名称的 wikipageID。例如:

select * where { <http://dbpedia.org/resource/Mike_Quigley_(footballer)> dbpedia-owl:wikiPageID ?wikiID }
====>Mike_Quigley_(footballer)   17237449   en
select * where { <http://dbpedia.org/resource/Theodore_Roberts> dbpedia-owl:wikiPageID ?wikiID }
====>Theodore_Roberts   6831454   en
select * where { <http://de.dbpedia.org/resource/Theodore_Roberts> dbpedia-owl:wikiPageID ?wikiID }
====>Theodore_Roberts      de
select * where { <http://fr.dbpedia.org/resource/Theodore_Roberts> dbpedia-owl:wikiPageID ?wikiID }
====>Theodore_Roberts      fr
select * where { <http://it.dbpedia.org/resource/Theodore_Roberts> dbpedia-owl:wikiPageID ?wikiID }
====>Theodore_Roberts      it
select * where { <http://ja.dbpedia.org/resource/セオドア・ロバーツ> dbpedia-owl:wikiPageID ?wikiID }
====>セオドア・ロバーツ      ja

在第一个英文查询Mike_Quigley_(footballer)中,我能够检索到它的ID = 17237449但是当语言发生变化时,如您所见,我无法检索到 wikipageID。



太棒了,当我尝试这个查询时

SELECT ?uri ?id 
     WHERE {
         ?uri <http://dbpedia.org/ontology/wikiPageID> ?id.
         FILTER (?uri = <http://dbpedia.org/resource/Lyon>) 
     }

我得到以下结果:

http://dbpedia.org/resource/Lyon 863863


但是当我将 uri 更改为 <it.dbpedia.org/resource/Lyon> 时,我什么也得不到。

因此,如果我理解正确的话,您想要获取 URI 的意大利语版本。但问题是您正在寻找错误的 URI。英语 DBpedia 中里昂 URI 的意大利语版本是 http://it.dbpedia.org/resource/Lione,我假设您正在使用它。我通过以下方式发现了这一点:

SELECT * 
 WHERE {
     ?uri owl:sameAs ?b.
     FILTER (?uri = <http://dbpedia.org/resource/Lyon>) 
 }

而且我无法从英语 DBPedia 中获取意大利语 pageID。 当我在 Italian DBpedia 上尝试时,它起作用了:

SELECT ?uri ?id 
 WHERE {
     ?uri <http://dbpedia.org/ontology/wikiPageID> ?id.
     FILTER (?uri = <http://it.dbpedia.org/resource/Lyon>) 
 }

但是,如果您查看意大利语页面 http://it.dbpedia.org/resource/Lyon,您会发现它有一个 属性 dbpedia-owl:wikiPageRedirects 等于 http://it.dbpedia.org/resource/Lione owl:sameAs给你。也许你可以努力解决这个问题。