LoginSignup
9
7

More than 5 years have passed since last update.

MacでStardogを試してみる

Posted at

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.txtnagoya_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.名古屋城に関する情報を表示するスクリプトを書く

stardog.js
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/
9
7
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
9
7