Definitions
Identifier | Condition expression | Meaning |
---|---|---|
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 " 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 " Examples: AirportHeliportTimeSlice has ARP.ElevatedPoint location ; AirportHeliportTimeSlice has ARP.ElevatedPoint location unspecified |
DVT_NounDescendNounsTest | ( Object / 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