Hatena::Grouplifesciencedb

ゲノム周辺 このページをアンテナに追加 RSSフィード

2010-01-06

インストールした 4store の動作確認をした。

| 00:30 |  インストールした 4store の動作確認をした。 - ゲノム周辺 を含むブックマーク はてなブックマーク -  インストールした 4store の動作確認をした。 - ゲノム周辺  インストールした 4store の動作確認をした。 - ゲノム周辺 のブックマークコメント

SPARQLのつかえるスケーラブルRDFストア 4store をSnow LeopardのMacにインストールしてみた。 - ゲノム周辺 - lifesciencedbグループインストールした 4store の動作確認をなぞった。

はじめに http://4store.org/trac/wiki/GettingStarted でざっと全体の動作をみておく。4s-backend-setup、4s-backend、4s-httpd などコマンド名にオプション込なかんじ。http://4store.org/trac/wiki/Documentation の Usage の各項目をなぞる。

/Application/4store.app を起動すると、適切に環境設定された Terminal.app のウィンドウが一つでてくる。4store コマンド群は /Applications/4store.app/Contents/MacOS/bin/4s-backend にある。

コマンド群は 4s-からはじまっている

$ ls /Applications/4store.app/Contents/MacOS/bin/
4s-backend*          4s-cluster-create*               4s-httpd*
4s-backend-copy*     4s-cluster-destroy*              4s-import*
4s-backend-destroy*  4s-cluster-file-backup*          4s-info*
4s-backend-info*     4s-cluster-info*                 4s-query*
4s-backend-passwd*   4s-cluster-replication-disable*  4s-resolve*
4s-backend-setup*    4s-cluster-start*                4s-restore*
4s-bind*             4s-cluster-stop*                 4s-reverse-bind*
4s-cluster-cache*    4s-delete-model*                 4s-size*
4s-cluster-copy*     4s-dump*                         4s-update*

データベースのセットアップは 4s-backend-setup

データベース名(Knowledge Base名; KB名)demo として作成。

$ 4s-backend-setup demo
4store[39388]: backend-setup.c:176 erased files for KB demo
4store[39388]: backend-setup.c:301 created RDF metadata for KB demo

データベースの実体は /var/lib/4store/demo に作成される。

$ ls /var/lib/4store/demo
0000/  0001/  metadata.nt

クラスタの設定はこんなかんじ。

$ 4s-backend-setup --node 0 --cluster 1 --segments 4 demo
4store[39394]: backend-setup.c:176 erased files for KB demo
4store[39394]: backend-setup.c:301 created RDF metadata for KB demo

node 引数cluster 引数、segments 引数は後ほどしらべる。


起動は 4s-backend

4s-backend demo

デーモンとして起動する。


データインポートは 4s-import

ソース配布物のdataの中から一つインポートしてみる。

$ 4s-import -v demo data/tiger/tiger_features.rdf
removing old data
Reading <file:///Users/nakao/Applications/4store/4store/data/tiger/tiger_features.rdf>;
Pass 1, processed 748 triples (748)
Pass 2, processed 748 triples, 90250 triples/s
Updating index
Index update took 1.469478 seconds
Imported 748 triples, average 505 triples/s

コマンドラインクエリインターフェイスは 4s-query

対話的に起動。

$ 4s-query demo4store> SELECT * WHERE {?s ?p ?o}
#EOQ
?s     ?p     ?o
<http://www.census.gov/tiger/2002/CFCC/D85>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/D8>;
<http://www.census.gov/tiger/2002/CFCC/F40>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/F4>;
<http://www.census.gov/tiger/2002/CFCC/E0>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/E>;

実行区切り文字列は #EOQ\n

SPARQLクエリコマンドラインでも実行可。

$ 4s-query demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">;
  <head>
    <variable name="s"/>
    <variable name="p"/>
    <variable name="o"/>
  </head>
  <results>
    <result>
      <binding name="s"><uri>http://www.census.gov/tiger/2002/CFCC/D85</uri></binding>;
      <binding name="p"><uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri></binding>;
      <binding name="o"><uri>http://www.census.gov/tiger/2002/CFCC/D8</uri></binding>;
    </result>
  </results>
</sparql>

選べる出力形式。

JSON形式

$ 4s-query -f json demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
{"head":{"vars":["s","p","o"]},
 "results": {
  "bindings":[
   {"s":{"type":"uri","value":"http://www.census.gov/tiger/2002/CFCC/D85";},
    "p":{"type":"uri","value":"http://www.w3.org/2000/01/rdf-schema#subClassOf";},
    "o":{"type":"uri","value":"http://www.census.gov/tiger/2002/CFCC/D8";}}
  ]
 }}

SPARQL-RESULTS 形式

$ 4s-query -f sparql demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">;
  <head>
    <variable name="s"/>
    <variable name="p"/>
    <variable name="o"/>
  </head>
  <results>
    <result>
      <binding name="s"><uri>http://www.census.gov/tiger/2002/CFCC/D85</uri></binding>;
      <binding name="p"><uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri></binding>;
      <binding name="o"><uri>http://www.census.gov/tiger/2002/CFCC/D8</uri></binding>;
    </result>
  </results>
</sparql>

テキスト形式。

$ 4s-query -f text demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
?s     ?p     ?o
<http://www.census.gov/tiger/2002/CFCC/D85>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/D8>;

テストケース(Turtle)形式。

$ 4s-query -f testcase demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
@prefix rs: <http://www.w3.org/2001/sw/DataAccess/tests/result-set#>; .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>; .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>; .

[] rdf:type rs:ResultSet ;
   rs:resultVariable "s", "p", "o" ;
   rs:solution [
      rs:binding [ rs:variable "s" ;
                   rs:value <http://www.census.gov/tiger/2002/CFCC/D85> ] ;
      rs:binding [ rs:variable "p" ;
                   rs:value <http://www.w3.org/2000/01/rdf-schema#subClassOf> ] ;
      rs:binding [ rs:variable "o" ;
                   rs:value <http://www.census.gov/tiger/2002/CFCC/D8> ]
   ] .

SPARQL HTTPインターフェイスは 4s-httpd

8000ポートで起動

$ 4s-httpd -p 8000 demo

SPARQLエンドポイントは http://localhost:8000/sparql/ になる。

http://localhost:8000 にウェブブラウザアクセス

http://img.skitch.com/20100106-ey6gcjsu42qsege2gimq316ia6.jpg

ステータスページ。

http://img.skitch.com/20100106-nsq5ir2j1c6ynbkmif43t5a9p8.jpg

バックエンドサイズ情報。

http://img.skitch.com/20100106-cb9dq16jare8b33q82exaq12c.jpg

テストクエリ

http://img.skitch.com/20100106-x8hfwfdjt3xkexyn9nwcg346nh.jpg

クエリ結果

http://img.skitch.com/20100106-8g2w2r4tsycy8sdwrnxa6966hp.jpg


RESTful インターフェイス

PUT

$ curl -T file.rdf http://localhost:8000/sparql/file.rdf

DELETE

$ curl -X DELETE http://localhost:8000/sparql/file.rdf

注意する点として、グラフ単位(ファイル単位)でしか追加/削除できない。http://4store.org/trac/wiki/TODO

クライアントからの接続

php、phtyon、rubyJavaクライアントがある。Perlさん。。。

ruby クライアントの場合。インストールしてみる。

$ gem build 4store-ruby.gemspec
WARNING:  no rubyforge_project specified
  Successfully built RubyGem
  Name: 4store-ruby
  Version: 0.0.3
  File: 4store-ruby-0.0.3.gem
$ sudo gem install 4store-ruby-0.0.3.gem

使ってみる。

>> require 'rubygems'
=> true
>> gem '4store-ruby'   
=> true
>> FourStore
=> FourStore
>> FourStore::Store
=> FourStore::Store
>> FourStore::Store.new("http://localhost:8000/sparql/";)
=> #<FourStore::Store:0x10176a000 @endpoint=#<URI::HTTP:0x101769c90 URL:http://localhost:8000/sparql/>>;
>> ep = FourStore::Store.new("http://localhost:8000/sparql/";)
=> #<FourStore::Store:0x101763890 @endpoint=#<URI::HTTP:0x101763548 URL:http://localhost:8000/sparql/>>;
>> res = ep.select("SELECT * WHERE { ?s ?p ?o } LIMIT 10");
?> "
"
=> "\n"
>> require 'pp'
=> true
>> pp res
[{"o"=>"http://www.census.gov/tiger/2002/CFCC/D8";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/D85";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/F4";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/F40";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/E";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/E0";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/B";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/B4";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/D2";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/D27";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/A";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/A5";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/A2";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/A21";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/H7";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/H70";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/B5";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/B52";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/D4";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/D43";}]
=> nil

メソッド一覧。

>> FourStore::Store.instance_methods - Object.methods
=> ["delete", "add", "set", "select", "load"]

ドキュメントが無いので、ソース読め、とのこと。

rubyクライアントはREXMLをつかっているのが気になるところ。大規模用途に備えて nokogiri で高速化出来るかな?


まとめ

  1. Mac OS X 10.6で動作確認した。
  2. セットアップ、バックエンド起動、データインポートクエリインターフェイスhttpインターフェイスクライアントの利用をなぞった。
  3. RDFのストア、クエリが簡単にできた。
  4. HTTP SPARQL endpoint がある。
  5. RESTful APIがある。
  6. phppythonrubyJava クライアントがある。

DavSnusaDavSnusa2017/05/11 18:13Cytotec 200pg Pharmacie En Ligne <a href=http://byuvaigranonile.com>viagra</a> Priligy En Valencia Finasteride 10mg Skin Health Lowest Price Flagyl Low Price

トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100106