Image: AI generated
صمت ويكي بيانات
في ويكي بيانات توجد هذه الثلاثية:
(tomato, instance_of, vegetable) — rank: preferred
(tomato, instance_of, fruit) — rank: normal
من قرر preferred؟ لماذا هو preferred؟ في أي سياق هو preferred؟
ويكي بيانات تصمت أمام هذه الأسئلة. المحررون يقررون، والنظام يخزن القرار فحسب.
لكن ما إذا كانت الطماطم خضاراً أو فاكهة ليس ثابتاً فيزيائياً. اسأل طاهياً، ستكون خضاراً. اسأل عالم نبات، ستكون فاكهة. اسأل المحكمة العليا الأمريكية، ستكون خضاراً (1893، Nix v. Hedden). نفس السؤال له ثلاث إجابات، وليست أي منها خاطئة.
ثلاثيات الرسم البياني المعرفي ليست حقائق. إنها ادعاءات.
الادعاءات تحتاج إلى حجاج
لتخزين الادعاءات، نحتاج إلى بنية. نموذج Toulmin للحجاج يوفر هذه البنية.
| العنصر | الدور | مثال الطماطم |
|---|---|---|
| Claim | الادعاء | “الطماطم خضار” |
| Ground | الدليل المباشر | “مصنفة كخضار في التصنيف الطهوي” |
| Backing | المصدر/السلطة | “Le Guide Culinaire (1903)” |
| Qualifier | نطاق التطبيق | “في السياق الطهوي” (ثقة 0.8) |
| Rebuttal | شرط الدحض | “في السياق النباتي هي فاكهة — بنية المبيض” |
| Warrant | منطق الربط | “التصنيف التقليدي للمكونات يعتمد على الاستخدام الطهوي” |
بدلاً من فرض truth value واحدة على ثلاثية، نرفع الثلاثية لتصبح موضوعاً للحجاج. هناك ادعاء، وهناك دليل، وهناك شروط دحض، وهناك مصادر. والحكم — لا يحدث عند التخزين، بل عند الاستعلام.
هذه الفكرة ليست جديدة في حد ذاتها. في الأوساط الأكاديمية، تناول إطار الحجاج المجرد لـ Dung (1995) وASPIC+ (2010) وnanopublication وغيرها الحجاج فوق الرسوم البيانية المعرفية. الفرق واحد فقط — نحن نقدم شيفرة قابلة للتنفيذ، لا ورقة بحثية. تُثبَّت بـ go install، وتُكتب القواعد كدوال Go، وتعمل الآن.
السياق يحدد الحقيقة
التخزين هو بنية حجاجية. الحكم يحدث في وقت التشغيل.
ctx.Set("domain", "cooking")
results, _ := g.Evaluate(ctx)
// verdict: +0.8 → vegetable
ctx.Set("domain", "botany")
results, _ = g.Evaluate(ctx)
// verdict: -0.9 → not a vegetable (fruit)
نفس الرسم البياني، نفس البنية الحجاجية، نفس الشيفرة. تغير السياق فقط. الاستعلام في سياق الطهي يعطي +0.8 (خضار)، وفي سياق علم النبات يعطي -0.9 (فاكهة). الحكم يتبع السياق.
هذا هو الفرق الجوهري مع rank الثابت في ويكي بيانات. ليس المحرر من يقرر preferred، بل سياق المستعلِم هو من ينتج الحكم.
هل بلوتو كوكب؟
Triple: (Pluto, instance_of, planet)
Claim:
Ground: "Solar orbit, spherical, sufficient mass"
Backing: IAU 1930 classification resolution
Rebuttal:
Ground: "Orbit-clearing criterion not met"
Backing: IAU 2006 Resolution 5A
Exception to rebuttal:
Ground: "Still taught as a planet in education curricula"
Backing: NASA Education Resources 2024
ctx.Set("domain", "astronomy_formal")
// verdict: -0.8 (not a planet)
ctx.Set("domain", "education")
// verdict: +0.3 (can be treated as planet in context)
لمن التحق بالمدرسة الابتدائية قبل 2006، بلوتو كوكب. بالنسبة لـ IAU، بلوتو كوكب قزم. كلاهما له دليل، وكلاهما له مصدر. ما يجب على النظام فعله ليس اختيار أحدهما، بل تخزين كليهما والحكم وفقاً للسياق.
عندما يُهاجَم المصدر
في النقاشات الأكاديمية، مهاجمة المصدر نفسه أمر شائع.
// Claim: Drug X is effective
claim := g.Rule(drugXEffective).
With(&TripleSpec{
Ground: "Significant effect in Phase 3 clinical trial",
Backing: "Smith et al. (2020), NEJM",
})
// Rebuttal: Independent replication failed
counter := g.Counter(replicationFailed).
With(&TripleSpec{
Ground: "Effect not confirmed in independent replication",
Backing: "Jones et al. (2022), Lancet",
})
counter.Attacks(claim)
// Undercutter: conflict of interest
undercutter := g.Counter(conflictOfInterest).
With(&TripleSpec{
Ground: "Smith's funding came from the pharmaceutical company",
Backing: "Retraction Watch (2023)",
})
undercutter.Attacks(claim)
ورقة Smith نُشرت في NEJM. مصدر موثوق. لكن عندما يُكشف مصدر التمويل، تضعف كل ادعاء مبني على تلك الورقة. الـ counter يدحض الادعاء مباشرة، والـ undercutter يُضعف الدليل ذاته. كلاهما يهاجم الادعاء لكن بطرق مختلفة. الـ h-Categoriser يُجمِّع شدة هذه الهجمات لحساب verdict النهائي.
الحقيقة تختفي بسرعة الضوء، ولا يبقى سوى الادعاءات. النظام يدير الادعاءات، لا يُعلن الحقائق.
هل كل ثلاثية تحتاج إلى حجاج؟
لا.
(water, chemical_formula, H2O) — Settled. No argumentation needed.
(tomato, instance_of, ?) — Contested. Attach argumentation.
(Pluto, instance_of, ?) — Contested. Attach argumentation.
(Jerusalem, capital_of, ?) — Contested. Attach argumentation.
المعيار بسيط: إذا وُجد لنفس subject + predicate عدة objects، أو تباينت قيم rank، أو تعارضت المراجع — فهي ثلاثية متنازع عليها. الباقي يبقى ثلاثية عادية.
إضافة حجاج لصيغة الماء الكيميائية هدر. عدم إضافة حجاج لوضع القدس كعاصمة هو كذب.
محرك الحكم: h-Categoriser
الحكم في الرسم البياني الحجاجي يؤديه h-Categoriser لـ Amgoud. يحسب لكل عقدة درجة قبول في مقياس [-1, +1]؛ كلما ارتفعت قبولية المهاجِم، انخفضت قبولية المُهاجَم. يتكرر بشكل تعاودي حتى التقارب.
الأداء: حتى لو كان لدينا 100,000 ثلاثية متنازع عليها ولكل منها رسم بياني حجاجي، عند الاستعلام يُقيَّم فقط رسم الثلاثية المعنية. مستقل عن حجم الرسم البياني المعرفي الكلي.
Triple lookup: milliseconds (existing index)
Argumentation eval: milliseconds (h-Categoriser)
Verdict trace: milliseconds (graph traversal)
لا نكبّر النموذج، بل نكبّر الحجاج.
المقابلة مع rank ويكي بيانات
| Wikidata | toulmin extension |
|---|---|
| preferred rank | verdict > +0.5 (in current context) |
| normal rank | 0 < verdict ≤ +0.5 |
| deprecated rank | verdict ≤ 0 |
| reference | Backing |
| qualifier | Qualifier + context function conditions |
الفرق: rank ويكي بيانات ثابت. يقرره المحرر. verdict في toulmin ديناميكي. يحدده السياق والبنية الحجاجية.
الصورة الأكبر
هذا النظام لا يرتبط بمجال محدد.
AI Prefrontal Cortex (feature selection):
triple = (feature, should_include_in, app_type)
context = current project's app tags
verdict = should this feature be included?
Knowledge graph general:
triple = (subject, predicate, object)
context = querier's domain/perspective
verdict = is this triple true in current context?
نفس المحرك. نفس البنية. مجالات مختلفة. القواعد دوال Go، الاستثناءات رسوم defeats بيانية، الحكم h-Categoriser. بدون DSL.
لماذا نحتاج هذا
النماذج اللغوية الكبيرة (LLM) تذيب المعرفة في الأوزان. تسأل فتحصل على إجابة. لكن في أي سياق تلك الإجابة صحيحة، وعلى أي مصدر تستند، وهل يوجد دحض — لا يمكن تتبعه بنيوياً. الهلوسات تنبع من غياب هذه البنية.
هذا النظام لا يمنع كل الهلوسات. النماذج اللغوية تولد مخرجات مفتوحة، ولا يمكن تسجيل كل ادعاء ممكن مسبقاً. لكن بالنسبة لـالادعاءات المسجلة فعلاً في الرسم البياني الحجاجي، يمكن مقارنة إجابة النموذج بها وتقييم الموثوقية. “ما هو Backing هذا الادعاء؟ هل يوجد Counter يهاجم ذلك Backing؟ هل verdict في السياق الحالي موجب؟”
ليس حاكماً شاملاً للحقيقة. بل نظام تقييم موثوقية يعمل فوق الحجاج المتراكم.
ليس نظاماً يخزن الحقائق، بل يدير الادعاءات. لا يُعلن الحقيقة، بل يتتبع الأحكام. هذه هي الخطوة التالية للرسوم البيانية المعرفية.
Related
- toulmin — Go Rule Engine — محرك قواعد مبني على نموذج Toulmin للحجاج. محرك الحكم وراء هذا المقال.
- Ratchet Pattern — التحقق الحتمي وقفل السقّاطة.
Code: github.com/park-jun-woo/toulmin
go install github.com/park-jun-woo/toulmin@latest
The code examples in this article represent a design vision based on the toulmin library’s current API. The knowledge graph extension (TripleSpec, context-based evaluation) is under active development. The core judgment engine (h-Categoriser, defeats graph, Rule/Counter) works today.
References
- Toulmin, S. (1958). The Uses of Argument. Cambridge University Press.
- Dung, P.M. (1995). “On the Acceptability of Arguments and its Fundamental Role in Nonmonotonic Reasoning, Logic Programming and n-Person Games.” Artificial Intelligence, 77(2), 321–357.
- Amgoud, L. & Ben-Naim, J. (2013). “Ranking-based semantics for argumentation frameworks.” SUM 2013, LNCS 8078, 134–147.
- Modgil, S. & Prakken, H. (2014). “The ASPIC+ framework for structured argumentation: a tutorial.” Argument & Computation, 5(1), 31–62.
- Groth, P. et al. (2010). “Anatomy of a Nanopublication.” Information Services & Use, 30(1-2), 51–56.
- Nix v. Hedden, 149 U.S. 304 (1893). United States Supreme Court.