LoginSignup
12
16

More than 5 years have passed since last update.

D2R - MySQLのデータからRDFの出力/SPARQLエンドポイントの設置

Last updated at Posted at 2012-10-01

D2Rを使うとMySQL等のRDBのデータからRDFを出力することができる。またSPARQLのエンドポイントとしても機能する。
本家サイトはこちら: http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/

動きとしては、RDBのテーブル/カラム構成とRDFでの出力結果をひもづけするマッピングファイルを用意して、それをもとにサーバーを起動する、という形になる。

How D2R works

セットアップ

基本的なセットアップは上記公式サイトからtar.gzをダウンロードしてきて展開すればOK

マッピングファイルのひな形を出力する

RDBの構成をどうRDFとして出力するかを記述するものがマッピングファイルである。
現状のカラム構成からマッピングファイルのひな形を出力するユーティリティコマンドが用意されている。
例えばlocalhostにあるblogというデータベースからマッピングファイルを出力する場合

$ ./generate-mapping -u john -p your_pw -d com.mysql.jdbc.Driver \
-o mapping.n3  jdbc:mysql://localhost/blog

マッピングファイルの編集

マッピングファイルはひな形として出力したものから表示したくないカラムやテーブルを除けば、概ね使える状態になるが、テーブル間のアソシエーションを表現したい場合などは少々手を入れる必要がある。

例えば、一つのブログ記事に複数のコメントが紐づいていて、その情報を出力に加えたい場合は下記のようにd2r:join句を使って表現する

map:posts_comment a d2rq:PropertyBridge;
        d2rq:belongsToClassMap map:posts;
        d2rq:property vocab:comments;
        d2rq:uriPattern "http://yourblog.com/comments/@@comments.id@@";
        d2rq:join "posts.id <= comments.post_id";
        .

次に、例えば緯度データがミリ秒としてDBに入っているが、出力は度形式にしたい場合などはd2rq:sqlExpressionを使ってSQL文として演算を加える

@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .

map:posts_lat a d2rq:PropertyBridge;
        d2rq:belongsToClassMap map:posts;
        d2rq:property geo:lat;
        d2rq:propertyDefinitionLabel "posts lat";
        d2rq:sqlExpression "posts.lat / (60.0 * 60.0 * 1000.0)";
        d2rq:datatype xsd:double;
        .

サーバーの起動

変更を加えたマッピングファイルをmapping.n3とすると下記のコマンドでサーバーが立ちあがる

$ ./d2r-server -p 80 -b http://yourblog.com mapping.n3

ブラウザでアクセウスするとデータ全体をブラウズすることができる。
この場合、SPARQLエンドポイントはhttp://yourblog.com/sparqlとなる

12
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
16