Header Dictionary Triples (HDT) เป็นรูปแบบการบีบอัดข้อมูล RDF ที่สามารถสืบค้น Triple Patterns ได้
ในการคอมไพล์ไลบรารีนี้ คุณต้องติดตั้งการขึ้นต่อกันต่อไปนี้:
GNU การประชุมอัตโนมัติ
sudo apt install autoconf
บน distros ที่ใช้ Debian (เช่น Ubuntu)sudo dnf install autoconf
บน distros ที่ใช้ Red Hat (เช่น Fedora)brew install autoconf
บน macOS / OSXGNU Libtool
sudo apt install libtool
บน distros ที่ใช้ Debian (เช่น Ubuntu)sudo dnf install libtool
บน distros ที่ใช้ Red Hat (เช่น Fedora)brew install libtool
บน macOS / OSXGNU zip (gzip) อนุญาตให้นำเข้าไฟล์อินพุต RDF ซิป GNU และอนุญาตให้โหลดไฟล์ HDT ซิป GNU
sudo apt install zlib1g zlib1g-dev
บน distros ที่ใช้ Debian (เช่น Ubuntu)sudo dnf install gzip
บน distros ที่ใช้ Red Hat (เช่น Fedora)pkg-config เครื่องมือช่วยสำหรับการคอมไพล์แอปพลิเคชันและไลบรารี
sudo apt install pkg-config
บน distros ที่ใช้ Debian (เช่น Ubuntu)sudo dnf install pkgconf-pkg-config
บน distros ที่ใช้ 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
บน distros ที่ใช้ Debian (เช่น Ubuntu)sudo dnf install serd serd-devel
บน distros ที่ใช้ 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
Serd ไม่ใช่ 0.28+ อาจเป็นเพราะตัวจัดการแพ็คเกจ สร้างด้วยตนเองที่ https://github.com/drobilla/serd
./configure
ไม่พบ 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
หรือคุณสามารถใช้เครื่องมือผ่านนักเทียบท่าได้
วิธีสร้างอิมเมจนักเทียบท่า (โดยใช้ชื่อที่กำหนดเอง 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