LoginSignup
10
14

More than 5 years have passed since last update.

RDF4J ServerをインストールしてRDFデータベースとして使用する

Last updated at Posted at 2016-07-05

この記事はダウンロードor自分で構築したRDFをデータベースに追加・公開してSPARQL検索を使いたい人向けの記事です。

RDF4Jとは

RDF4JとはJavaからRDFの操作が可能なフレームワークです。2016年5月18日にOpenRDF Sesameが終了しRDF4Jとして生まれ変わりました。RDF4Jは新たにEclipseプロジェクトとなっています。
細かいことはまだ調査できていませんが今までSesameでできていたことはRDF4Jでできそうです。
Sesameの記事は消えてしまったようですが、アーカイブの方はSourceForgeで生きています。

RDFデータベースとして使用する

RDF4JをRDFデータベースとして使用するためにはRDF4J ServerとRDF4J Workbenchをインストールします。
RDF4J Serverは事実上のRDFデータベースで、SPARQLエンドポイントとしても機能させることができます。
RDF4J Workbenchはブラウザでデータベースを管理できるインターフェースです。RDFの追加や削除などの管理はこのWorkbenchを使って行います。

動作条件

RDF4J ServerとRDF4J WorkbenchはTomcat上で動作するため、以下のインストールが済んでいることが条件です。

  • Java 8
  • Apache Tomcat

私の環境はCentOS 6, Java 1.8.0_51, Tomcat 7.0.63でした。
Tomcatのインストール方法はこちらを参考にしていただければと思います。

インストール

まずダウンロードページからRDF4J-2.0M2 SDK (zip)をダウンロードします。
ダウンロードしたzipファイルを解凍して出てくるwarフォルダ以下の

  • rdf4j-server.war
  • rdf4j-workbench.war

を(Tomcatインストール先ディレクトリ)/webapps/
にコピペします。
これでインストールは完了です。Tomcatが入っている環境であれば恐ろしく簡単です。

リポジトリの作成

ブラウザでRDF4J Workbench画面にアクセスします。
URL: http://localhost:8080/rdf4j-workbench
こんな感じの管理画面が表示されると思います。Sesameとほぼ変わりませんね。
rdf4j_0.PNG

新しくリポジトリを作成します。
左サイドバーのRepoositoriesからNew repositoryを選択します。
Typeで保存するリポジトリのタイプを選択できます。ここではIn Memory Storeを選択します。メモリ上に保存するため高速ですが、サーバが落ちるとデータも消えてしまいます。永続的に保存したい場合はJava Native Storeなどを選択してください。
IDでリポジトリの一意なIDを決めます。
Titleでリポジトリのタイトルを決めます。
ここでは放置自転車LODのデータを追加してみます。
rdf4j_1.PNG

Nextボタン→Createでリポジトリが作成されます。rdf4j_2.PNG

無事リポジトリが作成されました。
右上のRipositoryが放置自転車LOD(ipblod)となっているので、現在放置自転車LODのリポジトリが選択されている状態です。このままRDFデータの追加に移ります。

RDFデータの追加

左サイドメニューのModifyからAddを選択します。
次にRDF Data Fileをから追加したいRDFデータを選択します。
Base URIが勝手に決まってしまうので、任意のBase URIに変更します。
Data formatを追加するRDFデータに合わせて変更します。
最後にUploadします。
rdf4j_4.PNG

アップロードが成功すると次のような画面になります。RDFの記述が間違っているとここではじかれます。
複数のRDFデータを追加することでマージできます。放置自転車情報と気象情報をマージしました。
rdf4j_5.PNG

SPARQL

Query Repository

左サイドメニューのQueryからSPARQLクエリを実行できます。
シンタックスハイライトしてくれます。
実行結果の画面で結果をCSV,JSON,XMLなど様々な形式でダウンロードすることができます。
rdf4j_6.PNG

※残念ながらSesameの時と同様に日本語を直接使用できないみたいです・・・unicodeエンコードする必要があります。(ビル→\u30d3\u30eb)

SPARQLエンドポイント

外部プログラムからSPARQLによる問い合わせを行うには、以下のURLにパラメータとしてSPARQL文を付与してアクセスします。
http://localhost:8080/rdf4j-server/repositories/(リポジトリのID)?query=(SPARQL文)
メディアタイプを指定して結果を取得することもできます。結果をJSONで取得する場合は次のようになります。
http://localhost:8080/rdf4j-server/repositories/(リポジトリのID)?query=(SPARQL文)&Accept=application/sparql-result%2Bjson

認証機能を付ける

上記まででRDF4J ServerとRDF WorkbenchのインストールからRDFデータの追加までは完了なのですが、Workbenchが誰でも見れる状態になっているため不安です。
そこで、workbenchにアクセスする時にユーザ名とパスワードを求める設定にします。

(Tomcatのインストールディレクトリ)/webapps/openrdf-workbench/WEB-INF/web.xml
の中のweb-app要素内に以下を追記します。

<security-constraint>
  <web-resource-collection>
    <web-resource-name>RDF4J Workbench</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>rdf4j-user</role-name>
  </auth-constraint>
</security-constraint>

<login-config>
  <auth-method>DIGEST</auth-method>
  <realm-name>RDF4J Workbench</realm-name>
</login-config>

<security-role>
  <description>The role required for Sesame workbench</description>
  <role-name>rdf4j-user</role-name>
</security-role>

次に
(Tomcatのインストールディレクトリ)/conf/tomcat-users.xml
の中のtomcat-users要素内に以下を追記します。

<role rolename="rdf4j-user"/>
<user username="ユーザ名" password="パスワード" roles="rdf4j-user"/>

Tomcatを再起動します。
これでRDF4J Workbenchアクセス時にユーザ名とパスワードを求めるようになります。今回は簡易的にユーザ名とパスワードをファイルに記述してDIGEST認証を使いましたが、必要に応じてDBに格納するなどしてください。

rdf4j_7.PNG

参考:Installing RDF4J Server and RDF4J Workbench
参考:How to set up a password for openrdf workbench?

10
14
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
10
14