update more languages

Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
Alex Jenkins 2026-04-11 01:08:44 +00:00
parent 835acaa70e
commit 16c2f12a54
249 changed files with 117186 additions and 186 deletions

View file

@ -11,19 +11,31 @@
### التنفيذ الحالي
يعمل أصل البيانات حاليًا على النحو التالي:
<<<<<<< HEAD
يتم تخزين بيانات وصف المستند كـ RDF triples في الرسم البياني المعرفي.
=======
يتم تخزين بيانات وصف المستند كـ "ثلاثيات" RDF في الرسم البياني للمعرفة.
>>>>>>> 82edf2d (New md files from RunPod)
يربط معرف المستند البيانات الوصفية بالمستند، بحيث يظهر المستند كعقدة في الرسم البياني.
عند استخراج الحواف (العلاقات/الحقائق) من المستندات، تربط علاقة `subjectOf` الحافة المستخرجة بالمستند المصدر.
### المشاكل في النهج الحالي
<<<<<<< HEAD
1. **تحميل البيانات الوصفية المتكرر:** يتم تجميع بيانات وصف المستند وتحميلها بشكل متكرر مع كل مجموعة من الـ triples المستخرجة من هذا المستند. هذا مضيعة ويزيد من التكرار - نفس البيانات الوصفية تنتقل كحمولة مع كل مخرج استخراج.
=======
1. **تحميل البيانات الوصفية المتكرر:** يتم تجميع بيانات وصف المستند وتحميلها بشكل متكرر مع كل مجموعة من "الثلاثيات" المستخرجة من هذا المستند. هذا مضيعة ويزيد من التكرار - حيث تنتقل نفس البيانات الوصفية كحمولة مع كل مخرج استخراج.
>>>>>>> 82edf2d (New md files from RunPod)
2. **أصل بيانات سطحي:** تربط العلاقة `subjectOf` الحالية الحقائق مباشرة بالمستند ذي المستوى الأعلى فقط. لا توجد رؤية لسلسلة التحويل - أي الصفحة التي جاءت منها الحقيقة، أو الجزء، أو طريقة الاستخراج المستخدمة.
### الحالة المرغوبة
<<<<<<< HEAD
1. **تحميل البيانات الوصفية مرة واحدة:** يجب تحميل بيانات وصف المستند مرة واحدة وإرفاقها بعقدة المستند ذات المستوى الأعلى، وليس تكرارها مع كل مجموعة من الـ triples.
=======
1. **تحميل البيانات الوصفية مرة واحدة:** يجب تحميل بيانات وصف المستند مرة واحدة وإرفاقها بعقدة المستند ذات المستوى الأعلى، وليس تكرارها مع كل مجموعة من "الثلاثيات".
>>>>>>> 82edf2d (New md files from RunPod)
2. **رسم بياني كامل لأصل البيانات:** التقاط سلسلة التحويل الكاملة من المستند المصدر عبر جميع القطع الأثرية الوسيطة وصولاً إلى الحقائق المستخرجة. على سبيل المثال، تحويل مستند PDF:
@ -40,6 +52,7 @@
→ ...
```
<<<<<<< HEAD
3. **التخزين الموحد:** يتم تخزين الرسم البياني للأصل (provenance DAG) في نفس الرسم البياني للمعرفة كما يتم تخزين المعرفة المستخرجة. يتيح ذلك الاستعلام عن الأصل بنفس الطريقة التي يتم بها الاستعلام عن المعرفة - من خلال تتبع الحواف صعودًا في السلسلة من أي حقيقة إلى موقع مصدرها الدقيق.
4. **معرفات مستقرة:** لكل قطعة أثرية وسيطة (صفحة، جزء) معرف مستقر كعقدة في الرسم البياني.
@ -47,6 +60,15 @@
5. **الربط بين الأب والطفل:** يتم ربط المستندات المشتقة بآبائها وصولاً إلى المستند المصدر الرئيسي باستخدام أنواع علاقات متسقة.
6. **تخصيص الحقائق بدقة:** تشير العلاقة `subjectOf` في الحواف المستخرجة إلى الأصل الفوري (الجزء)، وليس المستند الرئيسي. يتم استعادة الأصل الكامل من خلال التنقل عبر الرسم البياني للأصل.
=======
3. **التخزين الموحد:** يتم تخزين الرسم البياني للأصل (provenance DAG) في نفس الرسم البياني للمعرفة مثل المعرفة المستخرجة. يتيح ذلك الاستعلام عن الأصل بنفس الطريقة التي يتم بها الاستعلام عن المعرفة - من خلال تتبع الحواف صعودًا في السلسلة من أي حقيقة إلى موقع مصدرها الدقيق.
4. **معرفات مستقرة:** لكل قطعة أثرية وسيطة (صفحة، جزء) معرف مستقر كعقدة في الرسم البياني.
5. **الربط بين الأبناء والآباء:** يتم ربط المستندات المشتقة بآبائها وصولاً إلى المستند المصدر الرئيسي باستخدام أنواع علاقات متسقة.
6. **تخصيص الحقائق بدقة:** تشير العلاقة `subjectOf` في الحواف المستخرجة إلى الأصل الفوري (الجزء)، وليس المستند الرئيسي. يتم استعادة الأصل الكامل من خلال اجتياز الرسم البياني للأصل.
>>>>>>> 82edf2d (New md files from RunPod)
## حالات الاستخدام
@ -58,6 +80,7 @@
1. يرسل المستخدم استعلامًا إلى وكيل GraphRAG.
2. يسترجع الوكيل الحقائق ذات الصلة من الرسم البياني للمعرفة لصياغة استجابة.
3. وفقًا لمواصفات الأصل في وقت الاستعلام، يقوم الوكيل بالإبلاغ عن الحقائق التي ساهمت في الاستجابة.
<<<<<<< HEAD
4. يربط كل حقيقة بمصدره (الجزء) عبر الرسم البياني للأصل.
5. ترتبط الأجزاء بالصفحات، وترتبط الصفحات بمستندات المصدر.
@ -68,6 +91,18 @@
فهم بالضبط من أين في المستند (في أي صفحة، في أي قسم) نشأت الحقيقة.
**القيمة:** يمكن للمستخدمين التحقق من صحة الاستجابات التي تم إنشاؤها بواسطة الذكاء الاصطناعي مقابل المصادر الأولية، مما يعزز الثقة ويمكن المستخدمين من التحقق من الحقائق.
=======
4. ترتبط كل حقيقة بمصدرها من خلال الرسم البياني للأصل.
5. ترتبط الأجزاء بالصفحات، وترتبط الصفحات بمستندات المصدر.
**النتيجة في تجربة المستخدم:** يعرض الواجهة استجابة نموذج اللغة (LLM) جنبًا إلى جنب مع تحديد مصدر المعلومات. يمكن للمستخدم:
رؤية الحقائق التي دعمت الاستجابة.
الانتقال من الحقائق إلى الأجزاء إلى الصفحات إلى المستندات.
مراجعة المستندات المصدر الأصلية للتحقق من الادعاءات.
فهم بالضبط من أين في المستند (في أي صفحة، في أي قسم) نشأت الحقيقة.
**القيمة:** يمكن للمستخدمين التحقق من الاستجابات التي تم إنشاؤها بواسطة الذكاء الاصطناعي مقابل المصادر الأولية، مما يعزز الثقة ويمكن المستخدمين من التحقق من الحقائق.
>>>>>>> 82edf2d (New md files from RunPod)
### UC2: تصحيح جودة الاستخراج
@ -79,6 +114,7 @@
### UC4: حذف البيانات / الحق في النسيان
<<<<<<< HEAD
يجب إزالة مستند المصدر (بسبب اللائحة العامة لحماية البيانات، أو لأسباب قانونية، إلخ). تتبع الرسم البياني للأصل للعثور على جميع الحقائق المشتقة وإزالتها.
### UC5: حل النزاعات
@ -90,6 +126,19 @@
بعض المصادر أكثر موثوقية من غيرها. يمكن ترجيح الحقائق أو تصفيتها بناءً على سلطة/جودة مستندات الأصل.
### UC7: مقارنة مسار الاستخراج
=======
يجب إزالة مستند المصدر (بسبب GDPR، أو لأسباب قانونية، وما إلى ذلك). ابحث في الرسم البياني للأصل وأزل جميع الحقائق المشتقة.
### UC5: حل النزاعات
تتناقض حقيقتان مع بعضهما البعض. تتبع كلتاهما إلى مصادرهما لفهم السبب واتخاذ قرار بشأن أي منهما يجب الوثوق به (المصدر الأكثر موثوقية، أو الأحدث، وما إلى ذلك).
### UC6: وزن سلطة المصدر
بعض المصادر أكثر موثوقية من غيرها. يمكن وزن الحقائق أو تصفيتها بناءً على سلطة/جودة مستندات الأصل.
### UC7: مقارنة مسارات الاستخراج
>>>>>>> 82edf2d (New md files from RunPod)
قارن المخرجات من طرق/إصدارات استخراج مختلفة. أي أداة استخراج أنتجت حقائق أفضل من نفس المصدر؟
@ -101,6 +150,7 @@
#### القدرات الحالية (تم تنفيذها بالفعل)
<<<<<<< HEAD
**ربط المستندات من الأب إلى الابن:**
`parent_id` الحقل في `DocumentMetadata` - يربط المستند الابن بالمستند الأب
`document_type` الحقل - القيم: `"source"` (أصلي) أو `"extracted"` (مشتق)
@ -129,22 +179,66 @@
`trustgraph-flow/trustgraph/librarian/service.py` - معالج الخدمة، تحميل المستند
`trustgraph-flow/trustgraph/tables/library.py` - تخزين جدول Cassandra
`trustgraph-base/trustgraph/schema/services/library.py` - تعريفات المخططات
=======
**ربط المستندات من النوع "الأب-الابن":**
الحقل `parent_id` في `DocumentMetadata` - يربط المستند الابن بالمستند الأب.
الحقل `document_type` - القيم: `"source"` (أصلي) أو `"extracted"` (مشتق).
واجهة برمجة تطبيقات `add-child-document` - لإنشاء مستند ابن مع `document_type = "extracted"` تلقائيًا.
واجهة برمجة تطبيقات `list-children` - لاسترداد جميع المستندات الابناء لمستند أب معين.
الحذف المتتالي - يؤدي إزالة مستند الأب تلقائيًا إلى حذف جميع مستندات الأبناء.
**تحديد المستند:**
معرفات المستندات محددة من قبل العميل (وليس تم إنشاؤها تلقائيًا).
المستندات مفهرسة بواسطة مفتاح مركب `(user, document_id)` في Cassandra.
يتم إنشاء معرفات الكائنات (UUIDs) داخليًا لتخزين الكائنات الثنائية.
**دعم البيانات الوصفية:**
الحقل `metadata: list[Triple]` - ثلاثيات RDF للبيانات الوصفية المنظمة.
`title`، `comments`، `tags` - بيانات وصفية أساسية للمستند.
`time` - الطابع الزمني، `kind` - نوع MIME.
**هيكل التخزين:**
يتم تخزين البيانات الوصفية في Cassandra (مساحة مفاتيح `librarian`، جدول `document`).
يتم تخزين المحتوى في تخزين الكائنات الثنائية MinIO/S3 (حاوية `library`).
تسليم محتوى ذكي: المستندات الأقل من 2 ميجابايت مضمنة، ويتم بث المستندات الأكبر حجمًا.
#### الملفات الرئيسية
`trustgraph-flow/trustgraph/librarian/librarian.py` - العمليات الأساسية لأمين المكتبة.
`trustgraph-flow/trustgraph/librarian/service.py` - معالج الخدمة، تحميل المستند.
`trustgraph-flow/trustgraph/tables/library.py` - متجر جدول Cassandra.
`trustgraph-base/trustgraph/schema/services/library.py` - تعريفات المخططات.
>>>>>>> 82edf2d (New md files from RunPod)
#### الثغرات التي يجب معالجتها
يحتوي أمين المكتبة على اللبنات الأساسية ولكن حاليًا:
<<<<<<< HEAD
1. الربط من الأب إلى الابن ذو مستوى واحد فقط - لا توجد أدوات مساعدة لتصفح الرسوم البيانية متعددة المستويات
2. لا يوجد مفردات قياسية لأنواع العلاقات (مثل `derivedFrom`، `extractedFrom`)
3. بيانات التتبع الوصفية (طريقة الاستخراج، والثقة، وموضع الجزء) غير موحدة
4. لا توجد واجهة برمجة تطبيقات للاستعلام للتنقل عبر سلسلة التتبع الكاملة من حقيقة إلى المصدر
=======
1. ربط الأب-الابن ذو مستوى واحد فقط - لا توجد أدوات مساعدة لتصفح الرسوم البيانية متعددة المستويات.
2. لا يوجد مفردات قياسية لأنواع العلاقات (مثل `derivedFrom`، `extractedFrom`).
3. بيانات التتبع الوصفية (طريقة الاستخراج، والثقة، وموضع الجزء) غير موحدة.
4. لا توجد واجهة برمجة تطبيقات للاستعلام للتنقل عبر سلسلة التتبع الكاملة من حقيقة إلى المصدر.
>>>>>>> 82edf2d (New md files from RunPod)
## تصميم التدفق الشامل
يتبع كل معالج في خط الأنابيب نمطًا متسقًا:
<<<<<<< HEAD
استقبال معرف المستند من البنية التحتية
جلب المحتوى من أمين المكتبة
إنتاج القطع الأثرية الفرعية
لكل قطعة أثرية فرعية: حفظ في أمين المكتبة، وإصدار حافة إلى الرسم البياني، وتمرير المعرف إلى البنية التحتية
=======
استقبال معرف المستند من المصدر العلوي.
جلب المحتوى من أمين المكتبة.
إنتاج القطع الأثرية الفرعية.
لكل قطعة أثرية فرعية: حفظ في أمين المكتبة، وإصدار حافة إلى الرسم البياني، وتمرير المعرف إلى المكون التالي.
>>>>>>> 82edf2d (New md files from RunPod)
### تدفقات المعالجة
@ -239,11 +333,19 @@ PDF: Document → Pages → Chunks → Triples/Embeddings
Text: Document → Chunks → Triples/Embeddings
```
<<<<<<< HEAD
التصميم يتكيف مع كل من المصدر والصفحة لأن وحدة التقسيم تعالج مدخلاتها بشكل عام - فهي تستخدم أي معرف مستند تتلقاه كمعرف رئيسي، بغض النظر عما إذا كان ذلك مستند مصدر أم صفحة.
### مخطط البيانات الوصفية (PROV-O)
تستخدم البيانات الوصفية المتعلقة بالأصل علم الوجود W3C PROV-O. يوفر هذا مفردات قياسية ويمكن أن يمكّن التوقيع/المصادقة المستقبلية لنتائج الاستخراج.
=======
التصميم يتكيف مع كلتا الحالتين لأن وحدة التقسيم تعالج مدخلاتها بشكل عام - فهي تستخدم أي معرف مستند تتلقاه كمعرف رئيسي، بغض النظر عما إذا كان ذلك مستندًا أصليًا أم صفحة.
### مخطط البيانات الوصفية (PROV-O)
تستخدم البيانات الوصفية المتعلقة بالأصل علم الوجود W3C PROV-O. يوفر هذا مفردات قياسية ويمكن أن يتيح في المستقبل التوقيع والمصادقة على مخرجات الاستخراج.
>>>>>>> 82edf2d (New md files from RunPod)
#### المفاهيم الأساسية في PROV-O
@ -264,7 +366,11 @@ Text: Document → Chunks → Triples/Embeddings
#### البيانات الوصفية في كل مستوى
<<<<<<< HEAD
**المستند المصدر (يتم إصداره بواسطة Librarian):**
=======
**المستند الأصلي (يتم إصداره بواسطة Librarian):**
>>>>>>> 82edf2d (New md files from RunPod)
```
doc:123 a prov:Entity .
doc:123 dc:title "Research Paper" .
@ -289,7 +395,11 @@ activity:pdf-extract-456 tg:componentVersion "1.2.3" .
activity:pdf-extract-456 prov:startedAtTime "2024-01-15T10:30:00Z" .
```
<<<<<<< HEAD
**الجزء (يتم إصداره بواسطة وحدة التجميع):**
=======
**جزء (يتم إصداره بواسطة أداة التقسيم):**
>>>>>>> 82edf2d (New md files from RunPod)
```
chunk:123-1-1 a prov:Entity .
chunk:123-1-1 prov:wasDerivedFrom page:123-1 .
@ -355,7 +465,11 @@ activity:extract-999 tg:ontology <http://example.org/ontologies/business-v1> .
| `tg:chunkOverlap` | Activity | التداخل المُكوَّن بين الأجزاء |
| `tg:componentVersion` | Activity | إصدار مكون TG |
| `tg:llmModel` | Activity | نموذج LLM المستخدم للاستخراج |
<<<<<<< HEAD
| `tg:ontology` | Activity | عنوان URI للأنطولوجيا المستخدم لتوجيه الاستخراج |
=======
| `tg:ontology` | Activity | عنوان URI للدلالة المستخدم لتوجيه الاستخراج |
>>>>>>> 82edf2d (New md files from RunPod)
| `tg:embeddingModel` | Activity | النموذج المستخدم للتضمينات |
| `tg:sourceText` | Statement | النص الدقيق الذي تم استخراج ثلاثية منه |
| `tg:sourceCharOffset` | Statement | الإزاحة الحرفية داخل الجزء حيث يبدأ النص المصدر |
@ -363,7 +477,11 @@ activity:extract-999 tg:ontology <http://example.org/ontologies/business-v1> .
#### تهيئة المفردات (لكل مجموعة)
<<<<<<< HEAD
الرسم البياني المعرفي محايد للأنطولوجيا ويبدأ فارغًا. عند كتابة بيانات سلالة PROV-O إلى مجموعة لأول مرة، يجب تهيئة المفردات باستخدام تسميات RDF لجميع الفئات والمحددات. يضمن ذلك عرضًا قابلاً للقراءة بواسطة الإنسان في الاستعلامات وواجهة المستخدم.
=======
الرسم البياني المعرفي محايد بالنسبة للدلالات ويبدأ فارغًا. عند كتابة بيانات سلالة PROV-O إلى مجموعة لأول مرة، يجب تهيئة المفردات باستخدام تسميات RDF لجميع الفئات والمحددات. يضمن ذلك عرضًا قابلاً للقراءة بواسطة الإنسان في الاستعلامات وواجهة المستخدم.
>>>>>>> 82edf2d (New md files from RunPod)
**فئات PROV-O:**
```
@ -372,7 +490,11 @@ prov:Activity rdfs:label "Activity" .
prov:Agent rdfs:label "Agent" .
```
<<<<<<< HEAD
**المُتَعَدِّيات (Predicates) الخاصة بـ PROV-O:**
=======
**المفردات (Predicates) الخاصة بـ PROV-O:**
>>>>>>> 82edf2d (New md files from RunPod)
```
prov:wasDerivedFrom rdfs:label "was derived from" .
prov:wasGeneratedBy rdfs:label "was generated by" .
@ -403,12 +525,21 @@ tg:sourceCharLength rdfs:label "source character length" .
**ملاحظة حول التنفيذ:** يجب أن يكون هذا الإطار اللغوي ذاتي الإعادة - آمنًا للتشغيل عدة مرات دون إنشاء تكرارات. يمكن تشغيله في معالجة المستند الأول في المجموعة، أو كخطوة منفصلة لتهيئة المجموعة.
<<<<<<< HEAD
#### أصل الجزء الفرعي (طموح)
للحصول على معلومات تفصيلية حول الأصل، سيكون من المفيد تسجيل المكان الدقيق داخل جزء معين حيث تم استخراج الثلاثي. هذا يسمح بـ:
تسليط الضوء على النص المصدر الدقيق في واجهة المستخدم.
التحقق من دقة الاستخراج مقابل المصدر.
=======
#### مصدر المعلومات التفصيلية (طموح)
للحصول على معلومات تفصيلية حول المصدر، سيكون من المفيد تسجيل المكان الدقيق داخل جزء معين حيث تم استخراج الثلاثيات منه. هذا يسمح بـ:
تسليط الضوء على النص المصدر الدقيق في واجهة المستخدم.
التحقق من دقة الاستخراج مقارنة بالمصدر.
>>>>>>> 82edf2d (New md files from RunPod)
تصحيح جودة الاستخراج على مستوى الجملة.
**مثال مع تتبع الموضع:**
@ -434,21 +565,34 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
**اعتبارات التنفيذ:**
<<<<<<< HEAD
قد لا توفر استخراج البيانات باستخدام نماذج اللغة الكبيرة (LLM) بشكل طبيعي مواقع الأحرف.
يمكن توجيه نموذج اللغة الكبيرة لإرجاع الجملة/العبارة المصدرية بالإضافة إلى الثلاثيات المستخرجة.
بدلاً من ذلك، يمكن إجراء معالجة لاحقة لمطابقة الكيانات المستخرجة بشكل تقريبي مع النص المصدر.
يوجد مقايضة بين تعقيد الاستخراج ودقة تتبع المصدر.
قد يكون من الأسهل تحقيق ذلك باستخدام طرق الاستخراج المنظمة بدلاً من استخراج البيانات المجردة باستخدام نماذج اللغة الكبيرة.
=======
قد لا توفر عملية الاستخراج القائمة على نماذج اللغة الكبيرة (LLM) بشكل طبيعي مواقع الأحرف.
يمكن توجيه نموذج اللغة الكبيرة لإرجاع الجملة/العبارة المصدرية بالإضافة إلى الثلاثيات المستخرجة.
بدلاً من ذلك، يمكن إجراء معالجة لاحقة لمطابقة الكيانات المستخرجة بشكل تقريبي مع النص الأصلي.
يوجد مقايضة بين تعقيد الاستخراج ودقة تتبع المصدر.
قد يكون من الأسهل تحقيق ذلك باستخدام طرق الاستخراج المنظمة بدلاً من استخراج نماذج اللغة الكبيرة غير المنظمة.
>>>>>>> 82edf2d (New md files from RunPod)
هذا الأمر مصنف على أنه طموح - يجب تنفيذ تتبع المصدر على مستوى المقطع أولاً، مع تتبع المقطع الفرعي كتحسين مستقبلي إذا كان ذلك ممكنًا.
### نموذج التخزين المزدوج
<<<<<<< HEAD
يتم بناء رسم بياني لتتبع المصدر بشكل تدريجي أثناء تدفق المستندات عبر مسار العمل:
=======
يتم بناء رسم بياني (DAG) لتتبع المصدر تدريجيًا أثناء تدفق المستندات عبر مسار العمل:
>>>>>>> 82edf2d (New md files from RunPod)
| التخزين | ما يتم تخزينه | الغرض |
|-------|---------------|---------|
| أمين المكتبة | محتوى المستند + روابط الأبناء | استرجاع المحتوى، حذف متسلسل |
<<<<<<< HEAD
| الرسم البياني للمعرفة | حواف الأبناء، وبيانات وصفية | استعلامات تتبع المصدر، إسناد الحقائق |
تحتفظ كلا التخزينين بنفس هيكل الرسم البياني. يحتوي أمين المكتبة على المحتوى، بينما يحتوي الرسم البياني على العلاقات ويمكنه تمكين استعلامات التصفح.
@ -464,6 +608,23 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
4. **بناء تدريجي للرسم البياني** - يضيف كل معالج مستواه إلى الرسم البياني. يتم بناء سلسلة تتبع المصدر الكاملة بشكل تدريجي.
5. **تحسين ما بعد التقطيع** - بعد التقطيع، تحمل الرسائل كلاً من المعرف والمحتوى. تكون القطع صغيرة (2-4 كيلوبايت)، لذلك يؤدي تضمين المحتوى إلى تجنب عمليات الذهاب والإياب غير الضرورية إلى أمين المكتبة مع الحفاظ على تتبع المصدر عبر المعرف.
=======
| الرسم البياني المعرفي | حواف الأبناء، بالإضافة إلى البيانات الوصفية | استعلامات تتبع المصدر، إسناد الحقائق |
تحتفظ كلتا الحالتين بنفس هيكل الرسم البياني. تحتفظ أمين المكتبة بالمحتوى، بينما يحتفظ الرسم البياني بالعلاقات ويمكنه تمكين استعلامات التصفح.
### المبادئ الأساسية للتصميم
1. **معرف المستند كوحدة تدفق** - تمرر المعالجات المعرفات، وليس المحتوى. يتم جلب المحتوى من أمين المكتبة عند الحاجة.
2. **الإرسال مرة واحدة من المصدر** - يتم كتابة البيانات الوصفية في الرسم البياني مرة واحدة عند بدء المعالجة، وليس بشكل متكرر في المراحل اللاحقة.
3. **نمط معالج متسق** - يتبع كل معالج نفس النمط: الاستقبال/الجلب/الإنتاج/الحفظ/الإرسال/التوجيه.
4. **بناء تدريجي للرسم البياني** - يضيف كل معالج مستواه إلى الرسم البياني. يتم بناء سلسلة تتبع المصدر الكاملة بشكل تدريجي.
5. **تحسين ما بعد التقسيم إلى أجزاء** - بعد التقسيم إلى أجزاء، تحمل الرسائل كلاً من المعرف والمحتوى. الأجزاء صغيرة (2-4 كيلوبايت)، لذا فإن تضمين المحتوى يتجنب عمليات الذهاب والإياب غير الضرورية إلى أمين المكتبة مع الحفاظ على تتبع المصدر عبر المعرف.
>>>>>>> 82edf2d (New md files from RunPod)
## مهام التنفيذ
@ -480,13 +641,21 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
**1. واجهة جديدة: اتصال بمخزن الثلاثيات**
<<<<<<< HEAD
يحتاج أمين المكتبة إلى إرسال حواف بيانات وصفية للمستند مباشرة إلى الرسم البياني للمعرفة عند بدء المعالجة.
=======
تحتاج أمين المكتبة إلى إرسال حواف بيانات وصفية لمستندات الأبناء مباشرة إلى الرسم البياني المعرفي عند بدء المعالجة.
>>>>>>> 82edf2d (New md files from RunPod)
إضافة عميل/ناشر مخزن الثلاثيات إلى خدمة أمين المكتبة.
عند بدء المعالجة: إرسال بيانات وصفية للمستند الجذر كحواف في الرسم البياني (مرة واحدة).
**2. مفردات أنواع المستندات**
<<<<<<< HEAD
توحيد قيم `document_type` لأبناء المستند:
=======
توحيد قيم `document_type` لمستندات الأبناء:
>>>>>>> 82edf2d (New md files from RunPod)
`source` - المستند الذي تم تحميله أصلاً.
`page` - صفحة مستخرجة من المصدر (PDF، إلخ).
`chunk` - جزء نصي مشتق من الصفحة أو المصدر.
@ -495,16 +664,26 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
| الواجهة | التغيير |
|-----------|--------|
<<<<<<< HEAD
| مخزن الثلاثيات | اتصال صادر جديد - إرسال حواف بيانات وصفية للمستند |
=======
| مخزن الثلاثيات | اتصال صادر جديد - إرسال حواف بيانات وصفية لمستندات الأبناء |
>>>>>>> 82edf2d (New md files from RunPod)
| بدء المعالجة | إرسال البيانات الوصفية إلى الرسم البياني قبل توجيه معرف المستند |
### تغييرات مستخرج PDF
#### الحالة الحالية
<<<<<<< HEAD
يتلقى محتوى المستند (أو يتدفق المستندات الكبيرة).
يستخرج النص من صفحات PDF.
يوجه محتوى الصفحة إلى وحدة التقطيع.
=======
يتلقى محتوى المستند (أو يقوم بتدفق المستندات الكبيرة).
يستخرج النص من صفحات PDF.
يوجه محتوى الصفحة إلى وحدة تقسيم إلى أجزاء.
>>>>>>> 82edf2d (New md files from RunPod)
لا يوجد تفاعل مع أمين المكتبة أو مخزن الثلاثيات.
#### التغييرات المطلوبة
@ -517,36 +696,57 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
**2. واجهة جديدة: اتصال بمخزن الثلاثيات**
<<<<<<< HEAD
يحتاج مستخرج PDF إلى إرسال حواف الأبناء إلى الرسم البياني للمعرفة.
=======
يحتاج مستخرج PDF إلى إرسال حواف الأبناء إلى الرسم البياني المعرفي.
>>>>>>> 82edf2d (New md files from RunPod)
إضافة عميل/ناشر مخزن الثلاثيات.
لكل صفحة: إرسال حافة تربط مستند الصفحة بالمستند الأصل.
**3. تغيير تنسيق الإخراج**
بدلًا من إرسال محتوى الصفحة مباشرةً، أرسل مُعرّف مستند الصفحة.
<<<<<<< HEAD
سيقوم المقطع (Chunker) بجلب المحتوى من أمين المكتبة (librarian) باستخدام المعرّف.
=======
سيقوم المقطع (Chunker) بجلب المحتوى من المكتبة (librarian) باستخدام المعرّف.
>>>>>>> 82edf2d (New md files from RunPod)
#### ملخص التغييرات في الواجهة
| الواجهة | التغيير |
|-----------|--------|
<<<<<<< HEAD
| أمين المكتبة (Librarian) | واجهة تصدير جديدة - حفظ المستندات الفرعية |
| قاعدة البيانات الثلاثية (Triple store) | واجهة تصدير جديدة - إرسال علاقات الأبناء والبنات |
=======
| المكتبة (librarian) | إخراج جديد - حفظ المستندات الفرعية |
| المستودع الثلاثي (Triple store) | إخراج جديد - إرسال علاقات الأبناء |
>>>>>>> 82edf2d (New md files from RunPod)
| رسالة الإخراج | تغيير من المحتوى إلى مُعرّف المستند |
### تغييرات المقطع (Chunker)
#### الحالة الحالية
<<<<<<< HEAD
يستقبل محتوى الصفحة/النص
يقسم إلى أجزاء (chunks)
يرسل محتوى الجزء إلى المعالجات اللاحقة
لا يوجد تفاعل مع أمين المكتبة أو قاعدة البيانات الثلاثية
=======
يتلقى محتوى الصفحة/النص
يقسم إلى أجزاء
يرسل محتوى الجزء إلى المعالجات اللاحقة
لا يوجد تفاعل مع المكتبة أو المستودع الثلاثي
>>>>>>> 82edf2d (New md files from RunPod)
#### التغييرات المطلوبة
**1. تغيير طريقة معالجة الإدخال**
<<<<<<< HEAD
استقبل مُعرّف المستند بدلًا من المحتوى، وجلبه من أمين المكتبة.
أضف عميل أمين المكتبة إلى خدمة المقطع.
جلب محتوى الصفحة باستخدام مُعرّف المستند.
@ -560,36 +760,69 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
أرسل علاقات الأبناء والبنات إلى الرسم البياني المعرفي.
أضف عميل/ناشر قاعدة البيانات الثلاثية.
=======
استقبل مُعرّف المستند بدلاً من المحتوى، وجلبه من المكتبة.
أضف عميل المكتبة إلى خدمة المقطع.
جلب محتوى الصفحة باستخدام مُعرّف المستند.
**2. واجهة جديدة: عميل المكتبة (للكتابة)**
احفظ كل جزء كمستند فرعي في المكتبة.
لكل جزء: اتصل بـ `add-child-document` مع `parent = مُعرّف مستند الصفحة`
**3. واجهة جديدة: اتصال بالمستودع الثلاثي**
أرسل علاقات الأبناء إلى الرسم البياني المعرفي.
أضف عميل/ناشر المستودع الثلاثي.
>>>>>>> 82edf2d (New md files from RunPod)
لكل جزء: أرسل علاقة تربط مستند الجزء بمستند الصفحة.
**4. تغيير تنسيق الإخراج**
<<<<<<< HEAD
أرسل كلاً من مُعرّف مستند الجزء ومحتوى الجزء (تحسين لاحق للمقطع).
تستقبل المعالجات اللاحقة المعرّف لأغراض التتبع + المحتوى للعمل به.
=======
أرسل كلاً من مُعرّف مستند الجزء ومحتوى الجزء (تحسين بعد تقسيم الجزء).
تتلقى المعالجات اللاحقة المعرّف لتتبع المصدر + المحتوى للعمل به.
>>>>>>> 82edf2d (New md files from RunPod)
#### ملخص التغييرات في الواجهة
| الواجهة | التغيير |
|-----------|--------|
| رسالة الإدخال | تغيير من المحتوى إلى مُعرّف المستند |
<<<<<<< HEAD
| أمين المكتبة (Librarian) | واجهة تصدير جديدة (قراءة وكتابة) - جلب المحتوى، حفظ المستندات الفرعية |
| قاعدة البيانات الثلاثية (Triple store) | واجهة تصدير جديدة - إرسال علاقات الأبناء والبنات |
=======
| المكتبة (librarian) | إخراج جديد (قراءة وكتابة) - جلب المحتوى، حفظ المستندات الفرعية |
| المستودع الثلاثي (Triple store) | إخراج جديد - إرسال علاقات الأبناء |
>>>>>>> 82edf2d (New md files from RunPod)
| رسالة الإخراج | تغيير من المحتوى فقط إلى المعرّف + المحتوى |
### تغييرات مُستخرج المعرفة (Knowledge Extractor)
#### الحالة الحالية
<<<<<<< HEAD
يستقبل محتوى الجزء
يستخرج الثلاثيات والتضمينات
يرسل إلى قاعدة البيانات الثلاثية ومخزن التضمينات
`subjectOf` تشير العلاقة إلى المستند ذي المستوى الأعلى (وليس الجزء)
=======
يتلقى محتوى الجزء
يستخرج الثلاثيات والتضمينات
يرسل إلى المستودع الثلاثي ومستودع التضمينات
تشير علاقة `subjectOf` إلى المستند ذي المستوى الأعلى (وليس الجزء).
>>>>>>> 82edf2d (New md files from RunPod)
#### التغييرات المطلوبة
**1. تغيير طريقة معالجة الإدخال**
استقبل مُعرّف مستند الجزء بالإضافة إلى المحتوى.
<<<<<<< HEAD
استخدم مُعرّف الجزء لأغراض الربط (المحتوى مدرج بالفعل كتحسين).
**2. تحديث أثر الثلاثيات**
@ -603,12 +836,28 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
اربط معرفات كيانات التضمين بالجزء.
أرسل حافة: معرف كيان التضمين → مُعرّف مستند الجزء
=======
استخدم مُعرّف الجزء لتتبع المصدر (تم تضمين المحتوى بالفعل كجزء من التحسين).
**2. تحديث تتبع المصدر**
اربط الثلاثيات المستخرجة بالجزء (وليس المستند ذي المستوى الأعلى).
استخدم التجريد لإنشاء حافة تشير إلى الحافة.
علاقة `subjectOf`: الثلاثية → مُعرّف مستند الجزء
الاستخدام الأول للدعم الحالي للتجريد.
**3. تحديث تتبع التضمينات**
اربط معرفات كيانات التضمين بالجزء.
أرسل حافة: معرف كيان التضمين → مُعرّف مستند الجزء.
>>>>>>> 82edf2d (New md files from RunPod)
#### ملخص التغييرات في الواجهة
| الواجهة | التغيير |
|-----------|--------|
| رسالة الإدخال | توقع مُعرّف الجزء + المحتوى (وليس المحتوى فقط) |
<<<<<<< HEAD
| قاعدة البيانات الثلاثية | استخدم التجريد لأثر الثلاثية → الجزء |
| أثر التضمين | اربط معرف الكيان → معرف الجزء |
@ -617,3 +866,13 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
أثر وقت الاستعلام: `docs/tech-specs/query-time-provenance.md`
معيار PROV-O لنمذجة الأثر
البيانات الوصفية المصدر الحالية في الرسم البياني المعرفي (تحتاج إلى تدقيق)
=======
| المستودع الثلاثي (Triple store) | استخدم التجريد لتتبع الثلاثية → الجزء |
| تتبع التضمينات | اربط معرف الكيان → معرف الجزء |
## المراجع
تتبع وقت الاستعلام: `docs/tech-specs/query-time-provenance.md`
معيار PROV-O لنمذجة التتبع.
البيانات الوصفية المصدر الحالية في الرسم البياني المعرفي (تحتاج إلى تدقيق).
>>>>>>> 82edf2d (New md files from RunPod)