Page tree
Skip to end of metadata
Go to start of metadata

ID:

AIXM-142

target version:

AIXM 5.2

version:

1.0

last updated:

17 OCT 2018

status:

APPROVED









Description

The discrepancy between the AIXM 5.1(.1) UML model and the XML schema on the multiplicity of the SafeAltitudeArea in the association with Procedure is corrected to allow 0..* in both.

Rationale for change

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

A bug was discovered in the script used to generate the XML schema from the Rational Rose UML model. The script did not support associations towards features that have a cardinality different than 0..1 or 0..*. A cardinality such as 0..2 was wrongly generated in the XSD schema without any “maxoccurs” attribute, which practically makes it a single occurrence property.

The element affected by this bug is the safeAltitude property of the Procedure (i.e. StandardInstrumentDeparture, StandardInstrumentArrival and InstrumentApproachProcedure) which represents the association with the SafeAltitudeArea feature.

There exist examples of procedures that have both MSA and ESA specified. Therefore, the multiplicity of the association is still justified to be more than one, as it was already the case in the AIXM 5.1 UML model. In order to avoid a unique case in the whole model where the maximum multiplicity is specified to something different than 1 or n, this maximum of “2” is modified to a maximum of “n”. This will ensure that the current UML to XSD script generates it correctly.

Impact assessment

There is no impact on existing implementations as the current AIXM 5.1(.1) data remains fully valid against AIXM 5.2.

When receiving data from AIXM 5.2 implementations that actually have more than one occurence of the safeAltitude element, current AIXM 5.1(.1) systems will have to apply the mapping rules specified further in this document.

Note: As the script used for the application/xml schema is also used for generating extension schemas, cardinalities for associations towards features that are different from 0..1 or 0..* shall not be used. If it is envisaged that more than one instances of an association might occur, it is advised to model it with a cardinality 0..*. Never use a specific number such as 0..2, 0..3, etc.

Change Proposal details

The following change is done in the AIXM UML mode, on the class Procedure

  • the multiplicity of the SafeAltitudeArea in the association with Procedure is changed to 0..* in the UML model (instead of 0..2).

The UML class diagram below shows the modified association multiplicity on the SafeAltitudeArea side.

Mapping AIXM 5.1.1 to AIXM 5.2 (forward)

NIL (Not applicable).

Mapping AIXM 5.2 to AIXM 5.1.1 (backward)

[MAPC-05] From the three backward mapping options available in this case, the first two (discard the additional occurrences or use an extension) are straightforward and do not need any further details. The 3rd option (backward mapping of the additional occurrences 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:

For each SID, STAR or InstrumentApproachProcedure that has two or more safeAltitude elements:

  • Preserve the safeAltitude element that refers  to a SafeAltitudeArea having safeAreaType equal-to ‘MSA’; If it does not exist or if more than one exists, then do not preserve anything;
  • For each of the safeAltitude element that is not preserved according to the rule above, remove the element and add an annotationNote with:
    • propertyName=safeAltitude
    • purpose=“OTHER:BACKWARD_MAPPING”;
    • translatedNote.LinguisticNote.note=”safeAltitude[1].SafeAltitudeArea: <safeAltitude.xlink:href>;  safeAltitude[2].SafeAltitudeArea: <safeAltitude.xlink:href>; etc.”
      • “[1]”, “[2]” indicate that this needs to be repeated as many times as necessary to cover all occurrences that are not preserved;

Mapping example

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

AIXM 5.2AIXM 5.1(.1)
message:AIXMBasicMessage
  message:hasMember
    InstrumentApproachProcedure
      gml:identifier = c8fe1e3f-0dd0-4dd5-af34-7930c60fad7f
      timeSlice
        InstrumentApproachProcedureTimeSlice
          gml:validTime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          interpretation = BASELINE
          sequenceNumber = 1
          featureLifetime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          safeAltitude =  urn:uuid:cd14580d-adec-48cc-832d-376988518f45
          safeAltitude =  urn:uuid:aed55020-707f-4b50-b012-308736484620





  message:hasMember
    SafeAltitudeArea
      gml:identifier = cd14580d-adec-48cc-832d-376988518f45
      timeSlice
        SafeAltitudeAreaTimeSlice
          gml:validTime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          interpretation = BASELINE
          sequenceNumber = 1
          featureLifetime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          safeAreaType = MSA
  message:hasMember
    SafeAltitudeArea
      gml:identifier = aed55020-707f-4b50-b012-308736484620
      timeSlice
        SafeAltitudeAreaTimeSlice
          gml:validTime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          interpretation = BASELINE
          sequenceNumber = 1
          featureLifetime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          safeAreaType = ESA





message:AIXMBasicMessage
  message:hasMember
    InstrumentApproachProcedure
      gml:identifier = c8fe1e3f-0dd0-4dd5-af34-7930c60fad7f
      timeSlice
        InstrumentApproachProcedureTimeSlice
          gml:validTime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          interpretation = BASELINE
          sequenceNumber = 1
          featureLifetime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          annotation
            Note
              propertyName = safeAltitude
              purpose = OTHER:BACKWARD_MAPPING
              translatedNote
                LinguisticNote
                  note = safeAltitude.SafeAltitudeArea: urn:uuid:aed55020-707f-4b50-b012-308736484620
          safeAltitude =  urn:uuid:cd14580d-adec-48cc-832d-376988518f45
  message:hasMember
    SafeAltitudeArea
      gml:identifier = cd14580d-adec-48cc-832d-376988518f45
      timeSlice
        SafeAltitudeAreaTimeSlice
          gml:validTime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          interpretation = BASELINE
          sequenceNumber = 1
          featureLifetime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          safeAreaType = MSA
  message:hasMember
    SafeAltitudeArea
      gml:identifier = aed55020-707f-4b50-b012-308736484620
      timeSlice
        SafeAltitudeAreaTimeSlice
          gml:validTime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          interpretation = BASELINE
          sequenceNumber = 1
          featureLifetime
            gml:TimePeriod
              gml:beginPosition = 2009-01-01T00:00:00Z
              gml:endPosition = 
          safeAreaType = ESA



  • No labels