Changes for page 12 Validation and Transformation Language (VTL)
Last modified by Helena K. on 2026/06/10 10:09
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -26,7 +26,7 @@ 26 26 27 27 The alias of an [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] can be its URN (Universal Resource Name), an abbreviation of its URN or another user-defined name. 28 28 29 -In any case, the aliases used in the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformations have to be (% style="color:#e74c3c" %)mapped(%%)to the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] through the VtlMappingScheme and VtlMapping classes (see the section of the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] IM relevant to the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]]). A VtlMapping allows specifying the aliases to be used in the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformations, Rulesets{{footnote}}See also the section "VTL-DL Rulesets" in the VTL Reference Manual.{{/footnote}} or User Defined Operators{{footnote}}The VTLMappings are used also for User Defined Operators (UDO). Although UDOs are envisaged to be defined on generic operands, so that the specific artefacts to be manipulated are passed as parameters at their invocation, it is also possible that an UDO invokes directly some specific SDMX artefacts. These SDMX artefacts have to be mapped to the corresponding aliases used in the definition of the UDO through the VtlMappingScheme and VtlMapping classes as well.{{/footnote}} to reference [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]]. A VtlMappingScheme is a container for zero or more VtlMapping.29 +In any case, the aliases used in the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformations have to be mapped to the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] through the VtlMappingScheme and VtlMapping classes (see the section of the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] IM relevant to the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]]). A VtlMapping allows specifying the aliases to be used in the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformations, Rulesets{{footnote}}See also the section "VTL-DL Rulesets" in the VTL Reference Manual.{{/footnote}} or User Defined Operators{{footnote}}The VTLMappings are used also for User Defined Operators (UDO). Although UDOs are envisaged to be defined on generic operands, so that the specific artefacts to be manipulated are passed as parameters at their invocation, it is also possible that an UDO invokes directly some specific SDMX artefacts. These SDMX artefacts have to be mapped to the corresponding aliases used in the definition of the UDO through the VtlMappingScheme and VtlMapping classes as well.{{/footnote}} to reference [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]]. A VtlMappingScheme is a container for zero or more VtlMapping. 30 30 31 31 The correspondence between an alias and a [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] must be one-to-one, meaning that a generic alias identifies one and just one [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] while a [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is identified by one and just one alias. In other words, within a VtlMappingScheme an [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] can have just one alias and different [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] cannot have the same alias. 32 32 ... ... @@ -43,19 +43,19 @@ 43 43 * class-name 44 44 * agency-id 45 45 * maintainedobject-id 46 -* maintainedobject- (% style="color:#e74c3c" %)version46 +* maintainedobject-version 47 47 * container-object-id{{footnote}}The container-object-id can repeat and may not be present.{{/footnote}} 48 48 * object-id 49 49 50 50 The generic structure of the URN is the following: 51 51 52 -SDMXprefix.[[SDMX-IM>>doc:sdmx:Glossary 2\.1.SDMX Information Model.WebHome]]-package-name.class-name=agency-id:maintainedobject-id (maintainedobject- (% style="color:#e74c3c" %)version(%%)).*container-object-id.object-id52 +SDMXprefix.[[SDMX-IM>>doc:sdmx:Glossary 2\.1.SDMX Information Model.WebHome]]-package-name.class-name=agency-id:maintainedobject-id (maintainedobject-version).*container-object-id.object-id 53 53 54 54 The **SDMXprefix** is "urn:[[sdmx>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]]:org", always the same for all [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]]. 55 55 56 56 The [[SDMX-IM>>doc:sdmx:Glossary 2\.1.SDMX Information Model.WebHome]]-package-name** **is the concatenation of the string** **"[[sdmx>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]].infomodel." with the package-name, which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] belongs to. For example, for referencing a [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] the [[SDMX-IM>>doc:sdmx:Glossary 2\.1.SDMX Information Model.WebHome]]-package-name is "[[sdmx>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]].infomodel.datastructure", because the class [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] belongs to the package "datastructure". 57 57 58 -The class-name is the name of the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] object class, which the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] object belongs to (e.g., for referencing a [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] the class-name is "[[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]]"). The [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] can reference [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] that belong to the classes [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]], [[Dimension>>doc:sdmx:Glossary 2\.1.Dimension.WebHome]], TimeDimension, [[Measure>>doc:sdmx:Glossary 2\.1.Measure.WebHome]], DataAttribute, (% style="color:#e74c3c"%)Concept(%%), [[Codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]].58 +The class-name is the name of the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] object class, which the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] object belongs to (e.g., for referencing a [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] the class-name is "[[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]]"). The [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] can reference [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] that belong to the classes [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]], [[Dimension>>doc:sdmx:Glossary 2\.1.Dimension.WebHome]], TimeDimension, [[Measure>>doc:sdmx:Glossary 2\.1.Measure.WebHome]], DataAttribute, [[Concept>>doc:sdmx:Glossary 2\.1.Concept.WebHome]], [[Codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]]. 59 59 60 60 The agency-id is the acronym of the agency that owns the definition of the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]], for example for the Eurostat [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] the agency-id is "ESTAT"). The agency-id can be composite (for example AgencyA.Dept1.Unit2). 61 61 ... ... @@ -66,10 +66,10 @@ 66 66 67 67 DataStructure maintainable class, the maintainedobject-id is the name of the DataStructure (dataStructure-id) which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] belongs to; 68 68 69 -* if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a (% style="color:#e74c3c"%)Concept(%%), which is not maintainable and belongs to the ConceptScheme maintainable class, the maintainedobject-id is the name of the ConceptScheme (conceptScheme-id) which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] belongs to;69 +* if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a [[Concept>>doc:sdmx:Glossary 2\.1.Concept.WebHome]], which is not maintainable and belongs to the ConceptScheme maintainable class, the maintainedobject-id is the name of the ConceptScheme (conceptScheme-id) which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] belongs to; 70 70 * if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a [[Codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]], which is a maintainable class, the maintainedobject-id is the [[Codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]] name ([[codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]]-id). 71 71 72 -The maintainedobject- (% style="color:#e74c3c" %)version(%%)is the(% style="color:#e74c3c"%)version(%%), according to the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] versioning rules, of the maintained object which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] belongs to (for example, possible (% style="color:#e74c3c" %)versions(%%) might be 1.0, 2.3, 1.0.0, 2.1.0 or 3.1.2).72 +The maintainedobject-version is the [[version>>doc:sdmx:Glossary 2\.1.Version.WebHome]], according to the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] versioning rules, of the maintained object which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] belongs to (for example, possible (% style="color:#e74c3c" %)versions(%%) might be 1.0, 2.3, 1.0.0, 2.1.0 or 3.1.2). 73 73 74 74 The container-object-id does not apply to the classes that can be referenced in [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformations, therefore is not present in their URN. 75 75 ... ... @@ -76,11 +76,11 @@ 76 76 The object-id is the name of the non-[[maintainable artefact>>doc:sdmx:Glossary 2\.1.Maintainable artefact.WebHome]] (when the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is maintainable its name is already specified as the maintainedobject-id, see above), in particular it has to be specified: 77 77 78 78 * if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a [[Dimension>>doc:sdmx:Glossary 2\.1.Dimension.WebHome]], TimeDimension, [[Measure>>doc:sdmx:Glossary 2\.1.Measure.WebHome]] or DataAttribute (the object-id is the name of one of the [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] above, which are data structure [[components>>doc:sdmx:Glossary 2\.1.Component.WebHome]]) 79 -* if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a (% style="color:#e74c3c"%)Concept(%%)(the object-id is the name of the(% style="color:#e74c3c"%)Concept(%%))79 +* if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a [[Concept>>doc:sdmx:Glossary 2\.1.Concept.WebHome]] (the object-id is the name of the [[Concept>>doc:sdmx:Glossary 2\.1.Concept.WebHome]]) 80 80 81 81 82 82 83 -For example, by using the URN, the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformation that sums two [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[Dataflows>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] DF1 and DF2 and assigns the result to a third persistent [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] DFR, assuming that DF1, DF2 and DFR are the maintainedobject-id of the three [[Dataflows>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]], that their (% style="color:#e74c3c"%)version(%%)is 1.0.0 and their Agency is AG, would be written as83 +For example, by using the URN, the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] Transformation that sums two [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] [[Dataflows>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] DF1 and DF2 and assigns the result to a third persistent [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]] DFR, assuming that DF1, DF2 and DFR are the maintainedobject-id of the three [[Dataflows>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]], that their [[version>>doc:sdmx:Glossary 2\.1.Version.WebHome]] is 1.0.0 and their Agency is AG, would be written as 84 84 85 85 {{footnote}}Since these references to SDMX objects include non-permitted characters as per the VTL ID notation, they need to be included between single quotes, according to the VTL rules for irregular names.{{/footnote}}: 86 86 ... ... @@ -97,9 +97,9 @@ 97 97 * The SDMXprefix can be omitted for all the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] objects, because it is a prefixed string (urn:[[sdmx>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]]:org), always the same for [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] objects. 98 98 * The [[SDMX-IM>>doc:sdmx:Glossary 2\.1.SDMX Information Model.WebHome]]-package-name** **can be omitted as well because it can be deduced from the class-name that follows it (the table of the [[SDMX-IM>>doc:sdmx:Glossary 2\.1.SDMX Information Model.WebHome]] packages and classes that allows this deduction is in the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] 2.1 Standards - Section 5 - Registry Specifications, paragraph 6.2.3). In particular, considering the object classes of the [[artefacts>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] that [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] can reference, the package is: 99 99 ** "datastructure" for the classes [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]], [[Dimension>>doc:sdmx:Glossary 2\.1.Dimension.WebHome]], TimeDimension, [[Measure>>doc:sdmx:Glossary 2\.1.Measure.WebHome]], DataAttribute, 100 -** "conceptscheme" for the class (% style="color:#e74c3c"%)Concept(%%),100 +** "conceptscheme" for the class [[Concept>>doc:sdmx:Glossary 2\.1.Concept.WebHome]], 101 101 ** "[[codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]]" for the class [[Codelist>>doc:sdmx:Glossary 2\.1.Code list.WebHome]]. 102 -* The class-name can be omitted as it can be deduced from the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] invocation. In particular, starting from the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] class of the invoked [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] (e.g. [[dataset>>doc:sdmx:Glossary 2\.1.Data set.WebHome]], [[component>>doc:sdmx:Glossary 2\.1.Component.WebHome]], identifier, [[measure>>doc:sdmx:Glossary 2\.1.Measure.WebHome]], [[attribute>>doc:sdmx:Glossary 2\.1.Attribute.WebHome]], [[variable>>doc:sdmx:Glossary 2\.1.Statistical variable.WebHome]], valuedomain), which is known given the syntax of the invoking [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] operator{{footnote}}For the syntax of the VTL operators see the VTL Reference Manual{{/footnote}}, the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] class can be deduced from the (% style="color:#e74c3c" %)mapping(%%)rules between [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] and [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] (see the section "(% style="color:#e74c3c" %)Mapping(%%)between [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] and [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]]" hereinafter){{footnote}}In case the invoked artefact is a VTL component, which can be invoked only within the invocation of a VTL data set (SDMX Dataflow), the specific SDMX class-name (e.g. Dimension, TimeDimension, Measure or DataAttribute) can be deduced from the data structure of the SDMX Dataflow, which the component belongs to.{{/footnote}}.102 +* The class-name can be omitted as it can be deduced from the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] invocation. In particular, starting from the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] class of the invoked [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] (e.g. [[dataset>>doc:sdmx:Glossary 2\.1.Data set.WebHome]], [[component>>doc:sdmx:Glossary 2\.1.Component.WebHome]], identifier, [[measure>>doc:sdmx:Glossary 2\.1.Measure.WebHome]], [[attribute>>doc:sdmx:Glossary 2\.1.Attribute.WebHome]], [[variable>>doc:sdmx:Glossary 2\.1.Statistical variable.WebHome]], valuedomain), which is known given the syntax of the invoking [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] operator{{footnote}}For the syntax of the VTL operators see the VTL Reference Manual{{/footnote}}, the [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] class can be deduced from the mapping rules between [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] and [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]] (see the section "Mapping between [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] and [[SDMX>>doc:sdmx:Glossary 2\.1.Statistical data and metadata exchange.WebHome]]" hereinafter){{footnote}}In case the invoked artefact is a VTL component, which can be invoked only within the invocation of a VTL data set (SDMX Dataflow), the specific SDMX class-name (e.g. Dimension, TimeDimension, Measure or DataAttribute) can be deduced from the data structure of the SDMX Dataflow, which the component belongs to.{{/footnote}}. 103 103 * If the agency-id is not specified, it is assumed by default equal to the agency-id of the TransformationScheme, UserDefinedOperatorScheme or RulesetScheme from which the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is invoked. For example, the agencyid can be omitted if it is the same as the invoking TransformationScheme and cannot be omitted if the [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] comes from another agency{{footnote}}If the Agency is composite (for example AgencyA.Dept1.Unit2), the agency is considered different even if only part of the composite name is different (for example AgencyA.Dept1.Unit3 is a different Agency than the previous one). Moreover the agency-id cannot be omitted in part (i.e., if a TransformationScheme owned by AgencyA.Dept1.Unit2 references an artefact coming from AgencyA.Dept1.Unit3, the specification of the agency-id becomes mandatory and must be complete, without omitting the possibly equal parts like AgencyA.Dept1){{/footnote}}. Take also into account that, according to the [[VTL>>doc:sdmx:Glossary 2\.1.Validation and transformation language.WebHome]] consistency rules, the agency of the result of a Transformation must be the same as its TransformationScheme, therefore the agency-id can be omitted for all the results (left part of Transformation statements). 104 104 * As for the maintainedobject-id, this is essential in some cases while in other cases it can be omitted: 105 105 ** if the referenced [[artefact>>doc:sdmx:Glossary 2\.1.Artefact.WebHome]] is a [[Dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]], which is a maintainable class, the maintainedobject-id is the [[dataflow>>doc:sdmx:Glossary 2\.1.Dataflow.WebHome]]-id and obviously cannot be omitted;