Header Dictionary Triples (HDT) ist ein Komprimierungsformat für RDF-Daten, das auch nach Triple Patterns abgefragt werden kann.
Um diese Bibliothek zu kompilieren, müssen die folgenden Abhängigkeiten installiert sein:
GNU Autoconf
sudo apt install autoconf
auf Debian-basierten Distributionen (z. B. Ubuntu)sudo dnf install autoconf
auf Red Hat-basierten Distributionen (z. B. Fedora)brew install autoconf
unter macOS/OSXGNU Libtool
sudo apt install libtool
auf Debian-basierten Distributionen (z. B. Ubuntu)sudo dnf install libtool
auf Red Hat-basierten Distributionen (z. B. Fedora)brew install libtool
unter macOS/OSXGNU zip (gzip) Ermöglicht die Aufnahme von GNU-gezippten RDF-Eingabedateien und das Laden von GNU-gezippten HDT-Dateien.
sudo apt install zlib1g zlib1g-dev
auf Debian-basierten Distributionen (z. B. Ubuntu)sudo dnf install gzip
auf Red Hat-basierten Distributionen (z. B. Fedora)pkg-config Ein Hilfstool zum Kompilieren von Anwendungen und Bibliotheken.
sudo apt install pkg-config
auf Debian-basierten Distributionen (z. B. Ubuntu)sudo dnf install pkgconf-pkg-config
auf Red Hat-basierten Distributionen (z. B. Fedora)brew install pkg-config
unter macOS/OSXSerd v0.28+ Der Standardparser, der zum Verarbeiten von RDF-Eingabedateien verwendet wird. Es unterstützt die Serialisierungsformate N-Quads, N-Triples, TriG und Turtle.
sudo apt install libserd-0-0 libserd-dev
auf Debian-basierten Distributionen (z. B. Ubuntu)sudo dnf install serd serd-devel
auf Red Hat-basierten Distributionen (z. B. Fedora)brew install serd
unter macOS/OSXManchmal ist die von Paketmanagern verteilte Version von Serd zu alt. In diesem Fall kann Serd auch manuell erstellt werden: Die Installationsanweisungen finden Sie unter https://github.com/drobilla/serd.
Führen Sie zum Kompilieren und Installieren die folgenden Befehle im Verzeichnis hdt-cpp
aus. Dadurch werden auch einige praktische Tools kompiliert und installiert.
./autogen.sh
./configure
make -j2
sudo make install
Manchmal führen die obigen Anweisungen nicht zu einer funktionierenden HDT-Installation. In diesem Abschnitt werden häufige Probleme und deren Problemumgehung aufgeführt.
Die Unterstützung des Kyoto-Kabinetts wurde nie abgeschlossen und ist derzeit ausgesetzt. Es ist derzeit nicht möglich, HDT mit KyotoCabinet zu kompilieren.
Häufiger Fehler:
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();
^
Beim Erhalten
Package requirements (serd-0 >= 0.28.0) were not met: Requested 'serd-0 >= 0.28.0' but version of Serd is 0.X
Serd ist nicht 0,28+, wahrscheinlich wegen des Paketmanagers. Manuell erstellt unter https://github.com/drobilla/serd.
./configure
kann Serd nicht finden Beim Ausführen von ./configure
erhalten Sie eine Meldung ähnlich der folgenden:
Package 'serd-0', required by 'virtual:world', not found
Das bedeutet, dass ./configure
den Speicherort der Datei serd-0.pc
auf Ihrem Computer nicht finden kann. Diesen Ort müssen Sie selbst finden, z. B. auf folgende Weise:
find /usr/ -name serd-0.pc
Sobald Sie das Verzeichnis mit der Datei serd-0.pc
gefunden haben, müssen Sie das Skript ./configure
über diesen Speicherort informieren, indem Sie die folgende Umgebungsvariable festlegen (wobei das Verzeichnis /usr/local/lib/pkgconfig/
an Ihre Situation angepasst ist). ):
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
Nach dem Kompilieren und Installieren können Sie die praktischen Tools verwenden, die sich in hdt-cpp/libhdt/tools
befinden. Wir zeigen einige häufige Aufgaben, die mit diesen Tools ausgeführt werden können.
HDT-Dateien können nur für standardkonforme RDF-Eingabedateien erstellt werden. Wenn Ihre Eingabedatei kein standardkonformes RDF ist, ist es nicht möglich, daraus eine HDT-Datei zu erstellen.
$ ./rdf2hdt data.nt data.hdt
Sie können eine HDT-Datei in eine RDF-Datei in einem der unterstützten Serialisierungsformate exportieren (derzeit: N-Quads, N-Triples, TriG und Turtle). Das Standardserialisierungsformat für den Export ist N-Triples.
$ ./hdt2rdf data.hdt data.nt
Sie können Triple Pattern (TP)-Abfragen im Terminal durchführen, indem Sie einen Subjekt-, Prädikat- und/oder Objektbegriff angeben. Das Fragezeichen ( ?
) kennzeichnet einen nicht instanziierten Begriff. Sie können beispielsweise alle Tripel abrufen, indem Sie nach dem TP ? ? ?
fragen. ? ? ?
:
$ ./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
Die Header-Komponente eines HDT enthält Metadaten, die die im HDT enthaltenen Daten beschreiben, sowie die Erstellungsmetadaten über das HDT selbst. Der Inhalt des Headers kann in eine N-Triples-Datei exportiert werden:
$ ./hdtInfo data.hdt > header.nt
Es kann nützlich sein, die Header-Informationen eines HDT zu aktualisieren. Dies kann durch Generieren einer neuen HDT-Datei ( new.hdt
) aus einer vorhandenen HDT-Datei ( old.hdt
) und einer N-Triples-Datei ( new-header.nt
) erfolgen, die die neuen Header-Informationen enthält:
$ ./replaceHeader old.hdt new.hdt new-header.nt
Alternativ können die Tools auch über Docker genutzt werden.
So erstellen Sie das Docker-Image (unter Verwendung eines beliebigen Namens hdt
):
docker build -t hdt .
Angenommen, Sie haben ein Docker-Image mit dem Namen hdt
erstellt:
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
Dadurch wird das Docker-Image interaktiv gestartet. Beim Auflisten von Dateien im laufenden Container werden Dateien aus Ihrem aktuellen Verzeichnis angezeigt.
So führen Sie einen beliebigen Befehl aus dem HDT-Toolset aus:
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
Um den laufenden Container zu beenden, verwenden Sie den Befehl exit
.
HDT-Befehle können auch direkt vom (Docker-)Hostsystem aufgerufen werden:
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
Dies übernimmt input.ttl
aus dem aktuellen Verzeichnis und erstellt eine neue Datei output.hdt
.
Beiträge sind willkommen! Bitte stützen Sie Ihre Beiträge und Pull Requests (PRs) auf den develop
-Branch und nicht auf den master
-Branch.
hdt-cpp
ist freie Software, die unter der GNU Lesser General Public License (LGPL) lizenziert ist. Siehe libhdt/COPYRIGHT
.