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

From version 5.25
edited by Helena
on 2025/05/16 09:01
Change comment: There is no comment for this version
To version 5.15
edited by Helena
on 2025/05/16 08:45
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -249,16 +249,19 @@
249 249  
250 250  The summary mapping table of the "pivot" mapping from SDMX to VTL for the SDMX data structures that contain a MeasureDimension is the following:
251 251  
252 -(% style="width:769.294px" %)
253 -|(% style="width:401px" %)**SDMX**|(% style="width:366px" %)**VTL**
254 -|(% style="width:401px" %)Dimension|(% style="width:366px" %)(Simple) Identifier
255 -|(% style="width:401px" %)TimeDimension|(% style="width:366px" %)(Time) Identifier
256 -|(% style="width:401px" %)MeasureDimension & one Measure|(% style="width:366px" %)(((
257 -One Measure for each Code of the SDMX MeasureDimension
252 +|**SDMX**|**VTL**
253 +|Dimension|(Simple) Identifier
254 +|TimeDimension|(Time) Identifier
255 +|MeasureDimension & one Measure|(((
256 +One Measure for each Code of the
257 +
258 +SDMX MeasureDimension
258 258  )))
259 -|(% style="width:401px" %)DataAttribute not depending on the MeasureDimension|(% style="width:366px" %)Attribute
260 -|(% style="width:401px" %)DataAttribute depending on the MeasureDimension|(% style="width:366px" %)(((
261 -One Attribute for each Code of the SDMX MeasureDimension
260 +|DataAttribute not depending on the MeasureDimension|Attribute
261 +|DataAttribute depending on the MeasureDimension|(((
262 +One Attribute for each Code of the
263 +
264 +SDMX MeasureDimension
262 262  )))
263 263  
264 264  Using this mapping method, the components of the data structure can change in the conversion from SDMX to VTL and it must be taken into account that the VTL statements can reference only the components of the resulting VTL data structure.
... ... @@ -273,7 +273,7 @@
273 273  * The value of the Measure of the SDMX observation belonging to the set above and having MeasureDimension=Cj becomes the value of the VTL Measure Cj
274 274  * For the SDMX DataAttributes depending on the MeasureDimension, the value of the DataAttribute DA of the SDMX observation belonging to the set above and having MeasureDimension=Cj becomes the value of the VTL Attribute DA_Cj
275 275  
276 -==== 12.3.3.3 From SDMX DataAttributes to VTL Measures ====
279 +**12.3.3.3 From SDMX DataAttributes to VTL Measures**
277 277  
278 278  * In some cases, it may happen that the DataAttributes of the SDMX DataStructure need to be managed as Measures in VTL. Therefore, a variant of both the methods above consists in transforming all the SDMX DataAttributes in VTL Measures. When DataAttributes are converted to Measures, the two methods above are called Basic_A2M and Pivot_A2M (the suffix "A2M" stands for Attributes to Measures). Obviously, the resulting VTL data structure is, in general, multi-measure and does not contain
279 279  
... ... @@ -285,7 +285,7 @@
285 285  
286 286  === 12.3.4 Mapping from VTL to SDMX data structures ===
287 287  
288 -==== 12.3.4.1 Basic Mapping ====
291 +**12.3.4.1 Basic Mapping**
289 289  
290 290  The main mapping method **from VTL to SDMX** is called **Basic **mapping as well.
291 291  
... ... @@ -295,12 +295,11 @@
295 295  
296 296  Mapping table:
297 297  
298 -(% style="width:667.294px" %)
299 -|(% style="width:272px" %)**VTL**|(% style="width:392px" %)**SDMX**
300 -|(% style="width:272px" %)(Simple) Identifier|(% style="width:392px" %)Dimension
301 -|(% style="width:272px" %)(Time) Identifier|(% style="width:392px" %)TimeDimension
302 -|(% style="width:272px" %)Measure|(% style="width:392px" %)Measure
303 -|(% style="width:272px" %)Attribute|(% style="width:392px" %)DataAttribute
301 +|**VTL**|**SDMX**
302 +|(Simple) Identifier|Dimension
303 +|(Time) Identifier|TimeDimension
304 +|Measure|Measure
305 +|Attribute|DataAttribute
304 304  
305 305  If the distinction between simple identifier and time identifier is not maintained in the VTL environment, the classification between Dimension and TimeDimension exists only in SDMX, as declared in the relevant DataStructureDefinition.
306 306  
... ... @@ -310,7 +310,7 @@
310 310  
311 311  As said, the resulting SDMX definitions must be compliant with the SDMX consistency rules. For example, the SDMX DSD must have the AttributeRelationship for the DataAttributes, which does not exist in VTL.
312 312  
313 -==== 12.3.4.2 Unpivot Mapping ====
315 +**12.3.4.2 Unpivot Mapping**
314 314  
315 315  An alternative mapping method from VTL to SDMX is the **Unpivot **mapping.
316 316  
... ... @@ -334,12 +334,11 @@
334 334  
335 335  The summary mapping table of the **unpivot** mapping method is the following:
336 336  
337 -(% style="width:994.294px" %)
338 -|(% style="width:306px" %)**VTL**|(% style="width:684px" %)**SDMX**
339 -|(% style="width:306px" %)(Simple) Identifier|(% style="width:684px" %)Dimension
340 -|(% style="width:306px" %)(Time) Identifier|(% style="width:684px" %)TimeDimension
341 -|(% style="width:306px" %)All Measure Components|(% style="width:684px" %)MeasureDimension (having one Code for each VTL measure component) & one Measure
342 -|(% style="width:306px" %)Attribute|(% style="width:684px" %)DataAttribute depending on all SDMX Dimensions including the TimeDimension and except the MeasureDimension
339 +|**VTL**|**SDMX**
340 +|(Simple) Identifier|Dimension
341 +|(Time) Identifier|TimeDimension
342 +|All Measure Components|MeasureDimension (having one Code for each VTL measure component) & one Measure
343 +|Attribute|DataAttribute depending on all SDMX Dimensions including the TimeDimension and except the MeasureDimension
343 343  
344 344  At observation / data point level:
345 345  
... ... @@ -353,7 +353,7 @@
353 353  
354 354  In any case, the resulting SDMX definitions must be compliant with the SDMX consistency rules. For example, the possible Codes of the SDMX MeasureDimension need to be listed in a SDMX Codelist, with proper id, agency and version; moreover, the SDMX DSD must have the AttributeRelationship for the DataAttributes, which does not exist in VTL.
355 355  
356 -==== 12.3.4.3 From VTL Measures to SDMX Data Attributes ====
357 +**12.3.4.3 From VTL Measures to SDMX Data Attributes**
357 357  
358 358  More than all for the multi-measure VTL structures (having more than one Measure Component), it may happen that the Measures of the VTL Data Structure need to be managed as DataAttributes in SDMX. Therefore, a third mapping method consists in transforming some VTL measures in a corresponding SDMX Measures and all the other VTL Measures in SDMX DataAttributes. This method is called M2A (“M2A” stands for “Measures to DataAttributes”).
359 359  
... ... @@ -361,13 +361,12 @@
361 361  
362 362  The mapping table is the following:
363 363  
364 -(% style="width:689.294px" %)
365 -|(% style="width:344px" %)VTL|(% style="width:341px" %)SDMX
366 -|(% style="width:344px" %)(Simple) Identifier|(% style="width:341px" %)Dimension
367 -|(% style="width:344px" %)(Time) Identifier|(% style="width:341px" %)TimeDimension
368 -|(% style="width:344px" %)Some Measures|(% style="width:341px" %)Measure
369 -|(% style="width:344px" %)Other Measures|(% style="width:341px" %)DataAttribute
370 -|(% style="width:344px" %)Attribute|(% style="width:341px" %)DataAttribute
365 +|VTL|SDMX
366 +|(Simple) Identifier|Dimension
367 +|(Time) Identifier|TimeDimension
368 +|Some Measures|Measure
369 +|Other Measures|DataAttribute
370 +|Attribute|DataAttribute
371 371  
372 372  Even in this case, the resulting SDMX definitions must be compliant with the SDMX consistency rules. For example, the SDMX DSD must have the attributeRelationship for the DataAttributes, which does not exist in VTL.
373 373  
... ... @@ -385,20 +385,20 @@
385 385  
386 386  Until now it has been assumed to map one SMDX Dataflow to one VTL Data Set and vice-versa. This mapping one-to-one is not mandatory according to VTL because a VTL Data Set is meant to be a set of observations (data points) on a logical plane, having the same logical data structure and the same general meaning, independently of the possible physical representation or storage (see VTL 2.0 User Manual page 24), therefore a SDMX Dataflow can be seen either as a unique set of data observations (corresponding to one VTL Data Set) or as the union of many sets of data observations (each one corresponding to a distinct VTL Data Set).
387 387  
388 -As a matter of fact, in some cases it can be useful to define VTL operations involving definite parts of a SDMX Dataflow instead than the whole.{{footnote}}A typical example of this kind is the validation, and more in general the manipulation, of individual time series belonging to the same Dataflow, identifiable through the DimensionComponents of the Dataflow except the TimeDimension. The coding of these kind of operations might be simplified by mapping distinct time series (i.e. different parts of a SDMX Dataflow) to distinct VTL Data Sets.{{/footnote}}
388 +As a matter of fact, in some cases it can be useful to define VTL operations involving definite parts of a SDMX Dataflow instead than the whole.^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^25^^>>path:#sdfootnote25sym||name="sdfootnote25anc"]](%%)^^
389 389  
390 -Therefore, in order to make the coding of VTL operations simpler when applied on parts of SDMX Dataflows, it is allowed to map distinct parts of a SDMX Dataflow to distinct VTL Data Sets according to the following rules and conventions. This kind of mapping is possible both from SDMX to VTL and from VTL to SDMX, as better explained below.{{footnote}}Please note that this kind of mapping is only an option at disposal of the definer of VTL Transformations; in fact it remains always possible to manipulate the needed parts of SDMX Dataflows by means of VTL operators (e.g. “sub”, “filter”, “calc”, “union …), maintaining a mapping one-to-one between SDMX Dataflows and VTL Data Sets.{{/footnote}}
390 +Therefore, in order to make the coding of VTL operations simpler when applied on parts of SDMX Dataflows, it is allowed to map distinct parts of a SDMX Dataflow to distinct VTL Data Sets according to the following rules and conventions. This kind of mapping is possible both from SDMX to VTL and from VTL to SDMX, as better explained below.^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^26^^>>path:#sdfootnote26sym||name="sdfootnote26anc"]](%%)^^
391 391  
392 392  Given a SDMX Dataflow and some predefined Dimensions of its DataStructure, it is allowed to map the subsets of observations that have the same combination of values for such Dimensions to correspondent VTL datasets.
393 393  
394 394  For example, assuming that the SDMX Dataflow DF1(1.0.0) has the Dimensions INDICATOR, TIME_PERIOD and COUNTRY, and that the user declares the Dimensions INDICATOR and COUNTRY as basis for the mapping (i.e. the mapping dimensions): the observations that have the same values for INDICATOR and COUNTRY would be mapped to the same VTL dataset (and vice-versa). In practice, this kind mapping is obtained like follows:
395 395  
396 -* For a given SDMX Dataflow, the user (VTL definer) declares the DimensionComponents on which the mapping will be based, in a given order.{{footnote}}This definition is made through the ToVtlSubspace and ToVtlSpaceKey classes and/or the FromVtlSuperspace and FromVtlSpaceKey classes, depending on the direction of the mapping (“key” means “dimension”). The mapping of Dataflow subsets can be applied independently in the two directions, also according to different Dimensions. When no Dimension is declared for a given direction, it is assumed that the option of mapping different parts of a SDMX Dataflow to different VTL Data Sets is not used.{{/footnote}} Following the example above, imagine that the user declares the Dimensions INDICATOR and COUNTRY.
396 +* For a given SDMX Dataflow, the user (VTL definer) declares the DimensionComponents on which the mapping will be based, in a given order.^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^27^^>>path:#sdfootnote27sym||name="sdfootnote27anc"]](%%)^^ Following the example above, imagine that the user declares the Dimensions INDICATOR and COUNTRY.
397 397  * The VTL Data Set is given a name using a special notation also called “ordered concatenation” and composed of the following parts:
398 398  ** The reference to the SDMX Dataflow (expressed according to the rules described in the previous paragraphs, i.e. URN, abbreviated URN or another alias); for example DF(1.0.0);
399 -** a slash (“/”) as a separator;{{footnote}}As a consequence of this formalism, a slash in the name of the VTL Data Set assumes the specific meaning of separator between the name of the Dataflow and the values of some of its Dimensions.{{/footnote}}
399 +** a slash (“/”) as a separator; ^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^28^^>>path:#sdfootnote28sym||name="sdfootnote28anc"]](%%)^^
400 400  
401 -The reference to a specific part of the SDMX Dataflow above, expressed as the concatenation of the values that the SDMX DimensionComponents declared above must have, separated by dots (“.”) and written in the order in which these DimensionComponents are defined{{footnote}}This is the order in which the dimensions are defined in the ToVtlSpaceKey class or in the FromVtlSpaceKey class, depending on the direction of the mapping.{{/footnote}}. For example POPULATION.USA would mean that such a VTL Data Set is mapped to the SDMX observations for which the dimension //INDICATOR// is equal to POPULATION and the dimension //COUNTRY// is equal to USA.
401 +The reference to a specific part of the SDMX Dataflow above, expressed as the concatenation of the values that the SDMX DimensionComponents declared above must have, separated by dots (“.”) and written in the order in which these DimensionComponents are defined^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^29^^>>path:#sdfootnote29sym||name="sdfootnote29anc"]](%%)^^. For example POPULATION.USA would mean that such a VTL Data Set is mapped to the SDMX observations for which the dimension //INDICATOR// is equal to POPULATION and the dimension //COUNTRY// is equal to USA.
402 402  
403 403  In the VTL Transformations, this kind of dataset name must be referenced between single quotes because the slash (“/”) is not a regular character according to the VTL rules.
404 404  
... ... @@ -414,7 +414,7 @@
414 414  
415 415  Let us now analyse the different meaning of this kind of mapping in the two mapping directions, i.e. from SDMX to VTL and from VTL to SDMX.
416 416  
417 -As already said, the mapping from SDMX to VTL happens when the SDMX dataflows are operand of VTL Transformations, instead the mapping from VTL to SDMX happens when the VTL Data Sets that is result of Transformations{{footnote}}It should be remembered that, according to the VTL consistency rules, a given VTL dataset cannot be the result of more than one VTL Transformation.{{/footnote}} need to be treated as SDMX objects. This kind of mapping can be applied independently in the two directions and the Dimensions on which the mapping is based can be different in the two directions: these Dimensions are defined in the ToVtlSpaceKey and in the FromVtlSpaceKey classes respectively.
417 +As already said, the mapping from SDMX to VTL happens when the SDMX dataflows are operand of VTL Transformations, instead the mapping from VTL to SDMX happens when the VTL Data Sets that is result of Transformations^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^30^^>>path:#sdfootnote30sym||name="sdfootnote30anc"]](%%)^^ need to be treated as SDMX objects. This kind of mapping can be applied independently in the two directions and the Dimensions on which the mapping is based can be different in the two directions: these Dimensions are defined in the ToVtlSpaceKey and in the FromVtlSpaceKey classes respectively.
418 418  
419 419  First, let us see what happens in the __mapping direction from SDMX to VTL__, i.e. when parts of a SDMX Dataflow (e.g. DF1(1.0.0)) need to be mapped to distinct VTL Data Sets that are operand of some VTL Transformations.
420 420  
... ... @@ -422,7 +422,7 @@
422 422  
423 423  SDMX Dataflow having INDICATOR=//INDICATORvalue //and COUNTRY=// COUNTRYvalue//. For example, the VTL dataset ‘DF1(1.0.0)/POPULATION.USA’ would contain all the observations of DF1(1.0.0) having INDICATOR = POPULATION and COUNTRY = USA.
424 424  
425 -In order to obtain the data structure of these VTL Data Sets from the SDMX one, it is assumed that the SDMX DimensionComponents on which the mapping is based are dropped, i.e. not maintained in the VTL data structure; this is possible because their values are fixed for each one of the invoked VTL Data Sets{{footnote}}If these DimensionComponents would not be dropped, the various VTL Data Sets resulting from this kind of mapping would have non-matching values for the Identifiers corresponding to the mapping Dimensions (e.g. POPULATION and COUNTRY). As a consequence, taking into account that the typical binary VTL operations at dataset level (+, -, *, / and so on) are executed on the observations having matching values for the identifiers, it would not be possible to compose the resulting VTL datasets one another (e.g. it would not be possible to calculate the population ratio between USA and CANADA).{{/footnote}}. After that, the mapping method from SDMX to VTL specified for the Dataflow DF1(1.0.0) is applied (i.e.
425 +In order to obtain the data structure of these VTL Data Sets from the SDMX one, it is assumed that the SDMX DimensionComponents on which the mapping is based are dropped, i.e. not maintained in the VTL data structure; this is possible because their values are fixed for each one of the invoked VTL Data Sets^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^31^^>>path:#sdfootnote31sym||name="sdfootnote31anc"]](%%)^^. After that, the mapping method from SDMX to VTL specified for the Dataflow DF1(1.0.0) is applied (i.e.
426 426  
427 427  basic, pivot …).
428 428  
... ... @@ -442,7 +442,7 @@
442 442  
443 443  … … …
444 444  
445 -In fact the VTL operator “sub” has exactly the same behaviour. Therefore, mapping different parts of a SDMX Dataflow to different VTL Data Sets in the direction from SDMX to VTL through the ordered concatenation notation is equivalent to a proper use of the operator “**sub**” on such a Dataflow.{{footnote}}In case the ordered concatenation notation is used, the VTL Transformation described above, e.g. ‘DF1(1.0)/POPULATION.USA’ := DF1(1.0) [ sub INDICATOR=“POPULATION”, COUNTRY=“USA”], is implicitly executed. In order to test the overall compliance of the VTL program to the VTL consistency rules, it has to be considered as part of the VTL program even if it is not explicitly coded.{{/footnote}}
445 +In fact the VTL operator “sub” has exactly the same behaviour. Therefore, mapping different parts of a SDMX Dataflow to different VTL Data Sets in the direction from SDMX to VTL through the ordered concatenation notation is equivalent to a proper use of the operator “**sub**” on such a Dataflow. ^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^32^^>>path:#sdfootnote32sym||name="sdfootnote32anc"]](%%)^^
446 446  
447 447  In the direction from SDMX to VTL it is allowed to omit the value of one or more
448 448  
... ... @@ -470,12 +470,12 @@
470 470  
471 471  Dataflow DF2(1.0.0) having the Dimensions TIME_PERIOD, INDICATOR, and COUNTRY and that such a programmer finds it convenient to calculate separately the parts of DF2(1.0.0) that have different combinations of values for INDICATOR and COUNTRY:
472 472  
473 -* each part is calculated as a VTL derived Data Set, result of a dedicated VTL Transformation;{{footnote}}If the whole DF2(1.0) is calculated by means of just one VTL Transformation, then the mapping between the SDMX Dataflow and the corresponding VTL dataset is one-to-one and this kind of mapping (one SDMX Dataflow to many VTL datasets) does not apply.{{/footnote}}
474 -* the data structure of all these VTL Data Sets has the TIME_PERIOD identifier and does not have the INDICATOR and COUNTRY identifiers.{{footnote}}This is possible as each VTL dataset corresponds to one particular combination of values of INDICATOR and COUNTRY.{{/footnote}}
473 +* each part is calculated as a VTL derived Data Set, result of a dedicated VTL Transformation; ^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^33^^>>path:#sdfootnote33sym||name="sdfootnote33anc"]](%%)^^
474 +* the data structure of all these VTL Data Sets has the TIME_PERIOD identifier and does not have the INDICATOR and COUNTRY identifiers.^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^34^^>>path:#sdfootnote34sym||name="sdfootnote34anc"]](%%)^^
475 475  
476 -Under these hypothesis, such derived VTL Data Sets can be mapped to DF2(1.0.0) by declaring the DimensionComponents INDICATOR and COUNTRY as mapping dimensions{{footnote}}The mapping dimensions are defined as FromVtlSpaceKeys of the FromVtlSuperSpace of the VtlDataflowMapping relevant to DF2(1.0).{{/footnote}}.
476 +Under these hypothesis, such derived VTL Data Sets can be mapped to DF2(1.0.0) by declaring the DimensionComponents INDICATOR and COUNTRY as mapping dimensions^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^35^^>>path:#sdfootnote35sym||name="sdfootnote35anc"]](%%)^^.
477 477  
478 -The corresponding VTL Transformations, assuming that the result needs to be persistent, would be of this kind:{{footnote}}the symbol of the VTL persistent assignment is used (<-){{/footnote}}
478 +The corresponding VTL Transformations, assuming that the result needs to be persistent, would be of this kind:^^ [[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^36^^>>path:#sdfootnote36sym||name="sdfootnote36anc"]](%%)^^
479 479  
480 480  ‘DF2(1.0.0)/INDICATORvalue.COUNTRYvalue’ <- expression
481 481  
... ... @@ -531,9 +531,9 @@
531 531  
532 532  In other words, starting from the datasets explicitly calculated through VTL (in the example ‘DF2(1.0)/GDPPERCAPITA.USA’ and so on), the first step consists in calculating other (non-persistent) VTL datasets (in the example
533 533  
534 -DF2bis_GDPPERCAPITA_USA and so on) by adding the identifiers INDICATOR and COUNTRY with the desired values (//INDICATORvalue// and //COUNTRYvalue)//. Finally, all these non-persistent Data Sets are united and give the final result DF2(1.0){{footnote}}The result is persistent in this example but it can be also non persistent if needed.{{/footnote}}, which can be mapped one-to-one to the homonymous SDMX Dataflow having the dimension components TIME_PERIOD, INDICATOR and COUNTRY.
534 +DF2bis_GDPPERCAPITA_USA and so on) by adding the identifiers INDICATOR and COUNTRY with the desired values (//INDICATORvalue// and //COUNTRYvalue)//. Finally, all these non-persistent Data Sets are united and give the final result DF2(1.0)^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^37^^>>path:#sdfootnote37sym||name="sdfootnote37anc"]](%%)^^, which can be mapped one-to-one to the homonymous SDMX Dataflow having the dimension components TIME_PERIOD, INDICATOR and COUNTRY.
535 535  
536 -Therefore, mapping different VTL datasets having the same data structure to different parts of a SDMX Dataflow, i.e. in the direction from VTL to SDMX, through the ordered concatenation notation is equivalent to a proper use of the operators “calc” and “union” on such datasets.{{footnote}}In case the ordered concatenation notation from VTL to SDMX is used, the set of Transformations described above is implicitly performed; therefore, in order to test the overall compliance of the VTL program to the VTL consistency rules, these implicit Transformations have to be considered as part of the VTL program even if they are not explicitly coded.{{/footnote}}
536 +Therefore, mapping different VTL datasets having the same data structure to different parts of a SDMX Dataflow, i.e. in the direction from VTL to SDMX, through the ordered concatenation notation is equivalent to a proper use of the operators “calc” and “union” on such datasets. ^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^38^^>>path:#sdfootnote38sym||name="sdfootnote38anc"]](%%)[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^39^^>>path:#sdfootnote39sym||name="sdfootnote39anc"]](%%)^^
537 537  
538 538  It is worth noting that in the direction from VTL to SDMX it is mandatory to specify the value for every Dimension on which the mapping is based (in other word, in the name of the calculated VTL dataset is __not__ possible to omit the value of some of the Dimensions).
539 539  
... ... @@ -541,51 +541,52 @@
541 541  
542 542  With reference to the VTL “model for Variables and Value domains”, the following additional mappings have to be considered:
543 543  
544 -(% style="width:1170.29px" %)
545 -|**VTL**|(% style="width:754px" %)**SDMX**
546 -|**Data Set Component**|(% style="width:754px" %)Although this abstraction exists in SDMX, it does not have an explicit definition and correspond to a Component (either a DimensionComponent or a Measure or a DataAttribute) belonging to one specific Dataflow{{footnote}}Through SDMX Constraints, it is possible to specify the values that a Component of a Dataflow can assume.{{/footnote}}
547 -|**Represented Variable**|(% style="width:754px" %)(((
544 +|VTL|SDMX
545 +|**Data Set Component**|Although this abstraction exists in SDMX, it does not have an explicit definition and correspond to a Component (either a DimensionComponent or a Measure or a DataAttribute) belonging to one specific Dataflow^^43^^
546 +|**Represented Variable**|(((
548 548  **Concept** with a definite
549 549  
550 550  Representation
551 551  )))
552 -|**Value Domain**|(% style="width:754px" %)(((
551 +|**Value Domain**|(((
553 553  **Representation** (see the Structure
554 554  
555 555  Pattern in the Base Package)
556 556  )))
557 -|**Enumerated Value Domain / Code List**|(% style="width:754px" %)**Codelist**
558 -|**Code**|(% style="width:754px" %)(((
556 +|**Enumerated Value Domain / Code List**|**Codelist**
557 +|**Code**|(((
559 559  **Code** (for enumerated
560 560  
561 561  DimensionComponent, Measure, DataAttribute)
562 562  )))
563 -|**Described Value Domain**|(% style="width:754px" %)(((
564 -non-enumerated** Representation**
562 +|**Described Value Domain**|(((
563 +non-enumerated** &nbsp;&nbsp;&nbsp;Representation**
565 565  
566 566  (having Facets / ExtendedFacets, see the Structure Pattern in the Base Package)
567 567  )))
568 -|**Value**|(% style="width:754px" %)Although this abstraction exists in SDMX, it does not have an explicit definition and correspond to a **Code** of a Codelist (for enumerated Representations) or
569 -| |(% style="width:754px" %)(((
570 -to a valid **value **(for non-enumerated** **Representations)
567 +|**Value**|Although this abstraction exists in SDMX, it does not have an explicit definition and correspond to a **Code** of a Codelist (for enumerated Representations) or
568 +| |(((
569 +to a valid **value &nbsp;&nbsp;&nbsp;**(for non-enumerated** &nbsp;&nbsp;&nbsp;**
570 +
571 +Representations)
571 571  )))
572 -|**Value Domain Subset / Set**|(% style="width:754px" %)This abstraction does not exist in SDMX
573 -|**Enumerated Value Domain Subset / Enumerated Set**|(% style="width:754px" %)This abstraction does not exist in SDMX
574 -|**Described Value Domain Subset / Described Set**|(% style="width:754px" %)This abstraction does not exist in SDMX
575 -|**Set list**|(% style="width:754px" %)This abstraction does not exist in SDMX
573 +|**Value Domain Subset / Set**|This abstraction does not exist in SDMX
574 +|**Enumerated Value Domain Subset / Enumerated Set**|This abstraction does not exist in SDMX
575 +|**Described Value Domain Subset / Described Set**|This abstraction does not exist in SDMX
576 +|**Set list**|This abstraction does not exist in SDMX
576 576  
577 577  The main difference between VTL and SDMX relies on the fact that the VTL artefacts for defining subsets of Value Domains do not exist in SDMX, therefore the VTL features for referring to predefined subsets are not available in SDMX. These artefacts are the Value Domain Subset (or Set), either enumerated or described, the Set List (list of values belonging to enumerated subsets) and the Data Set Component (aimed at defining the set of values that the Component of a Data Set can take, possibly a subset of the codes of Value Domain).
578 578  
579 -Another difference consists in the fact that all Value Domains are considered as identifiable objects in VTL either if enumerated or not, while in SDMX the Codelist (corresponding to a VTL enumerated Value Domain) is identifiable, while the SDMX non-enumerated Representation (corresponding to a VTL non-enumerated Value Domain) is not identifiable. As a consequence, the definition of the VTL Rulesets, which in VTL can refer either to enumerated or non-enumerated value domains, in SDMX can refer only to enumerated Value Domains (i.e. to SDMX Codelists). As for the mapping between VTL variables and SDMX Concepts, it should be noted that these artefacts do not coincide perfectly. In fact, the VTL variables are represented variables, defined always on the same Value Domain (“Representation” in SDMX) independently of the data set / data structure in which they appear{{footnote}}By using represented variables, VTL can assume that data structures having the same variables as identifiers can be composed one another because the correspondent values can match.{{/footnote}}, while the SDMX Concepts can have different Representations in different DataStructures.{{footnote}}A Concept becomes a Component in a DataStructureDefinition, and Components can have different LocalRepresentations in different DataStructureDefinitions, also overriding the (possible) base representation of the Concept.{{/footnote}} This means that one SDMX Concept can correspond to many VTL Variables, one for each representation the Concept has.
580 +Another difference consists in the fact that all Value Domains are considered as identifiable objects in VTL either if enumerated or not, while in SDMX the Codelist (corresponding to a VTL enumerated Value Domain) is identifiable, while the SDMX non-enumerated Representation (corresponding to a VTL non-enumerated Value Domain) is not identifiable. As a consequence, the definition of the VTL Rulesets, which in VTL can refer either to enumerated or non-enumerated value domains, in SDMX can refer only to enumerated Value Domains (i.e. to SDMX Codelists). As for the mapping between VTL variables and SDMX Concepts, it should be noted that these artefacts do not coincide perfectly. In fact, the VTL variables are represented variables, defined always on the same Value Domain (“Representation” in SDMX) independently of the data set / data structure in which they appear^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^40^^>>path:#sdfootnote40sym||name="sdfootnote40anc"]](%%)^^, while the SDMX Concepts can have different Representations in different DataStructures.^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^41^^>>path:#sdfootnote41sym||name="sdfootnote41anc"]](%%)^^ This means that one SDMX Concept can correspond to many VTL Variables, one for each representation the Concept has.
580 580  
581 581  Therefore, it is important to be aware that some VTL operations (for example the binary operations at data set level) are consistent only if the components having the same names in the operated VTL Data Sets have also the same representation (i.e. the same Value Domain as for VTL). For example, it is possible to obtain correct results from the VTL expression
582 582  
583 -DS_c := DS_a + DS_b (where DS_a, DS_b, DS_c are VTL Data Sets)
584 +DS_c := DS_a + DS_b (where DS_a, DS_b, DS_c are VTL Data Sets) if the matching components in DS_a and DS_b (e.g. ref_date, geo_area, sector …) refer to the same general representation. In simpler words, DS_a and DS_b must use the same values/codes (for ref_date, geo_area, sector … ), otherwise the relevant values would not match and the result of the operation would be wrong.
584 584  
585 -if the matching components in DS_a and DS_b (e.g. ref_date, geo_area, sector …) refer to the same general representation. In simpler words, DS_a and DS_b must use the same values/codes (for ref_date, geo_area, sector … ), otherwise the relevant values would not match and the result of the operation would be wrong.
586 -
587 587  As mentioned, the property above is not enforced by construction in SDMX, and different representations of the same Concept can be not compatible one another (for example, it may happen that geo_area is represented by ISO-alpha-3 codes in DS_a and by ISO alpha-2 codes in DS_b). Therefore, it will be up to the definer of VTL
588 588  
588 +[[image:SDMX 3-0-0 SECTION 6 FINAL-1.0_en_59eee18f.gif||alt="Shape5" height="1" width="192"]]
589 +
589 589  Transformations to ensure that the VTL expressions are consistent with the actual representations of the correspondent SDMX Concepts.
590 590  
591 591  It remains up to the SDMX-VTL definer also the assurance of the consistency between a VTL Ruleset defined on Variables and the SDMX Components on which the Ruleset is applied. In fact, a VTL Ruleset is expressed by means of the values of the Variables (i.e. SDMX Concepts), i.e. assuming definite representations for them (e.g. ISOalpha-3 for country). If the Ruleset is applied to SDMX Components that have the same name of the Concept they refer to but different representations (e.g. ISO-alpha-2 for country), the Ruleset cannot work properly.
... ... @@ -600,8 +600,7 @@
600 600  
601 601  [[image:SDMX 3-0-0 SECTION 6 FINAL-1.0_en_e3df33ae.png||height="543" width="483"]]
602 602  
603 -(% class="wikigeneratedid" id="HFigure222013VTLDataTypes" %)
604 -**Figure 22 – VTL Data Types**
604 +==== Figure 22 – VTL Data Types ====
605 605  
606 606  The VTL scalar types are in turn subdivided in basic scalar types, which are elementary (not defined in term of other data types) and Value Domain and Set scalar types, which are defined in terms of the basic scalar types.
607 607  
... ... @@ -608,12 +608,131 @@
608 608  The VTL basic scalar types are listed below and follow a hierarchical structure in terms of supersets/subsets (e.g. "scalar" is the superset of all the basic scalar types):
609 609  
610 610  
611 -**Figure 23 – VTL Basic Scalar Types**
612 612  
613 613  (((
614 -
613 +//n//
614 +
615 +//a//
616 +
617 +//e//
618 +
619 +//l//
620 +
621 +//o//
622 +
623 +//o//
624 +
625 +//B//
626 +
627 +//n//
628 +
629 +//o//
630 +
631 +//i//
632 +
633 +//t//
634 +
635 +//a//
636 +
637 +//r//
638 +
639 +//u//
640 +
641 +//D//
642 +
643 +//d//
644 +
645 +//o//
646 +
647 +//i//
648 +
649 +//r//
650 +
651 +//e//
652 +
653 +//p//
654 +
655 +//_//
656 +
657 +//e//
658 +
659 +//m//
660 +
661 +//i//
662 +
663 +//T//
664 +
665 +//e//
666 +
667 +//t//
668 +
669 +//a//
670 +
671 +//D//
672 +
673 +//e//
674 +
675 +//m//
676 +
677 +//i//
678 +
679 +//T//
680 +
681 +//r//
682 +
683 +//e//
684 +
685 +//g//
686 +
687 +//e//
688 +
689 +//t//
690 +
691 +//n//
692 +
693 +//I//
694 +
695 +//r//
696 +
697 +//e//
698 +
699 +//b//
700 +
701 +//m//
702 +
703 +//u//
704 +
705 +//N//
706 +
707 +//g//
708 +
709 +//n//
710 +
711 +//i//
712 +
713 +//r//
714 +
715 +//t//
716 +
717 +//S//
718 +
719 +//r//
720 +
721 +//a//
722 +
723 +//l//
724 +
725 +//a//
726 +
727 +//c//
728 +
729 +//S//
730 +
731 +[[image:SDMX 3-0-0 SECTION 6 FINAL-1.0_en_82d45833.gif||alt="Shape6" height="231" width="184"]]
615 615  )))
616 616  
734 +==== Figure 23 – VTL Basic Scalar Types ====
735 +
617 617  === 12.4.2 VTL basic scalar types and SDMX data types ===
618 618  
619 619  The VTL assumes that a basic scalar type has a unique internal representation and can have more external representations.
... ... @@ -927,7 +927,7 @@
927 927  |N|fixed number of digits used in the preceding textual representation of the month or the day
928 928  | |
929 929  
930 -The default conversion, either standard or customized, can be used to deduce automatically the representation of the components of the result of a VTL Transformation. In alternative, the representation of the resulting SDMX Dataflow can be given explicitly by providing its DataStructureDefinition. In other words, the representation specified in the DSD, if available, overrides any default conversion^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^42^^>>path:#sdfootnote42sym||name="sdfootnote42anc"]](%%)^^.
1049 +The default conversion, either standard or customized, can be used to deduce automatically the representation of the components of the result of a VTL Transformation. In alternative, the representation of the resulting SDMX Dataflow can be given explicitly by providing its DataStructureDefinition. In other words, the representation specified in the DSD, if available, overrides any default conversion^^[[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)^^42^^>>path:#sdfootnote42sym||name="sdfootnote42anc"]](%%)^^.
931 931  
932 932  === 12.4.5 Null Values ===
933 933