/
[AIXM-602] Add nilReason to StandardLevelColumn unitOfMeasurement

[AIXM-602] Add nilReason to StandardLevelColumn unitOfMeasurement

ID:

AIXM-602

target version:

AIXM 5.2

version:

1.0

last updated:

24 APR 2023

status:

APPROVED


Description

A new CodeDistanceVerticalUomBaseType codelist is added in the model, used for the derivation of the CodeDistanceVerticalUomType.

Rationale for change

See https://aixmccb.atlassian.net/browse/AIXM-534

The AIXM-146 Change Proposal, between AIXM 5.1 and AIXM 5.1.1, has introduced a correction to a number of data types that were missing nilReason attributes. A dedicated CodeDistanceVerticalUomType was introduced with AIXM-146, used for the StandardLevelColumn attribute unitOfMeasurement as shown in the UML class diagram below.

However, in the AIXM 5.1.1 XSD, the CodeDistanceverticalUomType does not have the nilReason attribute:

<simpleType name="CodeDistanceVerticalUomType">

<restriction base="aixm:UomDistanceVerticalType"/>

</simpleType>

This means that the unitOfMeasurement attribute cannot be NIL and cannot get a nilReason. This is a discrepancy between the UML model and the XML Schema of AIXM 5.1.1.

The error seems to be due to a limitation of the UML to XSD script. As this is a unique situation where a Uom data type is used directly as data type for an AIXM feature property, the simplest solution is to create a dedicated  <<codelist>> for the unitOfMeasurement attribute, instead of trying to reuse the UomDistanceVerticalType.

Impact assessment

[FWD_1:1] No data mapping is necessary and no data loss occurs when data is exchanged from a system (A) that uses AIXM 5.1.1 for output towards a system (B) that uses AIXM 5.2 for input.

[BWD_MAP_LOSS] Data mapping is possible, but some data would be lost (or converted into Notes) when data is exchanged from a system (B) that uses AIXM 5.2 for output towards a system (A) that uses AIXM 5.1.1 for input.

Change Proposal details

In the UML model:

  • Add a new <<codelist>> CodeDistanceVerticalUomBaseType as a specialisation of the xsd:string type, definition = “A code indicating the unit of measurement used for vertical distances”, allowable values:
    • FT = Feet
    • M = Metres
    • FL = Flight level in hundreds of feet
    • SM = Standard metres (tens of metres)
    • OTHER = Other
  • Change the specialisation relationship of CodeDistanceVerticalUomType to be from CodeDistanceVerticalUomBaseType

The resulting model is presented in the following UML class diagram:


Mapping AIXM 5.1.1 to AIXM 5.2 (forward)

  • Not applicable

Mapping AIXM 5.2 to AIXM 5.1.1 (backward)

The following algorithm shall be applied:

  • [MAPC-02] For each StandardLevelColumn that has a nilReason value for its child unitOfMeasurement child element, from the three backward mapping options available, the first two (discard the value or use an extension) are straightforward and do not need any further details. The 3rd option (backward mapping into a Note) is detailed in order to provide a complete description of this case and its conversion option. The following mapping into Note algorithm is proposed:
  • Add an annotation.Note associated with the owner class having
  • purpose=“OTHER:BACKWARD_MAPPING”;
  • property = “unitOfMeasurement”
  • LinguisticNote.note=”nilReason: <value of @nilReason>;
  • Remove the nilReason attribute of the unitOfMeasurement

Mapping example

(Note: for mapping test data see: https://github.com/aixm/mapping_52_511/tree/master/AIXM-xxx

AIXM 5.2AIXM 5.1(.1)