HDT
提供:TogoWiki
目次 |
C++ ツール群インストール
- HDT C++ Library and Toolsからソースをダウンロード
- 前提 RDF ツール/ライブラリ群(なくても使えるが性能が落ちる)
- Raptor: RDF parser library
- Serd: Turtle & NTriple の高速reader/writer
- 普通入ってると思いますが,なければ入れる:
- zlib
- ツールコンパイル
cd hdt-lib make
hdt-lib/tools にツール群が生成される
Allie のデータを用いてツール群調査 (at SPARQLthon39 by atsuko)
入っているのは下記5つのツール:
- rdf2hdt
- hdt2rdf
- hdtInfo
- replaceHeader
- hdtSearch
テスト用データ
- allie_clusters.nt (14111209トリプル)
利用マシン
- Mac OS Yosemite
- CPU 1.7 GHz
- Mem 8GB
それぞれのツールについて調査 (Java パッケージと性能比較)
rdf2hdt
概要: nt, ttl, rdf/xml -> hdt のツール.オプション -f で入力フォーマットを指定し,オプション -i でサーチ用インデックスファイル(*.hdt.index)をHDTファイル(*.hdt)と同時に作成する.
- コマンド
% rdf2hdt (オプション) 入力RDFファイル名 出力HDTファイル名
- 性能評価
C++版: 使用メモリは最大約1GB, 計算時間 約 2分半
$ time tools/rdf2hdt data/allie_clusters.nt data/allie_clusters.hdt HDT Successfully generated. Total processing time: Clock(2 min 37 sec 864 ms 550 us) User(2 min 31 sec 510 ms 721 us) System(3 sec 985 ms 63 us) real 2m37.927s user 2m31.516s sys 0m4.037s
Java版: オプション -Xmx1g -XX:-XX:-UseGCOverheadLimit -> 6200000 トリプル読み込んで20分進まなかったので強制終了
Java版: オプション -Xmx2g -XX:-XX:-UseGCOverheadLimit -> 14100000 トリプル読み込んで20分進まなかったので強制終了
Java版: オプション -Xmx3g -XX:-XX:-UseGCOverheadLimit, 計算時間 約3分半
$time bin/rdf2hdt.sh data/allie_clusters.nt data/allie_clusters.hdt Converting data/allie_clusters.nt to data/allie_clusters.hdt as null File converted in: 3 min 34 sec 126 ms 233 us Total Triples: 14111209 Different subjects: 3727639 Different predicates: 25 Different objects: 7156435 Common Subject/Object:1863841 HDT saved to file in: 578 ms 165 us real 3m35.201s user 9m13.621s sys 0m5.926s
hdtSearch
概要: hdtファイルにトリプルパターンで検索をかけるツール.
- コマンド
% hdtSeach HDTファイル名
HDTファイルと同じディレクトリにインデックスファイル(*.hdt.index)がない場合,初回に自動的に作成する.
C++版(7秒)
% /tools/hdtSearch data/allie_clusters.hdt Predicate Bitmap in 319 ms 810 us 14.86 % Count predicates in 1 sec 525 ms 491 us2 % / 34.235 % Count Objects in 499 ms 940 us Max was: 1863802.551 % Bitmap in 99 ms 992 us: 97.814 % / 48.413 % Bitmap bits: 14111209 Ones: 7156435 Object references in 2 sec 860 ms 420 us/ 68.164 % Sort lists in 2 sec 271 ms 688 us% / 90.998 % Index generated in 7 sec 577 ms 539 us >>
Java版(14秒)
$ bin/hdtSearch.sh data/allie_clusters.hdt Could not read .hdt.index, Generating a new one. Predicate Bitmap in 348 ms 370 us Count predicates in 11 sec 124 ms 743 us Count Objects in 478 ms 500 us Max was: 1863802 Bitmap in 80 ms 378 us Object references in 12 sec 721 ms 437 us Sort object sublists in 1 sec 406 ms 434 us Count predicates in 304 ms 796 us Index generated in 14 sec 992 ms 2 us
- 性能評価
C++版
>> ? ? http://purl.org/allie/id/pair/1781818 _:_:ClusterMembers100003 http://purl.org/allie/ontology/201108#hasMemberOf http://purl.org/allie/id/pair/1781818 1 results in 969 us >> ? ? http://purl.org/allie/id/pair/2395948 _:_:ClusterMembers1000088 http://purl.org/allie/ontology/201108#hasMemberOf http://purl.org/allie/id/pair/2395948 1 results in 1 ms 467 us
Java版
>> ? ? http://purl.org/allie/id/pair/1781818 Query: |?| |?| |http://purl.org/allie/id/pair/1781818| _:_:ClusterMembers100003 http://purl.org/allie/ontology/201108#hasMemberOf http://purl.org/allie/id/pair/1781818 Iterated 1 triples in 9 ms 926 us >> ? ? http://purl.org/allie/id/pair/2395948 Query: |?| |?| |http://purl.org/allie/id/pair/2395948| _:_:ClusterMembers1000088 http://purl.org/allie/ontology/201108#hasMemberOf http://purl.org/allie/id/pair/2395948 Iterated 1 triples in 575 us