डेटा प्रारूप विवरण भाषा
फरवरी 2021 में ओपन ग्रिड फोरम की सिफारिश के रूप में प्रकाशित डेटा प्रारूप विवरण भाषा (डीएफडीएल, जिसे अक्सर 'डफ-ओ-दिल' कहा जाता है), सामान्य पाठ और बाइनरी डेटा का मानक तरीके से वर्णन करने के लिए एक मॉडलिंग भाषा है। एक डीएफडीएल मॉडल या स्कीमा किसी भी पाठ या बाइनरी डेटा को उसके मूल प्रारूप से पढ़ने (या पार्स) करने की अनुमति देता है और एक 'सूचना सेट' के उदाहरण के रूप में प्रस्तुत किया जाता है। (एक सूचना सेट डेटा सामग्री का एक तार्किक प्रतिनिधित्व है, भौतिक प्रारूप से स्वतंत्र है। उदाहरण के लिए, दो रिकॉर्ड अलग-अलग स्वरूपों में हो सकते हैं, क्योंकि एक में निश्चित-लंबाई वाले क्षेत्र हैं और दूसरे सीमांकक का उपयोग करते हैं, लेकिन उनमें बिल्कुल समान हो सकता है डेटा, और दोनों को एक ही सूचना सेट द्वारा दर्शाया जाएगा)। वही DFDL स्कीमा डेटा को एक सूचना सेट के एक उदाहरण से लेने और उसके मूल प्रारूप में लिखे (या क्रमबद्ध) करने की अनुमति देता है।
डीएफडीएल वर्णनात्मक है न कि निर्देशात्मक। डीएफडीएल एक डेटा प्रारूप नहीं है, न ही यह किसी विशेष डेटा प्रारूप के उपयोग को लागू करता है। इसके बजाय यह कई अलग-अलग प्रकार के डेटा स्वरूपों का वर्णन करने का एक मानक तरीका प्रदान करता है। इस दृष्टिकोण के कई फायदे हैं।[1] यह एक एप्लिकेशन लेखक को एक मानक तरीके से वर्णन करते हुए उनकी आवश्यकताओं के अनुसार एक उपयुक्त डेटा प्रतिनिधित्व को डिजाइन करने की अनुमति देता है जिसे साझा किया जा सकता है, जिससे डेटा को सीधे इंटरचेंज करने के लिए कई प्रोग्राम सक्षम होते हैं।
DFDL इसे W3C XML स्कीमा|W3C XML स्कीमा 1.0 की सुविधाओं के आधार पर प्राप्त करता है। XML स्कीमा के एक सबसेट का उपयोग किया जाता है, जो गैर-XML डेटा के मॉडलिंग को सक्षम करने के लिए पर्याप्त है। इस दृष्टिकोण के लिए प्रेरणा एक पूरी तरह से नई स्कीमा भाषा का आविष्कार करने से बचना है, और सामान्य पाठ और बाइनरी डेटा को DFDL सूचना सेट के माध्यम से संबंधित XML दस्तावेज़ में परिवर्तित करना आसान बनाना है।
शैक्षिक सामग्री डीएफडीएल ट्यूटोरियल, वीडियो और कई व्यावहारिक डीएफडीएल प्रयोगशालाओं के रूप में उपलब्ध है।
इतिहास
स्रोत की परवाह किए बिना डेटा को समझने में सक्षम होने के लिए ग्रिड एपीआई की आवश्यकता के जवाब में डीएफडीएल बनाया गया था। एक ऐसी भाषा की आवश्यकता थी जो विभिन्न प्रकार के मौजूदा टेक्स्ट और बाइनरी डेटा स्वरूपों को मॉडलिंग करने में सक्षम हो। एक वर्किंग ग्रुप ग्लोबल ग्रिड फोरम (जो बाद में ओपन ग्रिड फोरम बन गया) में एक विनिर्देश बनाने के लिए स्थापित किया गया था। ऐसी भाषा के लिए।
गैर-XML भौतिक अभ्यावेदन का वर्णन करने के लिए आवश्यक अतिरिक्त जानकारी ले जाने के लिए <xs:appinfo> एनोटेशन का उपयोग करते हुए W3C XML स्कीमा के एक सबसेट पर भाषा को आधार बनाने के लिए जल्दी निर्णय लिया गया था। यह एक स्थापित दृष्टिकोण है जो आज वाणिज्यिक प्रणालियों में पहले से ही उपयोग किया जा रहा है। DFDL इस दृष्टिकोण को अपनाता है और इसे कई पाठ या बाइनरी डेटा स्वरूपों का वर्णन करने में सक्षम एक खुले मानक में विकसित करता है।
भाषा पर कार्य जारी रहा, जिसके परिणामस्वरूप जनवरी 2011 में OGF प्रस्तावित अनुशंसा GFD.174 के रूप में DFDL 1.0 विनिर्देश का प्रकाशन हुआ।
आधिकारिक ओजीएफ सिफारिश फरवरी 2021 में प्रकाशित GFD.240 है जो सभी पूर्व संस्करणों को अप्रचलित कर देता है और आज तक नोट किए गए सभी मुद्दों को शामिल करता है ([https: के रूप में भी उपलब्ध है: //htmlpreview.github.io/?https://github.com/OpenGridForum/DFDL/blob/master/docs/current/gwdrp-dfdl-v1.0.8-GFD-RP.240.htm html])। DFDL का सारांश और इसकी विशेषताएं OGF पर उपलब्ध हैं। विनिर्देश के साथ किसी भी मुद्दे को GitHub इश्यू ट्रैकर्स का उपयोग करके ट्रैक किया जा रहा है।
कार्यान्वयन
डीएफडीएल प्रोसेसर के कार्यान्वयन जो डीएफडीएल स्कीमा का उपयोग करके डेटा को पार्स और क्रमबद्ध कर सकते हैं, उपलब्ध हैं।
- आईबीएम के पास प्रोडक्शन के लिए तैयार डीएफडीएल 1.0 स्ट्रीमिंग पार्सर, मॉडलर और विजुअल टेस्टर है।[2] यह आईबीएम ऐप कनेक्ट एंटरप्राइज सहित कई आईबीएम उत्पादों में उपलब्ध है (जिसे पहले IBM इंटीग्रेशन बस के रूप में जाना जाता था)। एक निःशुल्क डेवलपर संस्करण उपलब्ध है।
- Apache Daffodil एक ओपन-सोर्स DFDL प्रोसेसर है जिसमें पार्सर और अनपार्सर दोनों हैं, साथ ही Apache NiFi में एकीकरण, और XML Calabash XProc पाइपलाइन इंजन। यह सक्रिय विकास के तहत जारी है।
- यूरोपीय अंतरिक्ष एजेंसी परियोजना S2G डेटा व्यूअर में एक पार्सर DFDL4S शामिल है[3] जो DFDL 1.0 विनिर्देश के सबसेट को लागू करता है।
GitHub पर वाणिज्यिक और वैज्ञानिक डेटा प्रारूपों का वर्णन करने वाले DFDL स्कीमाओं के लिए एक सार्वजनिक भंडार स्थापित किया गया है। UN/EDIFACT, NACHA, MIL-STD-2045, NITF, और ISO8583 जैसे प्रारूपों के लिए DFDL स्कीमा मुफ्त डाउनलोड के लिए उपलब्ध हैं।
उदाहरण
एक उदाहरण के रूप में निम्न टेक्स्ट डेटा स्ट्रीम लें जो किसी व्यक्ति का नाम, आयु और स्थान देता है:
इस डेटा के तार्किक मॉडल को 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>
डेटा स्ट्रीम के भौतिक प्रतिनिधित्व को अतिरिक्त रूप से मॉडल करने के लिए, डीएफडीएल एक्सएस: एलिमेंट और एक्सएस: सीक्वेंस ऑब्जेक्ट्स पर एनोटेशन के साथ एक्सएमएल स्कीमा खंड को निम्नानुसार बढ़ाता है:
<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 पाठ प्रारूप में दर्शाया जाता है, जिसमें फ़ील्ड चर लंबाई के होते हैं और अल्पविराम द्वारा सीमांकित होते हैं
एक वैकल्पिक, अधिक कॉम्पैक्ट सिंटैक्स भी प्रदान किया जाता है, जहां डीएफडीएल गुणों को एक्सएमएल स्कीमा ऑब्जेक्ट्स पर गैर-देशी विशेषताओं के रूप में ले जाया जाता है।
<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="##0" dfdl:textNumberBase="10"/>
<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 रिलीज इस लक्ष्य की दिशा में एक बड़ा कदम है। क्षमता में इसके लिए समर्थन शामिल है:
- टेक्स्ट डेटा प्रकार जैसे स्ट्रिंग्स, संख्याएं, ज़ोनड दशमलव, कैलेंडर और बूलियन
- बाइनरी डेटा प्रकार जैसे कि दो पूरक पूर्णांक, बीसीडी, पैक्ड दशमलव, फ़्लोट्स, कैलेंडर और बूलियन
- फिक्स्ड लेंथ डेटा और टेक्स्ट या बाइनरी मार्कअप द्वारा सीमांकित डेटा
- COBOL, C (प्रोग्रामिंग भाषा) और PL/1 जैसी भाषाओं में पाई जाने वाली भाषा डेटा संरचनाएँ
- कॉमा से अलग किए गए मान, SWIFT, FIX, स्वास्थ्य स्तर 7, X12, HIPAA, EDIFACT, ISO 8583 जैसे उद्योग मानक
- कोई एन्कोडिंग और एंडियन-नेस
- मनमाना लंबाई का बिट डेटा
- पाठ संख्या और कैलेंडर के लिए पैटर्न भाषाएँ
- आदेशित, अक्रमित और अस्थायी सामग्री
- पार्सिंग और क्रमांकन पर डिफ़ॉल्ट मान
- आउट-ऑफ़-बैंड डेटा को संभालने के लिए शून्य मान क्षमता
- फिक्स्ड और वेरिएबल सरणियाँ
- XPath 2.0 अभिव्यक्ति भाषा जिसमें गतिशील डेटा मॉडल करने के लिए चर शामिल हैं
- सट्टा पार्सिंग और अन्य तंत्र विकल्पों और वैकल्पिकता को हल करने के लिए
- एक्सएमएल स्कीमा 1.0 नियमों का सत्यापन
- एक स्कोपिंग मैकेनिज्म जो कॉमन प्रॉपर्टी वैल्यू को कई एनोटेशन पॉइंट्स पर लागू करने की अनुमति देता है
- सूचना सेट से डेटा में तत्वों को छिपाना
- सूचना सेट के लिए तत्व मूल्यों की गणना करना
यह भी देखें
- ओपन ग्रिड फोरम
- W3C XML स्कीमा
संदर्भ