Header Dictionary Triples (HDT) — это формат сжатия данных RDF, к которому также можно запрашивать тройные шаблоны.
Чтобы скомпилировать эту библиотеку, вам необходимо установить следующие зависимости:
GNU Автоконф.
sudo apt install autoconf
в дистрибутивах на базе Debian (например, Ubuntu)sudo dnf install autoconf
в дистрибутивах на базе Red Hat (например, Fedora)brew install autoconf
на macOS/OSXGNU Библиотека
sudo apt install libtool
в дистрибутивах на базе Debian (например, Ubuntu)sudo dnf install libtool
в дистрибутивах на базе Red Hat (например, Fedora)brew install libtool
на macOS/OSXGNU zip (gzip) Позволяет загружать входные файлы RDF, заархивированные GNU, и загружать файлы HDT, заархивированные GNU.
sudo apt install zlib1g zlib1g-dev
в дистрибутивах на базе Debian (например, Ubuntu)sudo dnf install gzip
в дистрибутивах на базе Red Hat (например, Fedora)pkg-config Вспомогательный инструмент для компиляции приложений и библиотек.
sudo apt install pkg-config
в дистрибутивах на базе Debian (например, Ubuntu)sudo dnf install pkgconf-pkg-config
в дистрибутивах на базе Red Hat (например, Fedora)brew install pkg-config
на macOS/OSXSerd v0.28+ Парсер по умолчанию, используемый для обработки входных файлов RDF. Он поддерживает форматы сериализации N-Quads, N-Triples, TriG и Turtle.
sudo apt install libserd-0-0 libserd-dev
в дистрибутивах на базе Debian (например, Ubuntu)sudo dnf install serd serd-devel
в дистрибутивах на базе Red Hat (например, Fedora)brew install serd
на macOS/OSXИногда версия Serd, распространяемая менеджерами пакетов, слишком старая. В этом случае Serd также можно собрать вручную: инструкции по установке см. на https://github.com/drobilla/serd.
Чтобы скомпилировать и установить, выполните следующие команды в каталоге hdt-cpp
. Это также позволит скомпилировать и установить некоторые удобные инструменты.
./autogen.sh
./configure
make -j2
sudo make install
Иногда приведенные выше инструкции не приводят к правильной установке HDT. В этом разделе перечислены распространенные проблемы и способы их решения.
Поддержка Кабинета министров Киото так и не была завершена и в настоящее время приостановлена. В настоящее время невозможно скомпилировать HDT с помощью KyotoCabinet.
Распространенная ошибка:
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
Серд не 0.28+, видимо из-за менеджера пакетов. Собрал его вручную на https://github.com/drobilla/serd.
./configure
не может найти Серд При запуске ./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 в файл RDF в одном из поддерживаемых форматов сериализации (в настоящее время: N-Quads, N-Triples, TriG и Turtle). Формат сериализации по умолчанию для экспорта — N-Triples.
$ ./hdt2rdf data.hdt data.nt
Вы можете выполнять запросы Triple Pattern (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 ( new.hdt
) из существующего файла HDT ( old.hdt
) и файла N-Triples ( new-header.nt
), содержащего новую информацию заголовка:
$ ./replaceHeader old.hdt new.hdt new-header.nt
Альтернативно инструменты можно использовать через Docker.
Чтобы создать образ докера (используя произвольное имя hdt
):
docker build -t hdt .
Предполагая, что вы создали образ докера с именем hdt
:
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
Это запустит образ докера в интерактивном режиме. В списке файлов в работающем контейнере будут показаны файлы из вашего текущего каталога.
Чтобы запустить любую команду из набора инструментов hdt:
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
Чтобы выйти из работающего контейнера, используйте команду exit
.
Команды HDT также можно вызывать непосредственно из хост-системы (докера):
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
Это возьмет input.ttl
из текущего каталога и создаст новый файл output.hdt
.
Вклады приветствуются! Пожалуйста, основывайте свой вклад и запросы на включение (PR) на ветке develop
, а не на master
ветке.
hdt-cpp
— бесплатное программное обеспечение, лицензированное как GNU Lesser General Public License (LGPL). См. libhdt/COPYRIGHT
.