ナレッジグラフにアクセスする言語「SPARQL」とその使用例を解説
本記事では、誰でも自由に利用可能なナレッジグラフ(知識グラフ)である「DBpedia Japanese」を使用した知識検索を通して、ナレッジグラフの問い合わせ言語である「SPARQL」について紹介します。
ナレッジグラフの概要についてはこちらの記事をご参照ください。
DBpedia Japaneseとは
「DBpedia Japanese」とは、WikipediaのInfoboxの情報から、ナレッジグラフ構成要素であるトリプル(主語、述語、目的語)の3つ組みデータを抽出し、ナレッジグラフ化したものです。図1はSCSKのWikipediaページです。図の赤枠で囲まれた箇所がInfoboxに該当します。
Infoboxから(SCSK, 種類, 株式会社)、(SCSK, 代表者, 谷原徹)、(SCSK, 代表者, 田渕正朗)といったトリプルを抽出し、これらのトリプルをつないでいくことでナレッジグラフとしています。
SPARQLとは
SPARQLはナレッジグラフに対して問い合わせを行うための言語です。クエリ文で指定したグラフパターンにマッチしたトリプルの検索を行います。
下記はSPARQLの基本構文であるselect文による問い合わせ例です。
select ?s ?p ?o
where { ?s ?p ?o .} LIMIT 10
where内の{}で記述した“?s"は主語、“?p"は述語、“?o"は目的語を示します。?s、?p、?oの先頭に付属している“?"はs、p、oが変数であることを示しています。
“select "と“where"の間には、「検索結果のうち返却する要素」を指定します。
LIMITは「検索の上限」です。
以上を踏まえて上記のselect文は、「ナレッジグラフから(主語、述語、目的)の任意のトリプルを10件取得して(where { ?s ?p ?o . } LIMIT 10)、検索結果を“主語、述語、目的語"の並びで出力する(select ?s ?p ?o )」を意味します。
実際にSPARQLでデータを取得してみる
http://ja.dbpedia.org/sparql/にアクセスして実際にDBpedia Japaneseからデータを抽出してみます。ここでは、(SCSK, 〇〇, △△)のようなSCSKを主語としたトリプルを抽出したいと思います。
「ナレッジグラフ(知識グラフ)~ナレッジグラフの作成方法とビジネスへの応用~」でも記載の通り、ナレッジグラフでは主語、述語、目的語をhttp~で始まるURI(Uniform Resource Identifier)に紐づけて表現する手法が存在します。DBpedia Japaneseのように公開されているナレッジグラフでは、URIを用いてデータが表現されています。
DBpedia Japanese上では、SCSKは「http://ja.dbpedia.org/resource/SCSK」で表現されています。
では、実際にSPARQLを用いてSCSKを主語とするトリプルを抽出(述語、目的語のみ表示)します。
select ?p ?o where {
<http://ja.dbpedia.org/resource/SCSK> ?p ?o .
}
上記のSPARQLを実行すると図2のような結果が得られました。
図2を確認すると、SCSKのWikipedia記事のInfoboxに記載されていた情報が含まれていることが分かります。
最後に
今回はナレッジグラフにアクセスする言語であるSPARQLとその使用例を紹介しました。
次の記事ではナレッジグラフを扱う上で必要となるデータベースと検索エンドポイントに焦点を当て紹介していきます。
■ナレッジグラフ技術解説
1)ナレッジグラフ~ナレッジグラフの作成方法とビジネスへの応用~
2)ナレッジグラフにアクセスする言語「SPARQL」とその使用例を解説
3)ナレッジグラフのRDFデータベースとSPARQLでの検索方法を解説