RDF ストアとSPARQLについて

数学 機械学習技術 人工知能技術 プログラミング技術  アルゴリズム   データベース技術.  デジタルトランスフォーメーション ICT技術  セマンティックウェブ技術

前回、LODを実現するRDFデータのデータモデルと具体的なデータ構造について述べた。今回はそれらをハンドリングするデータベースであるRDFストアと、RDFストアからデータを抽出するクエリ体系であるSPARQLについて述べる。

RDFデータは別名トリプルストア(triplestore)とも呼ばれる以前DBの概要で紹介したNoSQLデータベースと呼ばれる非RDBMSのグラフ型のデータとなる。グラフ型DBとしてはNoo4JやDAtomic等のRDFによらない「ノード」「エッジ」「プロパティ」により構成されるデータベースがあり、それぞれ固有のクエリエンジン(Cypher、Datalog拡張クエリ)を持っている。RDFデータベースは、RDFデータ構造に準拠したクエリであるSPARQLに対応している物を言う。

RDFデータストアとしては、OcarleやIBM等の既存のDBフレームワークを持っているところからも提供されている他、オープンソースとしてはApacheプロジェクトからJena(及びクエリモジュールArq)が提供されていたり、個別のベンダーとしてはBlazeGraphAllegroGraph等がある。またクラウドサービス対応としてはAWSのNeptuneもSAPRQLをサーポートしている。

SPARQLは、RDFストアに対する問い合わせ言語で、RDBMSにおけるSQLに当たるものとなる。SPARQLの例を以下に示す。

PREFIX abc: <http://mynamespace.com/exampleOntologie#>
SELECT ?capital ?country
WHERE {
  ?x abc:cityname ?capital.
  ?y abc:countryname ?country.
  ?x abc:isCapitalOf ?y.
  ?y abc:isInContinent abc:africa.
}

冒頭のPREFIXは名前空間(name space)の定義領域で、すべてのRDFデータは名前空間を持ち、それらを毎回書くことの非効率性を防ぐため、最初に略語として定義し(上記例ではabc:)、その後はその略語を利用するものとなる。

二番目のSELECTは、クエリ形式と呼ばれるもので「SELECT」の他に「CONSTRUCT」「ASK」「DESCRIBE」がある。「SELECT」は最も多く使われるクエリで、後述するクエリパターンにマッチした変数(SELECTの後ろに定義されている?から始まる文字列)を返すものとなる。SELECTの後ろに「*」を技術すると全ての変数に対する結果が返される。

「CONSTRUCT」は、単なる変数ではなくトリプルデータを返すクエリ、「ASK」はクエリパターンがマッチしているかどうかを示すプール値(true/false)を返すものとなり、DESCRIBEは発見した資源に対して記述したRDFグラフを返すものとなる。

三番目以降はマッチさせたいパターンを記述する領域となる。「WHERE」で始まり、マッチさせたいトリプルパターンを{}の中に記述する。これらの記述の中には論理和や論理積、文字列操作やフィルターなど多彩な記述が可能で、それらがSPARQLの柔軟性を担保している。

SPARQLの参考図書としては「Learning SPARQL second edition」が最適かと思う。

以下、実際のRDFストアの立ち上げと利用について、Blazegraphを例に述べる。BalzeGraphはWikiのデータエンドポイントとしても利用されているRDFストアでAWSのNeptuneのベースにもなっており、Javaで動作するデータベースとなる。

利用方法としてはまず、推奨されるJava環境(Java9以降)を立ち上げた後、BlazegraphのWebページに行きダウンロードページよりJarファイル(blazegraph.jar)をダウンロードする。

ダウンロードしたjarファイルをいずれかのフォルダに格納したのち、そのフォルダーでターミナルを動作させて以下のコマンドを打ち込む。続いて以下ののようなメッセージが表示されれば立ち上げは完了する。

>java -server -Xmx4g -jar blazegraph.jar
...
serviceURL: http://127.0.0.1:9999
Welcome to Blazegraph(tm) by SYSTAP.
Go to http://localhost:9999/blazegraph/ to get started.

次にブラウザを立ち上げて「http://localhost:9999」にアクセスすると以下のような画面が表示される。

次に(サンプル)データをデータベースに格納する。(公式HPページでのサンプルデータ) Blazegraphの「UPDATE」タグを以下のように開き、格納するデータを指定して「UPDATE」をクリック。

最後に「QUERY」タグを以下のように開いて、SPARQLクエリを記述して検索してみる。検索が無事にできれば下図のように結果が表示される。

このRDFストアとClojureの連携に関しては別途記載する。

コメント

  1. […] Semantic Web技術の要素であるRDFやRDFデータベース、オントロジーに関しては別途述べるが、今回はこれらの論文の中で発表された内容について紹介する。 […]

  2. […] RDF storeとSPARQL NoSQL DBの一つであるグラフ型DBについて […]

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