stringtranslate.com

Lenguaje de descripción del formato de datos

El lenguaje de descripción de formatos de datos ( DFDL , a menudo pronunciado daff-o-dil ) es un lenguaje de modelado para describir texto general y datos binarios de forma estándar. Se publicó como recomendación del Open Grid Forum [1] en febrero de 2021 y en abril de 2024 se publicó como estándar ISO . [2]

Un modelo o esquema DFDL permite leer (o "analizar") cualquier texto o dato binario desde su formato nativo y presentarlo como una instancia de un conjunto de información . (Un conjunto de información es una representación lógica del contenido de los datos, independiente del formato físico. Por ejemplo, dos registros podrían tener formatos diferentes, porque uno tiene campos de longitud fija y el otro usa delimitadores, pero podrían contener exactamente lo mismo datos, y ambos estarían representados por el mismo conjunto de información). El mismo esquema DFDL también permite tomar datos de una instancia de un conjunto de información y escribirlos (o "serializarlos") en su formato nativo.

DFDL es descriptivo y no prescriptivo . DFDL no es un formato de datos ni impone el uso de ningún formato de datos en particular. En cambio, proporciona una forma estándar de describir muchos tipos diferentes de formatos de datos. Este enfoque tiene varias ventajas. [3] Permite al autor de una aplicación diseñar una representación de datos adecuada de acuerdo con sus requisitos mientras la describe de una manera estándar que se puede compartir, lo que permite que múltiples programas intercambien directamente los datos.

DFDL logra esto basándose en las funciones del W3C XML Schema 1.0 . Se utiliza un subconjunto de esquemas XML, suficiente para permitir el modelado de datos que no son XML. Las motivaciones para este enfoque son evitar inventar un lenguaje de esquema completamente nuevo y facilitar la conversión de texto general y datos binarios, a través de un conjunto de información DFDL, en un documento XML correspondiente.

El material educativo está disponible en forma de tutoriales DFDL, vídeos y varios laboratorios prácticos de DFDL.

Historia

DFDL se creó en respuesta a la necesidad de que las API de grid pudieran comprender los datos independientemente de su fuente. Se necesitaba un lenguaje capaz de modelar una amplia variedad de formatos de texto y datos binarios existentes. Se estableció un grupo de trabajo en el Foro Global Grid (que luego se convirtió en el Foro Open Grid ) en 2003 para crear una especificación para dicho lenguaje.

Desde el principio se tomó la decisión de basar el lenguaje en un subconjunto del esquema XML del W3C , utilizando anotaciones <xs:appinfo> para llevar la información adicional necesaria para describir representaciones físicas no XML. Este es un enfoque establecido que ya se estaba utilizando en 2003 en sistemas comerciales. DFDL adopta este enfoque y lo convierte en un estándar abierto capaz de describir muchos formatos de texto o datos binarios.

El trabajo continuó en el lenguaje, lo que resultó en la publicación de una especificación DFDL 1.0 como Recomendación propuesta por OGF GFD.174 en enero de 2011.

La Recomendación oficial de OGF ahora es GFD.240, publicada en febrero de 2021, que deja obsoletas todas las versiones anteriores e incorpora todos los problemas observados hasta la fecha (también disponible como html). Un resumen de DFDL y sus características está disponible en la OGF. Cualquier problema con la especificación se rastrea mediante rastreadores de problemas de GitHub.

En abril de 2024, DFDL se publicó como ISO/IEC 23415:2024 mediante el proceso de Normas ISO disponibles públicamente (PAS). El estándar está disponible en ISO, pero también permanecerá disponible públicamente en el Open Grid Forum.

Implementaciones

Se encuentran disponibles implementaciones de procesadores DFDL que pueden analizar y serializar datos utilizando esquemas DFDL.

Se ha establecido en GitHub un repositorio público para esquemas DFDL que describen formatos de datos comerciales y científicos. Los esquemas DFDL para formatos como UN/EDIFACT, NACHA, MIL-STD-2045, NITF e ISO8583 están disponibles para su descarga gratuita.

Ejemplo

Tomemos como ejemplo el siguiente flujo de datos de texto que proporciona el nombre, la edad y la ubicación de una persona:

El modelo lógico para estos datos se puede describir mediante el siguiente fragmento de un documento de esquema XML. El orden, los nombres, los tipos y la cardinalidad de los campos se expresan mediante el modelo de esquema XML.

<xs:esquema xmlns:xs= "http://www.w3.org/2001/XMLSchema" ... >  <xs:complexType nombre= "tipo_persona" > <xs:secuencia> <xs:elemento nombre= "nombre" tipo= "xs:cadena" /> <xs:elemento nombre= "edad" tipo= "xs:corto" / > <xs:element name= "condado" tipo= "xs:string" /> <xs:element name= "país" tipo= "xs:string" /> </xs:sequence> </xs:complexType>               </xs:esquema>

Para modelar adicionalmente la representación física del flujo de datos, DFDL aumenta el fragmento de esquema XML con anotaciones en los objetos xs:element y xs:sequence, de la siguiente manera:

<xs:esquema xmlns:dfdl= "http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs= "http://www.w3.org/2001/XMLSchema" ... >   <xs:complexType nombre= "tipo_persona" > <xs:secuencia> <xs:annotation><xs:appinfo fuente= "http://www.ogf.org/dfdl/" > <dfdl:sequence codificación= "ASCII" secuenciaKind= "ordenado" 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:elemento representación= "texto" lengthKind= "delimitado" codificación= "ASCII" textNumberRep= "estándar" 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:esquema>

Los atributos de propiedad en estas anotaciones DFDL expresan que los datos se representan en un formato de texto ASCII con campos de longitud variable y delimitados por comas.

También se proporciona una sintaxis alternativa más compacta, donde las propiedades DFDL se transportan como atributos no nativos en los propios objetos del esquema XML.

<xs:esquema xmlns:dfdl= "http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs= "http://www.w3.org/2001/XMLSchema" ... >   <xs:complexType nombre= "tipo_persona" > <xs:sequence dfdl:encoding= "ASCII" dfdl:sequenceKind= "ordenado" dfdl:separator= "," dfdl:separatorType= "infix" dfdl:separatorPolicy= "requerido" > <xs: nombre del elemento= "nombre" tipo= "xs:cadena" dfdl:lengthKind= "delimitado" dfdl:codificación= "ASCII" /> <xs: nombre del elemento= "edad" tipo= "xs:corto" dfdl: representación= "texto" dfdl:lengthKind= "delimitado" dfdl:codificación= "ASCII" dfdl:textNumberRep= "estándar" dfdl:textNumberPattern= "##0" dfdl:textNumberBase= "10" /> <xs: nombre del elemento= "condado" tipo= "xs:string" dfdl:lengthKind= "delimitado" dfdl:encoding= "ASCII" /> <xs:element name= "país" tipo= "xs:string" dfdl:lengthKind= "delimitado" dfdl :codificación= "ASCII" /> </xs:sequence> </xs:complexType>                                     </xs:esquema>

Características

El objetivo de DFDL es proporcionar un lenguaje de modelado rico capaz de representar cualquier formato de texto o datos binarios. La versión 1.0 es un paso importante hacia este objetivo. La capacidad incluye soporte para:

Ver también

Referencias

  1. ^ OGF GFD.240
  2. ^ ISO/IEC 23415:2024
  3. ^ La sintaxis de los datos, blog de Mike Beckerle
  4. ^ IBM DFDL 1.0
  5. ^ DFDL4S

enlaces externos