sdmx3mdt / public-consultation

0 stars 0 forks source link

Simplify schema by limiting the referencing mechanism to URNs #23

Closed dosse closed 3 years ago

dosse commented 3 years ago

The SDMX-ML schemes could be simplified by exclusively using URNs for structural references (as is done in SDMX-JSON). Instead of the current too permissive XML xs:anyURI type, the following generic URNs string pattern could be used:

^urn:sdmx:org\.sdmx\.infomodel\.((base\.((Agency)|(OrganisationUnitScheme)|(AgencyScheme)|(DataProviderScheme)|(MetadataProviderScheme)|(DataConsumerScheme)|(OrganisationUnit)|(DataProvider)|(MetadataProvider)|(DataConsumer)))|(codelist\.((Codelist)|(Valuelist)|(Hierarchy)|(HierarchyAssociation)|(Code)|(HierarchicalCode)|(Level)))|(conceptscheme\.((ConceptScheme)|(Concept)))|(datastructure\.((DataStructure)|(AttributeDescriptor)|(DataAttribute)|(GroupDimensionDescriptor)|(DimensionDescriptor)|(Dimension)|(TimeDimension)|(MeasureDescriptor)|(Measure)|(Dataflow)))|(categoryscheme\.((CategoryScheme)|(Category)|(Categorisation)|(ReportingTaxonomy)|(ReportingCategory)))|(registry\.((ProvisionAgreement)|(MetadataProvisionAgreement)|(DataConstraint)|(MetadataConstraint)|(Subscription)))|(metadatastructure\.((MetadataAttributeDescriptor)|(MetadataAttribute)|(MetadataStructure)|(Metadataflow)))|(process\.((Process)|(ProcessStep)|(Transition)))|(structuremapping\.((StructureMap)|(ComponentMap)|(EpochMap)|(DatePatternMap)|(ConceptSchemeMap)|(OrganisationSchemeMap)|(CodelistMap)|(CategorySchemeMap)|(ReportingTaxonomyMap)|(ItemMap)|(RepresentationMap)|(FrequencyFormatMapping)))|(transformation\.((TransformationScheme)|(Transformation)|(CustomTypeScheme)|(CustomType)|(NamePersonalisationScheme)|(NamePersonalisation)|(VtlMappingScheme)|(VtlCodelistMapping)|(VtlConceptMapping)|(VtlDataflowMapping)|(RulesetScheme)|(Ruleset)|(UserDefinedOperatorScheme)|(UserDefinedOperator))))=([A-Za-z][A-Za-z0-9_-]*(\.[A-Za-z][A-Za-z0-9_-]*)*):([A-Za-z0-9_@$-]+)\((((0|[1-9]\d*)(\.(0|[1-9]\d*))?)|((0|[1-9]\d*)(\.(0|[1-9]\d*)){2}(-(([A-Za-z-]|([A-Za-z-][A-Za-z0-9-]+)|([A-Za-z0-9-]+[A-Za-z-][A-Za-z0-9-]*))|(0|[1-9][0-9]*))(\.(([A-Za-z-]|([A-Za-z-][A-Za-z0-9-]+)|([A-Za-z0-9-]+[A-Za-z-][A-Za-z0-9-]*))|(0|[1-9][0-9]*)))*)?)|(((0|[1-9]\d*)\+\.(0|[1-9]\d*)\.(0|[1-9]\d*))|((0|[1-9]\d*)\.(0|[1-9]\d*)\+\.(0|[1-9]\d*))|((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)\+)))\)(\.[A-Za-z0-9_@$-]+(\.[A-Za-z0-9_@$-]+)*)?$

This could be easily further restricted, where required, to specific types of structures. This would significantly improve the schema readability by reducing the number of elements and ease the lives of implementer's.

sdmx3mdt commented 3 years ago

16 June 2021 TWG / SWG public consultation public review meeting Decision: agreement that this change should be made subject to the technical feasibility in the XML schemas Action: J Gager to advise on the technical feasibility

sdmx3mdt commented 3 years ago

@dosse , @jgager recommends applying a regex on the urn attribute as well. Do you agree?

dosse commented 3 years ago

@sdmx3mdt Yes, good idea. All URNs, not only references to other structures. You could take example of the patterns defined at the end of https://github.com/sdmx-twg/sdmx-json/blob/sdmx3.0.0/structure-message/tools/schemas/2.0.0/sdmx-json-structure-schema.json

sdmx3mdt commented 3 years ago

27 July 2021 SDMX TWG change to XML schemas to limit referencing to URNs only. Details are set out in the attached paper. SDMX TWG TF2 - public review issues #23 - Limit referencing mechanism to URNs.docx

Outstanding actions:

sdmx3mdt commented 3 years ago

Schemas updated to remove the option to reference structures using the old Agency/ID/Version method. All referencing is performed using URNs.