API, URIとPythonを使って、Wikidataからデータを取得する (1) Wikidataの前提知識

Wikidata

はじめに

この記事は、Wikidataから「日本の首都は?」のように、「○○の××は何か?」ということを調べる方法についての記事です。

以前Wikidataを扱う必要があり、その際に大変苦しんだので、半分備忘録みたいな感じで書きます。
正確性には疑問がありますので、誤っている点などあればご指摘ください。

第1弾の今回はWikidataの仕様について解説するだけなので、その辺がわかっている方は次の記事に飛んでください。

タイトルにPythonと入っていますが、HTTPのGETリクエストを送信してレスポンスを受け取ることができる言語であれば同じような方法でできるかもしれません。私は最初Javaで書きました。

次の記事

このシリーズの他の記事は、「Wikidata」カテゴリーから飛んでください。
スマホの方は画面右下の「サイドバー」ボタンから、それ以外の方は画面右側のサイドバーから。

用語

Wikidata公式の用語集がありますので、その通りなのですが、今回覚えておくべき用語は以下の通りです。

エンティティ(Entity)

実体のことです。
「日本の首都は?」における「日本」がエンティティです。

プロパティ(Property)

性質のことです。
「日本の首都は?」における「首都」がプロパティです。
「東京都」はプロパティではありません。注意。

値(Value)

プロパティの中身のことです。
「日本の首都は?」という質問に対する「東京都」が値です。

注:厳密には、値は複数存在する可能性があるので、リストとして返ってきます。
日本の首都も、「東京都」のほかに「江戸」とか「平安京」とかが値になってます。

また、これらの値はエンティティの場合が多く、地図上の座標などは定数で与えられたりします。

ID

エンティティとプロパティを識別するための文字列です。
エンティティは「Q」の後、プロパティは「P」の後に番号が振られています。

例:「日本」のエンティティIDは「Q17」、「首都」のプロパティIDは「P36」です。
ちなみに、「東京都」のエンティティIDは「Q1490」です。

なお、「生年月日」(Q47223、P569)など、検索をかけるとエンティティとしてもプロパティとしてもヒットする単語については注意してください。

データの構造

基本的には、以下のような構造になっているというイメージを持っておいてください。

  • エンティティ
    • プロパティ1
      • 値1
      • 値2
    • プロパティ2
      • 値1
      • 値2

次回説明するGETメソッドのレスポンスは、JSONなどの文書で得られるのですが、主な構造としては上の通りです。
取得したJSONには必要な情報以外にも様々なデータがついてくるので、処理する際には以上のイメージを持っておくとやりやすいです。

最後に

次回はWikidataのURIやAPIについて説明します。

このシリーズの他の記事は、「Wikidata」カテゴリーから飛んでください。
スマホの方は画面右下の「サイドバー」ボタンから、それ以外の方は画面右側のサイドバーから。

コメント

タイトルとURLをコピーしました