Формат данных Описание Язык - Data Format Description Language - Wikipedia

Формат данных Описание Язык (DFDL, часто произносится дафф-о-дил), опубликованная как Предлагаемая рекомендация форума Open Grid в январе 2011 г., представляет собой язык моделирования для описания общего текста и двоичных данных стандартным способом. Модель или схема DFDL позволяет считывать (или «анализировать») любые текстовые или двоичные данные из своего собственного формата и представлять как экземпляр набор информации. (Информационный набор - это логическое представление содержимого данных, не зависящее от физического формата. Например, две записи могут быть в разных форматах, потому что одна имеет поля фиксированной длины, а другая использует разделители, но они могут содержать точно такие же data, и оба будут представлены одним и тем же набором информации). Та же самая схема DFDL также позволяет брать данные из экземпляра набора информации и записывать (или «сериализовать») в их собственный формат.

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

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

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

История

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

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

Работа над языком продолжалась, в результате чего в январе 2011 года была опубликована спецификация DFDL 1.0 в виде предлагаемой рекомендации OGF GFD.174. Последняя редакция GFD.207 опубликовано в ноябре 2014 г., которое отменяет GFD.174 и включает все проблемы, отмеченные на сегодняшний день (также доступно как html ). А резюме DFDL и его функций доступны на OGF. Любые проблемы со спецификацией отслеживаются с помощью Система отслеживания проблем Redmine.

Реализации

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

А презентация доступна который описывает IBM DFDL и Daffodil.

Публичный репозиторий схем DFDL, описывающих коммерческие и научные форматы данных, был создан на GitHub. Схемы DFDL для таких форматов, как UN / EDIFACT, NACHA и ISO8583, доступны для бесплатной загрузки.

Пример

В качестве примера возьмем следующий поток текстовых данных, в котором указаны имя, возраст и местонахождение человека:

Логическая модель для этих данных может быть описана следующим фрагментом документа XML-схемы. Порядок, имена, типы и количество полей выражаются моделью схемы XML.

 xmlns: xs ="http://www.w3.org/2001/XMLSchema" ...> имя ="person_type">  <xs:sequence>     имя ="имя" type ="xs: строка"/>     имя ="возраст" type ="хз: короткие"/>     имя ="округ" type ="xs: строка"/>     имя ="страна" type ="xs: строка"/>  </xs:sequence></xs:complexType></xs:schema>

Чтобы дополнительно смоделировать физическое представление потока данных, DFDL дополняет фрагмент схемы XML аннотациями к объектам xs: element и xs: sequence следующим образом:

 xmlns: dfdl ="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns: xs ="http://www.w3.org/2001/XMLSchema" ...> имя ="person_type">  <xs:sequence>      источник ="http://www.ogf.org/dfdl/">         кодировка ="ASCII" sequenceKind ="упорядоченный"                        разделитель ="," separatorType ="инфикс" separatorPolicy ="требуется"/>                       </xs:appinfo></xs:annotation>     имя ="имя" type ="xs: строка">        источник ="http://www.ogf.org/dfdl/">         lengthKind ="с разделителями" кодировка ="ASCII"/>                         </xs:appinfo></xs:annotation>    </xs:element>     имя ="возраст" type ="хз: короткие">        источник ="http://www.ogf.org/dfdl/">         представление ="текст" lengthKind ="с разделителями" кодировка ="ASCII"                      textNumberRep ="стандарт" textNumberPattern ="#0" textNumberBase ="10"/>                         </xs:appinfo></xs:annotation>    </xs:element>     имя ="округ" type ="xs: строка">        источник ="http://www.ogf.org/dfdl/">         lengthKind ="с разделителями" кодировка ="ASCII"/>                         </xs:appinfo></xs:annotation>    </xs:element>     имя ="страна" type ="xs: строка">        источник ="http://www.ogf.org/dfdl/">         lengthKind ="с разделителями" кодировка ="ASCII"/>                         </xs:appinfo></xs:annotation>    </xs:element>  </xs:sequence></xs:complexType></xs:schema>

Атрибуты свойств в этих аннотациях DFDL выражают, что данные представлены в текстовом формате ASCII с полями переменной длины и разделенными запятыми.

Также предоставляется альтернативный, более компактный синтаксис, в котором свойства DFDL переносятся как неродные атрибуты в самих объектах схемы XML.

 xmlns: dfdl ="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns: xs ="http://www.w3.org/2001/XMLSchema" ...> имя ="person_type">   dfdl: кодировка ="ASCII" dfdl: sequenceKind ="упорядоченный"                dfdl: separator ="," dfdl: separatorType ="инфикс" dfdl: separatorPolicy ="требуется">     имя ="имя" type ="xs: строка"                dfdl: lengthKind ="с разделителями" dfdl: кодировка ="ASCII"/>                        имя ="возраст" type ="хз: короткие"                dfdl: представление ="текст" dfdl: lengthKind ="с разделителями" dfdl: кодировка ="ASCII"                dfdl: textNumberRep ="стандарт" dfdl: textNumberPattern ="##0" dfdl: textNumberBase ="10"/>                        имя ="округ" type ="xs: строка"                dfdl: lengthKind ="с разделителями" dfdl: кодировка ="ASCII"/>                        имя ="страна" type ="xs: строка"                dfdl: lengthKind ="с разделителями" dfdl: кодировка ="ASCII"/>                     </xs:sequence></xs:complexType></xs:schema>

Функции

Цель DFDL - предоставить богатый язык моделирования, способный представлять любой текстовый или двоичный формат данных. Выпуск 1.0 - важный шаг к этой цели. Эта возможность включает поддержку:

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

Смотрите также

Рекомендации

  1. ^ Синтаксис данных, блог Майка Беккерла
  2. ^ IBM DFDL 1.0
  3. ^ Нарцисс: DFDL с открытым исходным кодом
  4. ^ "Статус нарцисса". Tresys. Получено 18 февраля 2019.
  5. ^ DFDL4S

внешняя ссылка