BH12.12/SPARQLthon8/TogoGenome-Virtuoso7
提供:TogoWiki
BSBM 2013/03 版 http://wifo5-03.informatik.uni-mannheim.de/bizer/berlinsparqlbenchmark/results/V7/ の 4. Benchmark Results for the Explore Use Case の表にあるロード時間をみると Virtuoso 7 は Virtuoso 6 や OWLIM-SE と較べてロード時間が5〜10倍くらい改善されている。また、ようやく SPARQL 1.1 に対応し、BIND や property paths などの必須機能が利用できるようになった。
目次 |
インストール
オープンソース版
% git clone git://github.com/openlink/virtuoso-opensource.git % cd virtuoso-opensource % git checkout develop/7 % sh autogen.sh % ./configure --prefix=/path/to/install/directory --with-readline % make % make install % vi /path/to/install/directory/var/lib/virtuoso/db/virtuoso.ini % (cd /path/to/install/directory/var/lib/virtuoso/db; /path/to/install/directory/bin/virtuoso-t) % isql 1111 # ポート番号は virtuoso.ini で設定したもの SQL> shutdown;
make の最後で Connect failed to localhost:1111 のような理由で
***FAILED: starting DB.DBA.VAD_PACK('vad_dav.xml', '.', 'conductor_dav.vad')
などが表示される場合は
% sudo make
してみるとよい。
商用版
- http://virtuoso.openlinksw.com/pricing/ (Personal 版は Non expiring と書かれているが有効期限1年間のものが送られてくる…詐欺っぽい)
- http://virtuoso.openlinksw.com/features-comparison-matrix/ (まだ Virtuoso 7 は載っていない → 載った 2013/6/7)
% mkdir virtuoso7 % cd virtuoso7 % cp /path/to/download/virtuoso.tar . # 本体 (DL 時は lovpz2zz.tar のようなファイル名) % cp /path/to/download/virtuoso.lic . # ライセンスファイル (DL 時は download-data.vsp のようなファイル名) % tar xvf virtuoso.tar % sh ./install.sh % vi database/virtuoso.ini % bin/virtuoso-start.sh % bin/virtuoso-stop.sh
なお、Mac 版では、アプリは /Applications/Virtuoso 7.0.app/ にインストールされるが、ライセンスファイル virtuoso.lic は
- /Applications/Virtuoso 7.0.app/Contents/virtuoso/bin/virtuoso.lic
ではなく
- /Library/Application Support/openlink/bin/virtuoso.lic
に置く必要があるので注意。
virtuoso.ini の変更点
[HTTPServer] ServerPort = 10000 ← http での接続ポート (SPARQL endpoint - http://localhost:10000/) [Parameters] ServerPort = 10001 ← isql での接続ポート (管理用コマンドライン - isql 10001) [Parameters] ↓ ロードする RDF データの置いてあるディレクトリを追加する DirsAllowed = ., ../vad, /path/to/your/rdf/directory [Parameters] ↓ メモリに応じて適切な値のもののコメントアウトを外す ;; Uncomment next two lines if there is 32 GB system memory free NumberOfBuffers = 2720000 MaxDirtyBuffers = 2000000 [Client] ↓ 適当に増やす SQL_PREFETCH_ROWS = 10000 SQL_PREFETCH_BYTES = 160000 [SPARQL] ;MaxQueryCostEstimationTime = 400 ←オープンソース版の場合にコメントアウトし無制限とする。見積もり間違いによりエラーになることを防ぐ。商用版はデフォルトで無制限。 MaxSortedTopRows = 200000 ← 追記する。ソート対象行が多いクエリでエラーになるのを防ぐ
なお、オープンソース版に標準添付される virtuoso.ini では
;; Uncomment next two lines if there is 16 GB system memory free ; NumberOfBuffers = 1360000 ; MaxDirtyBuffers = 1000000
のように行頭に空白があるが(2013/8/11追記:stable/7 では空白はなくなっていた)、
;; Uncomment next two lines if there is 16 GB system memory free NumberOfBuffers = 1360000 MaxDirtyBuffers = 1000000
のように ; だけでなく空白も削除しないと認識されないので注意。Conductor の画面を開いて、System Admin > Parameters > Parameters のパネルに NumberOfBuffers などの項目が表示されておらず、少し大きな RDF のロードに失敗する場合はこの点を確認すると良い。
また、実際に実行すると速いはずのクエリが、
Virtuoso 42000 Error The estimated execution time 147515 (sec) exceeds the limit of 400 (sec).
のようなエラーで実行できない場合は、MaxQueryCostEstimationTime を増やすか、
;MaxQueryCostEstimationTime = 400 ; in seconds
のようにコメントアウトして無制限にすればよい。
RDF データのインポート
TogoGenome 関連のデータをロードする。
% isql 10001 Connected to OpenLink Virtuoso Driver: 06.01.3127 OpenLink Virtuoso ODBC Driver OpenLink Interactive SQL (Virtuoso), version 0.9849b. Type HELP; for help and EXIT; to exit. # RefSeq の原核のゲノム SQL> ld_dir_all('/data/store/rdf/togogenome/refseq/prokaryotes.ttl', '*.ttl', 'http://togogenome.org/refseq/'); SQL> rdf_loader_run(); Done. -- 6786211 msec. → 113分 # UniProt のオントロジー SQL> ld_dir('/data/store/rdf/uniprot/current/uniprot_unzip/', '*.owl', 'http://togogenome.org/uniprot/'); SQL> rdf_loader_run(); Done. -- 187 msec. # UniProt のメタデータ SQL> ld_dir('/data/store/rdf/uniprot/current/uniprot_unzip/', '*.rdf', 'http://togogenome.org/uniprot/'); SQL> rdf_loader_run(); Done. -- 211537 msec. → 3.5分 # UniProt のゲノムあり原核エントリ SQL> ld_dir('/data/store/rdf/togogenome/uniprot/current/prokaryotes', '*.ttl', 'http://togogenome.org/uniprot/'); SQL> rdf_loader_run(); Done. -- 9694029 msec. → 162分 SQL> log_enable(3, 1); Done. -- 0 msec. # Gene Ontology (http://obofoundry.org/cgi-bin/detail.cgi?id=biological_process) SQL> DB.DBA.RDF_LOAD_RDFXML_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/go/go.owl'), '', 'http://togogenome.org/go/'); Done. -- 27909 msec. # Sequence Ontology (http://obofoundry.org/cgi-bin/detail.cgi?sequence) SQL> DB.DBA.RDF_LOAD_RDFXML_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/so/so.owl'), '', 'http://togogenome.org/so/'); Done. -- 4765 msec. # NCBI Taxonomy (http://www.obofoundry.org/cgi-bin/detail.cgi?id=ncbi_taxonomy) SQL> DB.DBA.RDF_LOAD_RDFXML_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/ncbitaxon/ncbitaxon.owl'), '', 'http://togogenome.org/ncbitaxon/'); Done. -- 185126 msec. # MCCV オントロジー SQL> DB.DBA.TTLP_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/MCCV/mccv.ttl'), '', 'http://togogenome.org/mccv/'); Done. -- 42 msec. # MEO オントロジー SQL> DB.DBA.RDF_LOAD_RDFXML_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/MEO/meo.owl'), '', 'http://togogenome.org/meo/'); Done. -- 52 msec. # MEO データ SQL> DB.DBA.TTLP_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/MEO/gold2ontology2.ttl'), '', 'http://togogenome.org/meo/'); Done. -- 311 msec. # MPO オントロジー SQL> DB.DBA.RDF_LOAD_RDFXML_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/MPO/mpo.owl'), '', 'http://togogenome.org/mpo/'); Done. -- 23 msec. # MPO データ SQL> DB.DBA.TTLP_MT(file_to_string_output('/data/store/rdf/togogenome/ontology/MPO/gold_all_mpo.ttl'), '', 'http://togogenome.org/mpo/'); Done. -- 1949 msec. # トリプル数 SQL> sparql select count(*) where {?s ?p ?o.}; 1783201195 → 17.8億トリプル 1 Rows. -- 146294 msec. → 2.5分 # EdgeStore のデータ SQL> ld_dir('/data/store/rdf/edgestore', '*.ttl', 'http://togogenome.org/edgestore/'); SQL> rdf_loader_run(); Done. -- 13550101 msec. → 225分 # トリプル数 SQL> sparql select count(*) where {?s ?p ?o.}; 3099420204 → 30億トリプル 1 Rows. -- 939793 msec. → 16分 # トリプル数再計算(ポート番号変更のため Virtuoso7 を再起動した直後) SQL> sparql select count(*) where {?s ?p ?o.}; 3099420204 1 Rows. -- 229150 msec. → 3.8分 (シャットダウン時にcheckpointを書きだしたから?か速くなった) % du -sh virtuoso7/database/ 155G virtuoso7/database/
数日かかっていたデータのロードが数時間で終わるようになったのは日常的に運用することを考えると画期的。
- /mw/index.php/BH12.12/SPARQLthon4/VirtuosoTips
- /mw/index.php/BH12.12/SPARQLthon2/VirtuosoPerformance
- http://docs.openlinksw.com/virtuoso/fn_log_enable.html
ld_dir_all/ld_dir, rdf_loader_run で大量ファイルをインポート中に残りのファイル数を数えるには、Virtuoso ウェブ版の conductor もしくは別プロセスの isql から
SQL> select count(*) from DB.DBA.LOAD_LIST where ll_state = 0;
を実行する。
エンドポイント
http://ep.dbcls.jp/sparql
データセットとグラフ名
元データ | グラフ名 |
---|---|
/data/store/rdf/togogenome/refseq/prokaryotes.ttl/**/*.ttl | http://togogenome.org/refseq/ |
/data/store/rdf/uniprot/current/uniprot_unzip/*.owl | http://togogenome.org/uniprot/ |
/data/store/rdf/uniprot/current/uniprot_unzip/*.rdf | http://togogenome.org/uniprot/ |
/data/store/rdf/togogenome/uniprot/current/prokaryotes/**/*.ttl | http://togogenome.org/uniprot/ |
/data/store/rdf/togogenome/ontology/go/go.owl | http://togogenome.org/go/ |
/data/store/rdf/togogenome/ontology/so/so.owl | http://togogenome.org/so/ |
/data/store/rdf/togogenome/ontology/ncbitaxon/ncbitaxon.owl | http://togogenome.org/ncbitaxon/ |
/data/store/rdf/togogenome/ontology/MCCV/mccv.ttl | http://togogenome.org/mccv/ |
/data/store/rdf/togogenome/ontology/MEO/meo.owl | http://togogenome.org/meo/ |
/data/store/rdf/togogenome/ontology/MEO/gold2ontology2.ttl | http://togogenome.org/meo/ |
/data/store/rdf/togogenome/ontology/MPO/mpo.owl | http://togogenome.org/mpo/ |
/data/store/rdf/togogenome/ontology/MPO/gold_all_mpo.ttl | http://togogenome.org/mpo/ |
/data/store/rdf/togogenome/ontology/GOLD/gold2taxon.ttl | http://togogenome.org/gold/ |
http://biohackathon.org/resources/faldo | http://togogenome.org/faldo/ |
Turtle に変換した、
- RefSeq 58 の原核ゲノムエントリは http://ep.dbcls.jp/rdf/togogenome/refseq/prokaryotes.ttl/ より
- 固めたものは http://ep.dbcls.jp/rdf/togogenome/refseq/prokaryotes.ttl.tar より (49GB)
- UniProt 2013/5月版のファイルは http://ep.dbcls.jp/rdf/uniprot/20130501/ より
- TogoGenome 分だけ固めたものは http://ep.dbcls.jp/rdf/togogenome/uniprot/20130501/prokaryotes.tar より (55GB)
それぞれ Taxonomy ID ごとに分割されたファイルとしてダウンロードすることも可能。
RefSeq から Turtle への変換は現状 refseq2ttl.rb, rs_id.json, ft_so.json を利用。
今後の課題は
- INSDC オントロジーの完成と refseq2ttl.rb コンバータへの取り込み
- Feature table の source_* と feature_* の predicate 名を変更
- INSDC エントリの Feature table 以外の部分のメタデータも RDF 化
- Identifiers.org の URI のクラス定義を再検討
- TogoWS の convert 機能にもコンバータの更新を適用
- DDBJ の内部パイプラインへの採用
など。