如何检查日语版的维基数据项是否存在

时间:2015-10-26 13:23:58

标签: sparql wikidata

我正在尝试建立一个名单列表,并将它们与日语等价物相匹配。

我首先想到的是尝试抓取维基百科并关注该页面的日文版本的链接,但我不知道如何检查该页面是关于某人还是其他任何内容。

值得庆幸的是wikidata和dbpedia项目。

我开始修补wikidata并找到了这个例子 https://www.mediawiki.org/wiki/Wikibase/Indexing/SPARQL_Query_Examples#People_born_before_year_1880_with_no_death_date

可以缩小为'人'的查询

PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT * WHERE {
   ?h wdt:P31 wd:Q5 .

 } LIMIT 1

这导致乔治华盛顿的链接 https://www.wikidata.org/wiki/Q23

该页面底部是此人的维基百科页面链接列表 用其他语言包括日语。

有没有办法在同一个查询中返回名称和日文版本?

1 个答案:

答案 0 :(得分:4)

如果您要查询wikidata,可以使用标签服务:

PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX v: <http://www.wikidata.org/prop/statement/>
SELECT * WHERE {
  wd:Q30 p:P6/v:P6 ?p .
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
    ?p rdfs:label ?enName .
  }
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "ja" .
    ?p rdfs:label ?jaName .
  }
}

Link

我找到了答案here