Wiki source code of SDMX STANDARDS

Version 16.7 by Helena on 2025/05/16 13:23

Hide last authors
Helena 7.2 1 {{box title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
Helena 2.1 5 **Revision History**
6
Helena 7.5 7 (% style="width:738.039px" %)
8 |(% style="width:187px" %)Revision|(% style="width:157px" %)Date|(% style="width:390px" %)Contents
9 |(% style="width:187px" %)DRAFT 1.0|(% style="width:157px" %)May 2021|(% style="width:390px" %)Draft release updated for SDMX 3.0 for public consultation
10 |(% style="width:187px" %)1.0|(% style="width:157px" %)October 2021|(% style="width:390px" %)Public Release for SDMX 3.0
Helena 2.1 11
12 = 1 Overview =
13
14 SDMX version 3.0 introduces new features, improvements and changes to the Standard in the following key areas:
15
16 **Information Model**
17
18 * Simplification and improvement of the reference metadata model
19 * Support for microdata
20 * Support for geospatial data
21 * Support for code list extension and discriminated union of code lists
22 * Improvements to structure mapping
23 * Improvements to code hierarchies for data discovery
24 * Improvements to constraints
25
26 **Versioning of Structural Metadata Artefacts**
27
Helena 7.4 28 * Adoption of the three-number semantic versioning standard for structural metadata artefacts ([[https:~~/~~/semver.org/>>https://semver.org/||rel="noopener noreferrer" target="_blank"]])
Helena 2.1 29
30 **REST Web Services Application Programming Interface (API)**
31
32 * Change to a single ‘structure’ resource for structure queries simplifying the REST API specification by reducing the number of resources to five
33 * Improvements to data queries
34 * Improvements to reference metadata queries
35 * Support for structural metadata maintenance using HTTP PUT, POST and DELETE verbs
36
37 **SOAP Web Services API**
38
Helena 7.3 39 * The SOAP web services API has been deprecated with version 3.0 standardising on REST**;**
Helena 2.1 40
41 **XML, JSON, CSV and EDI Transmission formats**
42
43 * The SDMX-ML, SDMX-JSON and SDMX-CSV specifications have been extended and modified where needed to support the new features and changes such as reference metadata and microdata
44 * Obsolete SDMX-ML data message variants including Generic, Compact, Utility and Cross-sectional have been deprecated standardising on Structure Specific Data as the sole XML format for data exchange
45 * The SDMX-EDI transmission format for structures and data has been deprecated
46 * The organisation of structures into ‘collections’ in SDMX-ML and SDMX-JSON structure messages has been flattened and simplified
47 * The option to reference structures in SDMX-ML and SDMX-JSON messages using Agency, ID and Version has been deprecated with URN now exclusively used for all non-local referencing purpose
48
49 **Breaking Changes**
50
51 Many of the changes made are ‘breaking’ meaning that, while conversion between versions may be possible in certain circumstances, the 3.0 specification is not directly backwardly compatible with earlier versions of the Standard.
52
53 A summary of the main breaking changes is given in chapter 2.
54
55 **Content of the Document**
56
57 The remainder of the document provides a summary of the main changes. More detailed information can be found the SDMX 3.0 Technical Specifications, in particular:
58
59 * Section 2 – Information Model
60 * Section 5 – Registry Specification
61 * Section 6 – Technical Notes
62 * SDMX-TWG GitHub for the REST API and the XML, JSON and CSV formats
63
64 = 2 Summary of Breaking Changes in 3.0 =
65
66 Version 3.0 introduces breaking changes into the web services API, transmission formats and information model. A summary is given in the table below.
67
Helena 11.1 68 == 2.1 Web Services API ==
Helena 2.1 69
Helena 7.4 70 (% style="width:948.039px" %)
71 |**REST API**|(% style="width:818px" %)(((
Helena 2.1 72 The REST API is not backwardly compatible due to modifications to the URLs and query parameters resulting in breaking changes in four of the five main resources:
73
74 * Structure queries
75 * Data queries
76 * Metadata queries
77 * Availability queries
78
79 Schema queries are backwardly compatible.
80
81 //Guidance for implementors//
82
83 REST API implementors may provide partial backward compatibility by using web server URL rewriting rules to translate version 2.1 structure queries to the 3.0 equivalent.
84
85 Implementors are also recommended to version their API services providing users with an explicit choice of which version to use.
86 )))
Helena 7.4 87 |**SOAP API**|(% style="width:818px" %)The SOAP API has been deprecated.
Helena 2.1 88
Helena 11.1 89 == 2.2 Transmission Formats ==
Helena 2.1 90
91 (((
Helena 7.4 92 (% style="width:952.039px" %)
93 |(% style="width:130px" %)**SDMX-ML**|(% style="width:820px" %)(((
Helena 2.1 94 The following legacy XML data messages have been deprecated:
95
96 SDMX-ML 1.0/2.0 Generic (time-series) data message
97
98 SDMX-ML 1.0/2.0 Compact (time-series) data message
99
100 SDMX-ML 1.0/2.0 Utility (time-series) data message
101
102 SDMX-ML 1.0/2.0 Cross-Sectional data message SDMX-ML 2.1 Generic data messages (for observations, time-series and cross-sectional data)
103
104 Structure Specific is the only data message option in version 3.0 but is not backwardly compatible with version 2.1 due to several changes including deprecation of the option to reference structures like the DSD, Dataflow and Provision Agreement using their Agency, ID and Version. The time series variant of the message has also been deprecated.
105
106 The SDMX-ML structure message is not backwardly compatible primarily due to:
107
108 * Changes to the information model
Helena 7.5 109 * Changes to the way the structures are organised into ‘collections’ within the message
Helena 2.1 110 * Deprecation of the Agency, ID, Version option for referencing of structures in messages
111 )))
Helena 7.4 112 |(% style="width:130px" %)**SDMX-JSON**|(% style="width:820px" %)(((
Helena 2.1 113 The JSON data message is not backwardly compatible with version 2.1 primarily due to changes needed to support the improved REST API data queries, in particular the ability to retrieve in one operation data from multiple datasets with potentially different Data Structure Definitions.
114
115 The JSON structure message is not backwardly compatible primarily due to:
116
117 * Changes to the information model
Helena 7.6 118 * Changes to the way the structures are organised into ‘collections’ within the message
Helena 2.1 119 * Deprecation of the Agency, ID, Version option for referencing of structures in messages
120 )))
Helena 7.4 121 |(% style="width:130px" %)**SDMX-EDI**|(% style="width:820px" %)The EDI format for both structures and data has been deprecated.
Helena 7.7 122 |(% style="width:130px" %)**SDMX-CSV**|(% style="width:820px" %)The CSV data and reference metadata messages are not backwardly compatible with those under version 2.1 due to changes to the structure of the messages needed to support new features such as the improved REST API data queries.
Helena 2.1 123 )))
124
Helena 11.1 125 == 2.3 Information Model ==
Helena 2.1 126
127 (((
Helena 7.4 128 (% style="width:955.039px" %)
129 |(% style="width:132px" %)**Data Structure Definition**|(% style="width:819px" %)(((
Helena 2.1 130 The version 3.0 Data Structure Definition (DSD) model is not directly backwardly compatible with 2.1 primarily due to the deprecation of the special MeasureDimension.
131
132 //Conversion guidance for implementors//
133
134 Version 2.1 DSDs can be converted to the 3.0 model by creating a measure with the “MEASURE” concept role applied as described in paragraph 3.5.
135
136 Version 3.0 DSDs cannot be reliably converted to the 2.1 model due to the introduction of new features such as multiple measures and value arrays for measures and attributes.
137 )))
Helena 7.4 138 |(% style="width:132px" %)**Structure mapping model**|(% style="width:819px" %)(((
Helena 2.1 139 The structure mapping model has changed significantly in version 3.0 with deprecation of the Structure Set maintainable artefact and introduction of five new ones: Representation Map and four variants of item scheme map.
140
141 //Conversion guidance for implementors//
142
143 Version 2.1 structure sets can be practically converted to the version 3.0 structure mapping model.
144
145 Conversion from the version 3.0 structure mapping model to 2.1 is generally possible. However, when attempting to convert mapping rules from 2.1 to 3.0 and back to 2.1, the resulting Structure Set will not be precisely the same as the original. In converting to version 3.0, the system must generate IDs for each of the new maintainable artefacts, but details of the original Structure Set artefacts are lost.
146 )))
Helena 7.4 147 |(% style="width:132px" %)**Reference metadata model**|(% style="width:819px" %)(((
Helena 2.1 148 The reference metadata model has changed in version 3.0 with modifications to the role of the Data Structure Definition, Metadata Structure Definition and Metadataflow artefacts. Metadata Provision Agreement and Metadata Provider Scheme have been added. Metadatasets are now identifiable.
149
150 Version 2.1 reference metadata models are not valid in version 3.0.
151
152 //Conversion guidance for implementors//
153
Helena 7.9 154 A version 2.1 Metadata Structure Definition can be converted to the version 3.0 model under some circumstances, but target information is either lost or has to be translated into a metadataflow. Further, conversion of a Data Structure Definition for collecting reference metadata against a dataset would need to make changes to the dataset’s Data Structure Definition. As the Data Structure Definition may not actually be specified, judgement would need to be taken, perhaps determining the most likely candidate by examining which already have metadata reported against their datasets. A 2.1 metadata report could be converted to a version 3.0 Metadataset if it is attached to a structure, but requires a Metadata Provision Agreement which would need to be created if not already in existence.
Helena 2.1 155
156 Conversion from the version 3.0 model to version 2.1 cannot be performed reliably. The process would need target information to be derived from analysis of the Metadataflows and Metadata Provision Agreements. Depending on the complexity it may not be possible to express that information in a version 2.1 Data Structure Definition.
157 )))
Helena 7.4 158 |(% style="width:132px" %)**Constraint model**|(% style="width:819px" %)(((
Helena 2.1 159 The version 2.1 Content Constraint artefact has been deprecated in version 3.0 and replaced by the Data Constraint for data, and the Metadata Constraint for reference metadata.
160
161 //Conversion guidance for implementors//
162
163 2.1 Content Constraints can be converted without loss to the equivalent version 3.0 Data Constraint model.
164
165 Conversion from 3.0 to 2.1 presents challenges where wildcards have been used, in those cases requiring expansion of the wildcard into explicit values.
166 )))
Helena 7.4 167 |(% style="width:132px" %)**Hierarchical codelist structures**|(% style="width:819px" %)(((
Helena 2.1 168 The version 2.1 Hierarchical Codelist artefact has been deprecated in version 3.0 and replaced by two new artefacts, Hierarchy and Hierarchy Association.
169
170 //Conversion guidance for implementors//
171
172 Version 2.1 Hierarchical Codelists can be successfully converted to the version 3.0 hierarchy model. Information on which artefacts to link the hierarchies to on what context would need to be added as a separate procedure.
173
174 Conversion from the version 3.0 model to version 2.1 is possible, but with loss of the linking information
175 )))
176 )))
177
178 = 3 Information Model =
179
Helena 11.1 180 == 3.1 Version 3.0 Information Model ==
Helena 2.1 181
182 [[image:SDMX 3-0-0 Major Changes FINAL-1.0_en_6fc573fe.png||height="404" width="718"]]
183
184 //Figure 1 Version 3.0 simplified Information Model UML class diagram with ‘heat map’ illustrating the areas with most change//
185
186 The schematic above is a simplified UML class diagram of the SDMX 3.0 information model illustrating the major areas of change as a ‘heat map’. Darker colours indicate where new structures have been added in version 3.0 or where structures have been significantly changed.
187
188 A number of ancillary structures including organisation schemes, process and reporting taxonomy are unchanged and have not been shown. Similarly, Organisation Scheme Map and Reporting Taxonomy Map have been omitted for simplicity. A schematic of the 2.1 model is given in Appendix A for comparison purposes.
189
Helena 11.1 190 == 3.2 Key Changes from Version 2.1 ==
Helena 2.1 191
192 New Maintainable Artefacts
193
194 * Structure Map
195 * Representation Map
196 * Organisation Scheme Map
197 * Concept Scheme Map
198 * Category Scheme Map
199 * Reporting Taxonomy Map
200 * Value List
201 * Hierarchy
202 * Hierarchy Association
203 * Metadata Constraint
204 * Data Constraint
205 * Metadata Provision Agreement
206 * Metadata Provider Scheme
207 * Metadataset
208
209 New Identifiable Artefacts
210
211 * GeoFeatureSetCode
212 * GeoGridCode
213 * Metadata Provider
214
215 Removed Maintainable Artefacts
216
217 * Structure Set – replaced by Structure Map and the four item scheme maps
Helena 7.10 218 * Hierarchical Codelist – replaced by Hierarchy and Hierarchy Association
219 * Constraint – replaced by Data Constraint and Metadata Constraint
Helena 2.1 220
221 Changed Maintainable Artefacts
222
223 * Data Structure Definition – support for microdatasets and reference metadata linked to data
224 * Metadataflow – simplifies exchange of reference metadata, in particular those linked to structures
225 * Metadata Structure Definition – simplified model for reference metadata
226 * Codelist – support for codelist extension and geospatial specialised codelists (GeographicCodelist, GeoGridCodelist)
227 * VTL Mapping Scheme – VTL Concept Mapping Scheme removed to align the VTL / SDMX interface with the 3.0 model
228
229 New Component Representation Types
230
231 * GeospatialInformation – a string type where the value is an expression defining a set of geographical features using a purpose-designed syntax
232
Helena 10.2 233 == 3.3 Areas Unchanged from Version 2.1 ==
Helena 2.1 234
235 The following areas of the information model are unchanged from version 2.1:
236
237 * Categories
238 * Concepts
239 * Data providers
240 * Agencies
241 * Data consumers
242 * VTL transformation and expressions – with the exception of VTL mapping scheme as already noted
243 * Reporting taxonomy
244 * Process
245
Helena 10.2 246 == 3.4 Reference Metadata ==
Helena 2.1 247
248 Reference metadata has been substantially re-designed for version 3.0 to simplify the model and better support practical use cases.
249
Helena 16.2 250 (% class="wikigeneratedid" id="HSimplifyMetadataStructureDefinition" %)
251 **Simplify Metadata Structure Definition**
Helena 2.1 252 The Metadata Structure Definition (MSD) has been simplified to remove target information, and the support of multiple report structures. The MSD now only contains Metadata Attributes which are used to define the structure of a report.
253
254 [[image:SDMX 3-0-0 Major Changes FINAL-1.0_en_ad5f5c97.png||height="346" width="494"]]
255
256 //Figure 2 version 2.1 Metadata Structure Definition (MSD)//
257
258 [[image:SDMX 3-0-0 Major Changes FINAL-1.0_en_f2695ed5.png||height="172" width="374"]]
259
260 //Figure 3 the simplified version 3.0 MSD//
261
Helena 15.7 262 (% class="wikigeneratedid" id="HChangetoreferencemetadatareportedagainstdata" %)
263 **Change to reference metadata reported against data**
Helena 2.1 264 Reference metadata associated with datasets, data series or observations are now reported with the data. The dataset’s DSD must reference an MSD to define the structure of its reference metadata. In practice reference metadata for data are transmitted as part of the data message. The metadata attributes are treated in a similar way to the data attributes appearing in the message at the dataset, data series or individual observation level as appropriate. In contrast to simple data attributes, metadata attributes defined by an MSD can be organised into a hierarchical structure as illustrated in Figure 3 above. For this reason, metadata attributes appear in data messages structured in the same way as metadata messages.
265
266 The SDMX-ML example below is an excerpt from a structure specific data message illustrating reporting of reference metadata with a hierarchical structure at the observation level.
267
268 For completeness, the excerpt also shows:
269
270 * OBS_STATUS – a simple observation-level data attribute
271 * TITLE – a multi-lingual data attribute
272 * SOURCE_AGENCY – a multi-value data attribute
273
Helena 13.2 274 > <Obs xsi:type="dsd:ObsType" OBS_VALUE="112" OBS_STAUS=”A” TIME_PERIOD="2010-09">
Helena 13.3 275 > <!—- complex multi-value and multi-lingual data attributes ~-~->
276 > <Comp id="TITLE" xsi:type="ns1:TITLE_ATTRIBUTE">
277 > <Value>
278 > <common:Text xml:lang="en">Some English Text</common:Text>
279 > <common:Text xml:lang="fr">Quelques textes en anglais</common:Text>
280 > </Value>
281 > </Comp>
282 > <Comp id="SOURCE_AGENCY" xsi:type="ns1:SOURCE_AGENCY_ATTRIBUTE">
283 > <Value>4F0</Value>
284 > <Value>4D0</Value>
285 > <Value>CZ2</Value>
286 > </Comp>
287 > <!—- metadata attributes are reported like in metadata messages ~-~->
Helena 13.4 288 > <Metadata>
289 > <Attribute id="COLLECTION">
290 > <Attribute id="METHOD">
291 > <Text lang="en">AAA</Text>
Helena 14.1 292 > </Attribute>
Helena 13.4 293 > </Attribute>
Helena 14.1 294 > <Attribute id="CONTACT">
295 > <Value>CONTACT 1</Value>
296 > <Attribute id="NAME">
297 > <Value>Contact 1 Name 1</Value>
298 > </Attribute>
299 > <Attribute id="NAME">
300 > <Value>Contact 1 Name 2</Value>
301 > </Attribute>
Helena 13.4 302 > </Attribute>
303 > <Attribute id="CONTACT">
Helena 14.1 304 > <Value>CONTACT 2</Value>
Helena 13.4 305 > <Attribute id="NAME">
306 > <Value>Contact 2 Name 1</Value>
Helena 14.1 307 > </Attribute>
308 > <Attribute id="NAME">
309 > <Value>Contact 2 Name 2</Value>
310 > </Attribute>
311 > </Attribute>
312 > </Metadata>
Helena 13.3 313 > </Obs>
Helena 2.1 314
Helena 15.6 315 (% class="wikigeneratedid" id="HNew-MetadataProvisionAgreement" %)
316 **New - Metadata Provision Agreement**
Helena 2.1 317 In version 2.1 a Provision Agreement could be used to report information against a Dataflow or Metadataflow. From version 3.0 this is managed by two separate structures, the Data Provision Agreement and the Metadata Provision Agreement.
318
Helena 15.6 319 (% class="wikigeneratedid" id="HMovetargettoMetadataflowandMetadataProvisionAgreement" %)
320 **Move target to Metadataflow and Metadata Provision Agreement**
Helena 2.1 321 For reference metadata that is reported against structures, the allowable targets information which is used to specify what structures the reference metadata can be reported against, has moved to the Metadataflow and can be further refined in the Metadata Provision Agreement.
322
Helena 15.6 323 (% class="wikigeneratedid" id="HAddmaintainablepropertiestoreferencemetadata" %)
324 **Add maintainable properties to reference metadata**
Helena 2.1 325 A Metadataset now has mandatory identification information, (owner id, id, version) enabling metadata providers to uniquely identify their reports for create, update or delete maintenance operations.
326
Helena 10.2 327 == 3.5 Microdata Exchange ==
Helena 2.1 328
329 Several changes have been made the Data Structure Definition to support microdata use cases in addition to aggregated time series.
330
Helena 15.5 331 (% class="wikigeneratedid" id="HMultiplemeasures" %)
332 **Multiple measures**
333 Multiple measures are a common characteristic of microdatasets. To support this use case, the MeasureDimension has been deprecated and replaced with the option to define zero or more measures. Measures now act like any other component in that they use concepts, can have their own local coded or uncoded representation defined within the Data Structure Definition, and can be either mandatory or conditional. Creating a measure with the “MEASURE” concept role applied emulates the version 2.1 MeasureDimension behaviour as illustrated in the SDMX-ML example below:
Helena 2.1 334
Helena 15.1 335 > <str:MeasureList id=”MeasureDescriptor”>
336 > <str:Measure id=”OBS_VALUE” minOccurs=”1” maxOccurs=”1” usage=”mandatory” > <str:ConceptIdentity>
337 > <Ref id=”OBS_VALUE” maintainableParentID=”CONCEPTS” agencyID=”SDMX” maintainableParentVersion=”1.0.0” />
338 > </str:ConceptIdentity>
339 > <str:LocalRepresentation>
340 > <str:TextFormat textType=”String” isMultiLingual=”true” />
341 > </str:LocalRepresentation>
342 > <str:ConceptRole>
343 > <Ref id=”MEASURE” maintainableParentID=”SDMX_CONCEPT_ROLES” agencyID=”SDMX” maintainableParentVersion=”1.0.0” />
344 > </str:ConceptRole>
345 > </str:Measure>
346 > ...
347 > <str:Measure>
348 > </str:MeasureList>
Helena 2.1 349
Helena 15.4 350 (% class="wikigeneratedid" id="HMulti-valuemeasuresandattributes" %)
351 **Multi-value measures and attributes**
Helena 15.2 352 Both measures and attributes have been extended with the option to take ‘arrays’ of 193 multiple coded or uncoded values. This supports use cases like multiple observation 194 status flags. New //minOccurs// and //maxOccurs// properties define the valid number of 195 values. The //usage// property separately defines whether the measure or attribute is //mandatory// or optional. In the SDMX-ML measure example above, the properties //minOccurs=”1” maxOccurs=”1” usage=”mandatory”// specify that OBS_VALUE must be 198 reported, and can only consist of a single value.
Helena 2.1 353
Helena 15.4 354 (% class="wikigeneratedid" id="HAttributesrelationshiptomeasures" %)
355 **Attributes relationship to measures**
Helena 2.1 356 In addition to attaching attributes to a specific level within the dataset, their relationship 202 to measures can also be defined.
357
Helena 15.4 358 (% class="wikigeneratedid" id="HValuelists" %)
359 **Value lists**
360 Value lists help in modelling microdata by providing an enumeration similar to code lists 206 but allowing any string values without being restricted to the rules of SDMX identifiers. That allows ValueItems (the equivalent to Code) to contain symbols like ‘¥’ and ‘€’, but also means they are not identifiable.
Helena 2.1 361
Helena 10.2 362 == 3.6 Geospatial Data Exchange ==
Helena 2.1 363
364 The version 3.0 model has been extended to provide explicit support for geospatial data.
365
Helena 16.3 366 (% class="wikigeneratedid" id="HGeospatialInformationtype" %)
367 **GeospatialInformation type**
Helena 2.1 368 A new GeospatialInformation string type has been added which can be used as the 214 representation for any dimension, attribute or measure component. The value which is a 215 string expression conforming to the syntax defined in Section 6 of the technical 216 specifications precisely defines a ‘Geo Feature Set’ – a collection of geographical 217 features like points, lines or polygons. Its use is recommended in conjunction with the “GEO_FEATURE_SET” concept role.
369
Helena 16.3 370 (% class="wikigeneratedid" id="HGeospatialcodelists" %)
371 **Geospatial code lists**
Helena 2.1 372 Two new specialised types of code list have been added where the definition of each code includes additional geospatial information in addition to the standard ID, name and description:
373
374 * GeographicCodelist – each item includes an element to represent a specific Geo Feature Set which is described using the same expression syntax as for GeospatialInformation type.
375 * GeoGridCodelist – A code list defining a geographical grid composed of cells representing regular squared portions of the Earth. Each item references a cell within the grid.
376
Helena 11.2 377 == 3.7 Structure Mapping ==
Helena 2.1 378
379 The Structure Set in version 2.1 is a container for many mapping structures including Data Structure Map, Codelist Map and Concept Map. For version 3.0 the Structure Set artefact has been deprecated and replaced with a number of new maintainables giving better flexibility and reusability, specifically: Structure Map, Concept Scheme Map, Representation Map, Reporting Taxonomy Map, Category Scheme Map and Organisation Scheme Map.
380
381 The version 2.1 Codelist Map been replaced with Representation Map which allows mappings to be defined between any combination of Code Lists, Value Lists and noncoded representations such as text strings and numbers.
382
Helena 15.3 383 (% class="wikigeneratedid" id="HMany-to-manysourceandtargetcomponents" %)
384 **Many-to-many source and target components**
Helena 2.1 385 Structure mapping rules may be defined with both multiple source components and multiple target components in contrast to version 2.1 where only one source and target was allowed. That supports many-to-many (n-n) mapping use cases where the output of a mapping rule may be dependent on the combination of a number of input components. For instance:
386
387 Set the output component INDICATOR=”DE_A” if the input components are FREQ=”A” and REF_AREA=”DE”.
388
389 Similarly, an n-n rule may also set the values of any number of output components:
390
391 Set the output components FREQ=”A”, REF_AREA=”DE” if the input component INDICATOR=”DE_A”.
392
393 **Fixed source and target**
394 The Structure Map may now define input or output components which have a fixed value.
395
Helena 15.3 396 (% class="wikigeneratedid" id="HTimerepresentationsmapping" %)
397 **Time representations mapping**
Helena 2.1 398 Non SDMX time representations may now be described in a Structure Map, allowing them to be mapped into SDMX time formats.
399
Helena 15.3 400 (% class="wikigeneratedid" id="HRegularexpressionandsubstringmappings" %)
401 **Regular expression and substring mappings**
Helena 2.1 402 All item maps allow the use of regular expressions and substrings to match source values, specifically: Concept Scheme Map, Reporting Taxonomy Map, Category Scheme Map and Organisation Scheme Map.
403
Helena 15.3 404 (% class="wikigeneratedid" id="HItemmapsvalidityperiod" %)
405 **Item maps validity period**
Helena 2.1 406 Item maps may further define the period for which the mapping is valid, meaning the mapping rule will only be applied if the row of information being mapped is within the period.
407
Helena 11.2 408 == 3.8 Constraints ==
Helena 2.1 409
410 Constraints in version 3.0 are modelled using two separate artefacts which replace the version 2.1 content constraint:
411
412 * data constraint for data; and
413 * metadata constraint for reference metadata.
414
415 Metadata constraint differs from its data counterpart in having a simplified cube region model better suited to reference metadata reporting use cases and not carrying details of the constrained targets – that information instead being defined directly within the metadataflow and Metadata Provision Agreement. Thus, metadata related constraints only specify constraints to the values of metadata attributes.
416
417 The ‘%’ wildcard character can now be used when defining cube region constraints to match multiple codes with a single expression, for instance for economic activity, ISIC4_% matches all codes beginning with ‘ISIC4_’ avoiding the need to maintain an explicit list.
418
419 The validity period definition has been moved from the constraint to the individual constraining terms, specifically CubeRegion, DataKeySet and MetadataTargetRegion providing more granular control.
420
421 Attachment constraints have been deprecated due to a lack of use cases.
422
Helena 11.2 423 == 3.9 Code List Extension ==
Helena 2.1 424
425 In addition to the two new specialised geospatial forms, the option has been added to define a code list as an extension of, or by inheriting codes from, other lists. An optional prefix can be added to inherited codes to disambiguate duplicates.
426
427 This feature allows new code lists to be easily derived from existing lists without the need to make and manually maintain copies. When querying for extended code list structures using the REST API, the option has been added to retrieve either the definition or the materialised list. Traditional literal lists of codes continue to be supported.
428
Helena 11.2 429 == 3.10 Discriminated Union of Code Lists ==
Helena 2.1 430
431 Combining code list extension with wildcarded constraints solves the discriminated union of code lists problem where a classification or breakdown has multiple “variants” which are all valid but mutually exclusive. A common example is economic activity where several alternative classification schemes are in use including ISIC revisions 1 to 4 and NACE as used in the European Community.
432
Helena 11.2 433 == 3.11 Code Hierarchies ==
Helena 2.1 434
435 Code hierarchies allow the definition of complex hierarchies of codes from potentially multiple lists for data discovery purposes. Hierarchical Codelist has been deprecated and replaced by two new artefacts: Hierarchy – the actual hierarchy of codes, and Hierarchy Association links hierarchies directly to any other identifiable object, a capability missing 312 from the version 2.1 model. Further, the linkage can be within a particular context, for instance linking a hierarchy to a dimension within the context of a specific Dataflow (dimension REF_AREA in the context of the ECB:EXR Dataflow).
436
437 = 4 Versioning of Structural Metadata Artefacts =
438
Helena 7.4 439 Version 3.0 adopts semantic versioning principles for versioning of metadata artefacts following the rules set out at __[[https:~~/~~/semver.org>>https://semver.org]] __However, this is not mandatory, and organisations may continue to use the pre-existing two-digit versioning strategy, or not to version artefacts by omitting the //version// property. The version number no longer defaults to 1.0 if not explicitly set.
Helena 2.1 440
441 Semantic version numbers are three digits:
442
443 MAJOR.MINOR.PATCH
444
445 Where
446
447 * The first digit (major) indicates that changes (either new features or bug fixes) are not backward compatible.
448 * The second digit (minor) indicates that features have been added in a backward compatible manner.
449 * The third digit (patch) indicates that bugs have been fixed in a backward compatible manner.
450
451 Examples:
452
453 SDMX:CL_AREA(1.0.0)
454 SDMX:CL_AREA(2.3.2)
455
456 == Dependency management ==
457
458 Additional constructs are possible for dependency management when referencing structures. For instance:
459
Helena 16.4 460 2.3+.1  Means the currently latest available version >= “2.3.1” and < “3.0.0” (all backwards compatible versions >= “2.3.1”).
461 2+.3.1  Means the currently latest available version >= “2.3.1” (even if not backwards compatible).
Helena 2.1 462
463 == Draft structures ==
464
465 A key principle is that semantically versioned structures are immutable and must not be changed without a corresponding change to the version number, except where explicitly marked as draft using extensions to the version number.
466
467 MAJOR.MINOR.PATCH-EXTENSION
468
Helena 16.5 469 1.10.0-draft  Means that version 1.10.0 is still being modified and may change – equivalent to setting isFinal=false in SDMX 2.1.
470 1.10.0-unstable  Alternative to -draft.
471 1.10.0-notfinal  Alternative to -draft.
Helena 2.1 472
473 The SDMX 2.1 isFinal property is deprecated in 3.0.
474
475 = 5 REST Web Services API =
476
Helena 11.1 477 == 5.1 Simplified list of resources ==
Helena 2.1 478
479 The version 3.0 REST API has just five main resources:
480
481 * structure
482 * data
483 * schema
484 * availability
485 * metadata
486
487 All structure and item queries have been organised under the structure resource in contrast to the version 2.1 API which specified a separate resource for each structure.
488
489 This and changes in the URLs and query parameters on the data, availability and metadata resources means that, with the exception of schema queries, the version 3.0 API is not backwardly compatible.
490
Helena 11.1 491 == 5.2 Improved data queries ==
Helena 2.1 492
493 Data queries have been changed to provide more granular selections from contexts wider than just a Dataflow.
494
Helena 16.6 495 (% class="wikigeneratedid" id="HExtendthecontextofdataretrieval" %)
496 **Extend the context of data retrieval**
Helena 2.1 497 Version 2.1 data queries always retrieved data from a single specific Dataflow. In version 3.0, the query context may be specified as:
498
499 * Dataflow;
500 * Data Structure Definition – i.e., all Dataflows that use it; or
501 * Provision Agreement – i.e., all Dataflows associated with it.
502
503 Data queries may also search across datasets, for instance “retrieve all data about a country”.
504
Helena 16.6 505 (% class="wikigeneratedid" id="HComponent-basedfilters" %)
506 **Component-based filters**
Helena 2.1 507 Expressions filtering on individual components can now be included as part of the data query URL.
508
509 /data/dataflow/ESTAT/ICP?c[REF_AREA]=CH&c[CONF_STATUS]=F
510
Helena 16.6 511 (% class="wikigeneratedid" id="HSupportforoperators" %)
512 **Support for operators**
Helena 2.1 513 Filter expressions can also include operators.
514
Helena 16.6 515 /data/dataflow/ESTAT/ICP?c[REF_AREA]=DE&c[ICP_ITEM]=sw:01&c[TIME_PERIOD]=ge:2015
Helena 2.1 516
Helena 16.6 517 Operators include:
518
Helena 7.4 519 (% style="width:531.039px" %)
520 |(% style="width:151px" %)eq|(% style="width:378px" %)Equals
521 |(% style="width:151px" %)ne|(% style="width:378px" %)Not equal to
522 |(% style="width:151px" %)le|(% style="width:378px" %)Less than
523 |(% style="width:151px" %)ge|(% style="width:378px" %)Greater than or equal to
524 |(% style="width:151px" %)sw|(% style="width:378px" %)Starts with
Helena 2.1 525
Helena 16.7 526 (% class="wikigeneratedid" id="HSupportformultiplekeys" %)
527 **Support for multiple keys**
Helena 2.1 528 Queries can now specify multiple series keys.
529
Helena 16.7 530 (% class="wikigeneratedid" %)
Helena 2.1 531 /data/dataflow/ESTAT/ICP/1.0.0/M…A.ANR,M…A.INX,M…B.CTG
532
Helena 11.1 533 == 5.3 Improved reference metadata queries ==
Helena 2.1 534
535 Reference metadata queries have been improved with a number of new options to retrieve metadata reports.
536
537 **Get metadata reports by ID**
538
539 /metadata/metadataset/ESTAT/QUALITY_REPORT/1.0.0
540
541 **Get metadata reports by Dataflow**
542
543 /metadata/metadataflow/ECB/METHODOLOGY/*/FR2
544
545 **Get metadata reports about a Data Structure Definition**
546
547 /metadata/structure/datastructure/BIS/BIS_CBS/1.0
548
Helena 11.1 549 == 5.4 Structural metadata maintenance ==
Helena 2.1 550
551 Support has been added for maintenance of structural metadata.
552
553 HTTP verbs PUT, POST and DELETE may be used to submit SDMX-ML or SDMX-JSON structure messages to an SDMX registry for the purposes of adding, updating or deleting structural metadata artefacts.
554
555 = 6 XML, JSON, CSV and EDI Transmission formats =
556
Helena 11.1 557 == 6.1 SDMX-ML ==
Helena 2.1 558
559 The SDMX-ML XML messages have been modified and updated for version 3.0. While they broadly follow the same principles, there have been significant changes which break backward compatibility.
560
561 === Structure message ===
562
563 The SDMX-ML structure message is used for transmission of structural metadata. It closely reflects the SDMX information model and has therefore been significantly updated for version 3.0 with the addition of new structures, modifications where structures have changed, and removal of deprecated structures like Structure Set.
564
565 Additionally, the way the individual artefacts are organised into ‘collections’ within the message has been significantly revised with a simpler flat structure adopted as set out in the following table:
566
Helena 7.4 567 (% style="width:1102.04px" %)
568 |(% style="width:321px" %)**Artefact type**|(% style="width:351px" %)**Version 2.1 Collection**|(% style="width:426px" %)**Version 3.0 Collection**
569 |(% style="width:321px" %)AgencyScheme|(% style="width:351px" %)OrganisationSchemes|(% style="width:426px" %)AgencySchemes
570 |(% style="width:321px" %)DataConsumerScheme|(% style="width:351px" %)OrganisationSchemes|(% style="width:426px" %)DataConsumerSchemes
571 |(% style="width:321px" %)DataProviderScheme|(% style="width:351px" %)OrganisationSchemes|(% style="width:426px" %)DataProviderSchemes
572 |(% style="width:321px" %)MetadataProviderScheme|(% style="width:351px" %)OrganisationSchemes|(% style="width:426px" %)MetadataProviderSchemes
573 |(% style="width:321px" %)OrganisationUnitScheme|(% style="width:351px" %)OrganisationSchemes|(% style="width:426px" %)OrganisationUnitSchemes
574 |(% style="width:321px" %)GeographicCodelist|(% style="width:351px" %)Codelists|(% style="width:426px" %)GeographicCodelists
575 |(% style="width:321px" %)GeoGridCodelist|(% style="width:351px" %)Codelists|(% style="width:426px" %)GeoGridCodelists
576 |(% style="width:321px" %)ConceptScheme|(% style="width:351px" %)Concepts|(% style="width:426px" %)ConceptSchemes
577 |(% style="width:321px" %)ValueList|(% style="width:351px" %)Codelists|(% style="width:426px" %)ValueLists
578 |(% style="width:321px" %)StructureMap|(% style="width:351px" %)StructureMappings|(% style="width:426px" %)StructureMaps
579 |(% style="width:321px" %)RepresentationMap|(% style="width:351px" %)StructureMappings|(% style="width:426px" %)RepresentationMaps
580 |(% style="width:321px" %)ConceptSchemeMap|(% style="width:351px" %)StructureMappings|(% style="width:426px" %)ConceptSchemeMaps
581 |(% style="width:321px" %)CategorySchemeMap|(% style="width:351px" %)StructureMappings|(% style="width:426px" %)CategorySchemeMaps
582 |(% style="width:321px" %)OrganisationSchemeMap|(% style="width:351px" %)StructureMappings|(% style="width:426px" %)OrganisationSchemeMaps
583 |(% style="width:321px" %)ReportingTaxonomyMap|(% style="width:351px" %)StructureMappings|(% style="width:426px" %)ReportingTaxonomyMaps
584 |(% style="width:321px" %)DataConstraint|(% style="width:351px" %)Constraints|(% style="width:426px" %)DataConstraints
585 |(% style="width:321px" %)MetadataConstraint|(% style="width:351px" %)Constraints|(% style="width:426px" %)MetadataConstraints
586 |(% style="width:321px" %)MetadataProvisionAgreement|(% style="width:351px" %)ProvisionAgreement|(% style="width:426px" %)MetadataProvisionAgreements
587 |(% style="width:321px" %)CustomTypeScheme|(% style="width:351px" %)CustomTypes|(% style="width:426px" %)CustomTypeSchemes
588 |(% style="width:321px" %)VtlMappingScheme|(% style="width:351px" %)VtlMappings|(% style="width:426px" %)VtlMappingSchemes
589 |(% style="width:321px" %)NamePersonalisationScheme|(% style="width:351px" %)NamePersonalisations|(% style="width:426px" %)NamePersonalisationSchemes
590 |(% style="width:321px" %)RulesetScheme|(% style="width:351px" %)Rulesets|(% style="width:426px" %)RulesetSchemes
591 |(% style="width:321px" %)TransformationScheme|(% style="width:351px" %)Transformations|(% style="width:426px" %)TransformationSchemes
592 |(% style="width:321px" %)UserDefinedOperatorScheme|(% style="width:351px" %)UserDefinedOperators|(% style="width:426px" %)UserDefinedOperatorSchemes
Helena 2.1 593
594 No changes have been made to the way the following artefacts are organised in the structure message:
595
Helena 7.4 596 (% style="width:1106.04px" %)
597 |(% style="width:326px" %)**Artefact type**|(% style="width:776px" %)**Collection**
598 |(% style="width:326px" %)Dataflow|(% style="width:776px" %)Dataflows
599 |(% style="width:326px" %)Metadataflow|(% style="width:776px" %)Metadataflows
600 |(% style="width:326px" %)CategoryScheme|(% style="width:776px" %)CategorySchemes
601 |(% style="width:326px" %)Categorisation|(% style="width:776px" %)Categorisations
602 |(% style="width:326px" %)Codelist|(% style="width:776px" %)Codelists
603 |(% style="width:326px" %)Hierarchy|(% style="width:776px" %)Hierarchies
604 |(% style="width:326px" %)HierarchyAssociation|(% style="width:776px" %)HierarchyAssociations
605 |(% style="width:326px" %)MetadataStructure|(% style="width:776px" %)MetadataStructures
606 |(% style="width:326px" %)DataStructure|(% style="width:776px" %)DataStructures
607 |(% style="width:326px" %)ReportingTaxonomy|(% style="width:776px" %)ReportingTaxonomies
608 |(% style="width:326px" %)Process|(% style="width:776px" %)Processes
609 |(% style="width:326px" %)ProvisionAgreement|(% style="width:776px" %)ProvisionAgreements
Helena 2.1 610
611 From version 3.0, collections can appear in any order within a structure message.
612
613 === Data messages ===
614
615 All legacy SDMX-ML data messages have been deprecated with the exception of Structure Specific Data which becomes the sole standard format for transmission of SDMX data in XML in version 3.0.
616
617 Specifically, the following data messages are not supported in version 3.0:
618
619 * SDMX-ML 1.0/2.0 Generic (time-series) data message
620 * SDMX-ML 1.0/2.0 Compact (time-series) data message
621 * SDMX-ML 1.0/2.0 Utility (time-series) data message
622 * SDMX-ML 1.0/2.0 Cross-Sectional data message
623 * SDMX-ML 2.1 Generic data messages (for observations, time-series and crosssectional data)
624
625 The Structure Specific Data message has been extended to support the transmission of microdata sets, in particular those with multiple measures and array values for measures and attributes.
626
627 As detailed in paragraph 3.4, the message now additionally allows data’s reference metadata to be reported as an integral part of the dataset. Like data attributes, these metadata attributes are included in the data message at the dataset, series or observation level as appropriate.
628
629 The time series variant of the Structure Specific Data message is no longer used.
630
631 === Reference metadata message ===
632
633 The Generic Metadata message remains the standard format for transmission of reference metadata sets in XML but has been modified to support the revised version 3.0 reference metadata model.
634
635 === Registry structural metadata ‘query’ messages ===
636
637 As a consequence of the deprecation of the SOAP API and standardisation on REST, the structural metadata ‘query’ messages have all been removed. In version 3.0, querying an SDMX Registry for structural metadata is performed solely using REST GET.
638
639 === Structure referencing ===
640
641 The option to reference structures using Agency, ID and Version has been removed. From SDMX version 3.0 URN is used for all referencing purposes with the exception of local references such as where groups reference dimensions within a DSD.
642
Helena 11.1 643 == 6.2 SDMX-JSON ==
Helena 2.1 644
645 Like SDMX-ML, the SDMX-JSON messages have been significantly modified and updated for version 3.0. They are not backwardly compatible with version 2.1.
646
647 === Structure message ===
648
649 The SDMX-JSON structure message closely replicates the SDMX-ML equivalent. Like that of SDMX-ML it has been updated to align it with the version 3.0 information model with addition, deletion and modification of artefacts as required. The organisation of the structure collections has also been revised as detailed in paragraph 6.1.
650
651 === Data message ===
652
653 The SDMX-JSON data message has similarly be updated. Additional changes have been made to allow a single message to carry data from multiple datasets with potentially different Data Structure Definitions to support REST data queries of the form “retrieve all data about a country”. For this reason, the version 3.0 SDMX-JSON is not backwardly compatible with version 2.1 data messages. Support has been added for the transmission of microdata and reporting of reference metadata on data as an integral part of the dataset.
654
655 === Reference metadata message ===
656
657 The SDMX-JSON metadata message has also been updated to support the version 3.0 reference metadata and Metadataset specifications.
658
659 === Structure referencing ===
660
661 As for SDMX-ML, the option to reference structures using Agency, ID and Version has been removed with URN used for all non-local referencing purposes.
662
Helena 11.1 663 == 6.3 SDMX-CSV ==
Helena 2.1 664
665 CSV in SDMX is used transmission of data and reference metadata only.
666
667 === Data message ===
668
669 The SDMX-CSV data message has been modified to align with the version 3.0 information model, support the enhanced REST API and ensure that data can be freely converted to and from the XML and JSON formats without loss. These changes include:
670
671 * An additional column identifying the type if the artefact defining the structure of the data: “dataflow”, “datastructure” or “dataprovision”; • A column for the structure artefact’s identification of the form
672
673 ESTAT:NA_MAIN(1.6.0) which replaces the dataflow identifier in version 2.1; and
674
675 * A column for the dataset action: information, append, replace or delete, which is consistent with both the the SDMX-ML and SDMX-JSON data messages.
676
677 === Reference metadata message ===
678
679 The SDMX-CSV metadata message is new for version 3.0 and, like the SDMX-ML and SDMX-JSON equivalents, is used for the transmission reference metadata sets.
680
Helena 11.1 681 === 6.4 EDI deprecation ===
Helena 2.1 682
683 The EDI format for transmission of both structures and data has been deprecated. Version 3.0 is therefore not backwardly compatible with legacy EDI messages.
684
685 = Appendix A – Version 2.1 Information Model =
686
687 [[image:SDMX 3-0-0 Major Changes FINAL-1.0_en_5f21cdf9.png||height="319" width="718"]]