Native CLI i18n: The TrustGraph CLI has built-in translation support that dynamically loads language strings. You can test and use different languages by simply passing the --lang flag (e.g., --lang es for Spanish, --lang ru for Russian) or by configuring your environment's LANG variable. Automated Docs Translations: This PR introduces autonomously translated Markdown documentation into several target languages, including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew, Arabic, Simplified Chinese, and Russian.
18 KiB
| layout | title | parent |
|---|---|---|
| default | مواصفات تقنية لسياق الرسم البياني | Arabic (Beta) |
مواصفات تقنية لسياق الرسم البياني
Beta Translation: This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
نظرة عامة
تصف هذه المواصفات التغييرات التي تم إجراؤها على المكونات الأساسية للرسم البياني في TrustGraph لمواءمتها مع RDF 1.2 ولتقديم دعم كامل لسمات مجموعة بيانات RDF. هذا تغيير جذري لإصدار 2.x.
إصدارات
- 2.0: إصدار للمستخدمين الأوائل. تتوفر الميزات الأساسية، وقد لا تكون جاهزة تمامًا للإنتاج.
- 2.1 / 2.2: إصدار جاهز للإنتاج. الاستقرار والشمولية تم التحقق منهما.
إن توفير مرونة بشأن مستوى النضج هو مقصود - يمكن للمستخدمين الأوائل الوصول إلى إمكانيات جديدة قبل أن تصبح جميع الميزات جاهزة للإنتاج.
الأهداف
الأهداف الرئيسية لهذا العمل هي تمكين البيانات الوصفية حول الحقائق/البيانات:
-
المعلومات الزمنية: ربط الحقائق ببيانات وصفية تتعلق بالوقت
- متى اعتبرت حقيقة صحيحة
- متى أصبحت حقيقة صحيحة
- متى اكتشف أن حقيقة غير صحيحة
-
الأصل/المصادر: تتبع المصادر التي تدعم حقيقة ما
- "هذه الحقيقة مدعومة من المصدر X"
- ربط الحقائق بوثائقها الأصلية
-
الموثوقية/الثقة: تسجيل التأكيدات حول الحقيقة
- "الشخص P أعلن أن هذا صحيح"
- "الشخص Q يدعي أن هذا غير صحيح"
- تمكين تسجيل النقاط والتحقق من التعارض
الفرضية: Reification (RDF-star / quoted triples) هي الآلية الرئيسية لتحقيق هذه النتائج، حيث تتطلب جميعها إجراء بيانات حول البيانات.
الخلفية
للتعبير عن "تم اكتشاف حقيقة (تعرف أليس بوب) في 2024-01-15" أو "يدعم المصدر X الادعاء (يسبب Y Z)"، تحتاج إلى الرجوع إلى حافة كشيء يمكنك إجراء بيانات حوله. لا تدعم الثلاثيات القياسية هذا.
القيود الحالية
يمكن للفئة Value الحالية في trustgraph-base/trustgraph/schema/core/primitives.py أن تمثل:
- عقد URI (
is_uri=True) - قيم حرفية (
is_uri=False)
يوجد الحقل type ولكنه لا يستخدم لتمثيل أنواع بيانات XSD.
التصميم التقني
ميزات RDF المدعومة
الميزات الأساسية (المرتبطة بأهداف إعادة التعريف)
ترتبط هذه الميزات بشكل مباشر بالأهداف الزمنية والأصل والموثوقية:
-
RDF 1.2 Quoted Triples (RDF-star)
- حواف تشير إلى حواف أخرى
- يمكن أن تظهر الثلاثية كـ subject أو object في ثلاثية أخرى
- تمكن البيانات حول البيانات (reification)
- الآلية الأساسية لتعليق الحقائق الفردية
-
RDF Dataset / Named Graphs
- دعم رسوم بيانية مسماة متعددة داخل مجموعة بيانات
- يتم تحديد كل رسم بياني بواسطة IRI
- الانتقال من ثلاثيات (s, p, o) إلى أرباع (s, p, o, g)
- يتضمن الرسم البياني الافتراضي بالإضافة إلى رسم بياني مسمى واحد أو أكثر
- يمكن أن يكون IRI الرسم البياني subject في البيانات، على سبيل المثال:
<graph-source-A> <discoveredOn> "2024-01-15" <graph-source-A> <hasVeracity> "high" - ملاحظة: الرسوم البيانية المسماة ميزة منفصلة عن إعادة التعريف. لها استخدامات تتجاوز تعليق البيانات (التقسيم، التحكم في الوصول، تنظيم مجموعة البيانات) ويجب اعتبارها قدرة متميزة.
-
Blank Nodes (دعم محدود)
- عقد مجهولة الهوية بدون URI عالمي
- مدعوم من أجل التوافق عند تحميل بيانات RDF خارجية
- حالة محدودة: لا توجد ضمانات بشأن الهوية المستقرة بعد التحميل
- ابحث عنها عبر استعلامات wildcard (تطابق عن طريق الاتصالات، وليس عن طريق المعرف)
- ليست ميزة أساسية - لا تعتمد على معالجة دقيقة لعقد فارغة
إصلاحات فرعية (تغيير جذري للإصدار 2.0)
هذه الميزات ليست مرتبطة بشكل مباشر بأهداف إعادة التعريف ولكنها تحسينات قيمة يجب تضمينها أثناء إجراء تغييرات جذرية:
-
Literal Datatypes
- استخدام الحقل
typeبشكل صحيح لأنواع بيانات XSD - أمثلة: xsd:string, xsd:integer, xsd:dateTime، إلخ.
- يحل مشكلة حالية: لا يمكن تمثيل التواريخ أو الأعداد الصحيحة بشكل صحيح
- استخدام الحقل
-
Language Tags
- دعم سمات اللغة على الحرفيات (
@en,@fr, إلخ) - ملاحظة: تحتوي الحرفية على إما علامة لغة أو نوع بيانات، وليس كلاهما (باستثناء
rdf:langString) - مهم لحالات الاستخدام المتعلقة بالذكاء الاصطناعي/اللغات المتعددة
- دعم سمات اللغة على الحرفيات (
نماذج البيانات
Term (تغيير من Value)
سيتم إعادة تسمية الفئة Value إلى Term لتعكس بشكل أفضل المصطلحات الخاصة بـ RDF. تخدم عملية إعادة التسمية هذه غرضين:
- توافق التسمية مع مفاهيم RDF (يمكن أن يكون "Term" IRI أو عقدة فارغة أو حرفية أو ثلاثية مقتبسة - وليس مجرد "value")
- إجبار مراجعة التعليمات البرمجية عند واجهة التغيير الجذري - أي تعليمات برمجية لا تزال تشير إلى
Valueستظهر بشكل واضح أنها معطلة وتحتاج إلى التحديث
يمكن أن يمثل Term:
- IRI/URI - عقدة/مورد مسماة
- Blank Node - عقدة مجهولة الهوية ذات نطاق محلي
- Literal - قيمة بيانات مع إما:
- نوع بيانات (XSD type)، أو
- علامة لغة
- Quoted Triple - ثلاثية تستخدم كـ term (RDF 1.2)
النهج المختار: فئة واحدة مع مُميز نوع
تحدد متطلبات التسلسل الهيكل - هناك حاجة إلى مُميز نوع في التنسيق السلكي بغض النظر عن التمثيل في Python. الفئة الواحدة ذات نوع التمييز هي الأنسب وتتوافق مع نمط Value الحالي.
توفر رموز النوع أحادية الحرف تسلسلًا مضغوطًا:
from dataclasses import dataclass
# ثوابت أنواع Term
IRI = "i" # عقدة URI
BLANK = "b" # عقدة فارغة
LITERAL = "l" # قيمة حرفية
TRIPLE = "t" # ثلاثية مقتبسة (RDF 1.2)
@dataclass
class Term:
type: str = "" # واحد من: IRI, BLANK, LITERAL, TRIPLE
# لـ مصطلحات IRI (type == IRI)
iri: str = ""
# لـ عقد فارغة (type == BLANK)
id: str = ""
# لـ الحرفيات (type == LITERAL)
value: str = ""
datatype: str = "" # URI لنوع بيانات XSD (مستبعدة مع اللغة)
language: str = "" # علامة لغة (مستبعدة مع نوع البيانات)
# لـ ثلاثيات مقتبسة (type == TRIPLE)
triple: "Triple | None" = None
أمثلة على الاستخدام:
# مصطلح IRI
node = Term(type=IRI, iri="http://example.org/Alice")
# حرفية مع نوع بيانات
age = Term(type=LITERAL, value="42", datatype="xsd:integer")
# حرفية مع علامة لغة
label = Term(type=LITERAL, value="Hello", language="en")
# عقدة فارغة
anon = Term(type=BLANK, id="_:b1")
# ثلاثية مقتبسة (بيانات حول بيانات)
inner = Triple(
s=Term(type=IRI, iri="http://example.org/Alice"),
p=Term(type=IRI, iri="http://example.org/knows"),
o=Term(type=IRI, iri="http://example.org/Bob"),
)
reified = Term(type=TRIPLE, triple=inner)
البدائل التي تم أخذها في الاعتبار
الخيار B: اتحاد الفئات المتخصصة (Term = IRI | BlankNode | Literal | QuotedTriple)
- مرفوض: لا يزال التسلسل يحتاج إلى مُميز نوع، مما يضيف تعقيدًا
الخيار C: فئة أساسية مع فئات فرعية
- مرفوض: نفس مشكلة التسلسل، بالإضافة إلى تعقيدات وراثة dataclass
Triple / Quad
تكتسب الفئة Triple حقل اختياري للرسم البياني ليصبح أربعة:
@dataclass
class Triple:
s: Term | None = None # Subject
p: Term | None = None # Predicate
o: Term | None = None # Object
g: str | None = None # اسم الرسم البياني (IRI)، None = الرسم البياني الافتراضي
قرارات التصميم:
- اسم الحقل:
gلضمان الاتساق معs,p,o - اختياري:
Noneيعني الرسم البياني الافتراضي (غير المسمى) - النوع: سلسلة عادية (IRI) بدلاً من Term
- أسماء الرسم البياني هي دائمًا IRIs
- تم استبعاد العقد الفارغة كأسماء للرسوم البيانية (مربكة جدًا)
- لا حاجة إلى آليات Term الكاملة
لاحظ أن اسم الفئة يظل Triple حتى لو كانت ثلاثية الآن. هذا يتجنب التغييرات الجذرية و "triple" هي لا تزال المصطلحات الشائعة. السياق البياني هو بيانات وصفية حول مكان وجود الثلاثية.
أنماط استعلام مرشحة
يقبل محرك الاستعلام الحالي مجموعات من مصطلحات S, P, O. مع ثلاثيات مقتبسة، تصبح الثلاثية نفسها مصطلحًا صالحًا في هذه المواضع. فيما يلي أنماط استعلام مرشحة تدعم الأهداف الأصلية.
معاني معلمات الرسم البياني
باتباع اصطلاحات SPARQL للتوافق مع الإصدارات السابقة:
- تم حذف
g/ None: استعلام للرسم البياني الافتراضي فقط g= IRI محدد: استعلام لهذا الرسم البياني المسمى فقطg= حرف جاموسي /*: استعلام عبر جميع الرسوم البيانية (مكافئ لـ SPARQLGRAPH ?g { ... })
هذا يحافظ على بساطة الاستعلامات البسيطة ويجعل استعلامات الرسم البياني المسماة اختيارية.
تدعم الاستعلامات عبر الرسوم البيانية (g=حرف جاموسي). يحتوي مخطط Cassandra على جداول مخصصة (SPOG, POSG, OSPG) حيث g هو عمود تجميع بدلاً من مفتاح التقسيم، مما يتيح استعلامات فعالة عبر جميع الرسوم البيانية.
استعلامات زمنية
ابحث عن جميع الحقائق التي تم اكتشافها بعد تاريخ معين:
S: ? # أي ثلاثية مقتبسة
P: <discoveredOn>
O: > "2024-01-15"^^xsd:date # مقارنة التاريخ
ابحث عن الوقت الذي اعتبرت فيه حقيقة صحيحة:
S: << <Alice> <knows> <Bob> >> # ثلاثية مقتبسة كـ subject
P: <believedTrueFrom>
O: ? # يعيد التاريخ
ابحث عن الحقائق التي تبين أنها خاطئة:
S: ? # أي ثلاثية مقتبسة
P: <discoveredFalseOn>
O: ? # له أي قيمة (موجود)
استعلامات الأصل
ابحث عن جميع الحقائق التي يدعمها مصدر معين:
S: ? # أي ثلاثية مقتبسة
P: <supportedBy>
O: <source:document-123>
ابحث عن المصادر التي تدعم حقيقة معينة:
S: << <DrugA> <treats> <DiseaseB> >> # ثلاثية مقتبسة كـ subject
P: <supportedBy>
O: ? # يعيد IRIs المصدر
استعلامات الموثوقية
ابحث عن التأكيدات التي أعلن شخص ما أنها صحيحة:
S: ? # أي ثلاثية مقتبسة
P: <assertedTrueBy>
O: <person:Alice>
ابحث عن التأكيدات المتعارضة (نفس الحقيقة، موثوقية مختلفة):
# الاستعلام الأول: الحقائق التي أعلنت صحتها
S: ?
P: <assertedTrueBy>
O: ?
# الاستعلام الثاني: الحقائق التي أعلنت أنها خاطئة
S: ?
P: <assertedFalseBy>
O: ?
# منطق التطبيق: ابحث عن تقاطع الـ subjects
ابحث عن الحقائق التي تقل فيها درجة الثقة عن حد معين:
S: ?
P: <trustScore>
O: [threshold]
حد تخزين المتجهات
تستخدم مخازن المتجهات دائمًا IRIs فقط:
- لا توجد حواف (ثلاثيات مقتبسة)
- لا توجد قيم حرفية
- لا توجد عقد فارغة
هذا يبقي تخزين المتجهات بسيطًا - يتعامل مع التشابه الدلالي للكائنات المسماة. يتعامل هيكل الرسم البياني مع العلاقات وإعادة التعريف والبيانات الوصفية. لا تعقد الثلاثيات المقتبسة والرسوم البيانية المسماة عمليات المتجهات.
اعتبارات الأمان
الرسوم البيانية المسماة ليست ميزة أمان. تظل المستخدمون والمجموعات هي حدود الأمان. الرسوم البيانية المسماة مخصصة لتنظيم البيانات فقط وليست لإعادة التعريف.
اعتبارات الأداء
- يمكن أن تضيف الثلاثيات المقتبسة عمق التداخل - قد تؤثر على أداء الاستعلام
- هناك حاجة إلى استراتيجيات فهرسة الرسم البياني المسماة للاستعلامات الفعالة الموجهة للرسم البياني
- يجب أن يستوعب تصميم مخطط Cassandra تخزين الأربعة بكفاءة
واجهة مستخدم مخزن المتجهات
دائمًا ما تشير مخازن المتجهات إلى IRIs فقط:
- لا توجد حواف (ثلاثيات مقتبسة)
- لا توجد قيم حرفية
- لا توجد عقد فارغة
هذا يبقي مخزن المتجهات بسيطًا - يتعامل مع التشابه الدلالي للكائنات المسماة. يتعامل هيكل الرسم البياني مع العلاقات وإعادة التعريف والبيانات الوصفية. لا تعقد الثلاثيات المقتبسة والرسوم البيانية المسماة عمليات المتجهات.
استراتيجية الاختبار
استخدم استراتيجية الاختبار الحالية. نظرًا لأن هذا تغيير جذري، ركز بشكل كبير على مجموعة الاختبار الشاملة للتحقق من أن الهياكل الجديدة تعمل بشكل صحيح عبر جميع المكونات.
خطة الترحيل
- 2.0 هو إصدار جذري؛ لا توجد توافقية مع الإصدارات السابقة مطلوبة
- قد تتطلب البيانات الحالية ترحيلًا إلى مخطط جديد (سيتم تحديده بناءً على التصميم النهائي)
- ضع في اعتبارك أدوات الترحيل لتحويل الثلاثيات الموجودة
أسئلة مفتوحة
- العقد الفارغة: تم تأكيد الدعم المحدود. قد تحتاج إلى تحديد استراتيجية skolemization (إنشاء IRIs عند التحميل أو الحفاظ على معرفات العقد الفارغة).
- بناء جملة الاستعلام: ما هي البنية النحوية الملموسة لتحديد الثلاثيات المقتبسة في الاستعلامات؟ تحتاج إلى تعريف واجهة برمجة تطبيقات الاستعلام.
مفردات السمة: تم الحل. أي عناصر من المفردات RDF الصالحة مسموح بها، بما في ذلك العناصر المخصصة التي يحددها المستخدم. افتراضات قليلة جدًا عن صلاحية RDF.تأثير مستودع المتجهات: تم الحل. تشير مستودعات المتجهات دائمًا إلى IRIs فقط - لا توجد حواف أو قيم حرفية أو عقد فارغة. لا تؤثر الثلاثيات المقتبسة وإعادة التعريف على مستودع المتجهات.دلالات الرسم البياني المسماة: تم الحل. الاستعلامات افتراضيًا هي الرسم البياني الافتراضي (تتوافق مع سلوك SPARQL، متوافقة مع الإصدارات السابقة). مطلوب معلمة رسم بياني صريحة للاستعلام عن الرسوم البيانية المسماة أو جميع الرسوم البيانية.