Stardogとは
Complexible社によるJavaで書かれたRDFストアです。他との違いとして、全文検索やユーザーごとの権限設定、推論などの独自機能があります。無料プランでは、2500万トリプルまで使えます。
導入
1.まずはJava8をインストール
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
このページからjdk-8u73-macosx-x64.dmg
をダウンロードし、実行。
$ java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
2.Stardogをダウンロード
http://stardog.com/
今回は無料のCommunity版を選択し、メールに記載されているStardog本体とライセンスキーをダウンロード。
stardog-license-key.bin
を/stardog
に移動させる。
3.パスを通す
環境変数STARDOG_HOME
にルートパスを指定する。
$ export STARDOG_HOME=/~~~/stardog
$ echo $STARDOG_HOME
/~~~/stardog
4.起動する
/stardog/bin
に移動したのち、サーバーを起動させる。
$ ./stardog-admin server start
Initializing Stardog
************************************************************
This copy of Stardog is licensed to *** (***), ***
This is a Community license
This license does not expire.
************************************************************
:;
;; `;`:
`'+', :: `++ `;:`
+###++, ,#+ `++ .
##+.,', '#+ ++ +
,## ####++ ####+: ##,++` .###+++ .####+ ####++++#
`##+ ####+' ##+#++ ###++``###'+++ `###'+++ ###`,++,:
####+ ##+ ++. ##: ### `++ ### `++` ##` ++:
###++, ##+ ++, ##` ##; `++ ##: ++; ##, ++:
;+++ ##+ ####++, ##` ##: `++ ##: ++' ;##'#++
;++ ##+ ### ++, ##` ##' `++ ##; ++: ####+
,. +++ ##+ ##: ++, ##` ### `++ ### .++ '#;
,####++' +##++ ###+#+++` ##` :####+++ `####++' ;####++`
`####+; ##++ ###+,++` ##` ;###:++ `###+; `###++++
## `++
.## ;++
#####++`
`;;;.
************************************************************
Stardog server 4.0.3 started on Sun Feb 07 02:59:08 JST 2016.
Stardog server is listening on all network interfaces.
SNARL server available at snarl://localhost:5820.
HTTP server available at http://localhost:5820.
STARDOG_HOME=/~~~/stardog
これが出れば成功。
サーバーの停止は以下のコマンド。
$ ./stardog-admin server stop
触ってみる
http://linkdata.org/work/rdf1s258i/nagoya_sightseeing.html?key=#work_information
今回はサンプルとして、名古屋の観光施設情報のオープンデータを初期データとして使ってみます。
1.データベースを作成
$ ./stardog-admin db create -n NagoyaSightseeing
Successfully created database 'NagoyaSightseeing'.
2.RDFファイルをロード
http://linkdata.org/work/rdf1s258i/nagoya_sightseeing_api.html
このページからRDF (Turtle)
をダウンロードし、nagoya_sightseeing_ttl.txt
をnagoya_sightseeing_.ttl
にリネームする。
この.ttlファイルを/stardog/bin
に移動し、ロードを実行。
$ ./stardog data add NagoyaSightseeing nagoya_sightseeing_youtube.ttl
Adding data from file: nagoya_sightseeing_youtube.ttl
An error occurred adding RDF to the index: /Users/yasu/Develop/stardog/bin/nagoya_sightseeing_youtube.ttl
今回エラーが出てしまったので、諦めてWeb管理画面からアップロードすることにします。
3.Web管理画面にアクセス
ユーザー名 | admin |
---|---|
パスワード | admin |
アクセスしたら、ヘッダーメニューのData > Add
で先ほどの.ttlファイルを選択しアップロード。
SPARQLクエリを叩いてみる
ヘッダーメニューのQuery
からコンソールに入力する。
全トリプルを表示
select *
where {
?s ?p ?o .
}
LIMIT 100
全てのラベルを表示
select ?o
where {
?s rdfs:label ?o .
}
LIMIT 100
名古屋城に関する情報を表示
select *
where {
<http://linkdata.org/resource/rdf1s258i#%E5%90%8D%E5%8F%A4%E5%B1%8B%E5%9F%8E> ?p ?o .
}
LIMIT 100
(番外編) Node.jsから操作する
https://github.com/complexible/stardog.js
Complexible社から公式にJS向けのフレームワークが提供されているので、Node.jsから使ってみます。
1.npmでインストール
$ npm install stardog
2.名古屋城に関する情報を表示するスクリプトを書く
const STARDOG = require("stardog");
var conn = new STARDOG.Connection();
conn.setEndpoint("http://localhost:5820");
conn.setCredentials("admin", "admin");
conn.query({
database: "NagoyaSightseeing",
query: "select distinct ?o where { <http://linkdata.org/resource/rdf1s258i#%E5%90%8D%E5%8F%A4%E5%B1%8B%E5%9F%8E> ?p ?o }",
limit: 100,
offset: 0
},
function (data) {
data.results.bindings.forEach(function(triple) {
console.log(triple.o.value)
})
});
3.実行する
$ node stardog
愛知県名古屋市中区本丸1-1
名古屋城
Nagoya Castle
35.184483
136.89766
http://www.nagoyajo.city.nagoya.jp/