Last modified by Helena K. on 2026/06/10 10:28

From version 9.1
edited by Helena K.
on 2026/06/09 20:17
Change comment: There is no comment for this version
To version 1.7
edited by Helena K.
on 2025/06/16 15:41
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -4,13 +4,13 @@
4 4  
5 5  == 14.1 Introduction to Semantic Versioning ==
6 6  
7 -In the world of versioned data modelling exists a dreaded place called "dependency hell." The bigger your data model through organisational, national or international harmonisation grows and the more artefacts you integrate into your modelling, the more likely you are to find yourself, one day, in this pit of despair.
7 +In the world of versioned data modelling exists a dreaded place called "dependency hell." The bigger your data model through organisational, national or international harmonisation grows and the more [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]] you integrate into your modelling, the more likely you are to find yourself, one day, in this pit of despair.
8 8  
9 -In systems with many dependencies, releasing new artefact versions can quickly become a nightmare. If the dependency specifications are too tight, you are in danger of version lock (the inability to upgrade an artefact without having to release new versions of every dependent artefact). If dependencies are specified too loosely, you will inevitably be bitten by version promiscuity (assuming compatibility with more future versions than is reasonable). Dependency hell is where you are when version lock and/or version promiscuity prevent you from easily and safely moving your data modelling forward.
9 +In systems with many dependencies, releasing new [[artefact>>doc:sdmx:Glossary.Artefact.WebHome]] (% style="color:#e74c3c" %)versions(%%) can quickly become a nightmare. If the dependency specifications are too tight, you are in danger of (% style="color:#e74c3c" %)version(%%) lock (the inability to upgrade an [[artefact>>doc:sdmx:Glossary.Artefact.WebHome]] without having to release new (% style="color:#e74c3c" %)versions(%%) of every dependent [[artefact>>doc:sdmx:Glossary.Artefact.WebHome]]). If dependencies are specified too loosely, you will inevitably be bitten by (% style="color:#e74c3c" %)version(%%) promiscuity (assuming compatibility with more future (% style="color:#e74c3c" %)versions(%%) than is reasonable). Dependency hell is where you are when (% style="color:#e74c3c" %)version(%%) lock and/or (% style="color:#e74c3c" %)version(%%) promiscuity prevent you from easily and safely moving your data modelling forward.
10 10  
11 -As a very successful solution to the similar problem in software development, "Semantic Versioning" [[semver.org>>https://xwiki:semver.org]] proposes a simple set of rules and requirements that dictate how version numbers are assigned and incremented. These rules make also perfect sense in the world of versioned data modelling and help to solve the "dependency hell" encountered with previous versions of SDMX. SDMX 3.0 applies thus the Semantic Versioning rules on all versioned SDMX artefacts. Once you release a versioned SDMX artefact, you communicate changes to it with specific increments to your version number.
11 +As a very successful solution to the similar problem in software development, "Semantic Versioning" [[semver.org>>https://xwiki:semver.org]] proposes a simple set of rules and requirements that dictate how (% style="color:#e74c3c" %)version(%%) numbers are assigned and incremented. These rules make also perfect sense in the world of versioned data modelling and help to solve the "dependency hell" encountered with previous (% style="color:#e74c3c" %)versions(%%) of [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]. [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] 3.0 applies thus the Semantic Versioning rules on all versioned [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]]. Once you release a versioned [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] [[artefact>>doc:sdmx:Glossary.Artefact.WebHome]], you communicate changes to it with specific increments to your (% style="color:#e74c3c" %)version(%%) number.
12 12  
13 -**This SDMX 3.0(.0) specification inherits the original [[semver.org>>https://xwiki:semver.org]] 2.0.0 wording (license: [[Creative Commons - CC BY 3.0>>https://creativecommons.org/licenses/by/3.0/]]) and applies it to versioned SDMX structural artefacts.** Under this scheme, version numbers and the way they change convey meaning about the underlying data structures and what has been modified from one version to the next.
13 +**This [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] 3.0(.0) specification inherits the original [[semver.org>>https://xwiki:semver.org]] 2.0.0 wording (license: [[Creative Commons - CC BY 3.0>>https://creativecommons.org/licenses/by/3.0/]]) and applies it to versioned [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] structural [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]].** Under this scheme, (% style="color:#e74c3c" %)version(%%) numbers and the way they change convey meaning about the underlying data structures and what has been modified from one (% style="color:#e74c3c" %)version(%%) to the next.
14 14  
15 15  == 14.2 Semantic Versioning Specification for SDMX 3.0(.0) ==
16 16  
... ... @@ -155,13 +155,13 @@
155 155  
156 156  Reduced version (without original SemVer "build metadata") from: [[https:~~/~~/regex101.com/r/Ly7O1x/3/>>url:https://regex101.com/r/Ly7O1x/3/]]
157 157  
158 -> ^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<extension>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$
158 +^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<extension>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$
159 159  
160 160  And one with numbered capture groups instead (so cg1 = major, cg2 = minor, cg3 = patch and cg4 = extension) that is compatible with ECMA Script (JavaScript), PCRE (Perl Compatible Regular Expressions, i.e. Perl, PHP and R), Python and Go.
161 161  
162 -Reduced version (without original SemVer "build metadata") from:  [[https:~~/~~/regex101.com/r/vkijKf/1>>url:https://regex101.com/r/vkijKf/1/]]
162 +Reduced version (without original SemVer "build metadata") from: [[https:~~/~~/regex101.com/r/vkijKf/1>>url:https://regex101.com/r/vkijKf/1/]]
163 163  
164 -> ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$
164 +^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$
165 165  
166 166  **Must I adopt semantic versioning rules when switching to SDMX 3.0?**
167 167  
SKMS.Methodology.Code.MethodologyClass[0]
Index
... ... @@ -1,1 +1,0 @@
1 -14
SUZ.Methodology.Code.MethodologyClass[0]
© Semantic R&D Group, 2026