Обмен данными — это процесс преобразования данных, структурированных по исходной схеме , в целевую схему, так что целевые данные являются точным представлением исходных данных. [1] Обмен данными позволяет обмениваться данными между различными компьютерными программами.
Это похоже на связанную концепцию интеграции данных, за исключением того, что данные фактически реструктурируются (с возможной потерей контента) при обмене данными. Может не быть способа преобразовать экземпляр с учетом всех ограничений. И наоборот, может быть множество способов преобразовать экземпляр (возможно, бесконечно много), и в этом случае должен быть определен и обоснован «лучший» выбор решений.
В некоторых доменах может существовать несколько десятков различных исходных и целевых схем (собственные форматы данных). «Обменный» или «формат обмена» часто разрабатывается для одного домена, а затем пишутся необходимые процедуры (отображения) для (косвенного) преобразования/трансляции каждой исходной схемы в каждую целевую схему, используя формат обмена в качестве промежуточного шага. [2] Это требует гораздо меньше работы, чем написание и отладка сотен различных процедур, которые потребовались бы для прямой трансляции каждой исходной схемы в каждую целевую схему.
Примерами таких преобразующих форматов обмена являются:
Существует два типа обмена данными: широковещательный обмен данными и одноранговый (одноадресный) обмен данными. [9]
В широковещательной сети данные передаются всем участникам одновременно. Так же, как и в случае конференц-связи, все участники получают от говорящего одну и ту же информацию в одно и то же время. [10]
В одноранговой (одноадресной) модели обмена данными данные отправляются только целевому получателю, указанному конкретным адресом. Так же, как телефонный звонок или электронная почта, информация передается только между двумя участниками сети. [11]
Язык/формат обмена данными (или обмена) — это язык, который не зависит от предметной области и может использоваться для данных из любой дисциплины. [12] Они «развились из языка, ориентированного на разметку и отображение, в язык, который в дальнейшем будет поддерживать кодирование метаданных, описывающих структурные атрибуты информации». [13]
Практика показала, что некоторые типы формальных языков лучше подходят для этой задачи, чем другие, поскольку их спецификация обусловлена формальным процессом, а не конкретными потребностями в реализации программного обеспечения. Например, XML — это язык разметки , который был разработан для создания диалектов (определения доменно-специфических подъязыков). [14] Однако он не содержит доменно-специфических словарей или типов фактов. Для надежного обмена данными выгодно наличие стандартных словарей-таксономий и библиотек инструментов, таких как парсеры , валидаторы схем и инструменты преобразования. [ требуется цитата ]
Ниже приведен частичный список популярных универсальных языков, используемых для обмена данными в различных доменах.
Номенклатура
Примечания:
Популярность XML для обмена данными во Всемирной паутине имеет несколько причин. Прежде всего, он тесно связан с уже существующими стандартами Standard Generalized Markup Language (SGML) и Hypertext Markup Language (HTML), и как таковой парсер, написанный для поддержки этих двух языков, может быть легко расширен для поддержки XML. Например, XHTML был определен как формат, который является формальным XML, но правильно понимается большинством (если не всеми) парсерами HTML. [14]
YAML — это язык, который был разработан, чтобы быть понятным человеку (и, таким образом, легко редактироваться любым стандартным текстовым редактором). Его понятие часто похоже на reStructuredText или синтаксис Wiki, которые также пытаются быть понятными как людям, так и компьютерам. YAML 1.2 также включает в себя сокращенное понятие, которое совместимо с JSON, и, таким образом, любой документ JSON также является допустимым YAML; однако это не относится к обратному. [16]
REBOL — это язык, который был разработан, чтобы быть понятным человеку и простым для редактирования с помощью любого стандартного текстового редактора. Для достижения этого он использует простой синтаксис свободной формы с минимальной пунктуацией и богатым набором типов данных. Типы данных REBOL, такие как URL-адреса, электронные письма, значения даты и времени, кортежи, строки, теги и т. д., соответствуют общим стандартам. REBOL разработан так, чтобы не нуждаться в каком-либо дополнительном метаязыке, будучи разработанным в метациклическом стиле. Метацикличность языка является причиной того, что, например, диалект Parse, используемый (не исключительно) для определений и преобразований диалектов REBOL, сам по себе также является диалектом REBOL. [17] REBOL был использован в качестве источника вдохновения для JSON. [18]
Gellish English — это формализованное подмножество естественного английского языка, которое включает в себя простую грамматику и большой расширяемый словарь-таксономию английского языка , который определяет общую и специфическую для домена терминологию (термины для понятий), тогда как понятия организованы в иерархию подтип-супертип (таксономию), которая поддерживает наследование знаний и требований. Словарь-таксономия также включает стандартизированные типы фактов (также называемые типами отношений). Термины и типы отношений вместе могут использоваться для создания и интерпретации выражений фактов, знаний, требований и другой информации. Gellish можно использовать в сочетании с SQL , RDF/XML , OWL и различными другими метаязыками. Стандарт Gellish представляет собой комбинацию ISO 10303-221 (AP221) и ISO 15926. [19]
преобразования будут представлять собой язык и синтаксис, которые должны быть дисциплинарно и машинно-независимыми.