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

How to check if Japanese version of Wikidata item exists

我正在尝试构建一个名称列表并将它们与日语中的对应名称相匹配。

我首先想到尝试抓取维基百科并跟踪 link 到日语版的页面,但我不知道如何检查该页面是关于一个人还是关于其他任何东西。

幸运的是有 wikidata 和 dbpedia 项目。

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

可以缩减为 'people'

的查询
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

这导致 link 乔治·华盛顿 https://www.wikidata.org/wiki/Q23

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

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

如果您正在查询维基数据,您可以使用标签服务:

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