Header Dictionary Triples (HDT) es un formato de compresión para datos RDF que también se puede consultar para patrones triples.
Para poder compilar esta biblioteca, es necesario tener instaladas las siguientes dependencias:
Configuración automática de GNU
sudo apt install autoconf
en distribuciones basadas en Debian (por ejemplo, Ubuntu)sudo dnf install autoconf
en distribuciones basadas en Red Hat (por ejemplo, Fedora)brew install autoconf
en macOS/OSXGNU Libtool
sudo apt install libtool
en distribuciones basadas en Debian (por ejemplo, Ubuntu)sudo dnf install libtool
en distribuciones basadas en Red Hat (por ejemplo, Fedora)brew install libtool
en macOS/OSXGNU zip (gzip) Permite ingerir archivos de entrada RDF comprimidos con GNU y cargar archivos HDT comprimidos con GNU.
sudo apt install zlib1g zlib1g-dev
en distribuciones basadas en Debian (por ejemplo, Ubuntu)sudo dnf install gzip
en distribuciones basadas en Red Hat (por ejemplo, Fedora)pkg-config Una herramienta auxiliar para compilar aplicaciones y bibliotecas.
sudo apt install pkg-config
en distribuciones basadas en Debian (por ejemplo, Ubuntu)sudo dnf install pkgconf-pkg-config
en distribuciones basadas en Red Hat (por ejemplo, Fedora)brew install pkg-config
en macOS/OSXSerd v0.28+ El analizador predeterminado que se utiliza para procesar archivos de entrada RDF. Admite los formatos de serialización N-Quads, N-Triples, TriG y Turtle.
sudo apt install libserd-0-0 libserd-dev
en distribuciones basadas en Debian (por ejemplo, Ubuntu)sudo dnf install serd serd-devel
en distribuciones basadas en Red Hat (por ejemplo, Fedora)brew install serd
en macOS/OSXA veces, la versión de Serd que distribuyen los administradores de paquetes es demasiado antigua. En ese caso, Serd también se puede compilar manualmente: consulte https://github.com/drobilla/serd para obtener las instrucciones de instalación.
Para compilar e instalar, ejecute los siguientes comandos en el directorio hdt-cpp
. Esto también compilará e instalará algunas herramientas útiles.
./autogen.sh
./configure
make -j2
sudo make install
A veces, las instrucciones anteriores no dan como resultado una instalación HDT que funcione. Esta sección enumera problemas comunes y sus soluciones.
El apoyo al Gabinete de Kioto nunca terminó y actualmente está suspendido. Por el momento no es posible compilar HDT con KyotoCabinet.
Error común:
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();
^
al conseguir
Package requirements (serd-0 >= 0.28.0) were not met: Requested 'serd-0 >= 0.28.0' but version of Serd is 0.X
Serd no es 0.28+, probablemente debido al administrador de paquetes. Lo compiló manualmente en https://github.com/drobilla/serd.
./configure
no puede encontrar Serd Mientras ejecuta ./configure
recibirá un mensaje similar al siguiente:
Package 'serd-0', required by 'virtual:world', not found
Esto significa que ./configure
no puede encontrar la ubicación del archivo serd-0.pc
en su computadora. Debe encontrar esta ubicación usted mismo, por ejemplo, de la siguiente manera:
find /usr/ -name serd-0.pc
Una vez que haya encontrado el directorio que contiene el archivo serd-0.pc
, debe informar al script ./configure
sobre esta ubicación configurando la siguiente variable de entorno (donde el directorio /usr/local/lib/pkgconfig/
se adapta a su situación ):
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
Después de compilar e instalar, puede utilizar las prácticas herramientas que se encuentran en hdt-cpp/libhdt/tools
. Mostramos algunas tareas comunes que se pueden realizar con estas herramientas.
Los archivos HDT solo se pueden crear para archivos de entrada RDF que cumplan con los estándares. Si su archivo de entrada no es RDF compatible con los estándares, no es posible crear archivos HDT a partir de él.
$ ./rdf2hdt data.nt data.hdt
Puede exportar un archivo HDT a un archivo RDF en uno de los formatos de serialización admitidos (actualmente: N-Quads, N-Triples, TriG y Turtle). El formato de serialización predeterminado para exportar es N-Triples.
$ ./hdt2rdf data.hdt data.nt
Puede emitir consultas de patrón triple (TP) en la terminal especificando un término de sujeto, predicado y/o objeto. El signo de interrogación ( ?
) denota un término no instanciado. Por ejemplo, ¿puede recuperar todos los triples consultando el 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
El componente de encabezado de un HDT contiene metadatos que describen los datos contenidos en el HDT, así como los metadatos de creación sobre el propio HDT. El contenido del encabezado se puede exportar a un archivo N-Triples:
$ ./hdtInfo data.hdt > header.nt
Puede resultar útil actualizar la información del encabezado de un HDT. Esto se puede hacer generando un nuevo archivo HDT ( new.hdt
) a partir de un archivo HDT existente ( old.hdt
) y un archivo N-Triples ( new-header.nt
) que contiene la nueva información del encabezado:
$ ./replaceHeader old.hdt new.hdt new-header.nt
Alternativamente, las herramientas se pueden utilizar a través de la ventana acoplable.
Para crear la imagen de la ventana acoplable (usando un nombre arbitrario hdt
):
docker build -t hdt .
Suponiendo que haya creado una imagen acoplable llamada hdt
:
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
Esto inicia la imagen de la ventana acoplable de forma interactiva. La lista de archivos dentro del contenedor en ejecución mostrará los archivos de su directorio actual.
Para ejecutar cualquier comando desde el conjunto de herramientas hdt:
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
Para salir del contenedor en ejecución, use el comando exit
.
Los comandos HDT también se pueden llamar directamente desde el sistema host (docker):
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
Esto toma input.ttl
del directorio actual y crea un nuevo output.hdt
.
¡Las contribuciones son bienvenidas! Base sus contribuciones y solicitudes de extracción (PR) en la rama develop
y no en la rama master
.
hdt-cpp
es un software gratuito con licencia GNU Lesser General Public License (LGPL). Ver libhdt/COPYRIGHT
.