لغة وصف تنسيق البيانات
لغة وصف تنسيق البيانات ( DFDL ، والتي تُنطق غالبًا داف-أو-ديل ) هي لغة نمذجة لوصف النصوص العامة والبيانات الثنائية بطريقة قياسية. نُشرت كتوصية من منتدى الشبكة المفتوحة [ 1 ] في فبراير 2021، وفي أبريل 2024 نُشرت كمعيار ISO . [ 2 ]
يُتيح نموذج أو مخطط DFDL قراءة أي بيانات نصية أو ثنائية من تنسيقها الأصلي وعرضها كمثال لمجموعة معلومات . (مجموعة المعلومات هي تمثيل منطقي لمحتويات البيانات، بغض النظر عن التنسيق الفعلي. على سبيل المثال، قد يكون لسجلين تنسيقان مختلفان، أحدهما يحتوي على حقول ثابتة الطول والآخر يستخدم فواصل، لكنهما قد يحتويان على نفس البيانات تمامًا، وسيتم تمثيلهما بواسطة نفس مجموعة المعلومات). كما يُتيح مخطط DFDL نفسه استخراج البيانات من مثال لمجموعة معلومات وكتابتها (أو تسلسلها) إلى تنسيقها الأصلي.
لغة DFDL وصفية وليست إلزامية . فهي ليست صيغة بيانات، ولا تفرض استخدام أي صيغة بيانات محددة. بل توفر طريقة قياسية لوصف أنواع عديدة من صيغ البيانات. يتميز هذا النهج بعدة مزايا [ 3 ]، فهو يسمح لمطور التطبيق بتصميم تمثيل بيانات مناسب وفقًا لمتطلباته، مع وصفه بطريقة قياسية قابلة للمشاركة، مما يُمكّن برامج متعددة من تبادل البيانات مباشرةً.
تحقق DFDL ذلك بالاعتماد على إمكانيات W3C XML Schema 1.0 . ويتم استخدام مجموعة فرعية من XML Schema، تكفي لتمكين نمذجة البيانات غير XML. وتتمثل دوافع هذا النهج في تجنب ابتكار لغة مخطط جديدة كليًا، وتسهيل تحويل النصوص العامة والبيانات الثنائية، عبر مجموعة معلومات DFDL، إلى مستند XML مطابق.
تتوفر المواد التعليمية على شكل دروس تعليمية حول DFDL ومقاطع فيديو والعديد من مختبرات DFDL العملية.
تاريخ
تم إنشاء لغة DFDL استجابةً لحاجة واجهات برمجة تطبيقات الشبكة إلى فهم البيانات بغض النظر عن مصدرها. كانت هناك حاجة إلى لغة قادرة على نمذجة مجموعة واسعة من تنسيقات البيانات النصية والثنائية الموجودة. تم إنشاء فريق عمل (مؤرشف بتاريخ 27 نوفمبر 2010 في Wayback Machine) في منتدى الشبكة العالمية (الذي أصبح لاحقًا منتدى الشبكة المفتوحة ) عام 2003 لوضع مواصفات لهذه اللغة.
اتُخذ قرار مبكراً بتأسيس اللغة على مجموعة فرعية من مخطط W3C XML ، باستخدام تعليقات <xs:appinfo> لنقل المعلومات الإضافية اللازمة لوصف التمثيلات الفيزيائية غير XML. هذا نهج راسخ كان يُستخدم بالفعل بحلول عام 2003 في الأنظمة التجارية. يأخذ DFDL هذا النهج ويطوره ليصبح معياراً مفتوحاً قادراً على وصف العديد من تنسيقات البيانات النصية أو الثنائية.
استمر العمل على اللغة، مما أدى إلى نشر مواصفات DFDL 1.0 كتوصية مقترحة من OGF GFD.174 في يناير 2011.
التوصية الرسمية الصادرة عن مؤسسة OGF هي الآن GFD.240، والتي نُشرت في فبراير 2021، وهي تلغي جميع الإصدارات السابقة وتتضمن جميع المشكلات التي تم رصدها حتى الآن (متوفرة أيضًا بصيغة HTML ). يتوفر ملخص لـ DFDL وميزاته على موقع OGF. يتم تتبع أي مشكلات في المواصفات باستخدام أدوات تتبع المشكلات على GitHub .
في أبريل 2024، نُشر معيار DFDL تحت مسمى ISO/IEC 23415:2024 من خلال عملية المعايير المتاحة للجمهور (PAS) التابعة لمنظمة ISO . يتوفر المعيار من ISO، وسيظل متاحًا للجمهور أيضًا من خلال منتدى الشبكة المفتوحة.
التطبيقات
تتوفر تطبيقات لمعالجات DFDL التي يمكنها تحليل البيانات وتسلسلها باستخدام مخططات DFDL.
- لدى شركة IBM العديد من تطبيقات DFDL.
- محلل بيانات تدفقية جاهز للاستخدام في بيئة الإنتاج، بالإضافة إلى أداة تصميم نماذج واختبار مرئي لـ DFDL 1.0. [ 4 ] يتوفر هذا البرنامج في العديد من منتجات IBM، بما في ذلك IBM App Connect Enterprise (المعروف سابقًا باسم IBM Integration Bus ). كما تتوفر نسخة مجانية للمطورين .
- IBM z/TPF DFDL وهو جزء من IBM Mainframe z/Transaction Processing Facility.
- أباتشي دافوديل هو معالج DFDL مفتوح المصدر يحتوي على محلل ومفكك تحليل، وبيئة تطوير متكاملة (IDE) تُعد امتدادًا لـ VSCode، بالإضافة إلى تكامله مع أباتشي ني فاي ، ومحرك خط أنابيب XML كالاباش XProc ، وسموكس . ولا يزال قيد التطوير النشط.
- يتضمن مشروع وكالة الفضاء الأوروبية S2G Data Viewer محلل DFDL4S [ 5 ] الذي ينفذ مجموعة فرعية من مواصفات DFDL 1.0.
تم إنشاء مستودع عام على منصة GitHub لمخططات DFDL التي تصف تنسيقات البيانات التجارية والعلمية . تتوفر مخططات DFDL لتنسيقات مثل UN/EDIFACT وNACHA وMIL-STD-2045 وNITF وISO8583 للتنزيل مجانًا.
مثال
لنأخذ على سبيل المثال تدفق البيانات النصية التالي الذي يوضح اسم الشخص وعمره وموقعه:
يمكن وصف النموذج المنطقي لهذه البيانات من خلال الجزء التالي من مستند مخطط XML. ويعبّر نموذج مخطط XML عن ترتيب الحقول وأسمائها وأنواعها وعددها.
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" ... ><xs:complexType name= "person_type" > <xs:sequence> <xs:element name= "name" type= "xs:string" /> <xs:element name= "age" type= "xs:short" /> <xs:element name= "county" type= "xs:string" /> <xs:element name= "country" type= "xs:string" /> </xs:sequence> </xs:complexType></xs:schema>ولزيادة نمذجة التمثيل المادي لتدفق البيانات، يقوم DFDL بتعزيز جزء مخطط XML بتعليقات توضيحية على كائنات xs:element و xs:sequence، على النحو التالي:
<xs:schema xmlns:dfdl= "http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs= "http://www.w3.org/2001/XMLSchema" ... ><xs:complexType name= "person_type" > <xs:sequence> <xs:annotation><xs:appinfo source= "http://www.ogf.org/dfdl/" > <dfdl:sequence encoding= "ASCII" sequenceKind= "ordered" separator= "","" separatorType= "infix" separatorPolicy= "required" /> </xs:appinfo></xs:annotation> <xs:element name= "name" type= "xs:string" > <xs:annotation><xs:appinfo source= "http://www.ogf.org/dfdl/" > <dfdl:element lengthKind= "delimited" encoding= "ASCII" /> </xs:appinfo></xs:annotation> </xs:element> <xs:element name= "age" type= " <xs:short > <xs:annotation><xs:appinfo source= "http://www.ogf.org/dfdl/" > <dfdl:element representation= "text" lengthKind= "delimited" encoding= "ASCII" textNumberRep= "standard" textNumberPattern= "#0" textNumberBase= "10" /> </xs:appinfo></xs:annotation> </xs:element> <xs:element name= "county" type= "xs:string" > <xs:annotation><xs:appinfo source= "http://www.ogf.org/dfdl/" > <dfdl:element lengthKind= "delimited" encoding= "ASCII" /> </xs:appinfo></xs:annotation> </xs:element> <xs:element name= "country"> type= "xs:string" > <xs:annotation><xs:appinfo source= "http://www.ogf.org/dfdl/" > <dfdl:element lengthKind= "delimited" encoding= "ASCII" /> </xs:appinfo></xs:annotation> </xs:element> </xs:sequence> </xs:complexType></xs:schema>تُشير سمات الخصائص في هذه التعليقات التوضيحية لـ DFDL إلى أن البيانات ممثلة بتنسيق نص ASCII، حيث تكون الحقول ذات أطوال متغيرة ومفصولة بفواصل.
كما يتم توفير صيغة بديلة وأكثر إيجازًا، حيث يتم نقل خصائص DFDL كسمات غير أصلية على كائنات مخطط XML نفسها.
<xs:schema xmlns:dfdl= "http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs= "http://www.w3.org/2001/XMLSchema" ... ><xs:complexType name= "person_type" > <xs:sequence dfdl:encoding= "ASCII" dfdl:sequenceKind= "ordered" dfdl:separator= "","" dfdl:separatorType= "infix" dfdl:separatorPolicy= "required" > <xs:element name= "name" type= "xs:string" dfdl:lengthKind= "delimited" dfdl:encoding= "ASCII" /> <xs:element name= "age" type= "xs:short" dfdl:representation= "text" dfdl:lengthKind= "delimited" dfdl:encoding= "ASCII" dfdl:textNumberRep= "standard" dfdl:textNumberPattern=" < xs:element name= " county" type = " xs: string " dfdl: lengthKind = "delimited" dfdl: encoding = "ASCII" /> <xs:element name= " country" type = "xs:string" dfdl:lengthKind= "delimited" dfdl:encoding= "ASCII" /> </xs:sequence> </xs:complexType></xs:schema>سمات
يهدف DFDL إلى توفير لغة نمذجة غنية قادرة على تمثيل أي تنسيق بيانات نصية أو ثنائية. ويُعدّ الإصدار 1.0 خطوةً هامة نحو تحقيق هذا الهدف. وتشمل هذه الإمكانية دعم ما يلي:
- أنواع البيانات النصية مثل السلاسل والأرقام والأرقام العشرية المُقسّمة إلى مناطق والتقاويم والقيم المنطقية
- أنواع البيانات الثنائية مثل الأعداد الصحيحة بنظام المتمم الثنائي، و BCD ، والأعداد العشرية المضغوطة، والأعداد العشرية ذات الفاصلة العائمة، والتقاويم، والقيم المنطقية
- البيانات ذات الطول الثابت والبيانات المفصولة بعلامات نصية أو ثنائية
- هياكل البيانات اللغوية الموجودة في لغات مثل COBOL و C و PL/1
- معايير الصناعة مثل CSV وSWIFT وFIX و HL7 وX12 و HIPAA و EDIFACT و ISO 8583
- أي ترميز وترتيب البايتات
- بيانات بتية ذات طول عشوائي
- لغات نمطية للأرقام النصية والتقاويم
- المحتوى المرتب وغير المرتب والعائم
- القيم الافتراضية عند التحليل والتسلسل
- لا توجد إمكانية لقيم معالجة البيانات خارج النطاق
- المصفوفات الثابتة والمتغيرة
- لغة تعبير XPath 2.0 تتضمن متغيرات لنمذجة البيانات الديناميكية
- التحليل التخميني وآليات أخرى لحل مسألة الخيارات والاختيارية
- التحقق من صحة قواعد مخطط XML 1.0
- آلية تحديد النطاق التي تسمح بتطبيق قيم الخصائص المشتركة في نقاط تعليق متعددة
- إخفاء العناصر في البيانات من مجموعة المعلومات
- حساب قيم العناصر لمجموعة المعلومات
انظر أيضاً
مراجع
روابط خارجية
- لغات نمذجة البيانات
- الحوسبة الشبكية
