رقم ISBN يعرف كتابا واحدا بإصدار واحد وتجليد واحد، ورقم ISSN يعرف دورية أو صحيفة على امتداد عمرها كله. وهما من أقدم أنظمة الترقيم المؤتمتة، لأن فهرسة المكتبات سبقت التجارة الإلكترونية بزمن طويل، ولذلك تحمل أحفادهما بعض الصور القديمة حتى اليوم.
وأهم تلك الصور هي أن الحساب لا يقتصر على الأرقام. ففي أحد النظامين يمكن أن يكون الحرف الأخير حرفا لاتينيا لا رقما، وهذه خصوصية توقع كثيرا من المطورين الذين اعتادوا على مجموعات أرقام خالصة. والمقالة تشرح النظامين جنبا إلى جنب، لأن الفرق بينهما يفيد في فهم لماذا لم تندمج القاعدتان في واحدة.
ما الفرق بين ISBN و ISSN؟
الفرق الأول في المفهوم. فـ ISBN يعرف قطعة محددة يمكن شحنها: طبعة معينة من كتاب معين من ناشر معين. أما ISSN فيعرف العنوان نفسه بوصفه منشورا متسلسلا، ولا يظهر في الطبعات المتغيرة لأنها هي صفته الدائمة.
والفرق الثاني في الشكل. فرقم الكتاب يبدأ عادة بالحروف التي تدل على نظام الكتاب الدولي، ومن ثمة أرقام عند الحاجة، بينما يبدأ رقم الدورية بحرفين يعرفان البلد ويتبعهما تسلسل قصير.
والفرق الثالث هو الأهم للمبرمج: رقم الدورية ثابت الطول، أما رقم الكتاب فقد تغير شكله عبر الزمن، فهو الآن يقع في أحد طولين ومن ثمة اثنتان من القواعد يجب أن تدعمهما الأداة الواحدة. وهذه حالة مختلفة عن باركود المتجر الذي يظهر في مقالة أرقام التحقق في EAN و UPC.
كيف يعمل رقم التحقق في ISBN؟
الطريقة العامة هي نفسها التي وصفناها سابقا، أي أوزان مضروبة في الأرقام ثم جمع ثم قسمة ثم اشتقاق الخانة الأخيرة. والتشابه في المفهوم لا يخفي اختلافا في التفصيل: فالصورة القديمة من رقم الكتاب تأخذ وزنا يتناقص بالتسلسل من عشرة، بينما الصورة الحديثة تتبع أوزان الباركود المتوافقة مع نظام المنتجات.
وهذا الاختلاف عملي أكثر مما يبدو. فالناشر الذي يتحول من الصورة القديمة إلى الحديثة يجب أن يحذف رقما ويحسب خانة أخرى، ولا يمكن أخذ الرقم الأخير القديم كما هو. ولذلك لا يجوز أن تبنى قاعدة البيانات على افتراض أن العلاقة بين القاعدتين علاقة تحويل ثابتة.
ويلتقي النظامان في نقطة واحدة: كلاهما يحسب على السلسلة التي تسبق الخانة الأخيرة وحدها. فالخانة لا تدخل في الحساب الذي أنتجها، وهذه قاعدة عامة في كل أنظمة التحقق وليس خاصة بالنشر.
لماذا ينتهي ISSN بالحرف X أحيانا؟
لأن الحساب ينتج أحد عشر باقيا ممكنا، وعشرة منها تكفي لملء الأرقام من صفر إلى تسعة، أما الحادي عشر فلا يقابله رقم عربي واحد. ولذلك يمنح المعيار رقما بديلا هو الحرف اللاتيني X، الذي يعني عشرة بمعناها العددية.
وهذه ليست خصوصية صغيرة يمكن تجاهلها. فالأداة التي ترفض الحرف الأخير أو تعتبره خطأ إدخال ستمنع المدخلات الصحيحة التي تنتهي به، وتلك نسبة من المدخلات تظهر في اختبار الإنتاج وليس في اختبار التطوير. والادعاء بأن الحقل رقمي بالكامل سيكون صحيحا في الغالب وخاطئا في البقية الحرجة.
وعلاج ذلك هو التعامل مع الحقل كنص لا كرقم، وتعريف الدالة الحسابية بحيث تقبل القيم التي أعلنها المعيار ولا تقبل غيرها. وهذه هي القاعدة نفسها التي تكفل صحتها في أي نظام مختلط الأحرف. ومن يكتب الحقل كنص منذ البداية لا يدفع ثمن التصحيح لاحقا، ومن يكتبه كعدد صحيح يجد نفسه مضطرا إلى إعادة النظر في كل موضع يمر به هذا الحقل في الكود.
ماذا يعني رقم كتاب صحيح الشكل؟
يعني أن الخانة الأخيرة تتفق مع الأرقام التي تسبقها، ولا شيء غير ذلك. أما هل هذا الرقم مسجل فعلا، وهل هو مخصص للطبعة التي بين يدي القارئ، وهل الناشر ما زال صاحب البادئة، فهذه أسئلة تخص سجلات ثابتة لكل مجال.
ويأتي الالتباس دائما من أن الفحص المحلي صار مضمونا في الأدوات. فالمكتبات وبرامج الأرشيف تعرض الشكل مقبولا في أثناء الإدخال، وينظر المستخدم إلى الإشارة الخضراء على أنها تصديق على وجود الكتاب الذي بين يديه. وهذا تفسير شائع ومخالف تماما لدلالة الحساب.
والنتيجة العملية أن كل واجهة تفحص هذا النوع من الأرقام ينبغي أن تحفظ الرسالة الكاملة في مكان ظاهر. لا تكفي إشارة خضراء، ويجب أن تكون الصياغة مطابقة لما تعجز عنه القاعدة وليس لما تنجح فيه.
للمطورين: الواصلات والطول المختلط
في هذا المجال تظهر الفواصل في كل مدخل تقريبا، فهي جزء من الصورة المطبوعة للمستخدم ولا جزء من القيمة الدالة. ولهذا تصير قواعد التنظيف أول ما يجب وضعه.
- أزل الفواصل والمسافات قبل أي شيء آخر، ثم اعرض مرة واحدة النتيجة في الكود.
- لا تخلط بين رقم الكتاب ورقم الدورية بصورة صامتة، بل حدد النوع من السياق أو من الصورة المعطاة.
- احسب خانة الدورية بخشب النص لا بخشب الأرقام، لأن الحرف الأخير ممكن.
- اعرض نوع الصورة المكتشفة في النتيجة المرجعة، حتى يتغير التنسيق صراحة عند الانتقال بين الإصدارات.
هذه ليست تفاصيل عابرة، لأن كل واحدة منها تقع في موضع مختلف في الكود. الفهم المشوش لهذه النقاط يعطي المطور انطباعا بأنه كتب تطبيقا يتحقق من النظامين، في الوقت الذي كتب فيه إجراء نص صحيح.
ما بعد الفحص: سجل النشر
في سلسلة المكتبات تصل الحلقة إلى قاعدة خارجية، لأن وظيفة النظام هي إيجاد المادة وليس مجرد إثبات صحة صياغة. وهذا الاستدعاء ينبغي أن يفصل عن الفحص المحلي في مكونات الكود، حتى يظل كل مصدر للخطأ معروفا على حدة.
وقد لا يرد السجل الوطني بالتفاصيل المتوقعة. فبعض السجلات لا تعرض الوصف الكامل للشيء بعد الطلب الأول، وحتى يكون العرض مقبولا يجب أن تظل القيمة المناسبة محفوظة. ولهذا كثيرا ما يكون الفحص المحلي هو الجزء المفيد من العملية عند الاستجابة الجزئية من السجل.
الخطوات التالية
ابدأ بكتابة كل صيغة من الصيغ المدعومة ثم اختبرها بقيمة وهمية ثم تنبه إلى الخانة الأخيرة. وبعد ذلك اقرأ خوارزميات رقم التحقق للمقارنة بين الأسرة التي تحسب على الأرقام فقط وتلك التي تحتاج تحويلا. ولاحظ في الوقت نفسه أن أداة التحقق من الأرقام تتعامل مع المدخل المختلط نفسه الذي ستستخدمه المكتبات، فحاول أن تطابق سلوكك معها في الحالات الطرفية قبل أن تصل شكاوى القراء.