HDT(Header Dictionary Triples)는 Triple Patterns에 대해서도 쿼리할 수 있는 RDF 데이터의 압축 형식입니다.
이 라이브러리를 컴파일하려면 다음 종속성이 설치되어 있어야 합니다.
GNU 자동 설정
sudo apt install autoconf
sudo dnf install autoconf
brew install autoconf
GNU Libtool
sudo apt install libtool
sudo dnf install libtool
brew install libtool
GNU zip(gzip) GNU 압축 RDF 입력 파일을 수집하고 GNU 압축 HDT 파일을 로드할 수 있습니다.
sudo apt install zlib1g zlib1g-dev
데비안 기반 배포판(예: Ubuntu)sudo dnf install gzip
pkg-config 애플리케이션과 라이브러리를 컴파일하기 위한 도우미 도구입니다.
sudo apt install pkg-config
sudo dnf install pkgconf-pkg-config
brew install pkg-config
Serd v0.28+ RDF 입력 파일을 처리하는 데 사용되는 기본 파서입니다. N-Quads, N-Triples, TriG 및 Turtle 직렬화 형식을 지원합니다.
sudo apt install libserd-0-0 libserd-dev
sudo dnf install serd serd-devel
brew install serd
패키지 관리자가 배포하는 Serd 버전이 너무 오래된 경우가 있습니다. 이 경우 Serd를 수동으로 빌드할 수도 있습니다. 설치 지침은 https://github.com/drobilla/serd를 참조하세요.
컴파일하고 설치하려면 hdt-cpp
디렉터리에서 다음 명령을 실행하세요. 또한 몇 가지 편리한 도구를 컴파일하고 설치합니다.
./autogen.sh
./configure
make -j2
sudo make install
때로는 위의 지침으로 인해 HDT 설치가 작동하지 않는 경우가 있습니다. 이 섹션에서는 일반적인 문제와 해결 방법을 나열합니다.
교토 내각에 대한 지원은 완료되지 않았으며 현재 중단되었습니다. 당분간은 교토캐비넷으로 HDT를 컴파일하는 것이 불가능합니다.
일반적인 오류:
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
Serd는 0.28+가 아닙니다. 아마도 패키지 관리자 때문일 것입니다. https://github.com/drobilla/serd에서 수동으로 빌드했습니다.
./configure
Serd를 찾을 수 없습니다 ./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
지원되는 직렬화 형식(현재: N-Quads, N-Triples, TriG 및 Turtle) 중 하나로 HDT 파일을 RDF 파일로 내보낼 수 있습니다. 내보내기를 위한 기본 직렬화 형식은 N-Triples입니다.
$ ./hdt2rdf data.hdt data.nt
주제, 술어 및/또는 목적어를 지정하여 터미널에서 TP(Triple Pattern) 쿼리를 실행할 수 있습니다. 물음표( ?
)는 인스턴스화되지 않은 용어를 나타냅니다. 예를 들어, 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 파일( old.hdt
)과 새 헤더 정보가 포함된 N-Triples 파일( new-header.nt
)에서 새 HDT 파일( new.hdt
)을 생성하여 수행할 수 있습니다.
$ ./replaceHeader old.hdt new.hdt new-header.nt
또는 docker를 통해 도구를 사용할 수 있습니다.
Docker 이미지를 빌드하려면(임의의 이름 hdt
사용):
docker build -t hdt .
hdt
라는 도커 이미지를 구축했다고 가정합니다.
docker run -it --rm -v $PWD :/workdir hdt bash
root@abcd1234:/workdir#
그러면 Docker 이미지가 대화형으로 시작됩니다. 실행 중인 컨테이너 내의 파일을 나열하면 현재 디렉터리의 파일이 표시됩니다.
hdt 도구 세트에서 명령을 실행하려면 다음을 수행하십시오.
root@abcd1234:/workdir# rdf2hdt -f turtle input.ttl output.hdt
실행 중인 컨테이너를 종료하려면 exit
명령을 사용합니다.
HDT 명령은 (docker) 호스트 시스템에서 직접 호출할 수도 있습니다.
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
이는 현재 디렉토리에서 input.ttl
가져와서 새로운 output.hdt
를 생성합니다.
기여를 환영합니다! 기여 및 PR(풀 요청)은 master
브랜치가 아닌 develop
브랜치를 기반으로 하세요.
hdt-cpp
GNU LGPL(Lesser General Public License)로 라이센스가 부여된 무료 소프트웨어입니다. libhdt/COPYRIGHT
참조하세요.