Archive for 6月, 2014

VirtuosoをMacOSにインストールする

月曜日, 6月 2nd, 2014

こんどはMacOSにVirtuosoをインストールしてみることにします。
MacOSの場合はLinuxと同じ手順になります。Linux環境でのインストール方法(やや実践向け)
普段Macをメイン機として使っていないのでちょっと(?)古いのですがMacOS10.6で試しました。

まずはソースコードを置くためのディレクトリを作ってから、githubからソースコードを入手します。

virtuoso-opensource/というディレクトリができているので移動して、gitのブランチを選択します。
stable/7はversion7系の安定版のブランチです。例えば最新のバグフィックスを試したいというような場合には’stable/7′の代わりに’develop/7′を選べばよいでしょう。

コンパイルに先立ち、依存ライブラリ等をチェックしてくれるautogen.shを実行します。
もし不足していたりバージョンが低かったりするとエラーがでますので、エラーメッセージに従ってパッケージインストール等を行ってください。
尚、必要なパッケージは同じディレクトリのREADMEファイルのPackage Dependenciesに記載されています。

configureののprefix引数ではインストール先を指定します。私の環境ではmake install終了まで小一時間程度掛かりました。

インストールまで成功していれば、prefixで指定したディレクトリが生成されているはずですので、その下のvar/lib/virtuoso/dbに移動した後に起動コマンドを打ちます。

この状態でWindows環境と同様にブラウザでhttp://localhost:8890にアクセスすればGUIの画面が閲覧できるはずです。

停止はコマンドツールのisqlを起動してからshutdownコマンドを打ちます。

 

VirtuosoのGUIからデータをロードしてSPARQLをたたく

月曜日, 6月 2nd, 2014

では、インストールしたVirtuosoにRDF形式のデータをロードしてSPARQLをかけてみましょう。
今回はSPARQL習得をちょっぴり意識して、W3CのSPARQL1.1の仕様書のデータ&クエリを使ってみます。

Virtuosoには色々なデータのロード方法が用意されていますが、今回は一番簡単なGUIでのロードを行います。数M程度の小さなファイルをちょっとロードしたい、という場合には便利です。

ロードデータの準備

まずはロードするRDFファイルを準備します。
有志の方が翻訳してくれた日本語版のSPARQL1.1仕様書がありますので、その中の一つを使用します。

たとえば2.2章の「複数マッチ」の記載部分(リンク)にあるデータをコピーして、テキストエディタに貼り付けてローカルに保存します。この時のファイル名は任意ですが、拡張子は「.ttl」にしてください。

w3c_sparql11_2_2.ttl

 

データのロード

ロードするファイルが準備できたら、Virtuosoを起動させた状態でブラウザを開いて以下のURLにアクセスします。

http://localhost:8890/

左上の[Conductor]をクリックします。

top

 

ログインのためのアカウントとパスワードを聞かれるので、初期値で両方とも[dba]と入力してログインしてください。

login

尚、dbaは管理者アカウントなので、セキュリティを気にする環境であれば、はじめにパスワードを変えておきましょう。パスワードはログイン後の画面の [System Admin] – [User Account] – [dba(Edit)]から変更できます。

 

ログインができたら、[Linked Data] – [Quad Store Upload]からデータのアップロード画面を開きます。

upload1

 

先ほど準備したロード用のファイルを選択し、アップロードするグラフ名を入力します。
グラフ名は任意の値で構いませんが、今回のファイルは「http://localhost:8890/sparql11_2_2」としてみます。
紛らわしくてよく間違えるのですが、左側は[Cancel]ボタンで右側が[Upload]ボタンになります。

do_upload

グラフ名をつけておくとロードするトリプルを一つのデータセットとして扱えます。最初のうちはRDBにおけるテーブルのような感覚でよいでしょう。
デフォルトのグラフ名のままでもロードはできますが、次々にファイルをロードした場合に同じグラフにデータが混ざってしまい、SPARQLを打った時に余計なデータまで返ってくることがあります。クエリの練習をしているうちは細かくグラフ名を指定して置いたほうがよいでしょう。

 

成功すると地味に「Upload finished」とメッセージが表示されます。

finish_upload

 

SPARQLを打ってみる

ロードしたデータに対してSPARQLを打ってみましょう。
先ほどSPARQL1.1仕様書のページから取得したデータに対するSPARQLを投げてみます。オリジナルクエリはこちら

ここでSPARQLに一箇所だけ手を加えて、先ほどロード時に指定したグラフだけを検索対象にするようにします。具体的にはSELECTとWHEREの間にFROM句を追加してグラフを限定します。もしグラフ名を忘れた場合にはタブの[Graphs]から確認できます。

 

タブで[SPARQL]を選択して、クエリを実行します。

sparql

 

クエリ結果が SPARQL1.1仕様書に記載されているものと同じであることを確認してください。

 

仕様書を読んだだけでは分かりにくければ、こんな風に実際にSPARQLを試してみれば、理解を助けてくれるでしょう。

尚、ロードしたデータを削除したい場合には[Graphs] - [Graphs] で対象グラフの [delete]から消せます。