Header Dictionary Triples (HDT) est un format de compression pour les données RDF qui peut également être interrogé pour les triples modèles.
Afin de compiler cette bibliothèque, vous devez installer les dépendances suivantes :
GNU Autoconf
sudo apt install autoconf
sur les distributions basées sur Debian (par exemple, Ubuntu)sudo dnf install autoconf
sur les distributions basées sur Red Hat (par exemple, Fedora)brew install autoconf
sur macOS/OSXOutil Lib GNU
sudo apt install libtool
sur les distributions basées sur Debian (par exemple, Ubuntu)sudo dnf install libtool
sur les distributions basées sur Red Hat (par exemple, Fedora)brew install libtool
sur macOS/OSXGNU zip (gzip) Permet d'ingérer des fichiers d'entrée RDF compressés GNU et de charger des fichiers HDT compressés GNU.
sudo apt install zlib1g zlib1g-dev
sur les distributions basées sur Debian (par exemple, Ubuntu)sudo dnf install gzip
sur les distributions basées sur Red Hat (par exemple, Fedora)pkg-config Un outil d'aide pour compiler des applications et des bibliothèques.
sudo apt install pkg-config
sur les distributions basées sur Debian (par exemple, Ubuntu)sudo dnf install pkgconf-pkg-config
sur les distributions basées sur Red Hat (par exemple, Fedora)brew install pkg-config
sur macOS/OSXSerd v0.28+ L'analyseur par défaut utilisé pour traiter les fichiers d'entrée RDF. Il prend en charge les formats de sérialisation N-Quads, N-Triples, TriG et Turtle.
sudo apt install libserd-0-0 libserd-dev
sur les distributions basées sur Debian (par exemple, Ubuntu)sudo dnf install serd serd-devel
sur les distributions basées sur Red Hat (par exemple, Fedora)brew install serd
sur macOS/OSXParfois, la version de Serd distribuée par les gestionnaires de packages est trop ancienne. Dans ce cas, Serd peut également être construit manuellement : voir https://github.com/drobilla/serd pour les instructions d'installation.
Pour compiler et installer, exécutez les commandes suivantes dans le répertoire hdt-cpp
. Cela compilera et installera également des outils pratiques.
./autogen.sh
./configure
make -j2
sudo make install
Parfois, les instructions ci-dessus n’aboutissent pas à une installation HDT fonctionnelle. Cette section énumère les problèmes courants et leurs solutions.
Le soutien au Cabinet de Kyoto n'a jamais été terminé et est actuellement suspendu. Il n'est pour l'instant pas possible de compiler du HDT avec KyotoCabinet.
Erreur courante :
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();
^
En obtenant
Package requirements (serd-0 >= 0.28.0) were not met: Requested 'serd-0 >= 0.28.0' but version of Serd is 0.X
Serd n'est pas 0,28+, probablement à cause du gestionnaire de paquets. Construit-le manuellement sur https://github.com/drobilla/serd.
./configure
ne trouve pas Serd Lors de l'exécution de ./configure
vous recevez un message similaire au suivant :
Package 'serd-0', required by 'virtual:world', not found
Cela signifie que ./configure
ne peut pas trouver l'emplacement du fichier serd-0.pc
sur votre ordinateur. Vous devez trouver cet endroit vous-même, par exemple de la manière suivante :
find /usr/ -name serd-0.pc
Une fois que vous avez trouvé le répertoire contenant le fichier serd-0.pc
, vous devez informer le script ./configure
de cet emplacement en définissant la variable d'environnement suivante (où le répertoire /usr/local/lib/pkgconfig/
est adapté à votre situation ) :
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
Après la compilation et l'installation, vous pouvez utiliser les outils pratiques situés dans hdt-cpp/libhdt/tools
. Nous montrons quelques tâches courantes qui peuvent être effectuées avec ces outils.
Les fichiers HDT ne peuvent être créés que pour les fichiers d'entrée RDF conformes aux normes. Si votre fichier d'entrée n'est pas RDF conforme aux normes, il n'est pas possible d'en créer un fichier HDT.
$ ./rdf2hdt data.nt data.hdt
Vous pouvez exporter un fichier HDT vers un fichier RDF dans l'un des formats de sérialisation pris en charge (actuellement : N-Quads, N-Triples, TriG et Turtle). Le format de sérialisation par défaut pour l'exportation est N-Triples.
$ ./hdt2rdf data.hdt data.nt
Vous pouvez émettre des requêtes Triple Pattern (TP) dans le terminal en spécifiant un sujet, un prédicat et/ou un terme d'objet. Le point d'interrogation ( ?
) désigne un terme non instancié. Par exemple, vous pouvez récupérer tous les triplets en interrogeant le 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
Le composant d'en-tête d'un HDT contient des métadonnées décrivant les données contenues dans le HDT, ainsi que les métadonnées de création sur le HDT lui-même. Le contenu de l'en-tête peut être exporté vers un fichier N-Triples :
$ ./hdtInfo data.hdt > header.nt
Il peut être utile de mettre à jour les informations d'en-tête d'un HDT. Cela peut être fait en générant un nouveau fichier HDT ( new.hdt
) à partir d'un fichier HDT existant ( old.hdt
) et d'un fichier N-Triples ( new-header.nt
) contenant les nouvelles informations d'en-tête :
$ ./replaceHeader old.hdt new.hdt new-header.nt
Alternativement, les outils peuvent être utilisés via Docker.
Pour créer l'image Docker (en utilisant un nom arbitraire hdt
) :
docker build -t hdt .
En supposant que vous ayez créé une image Docker nommée hdt
:
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
Cela démarre l'image Docker de manière interactive. La liste des fichiers dans le conteneur en cours d'exécution doit afficher les fichiers de votre répertoire actuel.
Pour exécuter n’importe quelle commande à partir du jeu d’outils hdt :
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
Pour quitter le conteneur en cours d'exécution, utilisez la commande exit
.
Les commandes HDT peuvent également être appelées directement depuis le système hôte (docker) :
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
Cela prend input.ttl
du répertoire actuel et crée un nouveau output.hdt
.
Les contributions sont les bienvenues ! Veuillez baser vos contributions et demandes d'extraction (PR) sur la branche develop
, et non sur la branche master
.
hdt-cpp
est un logiciel libre sous licence GNU Lesser General Public License (LGPL). Voir libhdt/COPYRIGHT
.