Header Dictionary Triples (HDT) は RDF データの圧縮形式であり、トリプル パターンのクエリも実行できます。
このライブラリをコンパイルするには、次の依存関係がインストールされている必要があります。
GNU Autoconf
sudo apt install autoconf
sudo dnf install autoconf
brew install autoconf
GNU リブツール
sudo apt install libtool
。sudo dnf install libtool
brew install libtool
GNU zip (gzip) GNU zip 圧縮された RDF 入力ファイルを取り込み、GNU zip 圧縮された HDT ファイルをロードできるようにします。
sudo apt install zlib1g zlib1g-dev
sudo dnf install gzip
pkg-config アプリケーションとライブラリをコンパイルするためのヘルパー ツール。
sudo apt install pkg-config
。sudo dnf install pkgconf-pkg-config
brew install pkg-config
Serd v0.28+ RDF 入力ファイルの処理に使用されるデフォルトのパーサー。 N-Quads、N-Triples、TriG、および Turtle シリアル化形式をサポートします。
sudo apt install libserd-0-0 libserd-dev
sudo dnf install serd serd-devel
brew install serd
パッケージ マネージャーによって配布される Serd のバージョンが古すぎる場合があります。その場合、Serd を手動でビルドすることもできます。インストール手順については、https://github.com/drobilla/serd を参照してください。
コンパイルしてインストールするには、ディレクトリhdt-cpp
で次のコマンドを実行します。これにより、いくつかの便利なツールもコンパイルおよびインストールされます。
./autogen.sh
./configure
make -j2
sudo make install
場合によっては、上記の手順を実行しても HDT インストールが機能しないことがあります。このセクションでは、一般的な問題とその回避策を列挙します。
京都内閣への支援は決して終わらず、現在も停止されている。現時点では、KotoCabinet で HDT をコンパイルすることはできません。
よくあるエラー:
In file included from src/dictionary/KyotoDictionary.cpp:38:0:
src/dictionary/KyotoDictionary.hpp:108:18: error: conflicting return type specified for 'virtual unsigned int hdt::KyotoDictionary::getMapping()'
unsigned int getMapping();
^
入手時
Package requirements (serd-0 >= 0.28.0) were not met: Requested 'serd-0 >= 0.28.0' but version of Serd is 0.X
おそらくパッケージマネージャーのせいで、Serd は 0.28+ ではありません。 https://github.com/drobilla/serd で手動でビルドしました。
./configure
Serd が見つかりません./configure
の実行中に、次のようなメッセージが表示されます。
Package 'serd-0', required by 'virtual:world', not found
これは、 ./configure
コンピュータ上のserd-0.pc
ファイルの場所を見つけられないことを意味します。この場所は、たとえば次の方法で自分で見つける必要があります。
find /usr/ -name serd-0.pc
serd-0.pc
ファイルを含むディレクトリを見つけたら、次の環境変数を設定して、この場所を./configure
スクリプトに通知する必要があります (ディレクトリ/usr/local/lib/pkgconfig/
は状況に応じて調整されます) ):
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
コンパイルしてインストールした後、 hdt-cpp/libhdt/tools
にある便利なツールを使用できます。これらのツールを使用して実行できる一般的なタスクをいくつか示します。
HDT ファイルは、標準に準拠した RDF 入力ファイルに対してのみ作成できます。入力ファイルが標準に準拠した RDF ではない場合、そこから HDT ファイルを作成することはできません。
$ ./rdf2hdt data.nt data.hdt
HDT ファイルを、サポートされているシリアル化形式 (現在: N-Quads、N-Triples、TriG、および Turtle) のいずれかで RDF ファイルにエクスポートできます。エクスポート用のデフォルトのシリアル化形式は N-Triples です。
$ ./hdt2rdf data.hdt data.nt
主語、述語、目的語を指定して、端末でトリプル パターン (TP) クエリを発行できます。疑問符 ( ?
) は、インスタンス化されていない用語を示します。たとえば、TP ? ? ?
をクエリすると、すべてのトリプルを取得できます。 ? ? ?
:
$ ./hdtSearch data.hdt
>> ? ? ?
http://example.org/uri3 http://example.org/predicate3 http://example.org/uri4
http://example.org/uri3 http://example.org/predicate3 http://example.org/uri5
http://example.org/uri4 http://example.org/predicate4 http://example.org/uri5
http://example.org/uri1 http://example.org/predicate1 "literal1"
http://example.org/uri1 http://example.org/predicate1 "literalA"
http://example.org/uri1 http://example.org/predicate1 "literalB"
http://example.org/uri1 http://example.org/predicate1 "literalC"
http://example.org/uri1 http://example.org/predicate2 http://example.org/uri3
http://example.org/uri1 http://example.org/predicate2 http://example.org/uriA3
http://example.org/uri2 http://example.org/predicate1 "literal1"
9 results shown.
>> http://example.org/uri3 ? ?
http://example.org/uri3 http://example.org/predicate3 http://example.org/uri4
http://example.org/uri3 http://example.org/predicate3 http://example.org/uri5
2 results shown.
>> exit
HDT のヘッダー コンポーネントには、HDT 自体に関する作成メタデータだけでなく、HDT に含まれるデータを記述するメタデータが含まれています。ヘッダーの内容は N-Triples ファイルにエクスポートできます。
$ ./hdtInfo data.hdt > header.nt
HDT のヘッダー情報を更新すると便利です。これは、既存の HDT ファイル ( old.hdt
) と、新しいヘッダー情報を含む N-Triples ファイル ( new-header.nt
) から新しい HDT ファイル ( new.hdt
) を生成することで実行できます。
$ ./replaceHeader old.hdt new.hdt new-header.nt
あるいは、Docker 経由でツールを使用することもできます。
Docker イメージをビルドするには (任意の名前hdt
を使用):
docker build -t hdt .
hdt
という名前の Docker イメージを構築したと仮定します。
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
これにより、Docker イメージが対話的に開始されます。実行中のコンテナ内のファイルをリストすると、現在のディレクトリのファイルが表示されます。
HDT ツールセットから任意のコマンドを実行するには:
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
実行中のコンテナを終了するには、 exit
コマンドを使用します。
HDT コマンドは、(docker) ホスト システムから直接呼び出すこともできます。
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
これにより、現在のディレクトリからinput.ttl
が取得され、新しいoutput.hdt
が作成されます。
貢献は大歓迎です!コントリビュートとプル リクエスト (PR) は、 master
ブランチではなく、 develop
ブランチに基づいて作成してください。
hdt-cpp
は、GNU Lesser General Public License (LGPL) としてライセンス供与されたフリー ソフトウェアです。 libhdt/COPYRIGHT
参照してください。