1

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

我首先考虑尝试爬取维基百科并点击该页面的日文版链接,但我不知道如何检查该页面是关于一个人还是关于其他任何内容。

幸好有 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

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

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

4

1 回答 1

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 .
  }
}

关联

我在这里找到了答案

于 2015-10-27T14:10:15.860 回答