Last modified by Helena on 2025/09/10 11:19

From version 21.7
edited by Helena
on 2025/05/15 14:18
Change comment: There is no comment for this version
To version 21.8
edited by Helena
on 2025/05/15 14:21
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -422,8 +422,10 @@
422 422  
423 423  To provide interoperability between SDMX Registry/Repositories in a distributed network environment, it is important to have a scheme for uniquely identifying (and thus accessing) all first-class (Identifiable) SDMX-IM objects. Most of these unique identifiers are composite (containing maintenance agency, or parent object identifiers), and there is a need to be able to construct a unique reference as a single string. This is achieved by having a globally unique identifier called a universal resource name (URN) which is generated from the actual identification components in the SDMX-RR APIs. In other words, the URN for any Identifiable Artefact is constructed from its component identifiers (agency, id, version etc.).
424 424  
425 -==== 6.2.2.2 URN Structure //__Case Rules for URN__ // ====
425 +==== 6.2.2.2 URN Structure ====
426 426  
427 +===== **//__Case Rules for URN__//** =====
428 +
427 427  For the URN, all parts of the string are case sensitive. The generic structure of the URN is as follows:
428 428  
429 429  SDMXprefix.SDMX-IM-package-name.class-name=agencyid:maintainedobjectid(maintainedobject-version).*containerobject-id.object-id
... ... @@ -444,10 +444,32 @@
444 444  
445 445  The packages are:
446 446  
447 -base codelist conceptscheme datastructure categoryscheme registry metadatastructure process structuremapping transformation
449 +base
448 448  
449 -**maintainable-object-id** is the identifier of the maintainable object. This will always be present as all identifiable objects are either a maintainable object or contained in a maintainable object. **maintainable-object-version** is the version, according to the SDMX versioning rules, of the maintainable object and is enclosed in parentheses ‘()’, which are always present. **container-object-id** is the identifier of an intermediary object that contains the actual object which the URN is identifying. It is not mandatory as many actual objects do not have an intermediary container object. For instance, a Code is in a maintained object (Codelist) and has no intermediary container object, whereas a MetadataAttribute has an intermediary container object (MetadataAttributeDescriptor) and may have an intermediary container object, which is its parent MetadataAttribute. For this reason, the container object id may repeat, with each repetition identifying the object at the next-lower level in its hierarchy. Note that if there is only a single containing object in the model then it is NOT included in the URN structure. This applies to AttributeDescriptor, DimensionDescriptor, and MeasureDescriptor where there can be only one such object and this object has a fixed id. Therefore, whilst each of these has a URN, the id of the AttributeDescriptor, DimensionDescriptor, and MeasureDescriptor is not included when the actual object is a DataAttribute or a Dimension/ TimeDimension, or a Measure.
451 +codelist
450 450  
453 +conceptscheme
454 +
455 +datastructure
456 +
457 +categoryscheme
458 +
459 +registry
460 +
461 +metadatastructure
462 +
463 +process
464 +
465 +structuremapping
466 +
467 +transformation
468 +
469 +**maintainable-object-id** is the identifier of the maintainable object. This will always be present as all identifiable objects are either a maintainable object or contained in a maintainable object.
470 +
471 +**maintainable-object-version** is the version, according to the SDMX versioning rules, of the maintainable object and is enclosed in parentheses ‘()’, which are always present.
472 +
473 +**container-object-id** is the identifier of an intermediary object that contains the actual object which the URN is identifying. It is not mandatory as many actual objects do not have an intermediary container object. For instance, a Code is in a maintained object (Codelist) and has no intermediary container object, whereas a MetadataAttribute has an intermediary container object (MetadataAttributeDescriptor) and may have an intermediary container object, which is its parent MetadataAttribute. For this reason, the container object id may repeat, with each repetition identifying the object at the next-lower level in its hierarchy. Note that if there is only a single containing object in the model then it is NOT included in the URN structure. This applies to AttributeDescriptor, DimensionDescriptor, and MeasureDescriptor where there can be only one such object and this object has a fixed id. Therefore, whilst each of these has a URN, the id of the AttributeDescriptor, DimensionDescriptor, and MeasureDescriptor is not included when the actual object is a DataAttribute or a Dimension/ TimeDimension, or a Measure.
474 +
451 451  Note that although a Code can have a parent Code and a Concept can have a parent Concept these are maintained in a flat structure and therefore do not have a containerobject-id.
452 452  
453 453  For example, the sequence is agency:DSDid(version).DimensionId and not agency:DSDid(version).DimensionDescriptorId.DimensionId.
... ... @@ -454,7 +454,7 @@
454 454  
455 455  object-id is the identifier of the actual object unless the actual object is a //Maintainable// object. If present it is always the last id and is not followed by any other character.
456 456  
457 -//__**Generic Examples of the URN Structure**__//
481 +===== //__**Generic Examples of the URN Structure**__// =====
458 458  
459 459  __Actual object is a maintainable__
460 460