SDMX-EDI is based on the EDI (Electronic Data Interchange) method for electronically communicating information between computer systems.
EDI originated in the 1970s and is characterised by a very terse text-based format for encoding the information. This terseness was originally needed due to the low communications bandwidths and processing power available. Over time, other formats such as XML became technically feasible as communications and computing improved, however EDI remains in use for the exchange of statistical data particularly in central banking.
SDMX-EDI is also known as GESMES/TS, a data model and message format designed specifically for the standardised exchange of statistical data and metadata. GESMES/TS is a derivation of the GESMES EDI message, a UN/CEFACT a standard using the EDIFACT syntax.
SDMX-EDI was intended for batch exchange of large amounts of time series data data between counterparties, its terseness allowing for extremely compact expression of large whole or partial data sets. Non time series data such as cross-sectional can be supported if represented as repackaged time series, but there is no direct support for cross-sectional data in this format.
In addition to only supporting time series, SDMX-EDI is limited to the SDMX version 1.0 information model meaning that more sophisticated features like transmitting reference metadata as part of the data messages as introduced in SDMX 3.0 are not supported.
The following is an example SDMX-EDI data message
UNA:+.? '
UNB+UNOC:3+Unknown+ANONYMOUS+200330:1255+IREF729132++SDMX-EDI'
UNH+MREF000001+GESMES:2:1:E6'
BGM+74'
NAD+Z02+WB'
NAD+MR+ANONYMOUS'
NAD+MS+Unknown'
DSI+GCI'
STS+3+7'
DTM+242:202003301255:203'
DTM+Z02:2008010120170101:711'
IDE+5+GCI'
GIS+AR3'
GIS+1:::-'
ARR++GHA:GCI:RANK:A:20082017:702:102+114+114+114+103+114+111+119+114+111'
ARR++GHA:GCI:VALUE:A:20082017:702:3.616139933+3.448062477+3.55568976+3.64915433+3.792629136+3.693773108+3.713529283+3.582722052+3.679439434+3.7227024636142'
UNT+15+MREF000001'
UNZ+1+IREF729132'
You’ll note that the equivalent message in SDMX-ML (XML) 2.1 structure specific is more readable, but also more verbose.
<message:StructureSpecificData xmlns:ss="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/data/structurespecific" xmlns:footer="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message/footer" xmlns:ns1="urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=WB:GCI(1.0):ObsLevelDim:TIME_PERIOD" xmlns:message="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message" xmlns:common="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message https://registry.sdmx.org/schemas/v2_1/SDMXMessage.xsd urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=WB:GCI(1.0):ObsLevelDim:TIME_PERIOD https://demo11.metadatatechnology.com/FusionRegistry/ws/public/sdmxapi/rest/schema/dataflow/WB/GCI/1.0?format=sdmx-2.1">
<message:Header>
<message:ID>IREF428900</message:ID>
<message:Test>false</message:Test>
<message:Prepared>2022-09-29T09:14:50Z</message:Prepared>
<message:Sender id="MT"/>
<message:Receiver id="guest"/>
<message:Structure structureID="WB_GCI_1_0" namespace="urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=WB:GCI(1.0):ObsLevelDim:TIME_PERIOD" dimensionAtObservation="TIME_PERIOD">
<common:StructureUsage>
<Ref agencyID="WB" id="GCI" version="1.0"/>
</common:StructureUsage>
</message:Structure>
<message:DataSetAction>Information</message:DataSetAction>
<message:Extracted>2022-09-29T09:14:50</message:Extracted>
<message:ReportingBegin>2008-01-01T00:00:00</message:ReportingBegin>
<message:ReportingEnd>2017-01-01T23:59:59</message:ReportingEnd>
</message:Header>
<message:DataSet ss:dataScope="DataStructure" xsi:type="ns1:DataSetType" ss:structureRef="WB_GCI_1_0">
<Series REF_AREA="GHA" INDICATOR="GCI" SUB_INDICATOR="RANK" FREQ="A">
<Obs TIME_PERIOD="2008" OBS_VALUE="102"/>
<Obs TIME_PERIOD="2009" OBS_VALUE="114"/>
<Obs TIME_PERIOD="2010" OBS_VALUE="114"/>
<Obs TIME_PERIOD="2011" OBS_VALUE="114"/>
<Obs TIME_PERIOD="2012" OBS_VALUE="103"/>
<Obs TIME_PERIOD="2013" OBS_VALUE="114"/>
<Obs TIME_PERIOD="2014" OBS_VALUE="111"/>
<Obs TIME_PERIOD="2015" OBS_VALUE="119"/>
<Obs TIME_PERIOD="2016" OBS_VALUE="114"/>
<Obs TIME_PERIOD="2017" OBS_VALUE="111"/>
</Series>
<Series REF_AREA="GHA" INDICATOR="GCI" SUB_INDICATOR="VALUE" FREQ="A">
<Obs TIME_PERIOD="2008" OBS_VALUE="3.616139933"/>
<Obs TIME_PERIOD="2009" OBS_VALUE="3.448062477"/>
<Obs TIME_PERIOD="2010" OBS_VALUE="3.55568976"/>
<Obs TIME_PERIOD="2011" OBS_VALUE="3.64915433"/>
<Obs TIME_PERIOD="2012" OBS_VALUE="3.792629136"/>
<Obs TIME_PERIOD="2013" OBS_VALUE="3.693773108"/>
<Obs TIME_PERIOD="2014" OBS_VALUE="3.713529283"/>
<Obs TIME_PERIOD="2015" OBS_VALUE="3.582722052"/>
<Obs TIME_PERIOD="2016" OBS_VALUE="3.679439434"/>
<Obs TIME_PERIOD="2017" OBS_VALUE="3.72270246361418"/>
</Series>
</message:DataSet>
</message:StructureSpecificData>
SDMX-EDI is still used for some data exchanges so the ability to convert data messages to and from the format remains useful.
Information such as embedded reference meteadata will be lost when converting from later SDMX-ML, SDMX-JSON and SDMX-CSV formats to SDMX-EDI.
In the next unit we’ll learn how to convert SDMX datasets in practice interactively using FMR’s web user interface