يعد Header Dictionary Triples (HDT) تنسيقًا مضغوطًا لبيانات RDF التي يمكن أيضًا الاستعلام عنها للأنماط الثلاثية.
لتجميع هذه المكتبة، تحتاج إلى تثبيت التبعيات التالية:
جنو أوتوكونف
sudo apt install autoconf
على التوزيعات المستندة إلى Debian (مثل Ubuntu)sudo dnf install autoconf
على التوزيعات المستندة إلى Red Hat (على سبيل المثال، Fedora)brew install autoconf
على نظام التشغيل macOS/OSXجنو ليبتول
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
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
يمكنك تصدير ملف HDT إلى ملف RDF بأحد تنسيقات التسلسل المدعومة (حاليًا: N-Quads وN-Triples وTriG وTurtle). تنسيق التسلسل الافتراضي للتصدير هو N-Triples.
$ ./hdt2rdf data.hdt data.nt
يمكنك إصدار استعلامات النمط الثلاثي (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):
docker run --rm -v $PWD :/workdir hdt rdf2hdt -f turtle input.ttl output.hdt
يؤدي هذا إلى أخذ input.ttl
من الدليل الحالي وإنشاء ملف output.hdt
جديد.
المساهمات هي موضع ترحيب! يرجى تأسيس مساهماتك وطلبات السحب (PRs) على فرع develop
، وليس على الفرع master
.
hdt-cpp
هو برنامج مجاني مرخص تحت رخصة جنو العمومية الصغرى (LGPL). انظر libhdt/COPYRIGHT
.