Header Dictionary Triples (HDT) é um formato de compactação para dados RDF que também pode ser consultado para padrões triplos.
Para compilar esta biblioteca, você precisa ter as seguintes dependências instaladas:
Autoconf GNU
sudo apt install autoconf
em distros baseadas em Debian (por exemplo, Ubuntu)sudo dnf install autoconf
em distros baseadas em Red Hat (por exemplo, Fedora)brew install autoconf
no macOS/OSXGNU Libtool
sudo apt install libtool
em distros baseadas em Debian (por exemplo, Ubuntu)sudo dnf install libtool
em distros baseadas em Red Hat (por exemplo, Fedora)brew install libtool
no macOS/OSXGNU zip (gzip) Permite que arquivos de entrada RDF compactados GNU sejam ingeridos e permite que arquivos HDT compactados GNU sejam carregados.
sudo apt install zlib1g zlib1g-dev
em distros baseadas em Debian (por exemplo, Ubuntu)sudo dnf install gzip
em distros baseadas em Red Hat (por exemplo, Fedora)pkg-config Uma ferramenta auxiliar para compilar aplicativos e bibliotecas.
sudo apt install pkg-config
em distros baseadas em Debian (por exemplo, Ubuntu)sudo dnf install pkgconf-pkg-config
em distros baseadas em Red Hat (por exemplo, Fedora)brew install pkg-config
no macOS/OSXSerd v0.28+ O analisador padrão usado para processar arquivos de entrada RDF. Ele suporta os formatos de serialização N-Quads, N-Triples, TriG e Turtle.
sudo apt install libserd-0-0 libserd-dev
em distros baseadas em Debian (por exemplo, Ubuntu)sudo dnf install serd serd-devel
em distros baseadas em Red Hat (por exemplo, Fedora)brew install serd
no macOS/OSXÀs vezes, a versão do Serd distribuída pelos gerenciadores de pacotes é muito antiga. Nesse caso, o Serd também pode ser construído manualmente: consulte https://github.com/drobilla/serd para obter instruções de instalação.
Para compilar e instalar, execute os seguintes comandos no diretório hdt-cpp
. Isso também irá compilar e instalar algumas ferramentas úteis.
./autogen.sh
./configure
make -j2
sudo make install
Às vezes, as instruções acima não resultam em uma instalação HDT funcional. Esta seção enumera problemas comuns e suas soluções alternativas.
O apoio ao Gabinete de Quioto nunca terminou e está actualmente suspenso. Por enquanto não é possível compilar HDT com KyotoCabinet.
Erro comum:
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();
^
Ao 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 não é 0,28+, provavelmente por causa do gerenciador de pacotes. Criei-o manualmente em https://github.com/drobilla/serd.
./configure
não consegue encontrar Serd Ao executar ./configure
você recebe uma mensagem semelhante a esta:
Package 'serd-0', required by 'virtual:world', not found
Isso significa que ./configure
não consegue encontrar a localização do arquivo serd-0.pc
em seu computador. Você mesmo deve encontrar esse local, por exemplo, da seguinte maneira:
find /usr/ -name serd-0.pc
Depois de encontrar o diretório que contém o arquivo serd-0.pc
, você deve informar o script ./configure
sobre este local definindo a seguinte variável de ambiente (onde o diretório /usr/local/lib/pkgconfig/
é adaptado à sua situação ):
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
Após compilar e instalar, você pode usar as ferramentas úteis localizadas em hdt-cpp/libhdt/tools
. Mostramos algumas tarefas comuns que podem ser realizadas com essas ferramentas.
Os arquivos HDT só podem ser criados para arquivos de entrada RDF compatíveis com os padrões. Se o seu arquivo de entrada não for RDF compatível com os padrões, não será possível criar arquivos HDT a partir dele.
$ ./rdf2hdt data.nt data.hdt
Você pode exportar um arquivo HDT para um arquivo RDF em um dos formatos de serialização suportados (atualmente: N-Quads, N-Triples, TriG e Turtle). O formato de serialização padrão para exportação é N-Triples.
$ ./hdt2rdf data.hdt data.nt
Você pode emitir consultas Triple Pattern (TP) no terminal especificando um sujeito, predicado e/ou termo de objeto. O ponto de interrogação ( ?
) denota um termo não instanciado. Por exemplo, você pode recuperar todos os triplos consultando o 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
O componente de cabeçalho de um HDT contém metadados que descrevem os dados contidos no HDT, bem como os metadados de criação sobre o próprio HDT. O conteúdo do cabeçalho pode ser exportado para um arquivo N-Triples:
$ ./hdtInfo data.hdt > header.nt
Pode ser útil atualizar as informações do cabeçalho de um HDT. Isso pode ser feito gerando um novo arquivo HDT ( new.hdt
) a partir de um arquivo HDT existente ( old.hdt
) e um arquivo N-Triples ( new-header.nt
) que contém as novas informações de cabeçalho:
$ ./replaceHeader old.hdt new.hdt new-header.nt
Alternativamente, as ferramentas podem ser usadas via docker.
Para construir a imagem docker (usando um nome arbitrário hdt
):
docker build -t hdt .
Supondo que você tenha criado uma imagem docker chamada hdt
:
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
Isso inicia a imagem do docker de forma interativa. A listagem de arquivos no contêiner em execução deve mostrar os arquivos do seu diretório atual.
Para executar qualquer comando do conjunto de ferramentas hdt:
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
Para sair do contêiner em execução, use o comando exit
.
Os comandos HDT também podem ser chamados diretamente do sistema host (docker):
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
Isso pega input.ttl
do diretório atual e cria um novo output.hdt
.
Contribuições são bem-vindas! Baseie suas contribuições e pull requests (PRs) no branch develop
, e não no branch master
.
hdt-cpp
é um software livre licenciado como GNU Lesser General Public License (LGPL). Consulte libhdt/COPYRIGHT
.