本文
カタカナ名前の芸名で国籍が日本の芸能人はたくさんいるんじゃないかと思ったので、Wikidataでちょちょいと調べてみる。と、思ったのだけど、全然、ちょちょいできなかった。Wikidataのデータを検索するための問い合わせ言語SPARQLでカタカナ語を含む芸名の人だけひっぱってきたかったのだけどやり方がわからない。とりあえず、WikidataのID、名前(ラベル)、国籍、日本タレント名鑑IDの一覧を返す検索文を作ったので興味ある方は、このデータから「芸名にカタカナを含んでおり、かつ、国籍が日本」の人を抽出してみてほしい。
検索はこちらからできる。
SELECT ?item ?itemLabel ?ci ?yahoo { ?item wdt:P31 wd:Q5. OPTIONAL{?item wdt:P27 ?ci}. ?item wdt:P3477 ?y. wd:P3477 wdt:P1630 ?format1 . BIND(IRI(REPLACE(?y, '^(.+)$', ?format1)) AS ?yahoo). SERVICE wikibase:label { bd:serviceParam wikibase:language "ja,en". } } LIMIT 1000 OFFSET 1
以下を全部満たすものだけを表示している
- 「?item wdt:P31 wd:Q5.」:?itemの分類(wdt:P31)が人間(wd:Q5)である
- 「OPTIONAL{?item wdt:P27 ?ci}.」:?itemに国籍(wdt:P27)の項があるならば変数?ciに格納する
- 「?item wdt:P3477 ?y」:?itemに日本タレント名鑑ID(wdt:P3477)の項があること。
Wikidataの検索は一定時間以上検索時間がかかると検索命令が拒否されてしまうので、「LIMIT 1000」で1000件ずつ探している。「OFFSET 1」で何番目から探し始めるのかを指定しているので、1000件以降を探したい場合は「OFFSET 1001」、「OFFSET 2001」と増やしていけばよい。
国籍(?ci)の項の検索結果は「wd:Q17」とか「wd:Q30」と表示されているが、これはWikidataのIDで国を表示している。「wd:Q17」は日本、「wd:Q30」はアメリカになっている。国名表示をしたかったのだけれども、そうすると検索にかかる時間が非常に遅くなってしまうのでこうしている。
ちなみに、Wikidataに登録されており(Wikipediaに記事があり)、かつ、国籍についてWikidataに記載があり、かつ、日本タレント名鑑IDがWikidataに記載されている人物のうち、国籍が日本でない人の一覧は以下で調べられる。検索はこちらからできる。
SELECT ?item ?itemLabel ?ci ?yahoo { ?item wdt:P31 wd:Q5. ?item wdt:P27 ?ci. MINUS{?item wdt:P27 wd:Q17}. ?item wdt:P3477 ?y. wd:P3477 wdt:P1630 ?format1 . BIND(IRI(REPLACE(?y, '^(.+)$', ?format1)) AS ?yahoo). SERVICE wikibase:label { bd:serviceParam wikibase:language "ja,en". } } LIMIT 200 OFFSET 1