الأدلةمسودةEnglish

سجل القرارات

القرارات المختلف عليها في معيار المصطلحات، وأسبابها وأدلتها.

المعيار يذكر القاعدة، وهذه الصفحة تذكر سبب القاعدة.

نفصل بينهما لأن القارئ الذي يطبق المعيار يريد القاعدة وحدها، أما القارئ الذي يريد تغييرها فيحتاج إلى ما بني عليه. والقاعدة بلا سبب مكتوب يعاد فتحها كل سنة.

لا يذكر هنا إلا القرار الذي كان فيه خلاف حقيقي أو بديل معقول. ولكل قرار تاريخ وحال: مستقر، أو مفتوح، أو منسوخ بقرار لاحق. ويكتب كل مدخل بعناوين ثابتة: القرار، ثم السبب، ثم الشاهد والحد والأثر والبديل المرفوض حيث تلزم، ومفتوح لمسألة بقيت في قرار مستقر. أما المسألة التي لم تحسم أصلًا فمدخل يكتب بـالمسألة والحال. ويذكر السطر المائل مع الحال ما ينسخه القرار من قرار سابق، وتاريخ مراجعته إن روجع. والقرارات التي اتخذت قبل تأريخ السجل موسومة بـغير مؤرخ. والمداخل المؤرخة إذا قرئت بترتيبها كانت سجلًا لتغييرات أسماء القاموس.

القياسات. «عد العبارات في GitHub» استعلام بعبارة بين علامتي اقتباس على بحث الكود في GitHub، يجريه tools/measure_display.py ويحفظ كل عدد في tools/display_measurements.json تحت المفتاح a | b. والأعداد أعداد يومها، تصف ما كان في الفهرس حين أخذت، ولا نعيد الاستعلام. وإذا كان للعدد مفتاح في الملف ذكرنا المفتاح.


أسماء الحروف تكتب كما تنطق

غير مؤرخ · مستقر

القرار: noon وmeem وseen، لا nun وmim وsin.

السبب: nun وsin كلمتان إنجليزيتان لهما معنى بعيد عن المراد. والقياس يبين كذلك أن أسماء الحروف يغلب فيها المد (المفتاحان nun sakinah | noon sakinah وmim sakinah | meem sakinah):

noon sakinah   478  ×  nun sakinah   118
meem sakinah   308  ×  mim sakinah    57

الحد: يقتصر هذا على اسم الحرف وحده. اسم الحرف لا يحمل معنى غير صوته، فإذا اشتققناه ضاع كل ما فيه. أما بقية المصطلحات فهي كلمات لها معنى، والاشتقاق يحفظ هذا المعنى.

الأثر: أسماء الحروف الـ28 في letter_names.tsv، والدالة تقرؤها من هذا الملف.


حروف المد تكتب قصيرة

غير مؤرخ · مستقر

القرار: tajwid وsukun وtafsir، لا tajweed وsukoon وtafseer.

السبب: الاستعمال يرجح القصر في المصطلحات. وهذه الأعداد أخذت قبل إنشاء ملف القياسات وليست فيه، وهي لحظية:

sukun    289792  ×  sukoon    18432
tafsir   370688  ×  tafseer  115712
tanwin    19968  ×  tanween    4520
tartil    24736  ×  tarteel    7328

البديل المرفوض: المد في كل الأسماء، وهو يخالف القياس في أكثر المصطلحات.


tajwid يخالف قياسه

غير مؤرخ · مستقر

القرار: code: tajwid مع أن tajweed أكثر استعمالًا بنحو الضعف (45,440 × 25,280؛ المفتاح tajwid | tajweed).

السبب: قاعدة واحدة تطبق على كل الكلمات أنفع من استثناء يفتح الباب لاستثناء آخر مع كل كلمة.

الأثر: display: Tajweed مقيس بالاستعمال، وtajweed مسجلة في alternative_spellings.


الهمزة والعين في آخر الكلمة تكرر الحركة قبلها

غير مؤرخ · مستقر

القرار: rubu وjama وqata، مع بقاء ruku وmamnu كما هي.

السبب: الحذف كان يقطع الكلمة قبل موضعها، فيعطي rub وjam وqat، وهي كلمات إنجليزية أخرى لا صلة لها بالمعنى. وهي المشكلة نفسها التي جعلتنا نكتب noon لا nun.

البدائل المرفوضة: ' وʿ لا يصلحان في المعرفات، و3 (عين الدردشة) ليست حرفًا.

الحد: إذا سبق الهمزة أو العين حرف مد فالكلمة تنتهي بحركة أصلًا، ولا يزاد عليها شيء.


juz تكتب كما هي ولا تمر بالاشتقاق

غير مؤرخ · مستقر

القرار: نكتب juz مع أن الاشتقاق يعطي juzu.

السبب: الصورة المشتقة لا تكاد تستعمل. وهذا العدد أخذ قبل إنشاء ملف القياسات:

juz number  1384  ×  juzu number  1

الحد: لا نقبل سطرًا في established_spellings.tsv إلا إذا كان معه قياس يثبت أن الصورة المشتقة غير مستعملة. ولا يكفي أن تكون الصورة الأخرى أكثر استعمالًا، وإلا لدخل tajweed من هذا الباب.


5 سطور في التهجئات المستقرة سببها قاعدة في المعيار وليس القياس

2026-09-06 · مستقر

القرار: تبقى aal (آل) وtaha وyasin وsaad وqaaf في established_spellings.tsv، وينص المعيار (§7) على القاعدتين اللتين تقوم عليهما: لا يبدأ اسم بـal، والسورة المسماة بحروفها الأولى تكتب باسم الحرف.

السبب: شرط هذا الملف أن يكون لكل سطر قياس، وهذه السطور الـ5 لا قياس لها. أما aal فالقياس في الملف يرجح الاتجاه المعاكس (al imran | aal imran: 18,368 × 519)، ولذلك لا نحتج للسطر بالاستعمال، وإنما بأن al_imran يقرأ أداة تعريف يتبعها اسم، وهذا ما يمنعه §8. وأما السور الـ4 المسماة بالحروف فلا يمكن قياسها أصلًا، لأن الاشتقاق يعطي th وys وs وq، ولا يكتبها أحد.

البديل المرفوض: ملف ثانٍ للسطور التي سببها قاعدة. الدالة تقرأ جدولًا واحدًا، والملف الثاني يزيد على القارئ موضعًا آخر يبحث فيه.


الكلمة العامة في الاسم المركب تترجم

غير مؤرخ · مستقر

القرار: small_meem وthree_dots وrounded_zero، لا meem_saghirah وthalath_nuqat وsifr_mustadir.

السبب: وsaghirah لا تزيد على small شيئًا. و§3 يعطي المفهوم العام اسمًا إنجليزيًا، والاسم المركب لا يستثنى من ذلك.

الشاهد: سجل المصدر نفسه يحيل إليها بالإنجليزية: standard!dot وstandard!two-dots وstandard!three-dots.

الحد: الكلمة الاصطلاحية تبقى منقولة بحروفها ولو بدت مألوفة. sakinah وlazim مصطلحان، ولذلك يبقيان منقولين. والكلمات العامة مسجلة في general_words.tsv.


المفهوم الذي لا يحتاجه مشروع لا يدخل القاموس

2026-09-06 · مستقر

القرار: لا يدخل مفهوم في القاموس إلا إذا احتاجه مشروع حقيقي، ويذكر المدخل هذه الحاجة في purpose. وفي التجويد، الشاهد هو محرك التجويد: فما يسميه في موضوعاته وأصنافه يدخل، مثل letter_relation بقيمتيه mutamathilan وmutajanisan، وما لا يسميه، مثل المخارج والصفات وأنواع اللحن وأسباب الوقف، لا يدخل.

السبب: §1 يسأل عن الغرض البرمجي قبل الاسم، و§30 لا يعتمد المفهوم حتى تتضح الحاجة إليه. والحاجة تثبت حين يستعمل المفهوم مشروع، وليس حين يرد في كتاب.

البديل المرفوض: إدخال مفاهيم العلم كلها مسودات. فالمدخل الذي لا يستعمله أحد لا يراجعه أحد، ويشغل من القاموس ما يشغله المدخل المستعمل.


ترتيب الكلمات في الاسم المركب يتبع الإنجليزية

غير مؤرخ · مستقر

القرار: المضاف المترجم يتأخر إلى آخر الاسم، والصفة المترجمة تتقدم.

السبب: ترتيب الإنجليزية هو ما يتوقعه قارئ المعرّف، فالصفة تتقدم موصوفها والمضاف يتأخر.

الشاهد: بعد تطبيق القاعدة أعطى الاشتقاق الأسماء التي كتبت باليد من قبل:

عَلَامَة الوَقْف        → waqf_mark
عَلَامَة السَّجْدَة      → sajdah_mark
نَوْع عَلَامَة الوَقْف   → waqf_mark_type

الأثر: general_words.tsv فيه عمود يبين موضع الكلمة، ولذلك يبقى العدد في مكانه (three_dots وليس dots_three).


أداة التعريف تحكمها الكلمة التي قبلها مباشرة

2026-09-06 · مستقر

القرار: الكلمة التي تسبق al مباشرة هي التي تقرر هل تبقى al أو تسقط، أيًا كانت أول كلمة في الاسم. والمضاف المترجم لا يدخل في هذا الحكم:

الوَقْف الجَائِز مُسْتَوِي الطَّرَفَيْن  → waqf_jaiz_mustawi_al_tarafayn
عَلَامَة الوَقْف اللَّازِم            → waqf_lazim_mark

السبب: هذا ما يقتضيه النحو العربي، فالمضاف إليه بعد صفة يبقى معرفًا بأداته. أما الحكم بأول كلمة في الاسم فكان يسقط al من المضاف إليه خطأ.

الأثر: الدالة تنفذ القاعدة، ولم تعد check_conformance.py تحمل قائمة فروق بينها وبين المداخل.

البديل المرفوض: إبقاء قاعدة الكلمة الأولى مع تعداد الاستثناءات. كل اسم من 3 كلمات فيه إضافة داخلية سيكون استثناء.


حرف الجر جزء مستقل

2026-09-06 · مستقر

القرار: بِ ولِ المتصلتان بالاسم جزءان من الاسم، ويحتفظ الاسم بأداة تعريفه:

تَفْسِير بِالرَّأْي         → tafsir_bi_al_ray
المَدّ العَارِض لِلسُّكُون  → madd_arid_li_al_sukun

السبب: الاسم الذي يأتي بعد حرف الجر يبدأ عبارة جديدة ولا يكون صفة لما قبله، ولذلك كانت قاعدة الكلمتين تسقط al منه خطأ. والكسرة على حرف الجر هي التي تفرق «بِالرَّأْي» عن كلمة تبدأ بالباء.


حروف الربط تسقط من الاسم البرمجي وتبقى في الاسم العربي

2026-09-06 · مستقر · ينسخ الأسماء العربية المختصرة لقيم الوقف

القرار: مَعَ وكَوْن وبِحَيْثُ وجَوَازًا مسجلة في connectives.tsv، ويسقطها الاشتقاق. وتحتفظ قيم الوقف بأسمائها العربية كاملة: «الوَقْف الجَائِز مَعَ كَوْنِ الوَصْل أَوْلَى» → waqf_jaiz_wasl_awla.

السبب: حرف الربط لا يسمي شيئًا، وترتيب الأجزاء يغني عنه في الاسم البرمجي. أما اختصار arabic.vocalized نفسه إلى الكلمات الباقية بعد الحذف فتعديل للاسم العربي من أجل اسم برمجي، و§9 يمنعه.

الأثر: الدالة تسقط حروف الربط، والأسماء العربية كاملة في المداخل.

الحد: حرف الربط كلمة تربط جزأين ولا تسمي شيئًا. أما «أَوْلَى» فليست حرف ربط، لأنها الكلمة التي تميز هذه القيمة عن غيرها.


division_mark لا hizb_mark

غير مؤرخ · مستقر

القرار: علامة التحزيب ۞ (U+06DE) اسمها division_mark.

السبب: العلامة تدل على بداية الجزء والحزب ونصف الحزب وربعه، ولذلك يسمي hizb_mark واحدًا من 4. واسم يونيكود ARABIC START OF RUB EL HIZB فيه العيب نفسه.

الأثر: لا نعدل arabic.vocalized للوصول إلى اسم برمجي نفضله. نحفظ اسم المصدر في dabt، ولا نقبل تعديل اسم المفهوم إلا لسبب يتعلق بالعربية نفسها.


أب كل علامة هو عائلتها

غير مؤرخ · مستقر

القرار: harakah وtanwin وijam وorthographic_mark وqiraah_mark آباء، ويبقى mushaf_mark أبًا لما لا عائلة له.

السبب: كانت كل علامة تتبع mushaf_mark، بينما كان mark_family هو الذي يحمل التقسيم الحقيقي. فصار في المدخل تقسيمان متعارضان، وأب واحد فوق كل علامات السجل لا يفيد القارئ شيئًا.

الأثر: يبقى mark_family تقسيمَ سجل المصدر، ونبقيه لأنه ينقل ما يقوله المصدر، أما parent فهو تقسيم المعيار. ويختلف الاسم بينهما حين تختلف كلمة السجل عن كلمتنا (imlaiyyah وalamat_qiraah).


علامات الوقف مداخلها قيم تصنيف

غير مؤرخ · مستقر

القرار: waqf_lazim وأخواتها لها kind: classification_value وparent: waqf_mark_type، وتحمل مع ذلك symbol وunicode وmark_family لأنها علامات مرسومة.

السبب: التصنيف بلا قيم مخالف لـ§13، ومثال §27 نفسه يذكر waqf_lazim بهذه الصورة.

الحد: هذه القيم الـ6 هي الوحيدة من غير العلامات التي تحمل حقول الرسم، وcheck_conformance.py يرفض هذه الحقول في أي مدخل آخر.


waqf_ruling وwaqf_mark_type تصنيفان

2026-09-06 · مستقر

القرار: waqf_ruling (التام والكافي والحسن والقبيح) يصنف الموضع؛ وwaqf_mark_type (اللازم والممنوع وأنواع الجائز والمعانقة) يصنف ما تدل عليه العلامة المرسومة. وكلاهما مدخل، ويذكرهما §13 و§17 جنبًا إلى جنب.

السبب: كان المعيار في أمثلته يعاملهما على أنهما «نوع للوقف» واحد، بعناوين إنجليزية لا توافق أيًا منهما. لكن الموضع الذي لا علامة عليه له حكم مع ذلك، ونوع العلامة يقرأ من المصحف ولا يستنتج من النحو، ولذلك يحتاج النموذج إلى الاثنين.


الفرق بين parent وpart_of

2026-09-06 · مستقر

القرار: parent يذكر الشيء الذي يكون المفهوم نوعًا منه. أما الشيء الذي يكون المفهوم جزءًا منه، مثل ربع الحزب في الحزب وطبعة المصحف في المصحف، فيذكر في part_of، وهو حقل اختياري جديد.

السبب: كانت 3 مداخل تستعمل parent للاحتواء، فكان قارئ التصنيف يجد ربع الحزب نوعًا من الحزب. والحقل الواحد الذي يحمل معنيين لا يمكن فحصه، فإذا فرقناهما فُحص كل حقل على حدة.


المفهومان المكرران يدمجان

غير مؤرخ · مستقر

القرار: sajdah_mark وdivision_mark مدخل واحد لكل منهما.

السبب: alamat_mawdi_al_sajdah وsajdah_mark كانا يعرفان الشيء نفسه، وكذلك alamat_al_tahzib وdivision_mark.

الأثر: نسجل الاسم السابق في deprecated في المدخل الباقي مع note، ويبقى مردودًا إلى المدخل في aliases.json، حتى لا ينقطع مشروع اعتمد الاسم القديم (§20).


المحرف لا يصلح معرفًا للعلامة

غير مؤرخ · مستقر

القرار: لا نستخدم الـcodepoint معرفًا للعلامة.

السبب: قد يخدم محرف واحد علامتين، وقد يكون لعلامة واحدة أكثر من محرف:

ۜ  U+06DC   ARABIC SMALL HIGH SEEN   →  saktah_mark  أو  seen_al_qiraah
sukun    ْ U+0652  و  ۡ U+06E1

الاشتقاق لا يمكن عكسه، وهذا مقصود

غير مؤرخ · مستقر

القرار: ص وس كلاهما s، وض ود كلاهما d.

السبب: المطلوب من الاشتقاق معرف ثابت وليس نطقًا دقيقًا. أما النقل الدقيق فموضعه names.transliteration.


taa وhaa تسمي كل منهما حرفين

غير مؤرخ · مفتوح

المسألة: ت وط كلاهما يعطي taa، وح وه كلاهما يعطي haa، لأن الاشتقاق لا يفرق بين الحرف المفخم والمرقق. ولا يوجد مدخل يستعمل أيًا من الاسمين.

الحال: المسألة مفتوحة، ونحسمها حين يحتاج مدخل إلى أحد الاسمين. وbuild_aliases.py يفشل إذا ادعى مفهومان أحد هذين الاسمين، ولذلك لا يخفى التصادم على أحد.


الجمع هو الاسم البرمجي مضافًا إليه s في كل الحالات

2026-09-06 · مستقر

القرار: تضاف s إلى الاسم البرمجي كله، ولو كان مركبًا:

juz              → juzs
hizb             → hizbs
sajdah           → sajdahs             لا mawadi_al_sajdah
muqatta_letter   → muqatta_letters

السبب: الجمع هنا اسم مجموعة يستعمل في الكود وليس كلمة إنجليزية يقرؤها القارئ. وجمع المضاف في الاسم المركب يحتاج إلى صرف عربي داخل الدالة، وجمع المقابل الإنجليزي يحتاج إلى وجود مقابل إنجليزي أصلًا. والقاعدة الوحيدة التي يتوقعها القارئ هي + s.

البديل المرفوض: جموع غير قياسية للحالات الثقيلة. كل استثناء يحتاج إلى بحث في جدول، واسم المجموعة هو الاسم الذي يكتبه المطور دون أن يرجع إلى جدول.


التاء المربوطة في الإضافة t

غير مؤرخ · مستقر

القرار: hamzat_al_wasl وsajdat_al_tilawah، لا hamzah_al_wasl.

السبب: التاء المربوطة تنطق تاءً إذا كانت الكلمة مضافة، والاسم البرمجي يتبع الصوت كما يتبعه في أسماء الحروف. وصورة h شائعة في الكتابة الإنجليزية، ومسجلة في alternative_spellings.


أداة التعريف al- تكتب بصورة واحدة ولا تدغم

غير مؤرخ · مستقر

القرار: صورة واحدة للأداة مهما كان الحرف الذي يليها:

al-Shams            لا ash-Shams
sajdat_al_tilawah   لا sajdat_at_tilawah

السبب: الإدغام في الحرف الشمسي قاعدة نطق، والتهجئة البرمجية معرف وليست نقلًا للنطق. وإذا كانت للأداة صورة واحدة فالبرنامج يجدها ويحذفها بسهولة، أما إذا كانت لها 14 صورة فلا سبيل إلى ذلك.


قيم origin وtier

غير مؤرخ · مستقر

القرار: origin إما quranic أو borrowed أو standard؛ وtier إما core أو extended.

السبب: origin يقرر هل الاسم العربي لازم وهل الاسم البرمجي مشتق. المصطلح المستعار مثل glyph ليس له اسم عربي يشتق منه، والمفهوم standard مثل ayah_timing ليس له اسم عربي أصلًا. أما tier فيجيب عن سؤال آخر: ما الذي تخزنه التطبيقات. وإذا خلطناه في origin بدا المصطلح القرآني الذي نادرًا ما يخزن كأنه مستعار.

البديل المرفوض: حقل type واحد. وحقل واحد لا يجيب عن السؤالين جوابًا واضحًا.


mushaf_marks تدمج في dabt

2026-09-06 · مستقر · ينسخ قائمة المجالات الـ20

القرار: نحذف الفئة mushaf_marks، وتصير كل علامة في dabt.

السبب: المجال الموصوف بـ«علامات المصحف» كان فيه مدخل واحد، mushaf_mark، بينما العلامات نفسها كلها في dabt. و§25 يقول إن المجال لا يضاف قبل أن توجد مفاهيم تنتمي إليه، ولم يكن لهذا المجال مفهوم قط.


القاموس مولد من المدخلات

غير مؤرخ · مستقر

القرار: صفحة القاموس تولد من concepts/*.yml.

السبب: كانت الصفحة مكتوبة باليد، فكانت تكرر ما في المدخلات، و§29 يمنع ذلك.


waqf_al_muanaqah لا taanuq_al_waqf

غير مؤرخ · مستقر

القرار: علامة المعانقة ۛ (U+06DB) اسمها waqf_al_muanaqah — وَقْف المُعَانَقَة.

السبب: كانت هذه القيمة الوحيدة في باب الوقف التي لا تبدأ بـwaqf، فبدت غريبة بين waqf_lazim وwaqf_mamnu وأخوات waqf_jaiz_* الـ3. والمشكلة كانت في العبارة التي اخترناها اسمًا وليست في الهجاء. dabt_marks.tsv يثبت أن اسم السجل هو وَقْف المُعَانَقَة، ويسجل تَعَانُق الوَقْف على أنه الاسم الذي تستعمله مقدمة المصحف، وكان المولد قد أخذ الاسم الثاني. والإحالة standard!muanaqah كانت على هذه الصورة من أول الأمر.

الحد: الاسم الذي أخذناه هو الذي يعطيه السجل، ولم نعدله للوصول إلى صورة نفضلها. وبقيت al لأن الاسم الأول نكرة، فالمصطلح مضاف وأداة التعريف جزء من اسمه، وهذه هي القاعدة نفسها في rubu_al_hizb.

البدائل المرفوضة: waqf_muanaqah، وهو يسقط al لأنه يعامل المصطلح على أنه كلمتان تسقط أداة التعريف من كل منهما، وهذا تعديل في الاشتقاق من أجل صورة نفضلها. وpaired_waqf وembracing_waqf. و§3 يبقي المصطلح العلمي منقولًا بحروفه، و«معانقة» مصطلح وقف مثل «لازم»، ولا يوجد أي منهما في general_words.tsv. وdivision_mark ليس سابقة لهذا، لأننا ترجمناه حين كان الاسم العربي يصف المفهوم وصفًا خاطئًا، والأمر هنا ليس كذلك.

الأثر: taanuq_al_waqf وmuanaqah وmuraqabah وwaqf_al_muraqabah كلها تحال في aliases.json.


علامات التنوين تسمى بحركتها

غير مؤرخ · مستقر

القرار: tanwin_al_fath وtanwin_al_kasr وtanwin_al_damm — تَنْوِين الفَتْح وتَنْوِين الكَسْر وتَنْوِين الضَّمّ.

السبب: القياس. أسماء المواضع لا تكاد توجد بالحرف اللاتيني، وهي أقل استعمالًا في العربية أيضًا (المفاتيح tanwin fath | tanwin al-nasb وtanwin kasr | tanwin al-jarr وtanwin damm | tanwin al-rafa وتنوين الفتح | تنوين النصب وتنوين الكسر | تنوين الجر، ولم نعد زوج الضم العربي لأن الاستعلام رفض بسبب حد المعدل):

tanwin fath   618  ×  tanwin al-nasb    0
tanwin kasr   551  ×  tanwin al-jarr    0
tanwin damm   492  ×  tanwin al-rafa    0

تنوين الفتح   217  ×  تنوين النصب     184
تنوين الكسر   161  ×  تنوين الجر       21

الشاهد: أسماء ملفاته تنوين فتح وتنوين كسر وتنوين ضم. وأسماء المواضع التي يكتبها في عمود الضبط باقية في dabtتَنْوِين الخَفْض — الكَسْرَتَان.

البديل المرفوض: تسمية الـ3 بالموضع (النصب والجر والرفع). الاستعمال هو الذي يحكم، وقد جاء بخلاف ذلك.

الأثر: tanwin_al_nasb وtanwin_al_jarr وtanwin_al_khafd وtanwin_al_rafa وfathatan وkasratan وdammatan، وأسماء السجل tanwin_fath وtanwin_kasr وtanwin_damm، كلها تحال.


المعيار يسمي مفاهيم علوم القرآن ولا يتجاوزها

غير مؤرخ · مستقر

القرار: abrogation وword_meanings وmutashabihat وsajdah مداخل في القاموس. وbook وauthor وcategory وtag وlanguage وattachment وradio وfatwa وtopic ليست منه.

السبب: مسحنا موسوعة قائمة (surveys/quranpedia-net.md) فوجدنا فيها 77 جدولًا في المجال، 10 منها تحال إلى مدخل. وقد يسبق إلى الذهن أن القاموس ناقص بنسبة 87%، وليس كذلك. أكثر ما نقص إما أجزاء برمجية عامة لا تحتاج إلى معيار قرآني، وإما علم ليس موضوعه القرآن.

الحد: يدخل المفهوم القاموس إذا لم يمكن تعريفه دون الرجوع إلى القرآن أو المصحف. sajdah لا يمكن تعريفه دون ذلك، أما radio فيمكن، لأن بث التلاوة بث كأي بث. وfatwa خارج القاموس للسبب نفسه الذي خرج له الحديث، فهو علم صحيح وإسلامي لكنه ليس مفهومًا من مفاهيم النص القرآني.

البديل المرفوض: أن نسمي كل ما يخزنه التطبيق. هذا يدخل المعيار في النمذجة البرمجية العامة، وهو مجال لا سلطة للمعيار فيه ولا يزيده المعيار دقة.

الأثر: يبقى المشروع محتاجًا إلى أسماء لكتبه ووسومه، والمعيار لا يعطيه هذه الأسماء ويقول ذلك صراحة. ويبين §30 كيف يوسع المشروع القاموس محليًا.


عد الآي: الاسم البرمجي اسم المدرسة، ومعرّف المدخل يحمل اسم الأب

غير مؤرخ · مستقر · روجع في 2026-09-07

القرار: قيم ayah_numbering_system هي kufi وbasri وdimashqi وmakki وmadani_first وmadani_last. ومعرّفات مداخلها ayah_numbering_kufi وهكذا. وسجل ayah_numbering.tsv مفتاحه هذه الأسماء البرمجية.

السبب: يقصر الاسم البرمجي ويطول المعرّف، ولا يشتق واحد منهما من العربية.

قصر الاسم البرمجي: اسم القيمة فريد داخل تصنيفها لا في القاموس كله. فالعمود يحمل قيم تصنيف واحد ولا يحمل قيم اثنين، فلا تتنافس makki العد وmakki تصنيف النزول على خانة واحدة أبدًا، وهو السبب نفسه الذي جعل السجل فضاء قائمًا بنفسه (§13) وأبقى hamzah القارئ وhamzah العلامة باسم واحد. وتصدير القيمة باسم أبيها لا يزيد على ما يقوله العمود. وكل مجموعة بيانات قائمة، مثل qiraat-ayah-map من quranpedia وquran-text، تخزن kufi وmadani-first، وقد أصابت.

طول المعرّف: لا يشترك مدخلان في ملف ولا مرسى ولا هدف لـrelated، وmakki معرّف قيمة النزول. فمعرّف القيمة التي تشترك في اسمها هو اسم الأب مع الاسم البرمجي، وتأخذ مداخل العد الـ6 هذه الصورة كلها بدل 5 قصيرة وواحد طويل. ويردّ فهرس التهجئات الاسم المشترك إلى المفهومين معًا، و<parent>:<name> إلى كل واحد منهما، فمن يعرف العمود يردّ الاسم بلا لبس، ويبقى build_aliases.py يرفض أي اسم مشترك آخر.

ترك الاشتقاق: «العَدّ الكُوفِيّ» يعطي add_kufi، وadd فعل إنجليزي، وهذه هي المشكلة نفسها التي كتبنا من أجلها noon بدل nun. فالاسم البرمجي اسم المدرسة.

الحد: §4، ففي الاسم المركب ننقل الكلمة الاصطلاحية بحروفها ونترجم الكلمة العادية. وmadani هي الكلمة الاصطلاحية، أما «الأول» و«الأخير» فكلمتان عاديتان. وتبقى madani_awwal وmadani_akhir تهجئتين مسجلتين.

الأثر: اسم القيمة نفسه هو الاسم القصير، ويبقى الفضاء الواحد للمفاهيم التي تحتاج إليه.


ayah_mark، واسم الضبط محفوظ في dabt

غير مؤرخ · مستقر

القرار: code: ayah_mark، وnames.arabic.vocalized: عَلَامَة الآيَة، واسمها في علم الضبط «عَلَامَة رَأْس الآيَة» مسجل في dabt.

السبب: اشتقاق الاسم الأطول يعطي ras_al_ayah_mark. و«رأس» كلمة عامة ليست مصطلحًا، وهي تصف موضع العلامة وليس ما تدل عليه. وكل علامة في القاموس مسماة بما تدل عليه، مثل waqf_mark وsajdah_mark وdivision_mark.

الحد: القاعدة أن arabic.vocalized لا يتغير إلا لسبب يتعلق بالعربية. و«عَلَامَة الآيَة» هي علامة حد الآية، و«رَأْس» وصف للموضع، واسم المصدر محفوظ في dabt كما حفظ sajdah_mark اسم «عَلَامَة مَوْضِع السَّجْدَة».

الأثر: أضفنا المدخل ولم يكن موجودًا، والعلامة أكثر علامات المصحف ورودًا، لكنها ليست في dabt_marks.tsv، والتوليد الذي أخرج علامات المصحف من ذلك السجل أخرج كل العلامات سواها.


النسخ مدخل واحد اسمه abrogation

غير مؤرخ · مستقر

القرار: مدخل واحد للنسخ، اسمه abrogation، ولا مدخل للناسخ ولا للمنسوخ.

السبب: العنوان المعروف هو «النَّاسِخ وَالمَنْسُوخ»، لكن العلم نفسه هو النَّسْخ، والناسخ والمنسوخ طرفان لعلاقة واحدة وليسا مفهومين. وللنسخ اسم إنجليزي واضح، فيأخذه بحسب §3.

الأثر: nasikh_mansukh وnasikh_wa_mansukh وnasekh_mansokh كلها تحال في aliases.json.


token وmorpheme وfont تأخذ مداخل

غير مؤرخ · مستقر

القرار: مداخل لـtoken وmorpheme وstem وpart_of_speech وfont.

السبب: §18 يطلب من القارئ التفريق بين word وtoken وmorpheme، ويذكر font في باب العرض. ولم يكن لواحد منها مدخل، فكان المعيار يذكر فرقًا ثم لا يعرفه، وmorphology.purpose نفسه يستعمل لفظ token في نصه.

الحد: الـtoken هو ما ينتجه منهج التقسيم، أما الكلمة فهي ما يعرفه القارئ. ولذلك يغير تغيير المنهج عدد الـtokens ولا يغير عدد الكلمات. وsegment، وهو الاسم الشائع في مدونات القرآن، يحال إلى morpheme.


أقسام الكلمة بأسمائها الإنجليزية

2026-09-06 · مستقر

القرار: أقسام الكلمة 3: noun وverb وparticle.

السبب: قسم الكلمة مفهوم عام من مفاهيم النحو، وله اسم إنجليزي واضح تستعمله كل مدونات الصرف، والأب part_of_speech إنجليزي أصلًا. و§3 يعطي المفهوم العام اسمه الإنجليزي. أما نقل الاسم العربي بحروفه فكان يطيل اسم الحرف، لأن harf وحده مأخوذ لحرف المبنى (letter)، وهذه المشكلة تزول مع particle.

الحد: مدونات القرآن توسم بعشرات الوسوم مثل N وPN وV وCONJ وNEG. وهذه بيانات تندرج تحت الأقسام الـ3 وليست مداخل في القاموس. ولو أفردنا 40 وسمًا لصار المعيار مسؤولًا عن مجموعة وسوم.

الأثر: الفحص يرفض التصنيف بلا قيم، وهو الخطأ الذي يذكره §13، وكان part_of_speech وayah_numbering_system قد وقعا فيه.


قواعد المعيار تفحص بأداة ولا تحفظ في قائمة

غير مؤرخ · مستقر

القرار: tools/check_conformance.py يجري القواعد التي ينص عليها المتن: أن الاسم القرآني مشتق من اسمه العربي، وأن للتصنيف قيمًا، وأن الجمع هو الاسم وs، وأن روابط related وparent وpart_of تحال، وأن المقابل الإنجليزي ليس تهجئة، وأن كل مصدر محال إليه موجود، وأن حقول الرسم لا تقع إلا على العلامات وقيم الوقف الست.

السبب: validate.py يفحص بنية المدخل حسب schema.json، والمخطط لا يستطيع التعبير عن أي قاعدة مما سبق. وأول تشغيل للفحص وجد مخالفات لكل قاعدة في هذه القائمة، في مداخل ظلت تجتاز التحقق شهورًا: جمع مأخوذ من المقابل الإنجليزي، ورابطان في related يشيران إلى مفهومين لا وجود لهما، ومقابل إنجليزي مكرر في التهجئات.

الحد: قائمة DOCUMENTED تحمل الاستثناءات التي يعلل هذا السجل سببها، مثل قيم عد الآي. أما الفرق الذي سببه خلل في الدالة فيصلح في الدالة ولا يحفظ في قائمة. والقائمة الوحيدة من هذا النوع التي كانت في الفحص حذفت (انظر «أداة التعريف تحكمها الكلمة التي قبلها مباشرة»).


أفراد المجموعة المغلقة توضع في سجل بدل مدخل لكل فرد

غير مؤرخ · مستقر

القرار: القراءات الـ10، والروايات الـ20، والسور الـ114، ومواضع السجدة الـ15، توضع في ملفات مفصولة بالجدولة تحت standards/terminology/registries/. ويبقى للمفهوم مدخل يسمي سجله، ويأخذ كل فرد سطرًا.

السبب: المدخل يجيب عن سؤال «ما هذا؟»، وحفص لا يجاب عنه إلا بالإشارة إليه. ولو أفردنا 49 مدخلًا للقراءات لتضاعف حجم القاموس 3 مرات بملفات لا يستطيع فيها حقلا definition وpurpose إلا تكرار الاسم، ولاختفت المداخل الـ20 التي تعرف شيئًا بين 163 مدخلًا لا تعرف شيئًا.

البديل المرفوض: مدخل لكل فرد بـkind: instance. هذا يجمع الأشخاص والمفاهيم في قائمة واحدة، ويجعل سؤال «هل هذا مفهوم؟» اجتهادًا يتكرر مع كل اسم جديد.

الحد: إذا احتاج الشيء إلى definition وpurpose وboundaries فهو مفهوم، وإذا كان كل ما فيه اسمه وموقعه في المجموعة وموضع وروده فهو فرد.

الشاهد: وضعنا أسماء الحروف الـ28 في data/letter_names.tsv للسبب نفسه قبل أن نستعمل لفظ السجل.

الأثر: tools/check_registries.py يفحص كل سطر، ولكل سطر مصدر، وكل سطر يفهرس.


أحكام التجويد توضع في سجل بدل مداخل

2026-09-06 · مستقر

القرار: الأحكام مثل الإظهار والإدغام والإقلاب والإخفاء وأنواع المد وغيرها سطور في registries/tajwid_rules.tsv، وtajwid_ruling هو المدخل الذي يسمي السجل. أما المفاهيم التي يقوم عليها الحكم (noon_sakinah وtanwin وmaddah) فتبقى مداخل.

السبب: كان في المعيار 5 مداخل في tajwid وملف أحكام (data/tajweed_engine_rules.json) لا يحيل إليه أحد، بينما يحمل كل محرك تجويد معرفات أحكامه الخاصة. والحكم له اسم وموضع ينطبق فيه ومصدر، ولا يقال فيه غير ذلك، وهذا معيار ما يوضع في سجل. والحكم غير الموضع الذي ينطبق فيه، فالموضع مدى من النص موسوم بالاسم البرمجي للحكم، وهو من بيانات المشروع وليس من القاموس.

البديل المرفوض: مدخل لكل حكم. الأحكام عشرات، وتعريفاتها تكرر أسماءها، وتبقى المحركات محتاجة إلى جدول مع ذلك.


rasm_imlai يحتفظ بالاسم الذي تستعمله كل قاعدة كود

2026-09-06 · مستقر

القرار: rasm_imlai، الرَّسْم الإِمْلَائِيّ، مع أن general_words.tsv يترجم «إملائي» في عائلة العلامات (orthographic_mark).

السبب: نوع الرسم يسمى imlai في كل قاعدة كود فيها هذا النوع، وorthographic_rasm اسم لا يكتبه أحد. وwith_head في الجدول يحدد متى تترجم الكلمة، وهذا يكون بجوار كلمة رأس مثل «عَلَامَة» فقط. أما بجوار «رَسْم» فتنقل بحروفها، ولذلك يعطي الاشتقاق rasm_imlai ولا يكون المدخل استثناء.

الأثر: imlaei وimlai وsimple وtext_simple تحال.


ayah_count مفهوم معياري يسمى باسم سجله

2026-09-06 · مستقر

القرار: ayah_count، بـorigin: standard، واسمه العربي عَدَد الآيَات، وسجله ayah_counts.

السبب: اشتقاق الاسم العربي يعطي adad_al_ayat، وهو يسمي العدد بالعربية ولا يسمي شيئًا موجودًا في الكود. والمفهوم مفهوم نمذجة، أي عدد لكل سورة في كل نظام عد، ولذلك يأخذ الاسم الإنجليزي الذي يحمله سجله أصلًا، ويقع في عائلة ayah_numbering_* التي ينتمي إليها.


سجل للطرق في المستوى الذي تخزنه التطبيقات

2026-09-06 · مستقر · ينسخ «بهذه القاعدة نفسها رُدّ سجل الطرق»

القرار: في registries/tariq.tsv 4 سطور: shatibiyyah وtayyibat_al_nashr وdurrah وtaysir، وهي الطرق التي يعلنها التسجيل أو طبعة المصحف فعلًا.

السبب: طرق النشر نحو 980 طريقًا، ولا يمكن التحقق منها سطرًا سطرًا من مصادر هذا المستودع، ولذلك رفضنا السجل من قبل. لكن التطبيقات تخزن الطريق في مستوى كتاب النقل، وهذه الطرق الـ4 ثابتة ومحصورة. والسجل الذي يقف عند حد الدليل يصدق فيما يقول، أما الذي يعدد 980 سطرًا غير محقق فلا يصدق.

مفتوح: التعداد الكامل للطرق، ويكون ذلك إذا وجدنا مصدرًا تستطيع الأداة مطابقته.


اسم الشخص يكتب كما جرت كتابته ولا يشتق

غير مؤرخ · مستقر

القرار: hafs وwarsh وqalun وibn_dhakwan تكتب كما جرت كتابتها، ولا تمر بالأقسام 4 إلى 8.

السبب: وضعنا الاشتقاق لأن المصطلح كلمة تحمل معنى، والاشتقاق من العربية بالحركات يبقي هذا المعنى موصولًا بالمعرف. أما اسم الشخص فلا معنى فيه، واشتقاقه لا يعطي إلا تهجئة لا يكتبها أحد.

الشاهد: «أَبُو عَمْرو» يشتق إلى abu_amrw، لأن واو عمرو إملائية لا تنطق. و«ابْن» لا يمكن اشتقاقها أصلًا، لأن ألفها همزة وصل لا حركة عليها. و«كما جرت كتابته» تعني الصورة العلمية الإنجليزية بلا علاماتها، والسجل يسجل الصورتين. وإذا خالفت هذه الصورة قاعدة نص عليها المعيار فالقاعدة مقدمة، فنكتب shubah لا shuba لأن §5 يحكم التاء المربوطة.

البدائل المرفوضة: تمرير الأسماء عبر established_spellings.tsv، فالاشتقاق لم يوضع للأسماء، وتعديله من أجلها أسوأ من استثنائها.

الحد: الأشخاص وحدهم. أما اسم السورة فهو كلمة، ولذلك يشتق، وcheck_registries.py يعيد اشتقاق أسماء السور الـ114 في كل تشغيل.

البدائل المرفوضة كذلك: عد العبارات في GitHub. هذا العد يفصل بين tajwid وtajweed لأنهما مصطلحان، أما في الأسماء فيرجع بأعداد لا معنى لها (طابق susi نحو 5,185,536 لفظًا لا صلة لها به، وغلب qumbul على qunbul). وهذه الأعداد ليست في ملف القياسات وليست شاهدًا.


قد يشترك الفرد والمفهوم في الاسم

غير مؤرخ · مستقر

القرار: hamzah اسم للعلامة والمقرئ معًا، وtariq اسم لدرجة النقل والسورة معًا، ويبقى الاسم لكليهما. ونفهرس أسماء الأفراد بحسب الـkind في registry_aliases.json، ويبقى الاسم المجرد في aliases.json محالًا إلى المفهوم.

السبب: الاسمان في مجالين مختلفين بالمعنى المذكور في §25، فإحدى الحمزتين في dabt والأخرى في qiraat، ولا يطلبهما استعلام واحد. ولا نفرد الاسم إلا حيث يقع اللبس.

البديل المرفوض: أن نقيد الاسم الأحدث منهما، كما قيدنا ayah_numbering_makki حين كان makki مأخوذًا. لكن تلك سابقة في قيمة يبنى اسمها من اسم أبيها، ولا تمتد إلى تغيير اسم رجل أو اسم سورة اتقاءَ لبس لا يقع فيه أحد.

الحد: العمود لا يحمل «شيئًا من مجال القراءات»، بل يحمل رواية، ومن يملؤه يعرف أيهما يقصد.

الأثر: يطبع check_registries.py المواضع الـ3 في كل تشغيل، حتى يبقى الاستثناء معروفًا ولا يبدو مصادفة.


أعداد الآي تقرأ من «البيان» وتطابق

غير مؤرخ · مستقر

القرار: registries/ayah_counts.tsv يحمل عدد آي كل سورة في أنظمة العد الـ6، يولده tools/extract_ayah_counts.py من «البيان» للداني، ولا يعدل باليد.

السبب: الأنظمة الـ6 تختلف في 114 عددًا، والجدول الذي لا مصدر له لا يمكن مناقشته. و«البيان» يذكر عدد كل سورة مرة، ثم لا يذكر إلا ما اختلف فيه، مثل «مئتا آية وثمانون وخمس آيات في المدنيين والمكي والشامي وست في الكوفي وسبع في البصري»، فالأعداد في الكتاب مقروءة آليًا.

الشاهد: يطابق الجدول مصدره من وجهين. فالأعداد الكوفية الـ114 توافق المصحف المطبوع سورة سورة، وهذا يختبر قراءة كل فصل وليس الحساب وحده. وجملة الكوفي 6,236 والبصري 6,204، وهما العددان اللذان نص عليهما الداني.

الأثر: أصلحت المطابقة ما يأتي، وكل واحد منه اليوم قاعدة في أداة الاستخراج:

  • «آيتان» عدد ملتصق باسم المعدود، ونعده.
  • «وآية» المعطوفة تعني العدد واحد، ولذلك «خمسون وآية» تساوي 51. أما «آية» المجردة بعد عدد فهي المعدود.
  • الجزء اللاحق يحل محل الجزء الذي يغطيه، فـ«مئة وعشر» مع «تسع» تساوي 109. لكن «مئة وثمانون» مع «آيتان» تساوي 182، لأن العقد من العشرين فصاعدًا يقبل الآحاد إلى جانبه، أما العشر المجردة فتستبدل.
  • اسم النظام المركب من كلمتين يعامل لفظًا واحدًا.
  • الجملة المعترضة مثل «بخلاف عنه» بين أسماء الأنظمة لا تقطع تسلسلها.

ومطابقة جملة الأعداد وحدها كانت تخفي أكثر هذه الأخطاء، وفحص السور سورة سورة هو الذي كشفها.

الحد: 4 أعمدة تزيد واحدًا على ما نص عليه الداني. ففي موضعين من الكتاب عدد لقراءة أبي جعفر خاصة، وهل «عدد أبي جعفر» هو المدني الأول نفسه أو إمام مستقل إلى جانبه سؤال يخص المصدر، وليس للأداة أن تحسمه، ولذلك يطبع التشغيل الفرق في كل مرة.


verified تسجل ما فُحص، وقيمة no مقبولة

غير مؤرخ · مستقر

القرار: يسجل السطر ما فُحص. وسطور السجدة تحمل verified: surah، أي أن السورة ثابتة في مصدر وأن رقم الآية غير ثابت.

السبب: والبديل أن نحيل إلى صفحة ليس فيها الخبر، وهذا أسوأ من ترك الحقل فارغًا بصدق، لأن أحدًا لن يميز بعد ذلك بين هذه الإحالة والإحالة الصحيحة.

الأثر: «الإتقان» يسمي سور السجدة الـ14 كلها ويجعل عددها 14، وقد فحصنا ذلك في الكتاب. و15 موضعًا في 14 سورة ليس تناقضًا، لأن في الحج سجدتين. وكل رقم آية يفحص بعدد سورته الكوفي المحقق، فلا يمر رقم يقع خارج سورته، وموضعان منها يقعان على آخر آية من السورة، والأعداد تؤكد ذلك. أما تعداد الأرقام الـ15 فلا يفعله أي مصدر في هذا المستودع، والملف يقول ذلك.

الشاهد: بهذه القاعدة نفسها رُدّ سجل الطرق مدةً. فالأعداد أمكن إثباتها لأنها تطابق مجموعًا معروفًا، أما الطرق فليس لها مجموع يطابق. ومسح باب الأسانيد من «النشر» يرجع بـ224 اسمًا في كل طبقات الشجرة، ولا توجد طريقة موثوقة لوصل كل اسم بأصله، والجدول الذي لا يتحقق منه لا يفرق بينه وبين المحقق ناظر. وregistries/tariq.tsv موجود اليوم وverified فيه مضبوطة بصدق في كل سطر، وcheck_registries.py يبلغ عما بقي غير محقق في كل تشغيل.


sajdah مفهوم واحد: الموضع والسجود عنده

2026-09-07 · مستقر

القرار: مدخل واحد sajdah، وجمعه sajdahs، وأفراده سجل sajdah.tsv. ودُمج فيه sajdah_place وsujud_al_tilawah وبقيا تهجئتين مسجلتين. ويبقى sajdah_mark مدخلًا مستقلًا لأنه العلامة، و§18 ينطبق عليه.

السبب: الموضع والفعل شيء واحد في كل استعمال يحتاجه البرنامج: فمجموعة البيانات تعد «السجدات الخمس عشرة» وتحدد مواضعها وتربط بها أحكام السجود، ولا يخزن شيء سجودًا بلا موضع ولا موضعًا لا يُسجد عنده. ومدخلان لشيء واحد هو الخطأ الذي يحذر منه §18 من الجهة الأخرى. والحجة نفسها تبقي ruku مدخلًا واحدًا.

الأثر: «السَّجْدَة» تشتق إلى sajdah، وهو ما تسميه به المصادر والقراء. ويُردّ sujud_al_tilawah، وهو الفعل كما تعنونه كتب الفقه، وmawdi_al_sajdah، وهو الموضع كما يعدده الإتقان، إلى المدخل.

البدائل المرفوضة: 3 مداخل، العلامة والموضع والفعل، بحجة أن جمعها يجعل لفعل العبادة رقم صفحة. وإبقاء sujud_al_tilawah للأحكام، فالأحكام تُربط بالسجدة، ولن يحمل المدخل الثاني حقلًا لا يحمله الأول.

المصدر: quran-ws/docs، عند d1d6be33be9d. ما لم يُوسم «معتمد» فهو مقترح للنقاش، ولا يُبنى عليه بعد.