Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

SPARQLを使ってみる。

SPARQL(スパークル)はRDBで言うSQL言語=クエリ言語です。
それを利用して、RDF(Resource Description Framework。web上にあるリソースを記述するための枠組み)
から必要な情報を取り出したいと思います。

以下は
SPARQL で RDF データを検索する
に書かれていたことを自分のような残念なやつにわかるよう書き直したものです。

こんなデータがあるとして
f:id:A_01:20140122004939g:plainf:id:A_01:20140122004939g:plain

「Jon FoobarのブログURLを取り出す」クエリです。

prefix foaf: <http://xmlns.com/foaf/0.1/>
select ?url
from <bloggers.rdf>
where {
 ?contributor foaf:name "Jon Foobar" .
 ?contributor foaf:weblog ?url .
}

一つずつ見て行きましょう。

prefix foaf: <http://xmlns.com/foaf/0.1/>

FOAFはFriend of a Friendの略で、人に関する情報とその繋がりを公開・共有するプロジェクトを指します。
prefix(接頭辞)=foafを用いることでIRI(Internationalized Resource Idetifiers。URIの集合である識別子の仕様)=http://xmlns.com/foaf/0.1/を省略します。

select ?url

urlという変数(SQLで言うカラムやフィールド)を抜き出します。
変数の頭には?か$を付けます。

from <bloggers.rdf>

使用するデータセットURIを指定しています。

where {
 ?contributor foaf:name "Jon Foobar" .
 ?contributor foaf:weblog ?url .
}

条件文です。foafはprefixで定義したものだと思います。
foaf:nameプロパティが"Jon Foobar"なノードを?contributorにバインドし(関連付けし)
?contributorにバインドされたノードのfoaf:weblogプロパティを?url変数にバインドします。
この?urlが先ほどselectしていた?urlです。

参考
http://www.asahi-net.or.jp/~ax2s-kmtn/internet/rdf/rdf-sparql-query.html