Elementary conditions - test descendant nodes value

Definitions

IdentifierCondition expressionMeaning
D_NounDescendNouns

Object / dataSet ) (has / has-descendant) (quantityOrRange)? propertyPath

A child or descendant element of an AIXM data set/object is present

Examples: AirspaceTimeSlice has type ; AirspaceTimeSlice has at-least 2 annotation

DV_NounDescendNounsValue

Object / dataSet )  (has / has-descendant) (quantityOrRange)? propertyPath value

Object / dataSet )  (has / has-descendant)  propertyPath value  unspecified

A child or descendant element of an AIXM data set/object is present and either has an assigned value or it is an empty element). For empty elements, it is not possible to specify a quantity of range (such as "at-least 2 annotation value unspecified")

Examples: AirspaceTimeSlice has type value ; AirspaceTimeSlice has name value unspecified

DG_NounDescendNounsGeo

Object / dataSet )  (has / has-descendant) (quantityOrRange)? propertyPath location / extent

Object / dataSet )  (has / has-descendant)  propertyPath location unspecified / extent unspecified


A child or descendant element of an AIXM data set/object is present and either has an assigned  geographical location or extent or it is an empty element). For empty elements, it is not possible to specify a quantity of range (such as "at-least 2 horizontalProjection.Surface extent unspecified")

Examples: AirportHeliportTimeSlice has ARP.ElevatedPoint location ; AirportHeliportTimeSlice has ARP.ElevatedPoint location unspecified

DT_NounDescendNounsTime

Object / dataSet )  (has / has-descendant) (quantityOrRange)? propertyPath instant / period

Object / dataSet )  (has / has-descendant)  propertyPath instant unspecified / period unspecified


A child or descendant element of an AIXM data set/object is present and either has an assigned  time instance or period or it is an empty element). For empty elements, it is not possible to specify a quantity of range (such as "at-least 2 TimePeriod period unspecified")

Examples: AirportHeliportTimeSlice has gml:validTime.TimeInstance instant ; AirportHeliportTimeSlice has gml:validTime.TimePeriod period unspecified

DVT_NounDescendNounsTestObject / dataSet )  (has / has-descendant) (quantity) propertyPath value  (compareWith 'valueOrList' / #free test#)

A child or descendant element of an AIXM data set/object is present and it has an assigned value that complies with a test. The test is either a comparison with a value or a list of allowable values or it is a free test.

Examples: AirspaceTimeSlice has type value as 'TMA' ; AirspaceTimeSlice has name value #that includes the word 'Brussels'#

Where propertyPath = property ("." Object "." property)*

Mapping to AIXM XML structure

This group of elementary conditions test the existence or the value of the child or descendant nodes of an AIXM XML element. They have the following particularities:

  • the "entry node' is an AIXM XML element that corresponds to an AIXM class with stereotype <<feature>> or <<object>>, such as Airspace, Runway, City, ElevatedPoint, etc, This includes FetaureTimeSlice classes, such as AirspaceTimeSlice, RunwayTimeSlice, etc.
  • some particular rules require the whole data set to be treated as an entry node. For example, a rule that constrains the value of the gml:srsName attribute may be written from the data set as "entry node" because it applies any gml:srsName, wherever it is located within that data set; 
  • has is used when the element that is tested is a direct child element (in the XML sense) of the feature/object or when the full path, starting with the child element is provided.
  • has-descendant is used when the element that is tested is a deeper descendant (in the XML sense) of the feature/object. In principle, child elements are also descendants. However, for editorial clarity, 'descendant' should not be used for direct child elements.

The following diagram shows how has and has-descendant are interpreted in the AIXM XML structure.

Special situation - multiple descendants

Many properties in AIXM can be multi-occurring. For example, an AirspaceTimeSlice can have several geometryComponent.AirspaceVolume child/descendant elements. This mean that all occurrences of the child/descendant needs to be considered in the evaluation of the rule. This does not mean that they all need to be tested! For example, if an elementary condition is formulated with "at-least one" and a first occurrence is found, the remaining ones might not need to be effectively tested, However, in other circumstances, all occurrences need to effectively be tested against the rule


POROSNICU Eduard
July 5, 2024

BNF to be modified as well

POROSNICU Eduard
July 8, 2024

done