{{Short description|Data management process}} '''Data exchange''' is the process of moving data from one information system to another. It often involves transforming data that is native to the source system into a form that is consumable by the target system or to a standardized form that is consumable by any compatible system. In particular, data exchange allows data to be shared between computer programs.

Data exchange is similar to data integration except that data may be restructured with possible loss of content. There may be no way to transform a particular collection based on exchange constraints. Conversely, there may be multiple ways to transform the data, in which case one option must be identified in order to achieve compatibility between source and target.

There are two main types of data exchange: broadcast and peer-to-peer (a.k.a. unicast).<ref>{{Cite book |last1=Heidarzadeh |first1=A. |last2=Sprintson |first2=A. |chapter=Optimal exchange of data over broadcast networks with adversaries |date=2017-03-30 |title=2016 Information Theory and Applications Workshop (ITA) |pages=1–5 |doi=10.1109/ITA.2016.7888157 |isbn=978-1-5090-2529-9 }}</ref> For broadcast, data is transmitted simultaneously to all consumers. Just as a conference call, all participants get the same information from the speaker at the same time. <ref>{{Cite web |date=2023-03-20 |title=What is a Broadcast? |url=https://www.ionos.ca/digitalguide/server/know-how/broadcast/ |access-date=2024-04-03 |website=IONOS Digital Guide |language=en-CA}}</ref> For peer-to-peer, data is sent to a single receiver, defined by a specific address. For example, a letter goes to just one mail box.<ref>{{Cite web |date=2023-03-23 |title=Unicast |url=https://www.ionos.ca/digitalguide/server/know-how/unicast/ |access-date=2024-04-03 |website=IONOS Digital Guide |language=en-CA}}</ref>

== Single-domain == In some domains, a multiple source and target schema (proprietary data formats) may exist. An exchange or interchange format is often developed for a single domain, and then necessary routines (mappings) are written to (indirectly) transform/translate each and every source schema to each and every target schema by using the interchange format as an intermediate step. That requires less work than writing and debugging the many routines that would be required to directly translate each source schema directly to each target schema.

Examples of these transformative interchange formats include:

* Standard Interchange Format for geospatial data; * Data Interchange Format for spreadsheet data; * Open Document Format for spreadsheets, charts, presentations and word processing documents; * GPS eXchange Format or Keyhole Markup Language for describing GPS data; * GDSII for integrated circuit layout.

== {{anchor|Languages}}Representation == A data exchange (a.k.a. interchange) language defines a domain-independent way to represent data.<ref name="BillingsleyGeneral88">{{cite journal |title=General Data Interchange Language |journal=ISPRS Archives |author=Billingsley, F.C. |volume=27 |issue=B3 |pages=80–91 |year=1988 |url=http://www.isprs.org/proceedings/XXVII/congress/part3/default.aspx |access-date=25 May 2018 |quote=The transformation routines will constitute a language and syntax which must be discipline and machine independent.}}</ref> These languages have evolved from being markup and display-oriented to support the encoding of metadata that describes the structural attributes of the information.<ref name="NurseitovComparison09">{{cite journal |title=Comparison of JSON and XML Data Interchange Formats: A Case Study |journal=Scenario |author=Nurseitov, N. |author2=Paulson, M. |author3=Reynolds, R. |author4=Izurieta, C. |pages=157–162 |year=2009}}</ref>

Practice has shown that certain types of formal languages are better suited for this task than others, since their specification is driven by a formal process instead of particular software implementation. For example, XML is a markup language that was designed to enable the creation of dialects (the definition of domain-specific sublanguages).<ref name="LewisAdvanced09">{{cite book |url=https://books.google.com/books?id=HTtFEKPBtcsC&pg=PA5 |title=AdvancED CSS |author=Lewis, J. |author2=Moscovitz, M. |publisher=APress |pages=5–6 |year=2009 |isbn=9781430219323 |access-date=25 May 2018}}</ref> However, it does not contain domain-specific dictionaries or fact types. Beneficial to a reliable data exchange is the availability of standard dictionaries-taxonomies and tools libraries such as parsers, schema validators, and transformation tools.{{Citation needed|date=May 2018 |reason=While I can recognize the use of these tools as part of the data exchange process, I can't find a source (May 2018) that says all of these together are beneficial to data exchange.}}

=== XML === The popularity of XML for data exchange on the World Wide Web has several reasons. First of all, it is closely related to the preexisting standards Standard Generalized Markup Language (SGML) and Hypertext Markup Language (HTML), and as such a parser written to support these two languages can be easily extended to support XML as well. For example, XHTML has been defined as a format that is formal XML, but understood correctly by most (if not all) HTML parsers.<ref name="LewisAdvanced09" />

=== YAML === YAML was designed to be human-readable and authored via a text editor with notion similar to reStructuredText and wiki syntax. YAML 1.2 also includes a shorthand notion that is compatible with JSON, and as such any JSON document is also valid YAML; this however does not hold the other way.<ref name="BenderskyJSON08">{{cite web |url=https://eli.thegreenplace.net/2008/11/22/json-yaml-but-yaml-json |title=JSON is YAML, but YAML is not JSON |author=Bendersky, E. |work=Eli Bendersky's website |date=22 November 2008 |access-date=29 May 2018}}</ref>

=== REBOL === REBOL was designed to be human-readable and authored via a text editor. It uses a simple free-form syntax with minimal punctuation and a rich set of data types (such as URL, email, date and time, tuple, string, tag) that respect common standards. It is designed to not need any additional meta-language, being designed in a metacircular fashion which is why the parse dialect used for definitions and transformations of REBOL dialects is also itself a dialect of REBOL.<ref name="SassenrathTheREBOL00">{{cite journal |title=The REBOL Scripting Language |journal=Dr. Dobb's Journal |author=Sassenrath, C. |volume=25 |issue=314 |pages=64–8 |year=2000 |url=http://www.drdobbs.com/embedded-systems/the-rebol-scripting-language/184404172 |access-date=29 May 2018}}</ref> REBOL was used as a source of inspiration for JSON.<ref name="SassenrathOnJSON12">{{cite web |url=http://www.rebol.com/article/0522.html |title=On JSON and REBOL |author=Sassenrath, C. |work=REBOL.com |date=13 December 2012 |access-date=29 May 2018}}</ref>

=== Gellish === Gellish English is a formalized subset of natural English (language), which includes a simple grammar and a large, extensible dictionary (taxonomy) that defines the general and domain specific terminology, whereas the concepts are arranged in a hierarchy, which supports inheritance of knowledge and requirements. The dictionary also includes standardized fact types. The terms and relation types together can be used to create and interpret expressions of facts, knowledge, requirements and other information. Gellish can be used in combination with SQL, RDF/XML, OWL and various other meta-languages. The Gellish standard is a combination of ISO 10303-221 (AP221) and ISO 15926.<ref name="VanRenssenATax07">{{cite journal |title=A Taxonomy of Functions in Gellish English |journal=Proceedings from the International Conference on Engineering Design 2007 |author=van Renssen, A. |author2=Vermaas, P.E. |author3=Zwart, S.D. |page=DS42_P_230 |year=2007 |url=https://www.designsociety.org/publication/25607/A+Taxonomy+of+Functions+in+Gellish+English |access-date=29 May 2018}}</ref>

=== List === The following describes and compares popular data exchange languages. <!-- Ensure data in columns match column definitions below -->

{| class="wikitable sortable" style="font-size: 85%; text-align: center; width: auto;" ! Name ! <small>Schemas</small> ! <small>Flexible</small> ! <small>Semantic verification</small> ! <small>Dictionary</small> ! <small>Information Model</small> ! <small>Synonyms and homonyms</small> ! <small>Dialecting</small> ! <small>Web standard</small> ! <small>Trans-formations</small> ! <small>Light-weight</small> ! <small>Human readable</small> ! <small>Compatibility</small> |- | {{rh}} class="table-rh" |RDF | {{yes}}{{Ref label|feat-rdf|1}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{partial}} | Subset of Semantic web |- | {{rh}} class="table-rh" |XML | {{yes}}{{Ref label|feat-schema|2}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | subset of SGML, HTML |- | {{rh}} class="table-rh" |Atom | {{yes}} | {{unk}} | {{unk}} | {{unk}} | {{no}} | {{unk}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{no}} | XML dialect |- | {{rh}} class="table-rh" |JSON | {{no}} | {{unk}} | {{unk}} | {{unk}} | {{no}} | {{unk}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | subset of YAML |- | {{rh}} class="table-rh" |YAML | {{no}}{{Ref label|feat-ext|3}} | {{unk}} | {{unk}} | {{unk}} | {{no}} | {{unk}} | {{no}} | {{no}} | {{no}}{{Ref label|feat-ext|3}} | {{yes}} | {{yes}}{{Ref label|feat-yaml-readable|4}} | superset of JSON |- | {{rh}} class="table-rh" |REBOL | {{yes}}{{Ref label|feat-rebol-parse|7}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}}{{Ref label|feat-rebol-parse|7}} | {{yes}} | {{yes}}{{Ref label|feat-rebol-readable|5}} | |- | {{rh}} class="table-rh" |Gellish | {{yes}} | {{yes}} | {{yes}} | {{yes}}{{Ref label|feat-gellish-dict|8}} | {{no}} | {{yes}} | {{yes}} | ISO | {{no}} | {{yes}} | {{partial}}{{Ref label|feat-gellish-readable|6}} | SQL, RDF/XML, OWL |}

;Columns * Schemas – Whether supports representing domain specific data structure definition * Flexible – Whether supports extension of the semantic expression capabilities without modifying the schema * Semantic verification – Whether supports semantic verification of the correctness of expressions in the language * Dictionary – Whether includes a dictionary and a taxonomy (hierarchy) of concepts with inheritance * Information model – Whether supports an information model * Synonyms and homonyms – Whether supports the use of synonyms and homonyms in expressions * Dialecting – Whether is available in multiple natural languages or dialects * Web standard – Whether is standardized by a recognized body * Transformations – Whether includes a translation to other standards * Lightweight – Whether a lightweight version is available * Human readable – Whether expressions are understandable without training<ref name="OxfordHR">{{cite web |url=https://en.oxforddictionaries.com/definition/us/human-readable |archive-url=https://web.archive.org/web/20180530035730/https://en.oxforddictionaries.com/definition/us/human-readable |url-status=dead |archive-date=May 30, 2018 |title=human-readable |work=Oxford Dictionaries |publisher=Oxford University Press |access-date=29 May 2018}}</ref> * Compatibility – Which other tools can be used or are required

== See also == * {{Annotated link|Comma-separated values}} * {{Annotated link|communication protocol}} * {{Annotated link|Data transfer}} * {{Annotated link|Lightweight markup language}} * {{Annotated link|Modeling language}} * {{Annotated link|RSS}}

==Notes==

# {{note|feat-rdf}} RDF is a schema-flexible language. # {{note|feat-schema}} The schema of XML contains a very limited grammar and vocabulary. # {{note|feat-ext}} Available as an extension. # {{note|feat-yaml-readable}} In the default format, not the compact syntax. # {{note|feat-rebol-readable}} The syntax is fairly simple (the language was designed to be human-readable); the dialects may require domain knowledge. # {{note|feat-gellish-readable}} The standardized fact types are denoted by standardized English phrases, which interpretation and use needs some training. # {{note|feat-rebol-parse}} The Parse dialect is used to specify, validate, and transform dialects. # {{note|feat-gellish-dict}} The English version includes a Gellish English Dictionary-Taxonomy that also includes standardized fact types (= kinds of relations). == References == {{Reflist}}

{{Data Exchange}} {{Computer language}} {{Authority control}}

Category:Data management