Closed dosse closed 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
@dosse , @jgager recommends applying a regex on the urn attribute as well. Do you agree?
@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
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:
Schemas updated to remove the option to reference structures using the old Agency/ID/Version method. All referencing is performed using URNs.
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.