Jump to content

Формат данных Описание Язык

Язык описания формата данных ( DFDL , часто произносится как daff-o-dil ) — это язык моделирования для описания общих текстовых и двоичных данных стандартным способом. Он был опубликован как форума Open Grid. рекомендация [1] в феврале 2021 г. и в апреле 2024 г. был опубликован как стандарт ISO . [2]

Модель или схема DFDL позволяет считывать (или «анализировать») любые текстовые или двоичные данные из их собственного формата и представлять их как экземпляр набора информации . (Набор информации — это логическое представление содержимого данных, независимое от физического формата. Например, две записи могут быть в разных форматах, поскольку одна имеет поля фиксированной длины, а другая использует разделители, но они могут содержать абсолютно одинаковые данные, и оба будут представлены одним и тем же набором информации). Та же схема DFDL также позволяет брать данные из экземпляра набора информации и записывать (или «сериализовать») в их собственный формат.

DFDL носит описательный , а не предписывающий характер . DFDL не является форматом данных и не требует использования какого-либо конкретного формата данных. Вместо этого он предоставляет стандартный способ описания множества различных форматов данных. Этот подход имеет несколько преимуществ. [3] Это позволяет автору приложения разработать подходящее представление данных в соответствии со своими требованиями, описывая его стандартным способом, который может использоваться совместно, что позволяет нескольким программам напрямую обмениваться данными.

DFDL достигает этого, опираясь на возможности W3C XML Schema 1.0 . Используется подмножество схемы XML, достаточное для моделирования данных, отличных от XML. Мотивация такого подхода состоит в том, чтобы избежать изобретения совершенно нового языка схем и упростить преобразование общего текста и двоичных данных через набор информации DFDL в соответствующий XML-документ.

Образовательные материалы доступны в виде учебных пособий DFDL, видеороликов и нескольких практических занятий DFDL.

DFDL был создан в ответ на потребность в API-интерфейсах Grid, чтобы иметь возможность понимать данные независимо от источника. Требовался язык, способный моделировать широкий спектр существующих форматов текстовых и двоичных данных. ) была создана рабочая группа В 2003 году на Global Grid Forum (который позже стал Open Grid Forum для создания спецификации такого языка.

На раннем этапе было принято решение основать язык на подмножестве W3C XML Schema с использованием аннотаций <xs:appinfo> для переноса дополнительной информации, необходимой для описания физических представлений, отличных от XML. Это устоявшийся подход, который к 2003 году уже использовался в коммерческих системах. DFDL использует этот подход и развивает его в открытый стандарт, способный описывать многие форматы текстовых или двоичных данных.

Работа над языком продолжалась, в результате чего в январе 2011 года была опубликована спецификация DFDL 1.0 как предложенная рекомендация OGF GFD.174.

Официальная рекомендация OGF теперь называется GFD.240 , опубликованная в феврале 2021 года, которая устарела для всех предыдущих версий и включает в себя все отмеченные на сегодняшний день проблемы (также доступна в формате html ). Краткое описание DFDL и его функций доступно на OGF. Любые проблемы со спецификацией отслеживаются с помощью трекеров проблем GitHub .

В апреле 2024 года DFDL был опубликован как ISO/IEC 23415:2024 в рамках процесса общедоступных стандартов ISO (PAS) . Стандарт доступен в ISO, но он также останется общедоступным на форуме Open Grid.

Реализации

[ редактировать ]

Доступны реализации процессоров DFDL, которые могут анализировать и сериализовать данные с использованием схем DFDL.

  • У IBM есть несколько реализаций DFDL.
  • Apache Daffodil — это процессор DFDL с открытым исходным кодом, имеющий как парсер, так и депарсер, интегрированную среду разработки, которая является расширением VSCode, а также интеграцию с Apache NiFi и механизмом конвейера XML Calabash XProc . Он продолжает находиться в стадии активной разработки.
  • Проект Европейского космического агентства S2G Data Viewer включает парсер DFDL4S. [5] который реализует подмножество спецификации DFDL 1.0.

создан публичный репозиторий схем DFDL, описывающих форматы коммерческих и научных данных На GitHub . Схемы 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="##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 является важным шагом на пути к этой цели. Эта возможность включает поддержку:

  • Текстовые типы данных, такие как строки, числа, десятичные дроби с зонированием, календари и логические значения.
  • Двоичные типы данных, такие как целые числа с дополнением до двух, BCD, упакованные десятичные числа, числа с плавающей запятой, календари и логические значения.
  • Данные фиксированной длины и данные, разделенные текстовой или двоичной разметкой.
  • Структуры данных языка, встречающиеся в таких языках, как COBOL , C и PL/1.
  • Отраслевые стандарты, такие как CSV , SWIFT, FIX, HL7 , X12, HIPAA, EDIFACT , ISO 8583.
  • Любая кодировка и порядок байтов
  • Битовые данные произвольной длины
  • Языки шаблонов для текстовых чисел и календарей
  • Упорядоченный, неупорядоченный и плавающий контент
  • Значения по умолчанию при синтаксическом анализе и сериализации
  • Возможность нулевых значений для обработки внеполосных данных
  • Фиксированные и переменные массивы
  • Язык выражений XPath 2.0, включая переменные для моделирования динамических данных.
  • Спекулятивный анализ и другие механизмы для разрешения выбора и необязательности.
  • Проверка соответствия правилам XML Schema 1.0
  • Механизм области видимости, который позволяет применять значения общих свойств в нескольких точках аннотации.
  • Скрытие элементов данных из набора информации
  • Вычисление значений элементов для набора информации

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 24988d074b7ad5da7d44a73f48b46eb9__1713494760
URL1:https://arc.ask3.ru/arc/aa/24/b9/24988d074b7ad5da7d44a73f48b46eb9.html
Заголовок, (Title) документа по адресу, URL1:
Data Format Description Language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)