View in English

スパークル入門 ― グラフに問いを投げる

RDFのグラフ(三つ組の網)に問い合わせる言語 SPARQL を、初学者向けに概念から解説します。トリプルパターン(SELECT … WHERE と ?変数)、パターンを重ねた絞り込み、FILTER・OPTIONAL・並べ替え、結果が表で返ること、公開エンドポイント(Wikidata Query Service)で試す流れまで。CC ライセンスのオープン教材を参照した独自構成・実験的な取り組みです。

SPARQLRDFLinked DataLODWikidataDigital Humanities
⚠ この解説は、AIによる実験的な取り組みです(構成・図・音声合成を含む)。不正確な内容を含む可能性があります。ご利用の際はご注意ください。

掛け合い解説(ずんだもん×四国めたん)

別バージョン

ナレーション解説

章立て

  1. 1

    本編

    スパークルとは・トリプルパターン・SELECT/WHERE・重ねて絞る・PREFIX・FILTER/OPTIONAL/並べ替え・結果は表・エンドポイントで試す・始め方

    読み上げ原稿

    • 0:00グラフに問いを投げる

      皆さん、こんにちは。デジタル・ヒューマニティーズ入門、技術要素シリーズを担当します、なかむらさとるです。この回のテーマは、SPARQLです。前の回で見た、RDFという、線でつないだデータの網に、こんどは、問いを投げて、答えを引き出す。その流れを、初学者向けに、図を交えながら、ゆっくり見ていきます。プログラミングの予備知識は、なくても、大丈夫です。どうぞ、気楽について来てください。

      グラフに問いを投げる
    • 0:35この動画について

      はじめに、この動画について、簡単に、ご案内します。この動画は、クリエイティブ・コモンズ(CC)で、公開されている、オープンな教材を、参照しつつ、独自に、構成した、解説です。スライドと、図は、新規に作成し、ナレーションは、本人の声をもとにした、AIの、音声合成で、つくっています。あくまで、実験的な、取り組みですので、内容は、ご確認・ご注意のうえ、ご利用ください。もし、誤りに、気づかれたら、概要欄から、ご指摘いただけると、たすかります。出典と、ライセンスは、動画の最後と、概要欄に、まとめてあります。それでは、本編に、入りましょう。

      この動画について
    • 1:24この回のゴール

      まず、この回のゴールを、確認しておきましょう。目標は、大きく、四つです。一つめは、SPARQLが、RDFの、グラフに、問い合わせる、言語だと、説明できること。二つめは、基本の形、セレクト・ウェアと、はてなマークのついた、変数の考え方を、説明できること。三つめは、条件を、重ねて、絞り込む、イメージを、持てること。そして四つめは、公開された、窓口で、実際に、試す、流れを、知ることです。RDFや、リンクトデータの回を、見ていると、つながりやすいですが、必須では、ありません。

      この回のゴール
    • 2:11今日の流れ

      今日の流れです。はじめに、何に、問い合わせるのか、RDFの、網を、おさらいします。つぎに、問い合わせの、基本の形、トリプルパターン。それから、パターンを、重ねて、絞る、やり方。そして、フィルターや、並べ替えなど、結果を、整える句。最後に、実際に、試す、方法と、学ぶための、手がかりを、紹介します。

      今日の流れ
    • 2:43おさらい ― RDFという「網」

      それでは、はじめましょう。まずは、SPARQLが、いったい、何に対して、問い合わせるのか。その相手である、RDFの、網を、軽く、おさらいします。

      おさらい ― RDFという「網」
    • 2:56RDF=三つ組が重なった「網」

      図を、見てください。前の回で、見たように、RDFは、データを、主語・述語・目的語の、三つ組で、書き、それを、重ねて、点と線の、網に、しました。たとえば、ホメロスを、中心に、生まれた場所や、時期や、言語が、線で、つながっています。これが、RDFの、グラフ、つまり、私たちが、これから、問いを、投げる、相手です。

      RDF=三つ組が重なった「網」
    • 3:27大きな網は「手で探す」のが難しい

      ところが、この、網が、大きくなってくると、目で、追いかけて、答えを、探すのは、だんだん、大変に、なります。たとえば、イオニアで、生まれた人を、全部、あげたい。これを、手作業で、拾いきるのは、難しい。そこで、グラフに、問いを、書いて、投げる、仕組みが、ほしくなります。それが、SPARQL、グラフへの、問い合わせ言語です。

      大きな網は「手で探す」のが難しい
    • 3:54基本の形 ― トリプルパターン

      では、その、問いを、どう書くのか。まずは、基本の形、トリプルパターンから、見ていきます。

      基本の形 ― トリプルパターン
    • 4:02三つ組の一部を「?変数」にする

      図を、見てください。問い合わせの、考え方は、とても、素直です。三つ組の、知りたいところを、はてなマークのついた、変数に、置き換えるのです。たとえば、主語を、はてな・パーソン、という、変数にして、述語は、生まれた場所、目的語は、イオニア。このように、一部を、変数にした、三つ組を、トリプルパターン、と呼びます。

      三つ組の一部を「?変数」にする
    • 4:33基本の形:SELECT … WHERE

      それを、実際の、書き方に、すると、こうなります。セレクト、はてな・パーソン、ウェア、波かっこ、はてな・パーソン、生まれた場所、イオニア。ウェアの、中に、探したい、パターンを、書き、セレクトの、あとに、受け取りたい、変数を、並べます。つまり、イオニアで、生まれた、はてな・パーソンを、教えてください、という、意味に、なります。

      基本の形:SELECT … WHERE
    • 5:03パターンに「合う三つ組」を集める

      では、この、パターンを、グラフに、当てると、どうなるでしょう。図を、見てください。SPARQLは、グラフ全体を、見て、パターンに、当てはまる、三つ組だけを、拾い出します。この例では、ホメロス、生まれた場所、イオニア、という、三つ組が、当てはまります。一方、ホメロスの、言語は、ギリシャ語、という、三つ組は、述語が、ちがうので、外れます。また、サッフォー、生まれた場所、レスボス、は、生まれた場所、という、述語は、同じでも、目的語が、イオニアでは、ないので、これも、当てはまりません。こうして、条件に、合うものだけが、機械的に、集まります。

      パターンに「合う三つ組」を集める
    • 5:53ここまでのポイント

      ここで、いったん、整理します。SPARQLは、RDFの、グラフに、問い合わせる、言語でした。知りたいところを、変数に、した、三つ組を、トリプルパターン、と呼び、セレクト・ウェアで、それに、合う、三つ組を、まとめて、拾う。ここまでが、出発点です。ただ、パターンが、一つだけだと、まだ、条件は、ゆるい。つぎは、これを、重ねて、絞り込みます。

      ここまでのポイント
    • 6:24つなげて絞る ― パターンを重ねる

      ここからは、パターンを、重ねて、絞る、話です。

      つなげて絞る ― パターンを重ねる
    • 6:29パターンを二つ書くと「かつ」になる

      図の、書き方を、見てください。ウェアの、中に、パターンを、二つ、書いています。一つめは、はてな・パーソンが、イオニアで、生まれた、こと。二つめは、同じ、はてな・パーソンが、詩人で、ある、こと。このように、二つ、並べると、両方を、同時に、満たすもの、つまり、イオニア生まれで、かつ、詩人、という、条件に、絞ることが、できます。

      パターンを二つ書くと「かつ」になる
    • 7:00同じ変数が「つなぎ目」になる

      ここで、大事なのは、二つの、パターンで、同じ名前の、変数、はてな・パーソンを、使っている、ことです。図のように、同じ、変数が、二つの、条件の、つなぎ目に、なって、両方を、満たすものだけが、残ります。この、同じ変数で、パターンを、つなぐ、というのが、絞り込みの、基本の、考え方です。

      同じ変数が「つなぎ目」になる
    • 7:24長いURIは PREFIX で短く書く

      もう一つ、実用上の、工夫を、紹介します。本来、述語などの、URIは、とても、長い、文字列です。毎回、書くのは、大変なので、図のように、プレフィックス、という、宣言で、短い、略称を、決めておきます。たとえば、スキーマ、コロン、を、スキーマドットオルグの、URIの、略称に、しておけば、あとは、スキーマ・コロン・バースプレイス、のように、短く、読みやすく、書けます。

      長いURIは PREFIX で短く書く
    • 8:02ここまでのポイント

      ここまでを、整理します。パターンを、重ねると、条件を、かつ、で、絞り込める。その、つなぎ目に、なるのが、同じ名前の、変数でした。そして、長い、URIは、プレフィックスで、短く、書ける。これで、探す、ところまでは、できました。あとは、出てきた、結果を、整える、句を、見ていきます。

      ここまでのポイント
    • 8:31結果を整える ― よく使う句

      ここからは、結果を、整える、ために、よく使う、句を、いくつか、見ていきます。

      結果を整える ― よく使う句
    • 8:37FILTER=条件でしぼる

      まずは、フィルターです。図のように、取り出した、値に、さらに、条件を、足すことが、できます。この例では、生まれた年を、取り出したうえで、フィルターで、その値を、しぼっています。たとえば、年代で、しぼる、といった、使い方です。なお、ここでの、書き方は、説明用の、一例で、実際の、書き方は、データの、定義に、合わせて、決めます。

      FILTER=条件でしぼる
    • 9:08OPTIONAL=あれば取る

      つぎは、オプショナルです。これは、あれば、取る、という、句です。図のように、イオニアで、生まれた人を、探しつつ、もし、画像が、あれば、それも、一緒に、取ってくる。ただし、画像が、ない人を、結果から、落とす、ことは、しません。あってもなくても、よい、情報を、添えたいときに、使います。

      OPTIONAL=あれば取る
    • 9:35ORDER BY・LIMIT=並べる・件数をしぼる

      それから、オーダー・バイと、リミットです。オーダー・バイは、結果を、ある順番で、並べ替える、句。リミットは、返す、件数を、区切る、句です。図のように、まずは、十件だけ、といった、形で、結果を、小さく、区切って、確かめる、ことが、できます。大きな、データを、扱うときほど、この、リミットが、役に立ちます。

      ORDER BY・LIMIT=並べる・件数をしぼる
    • 10:06グラフに問うと「表」が返る

      ここで、結果が、どんな、形で、返ってくるかも、見ておきましょう。図を、見てください。問いを、投げる、相手は、点と線の、グラフでしたが、返ってくる、答えは、はてな・パーソン、といった、変数を、見出しに、した、表です。グラフに、問うと、表が、返る。少し、意外かもしれませんが、これが、SPARQLの、結果の、基本の、かたちです。

      グラフに問うと「表」が返る
    • 10:35ここまでのポイント

      ここまでを、整理します。フィルターで、値に、条件を、足し、オプショナルで、あれば取る。オーダー・バイと、リミットで、並べ替えや、件数の、調整が、できる。そして、答えは、変数を、列に、した、表で、返ってくる。これで、問い合わせの、部品は、ひととおり、そろいました。

      ここまでのポイント
    • 11:02実際に試す ― エンドポイント

      では、部品が、そろったところで、実際に、どこで、試せるのか、という、話に、入ります。

      実際に試す ― エンドポイント
    • 11:08どこに問いを投げる?

      SPARQLを、受け付ける、公開の、窓口を、エンドポイント、と呼びます。データを、持っている、機関などが、用意していて、誰でも、問い合わせできる、ものも、たくさん、あります。入門に、向いているのは、Wikidata・クエリ・サービス、です。ブラウザに、問いを、書いて、実行ボタンを、押すと、その場で、結果の、表が、返ってきます。

      どこに問いを投げる?
    • 11:38例:Wikidata に問いを投げる

      Wikidataでは、ものも、述語も、URIで、表されています。ある場所で、生まれた人、ある職業の人、といった、問いを、パターンで、書いて、取り出せます。最初から、自分で、書くのは、大変なので、用意されている、例文を、実行して、少しずつ、書き換えながら、慣れていくのが、おすすめです。結果は、表のほか、地図や、グラフなどに、切り替えて、見ることも、できます。なお、この動画で、使っている、イオニアなどの、例は、あくまで、説明用です。実際の、URIや、語彙は、それぞれの、データの、定義に、従います。

      例:Wikidata に問いを投げる
    • 12:26考えてみよう

      ここで、少し、立ち止まって、考えてみましょう。あなたが、ふだん、扱っている、データに、投げてみたい、問いは、どんな、ものでしょうか。なになにな、なになにを、全部、あげて、というふうに。よろしければ、ここで一度、動画を止めて、思い浮かべてみてください。

      考えてみよう
    • 12:50問いの立て方にも「判断」が入る

      問いを、立てるときにも、いくつか、心に、留めておきたい、点が、あります。どの、述語や、語彙で、書くかによって、拾えるものが、変わります。そして、データに、書かれていない、関係は、当然ながら、答えには、出てきません。ですから、結果は、あくまで、データが、そう書かれている、範囲での、答え、と、捉えるのが、よいでしょう。また、あまりに、広い、問いは、処理が、重く、なりがちです。さきほどの、リミットで、小さく、試してから、少しずつ、広げると、安心です。

      問いの立て方にも「判断」が入る
    • 13:31始め方・学ぶには

      では、自分でも、やってみたい、と思ったら、どうすれば、よいでしょう。まず、触れてみるなら、Wikidata・クエリ・サービスの、例文を、実行してみるのが、よい、入り口です。体系的に、学ぶなら、Programming Historianの、SPARQLの、レッスン。その、背景を、固めるには、同じく、Linked Open Dataの、入門や、アールト大学、セコ・グループの、教材も、役立ちます。コツは、小さな、問いから、始めて、パターンを、一行ずつ、足しながら、育てていく、ことです。

      始め方・学ぶには
    • 14:12まとめ

      今日の、まとめです。SPARQLは、RDFの、グラフに、問い合わせる、言語でした。知りたいところを、変数に、した、トリプルパターンを、セレクト・ウェアで、書く。パターンを、重ねて、絞り、フィルターや、オプショナル、オーダー・バイ、リミットで、結果を、整える。そして、答えは、表で、返り、公開された、エンドポイントで、すぐに、試せる。データを、線で、つなぐ、RDFから、その網に、問いを、投げる、SPARQLへ。地続きの、考え方として、つかんで、いただけたなら、と思います。

      まとめ
    • 14:57出典・ライセンス

      この動画は、海外で、オープンライセンスのもとに、公開されている、教材を、参照して、作成しました。主なものは、Programming Historianの、SPARQLの、レッスン、そして、Linked Open Dataの、入門、さらに、アールト大学、セコ・グループの、リンクトデータ教材です。いずれも、クリエイティブ・コモンズ(CC)の、表示ライセンスで、公開されています。スライドと、図は、これらを、参考にしたうえで、あらためて、作成したものです。

      出典・ライセンス
    • 15:35ご清聴ありがとうございました

      以上で、SPARQLの、入門を、終わります。つないだ、データに、問いを、投げて、答えを、引き出す。その第一歩を、つかんで、いただけたなら、と思います。ご清聴、ありがとうございました。

      ご清聴ありがとうございました