Langage de description de format de données - Data Format Description Language

Le langage de description de format de données (DFDL, souvent prononcé daff-o-dil ), publié en tant que recommandation proposée par le forum Open Grid en janvier 2011, est un langage de modélisation pour décrire du texte général et des données binaires de manière standard. Un modèle ou schéma DFDL permet à tout texte ou donnée binaire d'être lu (ou « analysé ») à partir de son format natif et d'être présenté comme une instance d'un ensemble d'informations . (Un ensemble d'informations est une représentation logique du contenu des données, indépendamment du format physique. Par exemple, deux enregistrements peuvent être dans des formats différents, car l'un a des champs de longueur fixe et l'autre utilise des délimiteurs, mais ils peuvent contenir exactement les mêmes données, et seraient tous deux représentés par le même ensemble d'informations). Le même schéma DFDL permet également aux données d'être extraites d'une instance d'un ensemble d'informations et écrites (ou « sérialisées ») dans son format natif.

DFDL est descriptif et non prescriptif . DFDL n'est pas un format de données et n'impose pas l'utilisation d'un format de données particulier. Au lieu de cela, il fournit un moyen standard de décrire de nombreux types de formats de données. Cette approche a de nombreux avantages. Il permet à un auteur d'application de concevoir une représentation de données appropriée en fonction de ses besoins tout en la décrivant d'une manière standard qui peut être partagée, permettant à plusieurs programmes d'échanger directement les données.

DFDL y parvient en s'appuyant sur les fonctionnalités du W3C XML Schema 1.0 . Un sous-ensemble de XML Schema est utilisé, suffisant pour permettre la modélisation de données non XML. Les motivations de cette approche sont d'éviter d'inventer un langage de schéma complètement nouveau et de faciliter la conversion de texte général et de données binaires, via un ensemble d'informations DFDL, en un document XML correspondant.

Du matériel pédagogique est disponible sous la forme de didacticiels DFDL, de vidéos et de plusieurs laboratoires pratiques DFDL.

Histoire

DFDL a été créé en réponse à un besoin d'API de grille pour pouvoir comprendre les données quelle que soit leur source. Il fallait un langage capable de modéliser une grande variété de formats de texte et de données binaires existants. Un groupe de travail a été créé au Global Grid Forum (qui est devenu plus tard l' Open Grid Forum ) en 2003 pour créer une spécification pour un tel langage.

Une décision a été prise dès le début de baser le langage sur un sous-ensemble du schéma XML du W3C , en utilisant des annotations <xs:appinfo> pour transporter les informations supplémentaires nécessaires pour décrire les représentations physiques non XML. Il s'agit d'une approche établie qui est déjà utilisée aujourd'hui dans les systèmes commerciaux. DFDL adopte cette approche et la transforme en un standard ouvert capable de décrire de nombreux formats de texte ou de données binaires.

Les travaux se sont poursuivis sur le langage, aboutissant à la publication d'une spécification DFDL 1.0 en tant que recommandation proposée OGF GFD.174 en janvier 2011.

La recommandation officielle de l'OGF est GFD.240 publiée en février 2021 qui rend obsolète toutes les versions antérieures et intègre tous les problèmes notés à ce jour (également disponible en html ). Un résumé de DFDL et de ses fonctionnalités est disponible à l'OGF. Tous les problèmes avec la spécification sont suivis à l'aide des outils de suivi des problèmes GitHub .

Implémentations

Des implémentations de processeurs DFDL capables d'analyser et de sérialiser des données à l'aide de schémas DFDL sont disponibles.

Un référentiel public pour les schémas DFDL décrivant les formats de données commerciaux et scientifiques a été créé sur GitHub . Les schémas DFDL pour des formats tels que UN/EDIFACT, NACHA, MIL-STD-2045, NITF et ISO8583 sont disponibles en téléchargement gratuit.

Exemple

Prenons comme exemple le flux de données texte suivant qui donne le nom, l'âge et la localisation d'une personne :

Le modèle logique de ces données peut être décrit par le fragment suivant d'un document XML Schema. L'ordre, les noms, les types et la cardinalité des champs sont exprimés par le modèle de schéma 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>

Pour modéliser en plus la représentation physique du flux de données, DFDL augmente le fragment de schéma XML avec des annotations sur les objets xs:element et xs:sequence, comme suit :

<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>

Les attributs de propriété sur ces annotations DFDL expriment que les données sont représentées dans un format texte ASCII avec des champs de longueur variable et délimités par des virgules

Une syntaxe alternative plus compacte est également fournie, dans laquelle les propriétés DFDL sont transportées en tant qu'attributs non natifs sur les objets XML Schema eux-mêmes.

<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>

Caractéristiques

L'objectif de DFDL est de fournir un langage de modélisation riche capable de représenter n'importe quel format de texte ou de données binaires. La version 1.0 est une étape majeure vers cet objectif. La capacité comprend la prise en charge de :

  • Types de données texte tels que chaînes, nombres, décimales zonées, calendriers et booléens
  • Types de données binaires tels que les entiers complément à deux, BCD, nombres décimaux condensés, flottants, calendriers et booléens
  • Données de longueur fixe et données délimitées par du texte ou un balisage binaire
  • Structures de données de langage trouvées dans des langages comme COBOL , C et PL/1
  • Normes de l'industrie telles que CSV , SWIFT, FIX, HL7 , X12, HIPAA, EDIFACT , ISO 8583
  • Tout encodage et endian-ness
  • Données binaires de longueur arbitraire
  • Langues de modèle pour les numéros de texte et les calendriers
  • Contenu ordonné, non ordonné et flottant
  • Valeurs par défaut sur l'analyse et la sérialisation
  • Capacité de valeurs nulles pour la gestion des données hors bande
  • Tableaux fixes et variables
  • Langage d'expression XPath 2.0 incluant des variables pour modéliser des données dynamiques
  • Analyse spéculative et autres mécanismes pour résoudre les choix et l'optionnalité
  • Validation selon les règles XML Schema 1.0
  • Un mécanisme de portée qui permet d'appliquer des valeurs de propriété communes à plusieurs points d'annotation
  • Cacher des éléments dans les données de l'ensemble d'informations
  • Calcul des valeurs des éléments pour l'ensemble d'informations

Voir également

Les références

Liens externes