Rules definition using SBVR

Introduction

This section defines an 'SBVR profile', which is tailored to the AIXM needs and which is documented as a number of concepts and conventions applied in the writing of the AIXM business rules. Two previous projects have provided input material for this document:

  • work done by Pulsar Consulting, under contract for Eurocontrol 
  • Guidance on Writing AIRM Constraints provided by SESAR Project 08.01.03 

This document is not intended as an exhaustive introduction to SBVR. Apart from reading the full SBVR specification , the following 'SBVR essentials" reading list is suggested:

SBVR Profile for AIXM

SBVR concepts

The following table introduces the concepts used as part of the SBVR Profile for AIXM, including their graphical notation. Note that the use of some graphical notations is simplified as compared to the SBVR standard, such as double underline which is replaced with simple underline. This facilitates the use of standard office tools for the provision of the AIXM set of Business Rules, as double underline is hardly supported.


Concept

SBVR Definition:

  • Unit of knowledge created by a unique combination of characteristics.

    Representation in profile:
  • Not represented – too general


NounConcept

SBVR Definition:

  • Concept that is the meaning of a noun or noun phrase.

Representation in profile (i.e. what AIXM items may appear as NounConcept according to the SBVR profile):

  • Represented by AIXM UML Classes and Properties, meaning that AIXM Class Name, Role Name or Attribute Name may appear as NounConcept. Due to specificities of the AIXM UML model, some special constructs are explained in the NounConcept - Special situations section further in this chapter.

Style: Bold, underlined and UpperCamelCase or lowerCamelCase (depending on how the noun concept appears in the UML model). If several nouns are concatenated, then they should be separated by a dot (".") symbol.
Colour: #008080

Example: AirportHeliport, Airspace.type, AirportHeliport.name, Runway.associatedAirportHeliport


Verb-concept
also known as
"Fact type"

SBVR Definition:

  • Concept that is the meaning of a verb phrase that involves one or more noun concepts and whose instances are all actualities.

Fact is a proposition that is taken as true.
<Fact-type> :: = <concept1> <verb> <concept2>

Verb Concepts:

  • Business Facts
  • Relations among Concepts

Representation in profile (i.e. what AIXM items may appear as Verb-concept according to the SBVR profile):

  • Represented by Name of an AIXM UML association.

Style: italic
Colour: #0000ff

Example: AirportHeliport has name, Runway hasSurfaceDescribedBy SurfaceCharacetistics.


Name

SBVR Definition:

  • Name is a concept that corresponds to only one object [thing] used for the designation of an individual concept — a name. Names tend to be proper nouns.

Representation in profile (i.e. what AIXM items may appear as Name according to the SBVR profile):

  • Represents UML Instances, Slots, Enumeration literals, and their assigned Properties
  • CodeList values

Style: surrounded by 'simple quotes'
Colour: #339966

Example: 'Sweden', 'CTA', 'CTA_P', 'YES', 'NIL'

Note: this style is different from the standard SBVR style for Name concepts (double underline) for a practical reasons - the double underline is not well supported on all the platforms and in all the software applications used for the development and maintenance of the AIXM Business Rules.

'NIL' is an additional Name concept used in the SBVR profile for AIXM. It indicates a void property (i.e. a property that does not have a value).

Sometimes, it is necessary to provide a "list of names" (such as 'A', 'B' or 'C') in order to indicate the allowed values for a property (which appears as a NounConcept in SBVR rules). The following style shall be used: opening-bracket, followed by each Name-value surrounded by simple quotes, separated by comma and ending with closing-bracket.

Example: ('A','B','C') (note that the quotes and the brackets may also be formatted, just to keep the editing simple)


keyword

SBVR Definition

  • are used to construct statements – the words that can be combined with other designations to form statements and definitions, see sections on Logical Operations, Quantification, Modality and Additional SBVR keywords, all these being part of the keyword concept.

Representation in profile:

  • No particular mapping to UML model elements


    Style: Usual text format
    Colour: #ff9900

    Example: Each - referring to universal quantifier.

NounConcept - special situations

When writing AIXM business rules in SBVR, apart from the simple cases where a class/role/attribute name is used, there are also some special cases, when several classes/associations are involved, as detailed in the following table.

Special case

NounConcept construction rules

Concatenation - when necessary to identify an UML model element that is remote from the current class. For example, a rule defined for the AirportHeliport class that needs to refer to the name attribute of the associated City class.

The "." symbol is used as separator between the concatenated noun concepts. The relative path needs to include all the intermediate association role names and class names, as in the following example: servedCity.City.name.
Note that the separator is also formatted, just to keep the editing simple, although it is not part of respective noun concept.

Association classes - Some associations are qualified by a number of properties depicted inside an 'association class'. For example, the association between Airspace and another AirspaceVolume includes the AirspaceGeometryComponent association class.

When the NounConcept is inside the association class, the path includes first the name of the association role, concatenated with the association class name and with the property name concerned. For example: geometryComponent.AirspaceGeometryComponent.operation.
When the NounConcept is in the target association class or beyond, the path includes first the name of the association role, concatenated with the association class name, then the name of a fictitious theMyClass property name followed by the target class name. For example: geometryComponent.AirspaceGeometryComponent.theAirspaceVolume.AirspaceVolume.lowerLimit.

Specialisation - Inheritance is frequently used in the AIXM UML model. The class that is specialised is always stereotyped <<abstract>> and does not appear as such in the AIXM XML Schema. Only its non-abstract specialisations appear in the Schema. Inheritance could occur with more than one level of specialisation (for example, the Service class)

Initially, the class that is specialised was used as NounConcept, followed by the "specialisation" fact-type and by the name of the derived class (also a NounConcept). For example: "... NavaidEquipment specialisation TACAN…". However, this led to longer rules and SBVR text that is further away from the XML Schema structure, thus more difficult to convert into code that verifies the rules.

Change

The rules that exist in version 0.8 and that use the specialisation construct will be re-written in version 0.9

For the rules starting with version 0.9, in particular for the ICAO Data Sets, the properties of the abstract (generalised) class are used as if they were directly properties of the specialised class. For example: "...TACAN.location...", although location is a property of the <<abstract>> NavaidEquipment, which is inherited by the TACAN class.

Data type attributes - For example, most "Val…" data types come with a "uom" attribute.

The uom attribute appears directly in the path after the attribute name, prefixed with a '.'. For example, the rules that require the mandatory presence of a uom value for an elevation attribute use the following noun concept path: elevation.uom.

TimeSlice - Not present in the UML model, but appearing directly in AIXM XML Schema, based on the AIXM Temporality Concept (see in particular section 3.8 - "Temporality applied to the abstract model"). For example, rules that check the correctness of the validTime with regard to the type of TimeSlice.

The following properties introduced for each and every AIXM <<feature >> class may appear as noun concepts:

  • interpretation
  • sequenceNumber
  • correctionNumber
  • validTime
  • featureLifeime
    Note: in order to avoid confusions, these properties appear in the SBVR formulation as properties of timeSlice.AIXM Feature TimeSlice.

GML elements - Present only partially in the UML model, through the GM_… classes. However, the details of these classes are missing in AIXM 5.1. For example, positions are encoded with the gml:pos element, while surfaces use much deeper structures, such as gml:Surface.gml:...

Specific GML 3.2.1 schema elements appear as NounConcepts, such as:

  • ….Curve.segments.GeodesicString

Different instances - When a rule concerns two different instances of the same NounConcept and it is necessary to distinguish between the two. For example, a rule for the uniqueness of 5-letter designators needs to refer to different instances of the DesignatedPoint class.

A number in square brackets is used in order to distinguish the two, such as in the following example: DesignatedPoint[1]
Note that this notation is different from the one used in the SBVR standard (subscript, such as DesignatedPoint1) for a practical reason - subscripts are not well supported in all systems and on all the platforms used for the definition and maintenance of the AIXM Business Rules. This situation might change in future and the graphical notation might be aligned with the one used in the SBVR standard.

Additional Fact-types

The following table introduces additional fact-types used in SBVR AIXM Profile. They are 'additional' in the sense that they do not appear explicitly as associative facts in the model.
Note: the fact-types marked with an * sign are not used for the moment. They are kept for completeness sake, some might become necessary later.

is-property-of

associative fact type that is defined with respect to a first given concept and a second given concept such that each instance of the fact type is an actuality that an instance of the first concept constitutes an essential quality of an instance of the second concept

has

describes the same associative fact as "is-property-of", but in the opposite direction: an instance of the second concept constitutes an essential quality of an instance of the first concept

  • "has" as fact type for the attributes of a class: there is an implicit association (fact type) between a class and each of its attributes. This can be expressed using both the is property of or the has fact type (depending on direction in which the rule is written). For example: "name is property of AirportHeliport" or "Airspace has type"

  • "has" as fact type for the properties of an associated <<object>> class: The AIXM UML model makes a difference between <<feature>> and <<object>> classes (stereotype). An <<object>> is seen as a complex property of another class. Therefore, "has" can be used as a simplified fact-type in situation such as the following:
    • Airspace has geometryComponent.AirspaceVolume.upperLimit ("has" followed by the role name of the target class is used instead of the feature-object association name "hasGeometry")
    • AirportHeliport has servedCity.City.name ("has" followed by the role name of the target class is used instead of the feature-object association name "serves")

It is important to note that "has" as fact-type cannot be used when referring to the properties of another <<feature>> class, because the two exist independently from each other. They have a different timeline and traversing the association requires also selecting the relevant TimeSlices. This aspect is sufficiently important to be preserved in the SBVR text. In such situations, the association name must be used:

  • Runway isSituatedAt AirportHeliport (this cannot be replaced by "Runway has associatedAirportHeliport.AirportHeliport"!)

is-descendant-of

describes a deeper associative fact than "is-property-of"; an instance of the first concept constitutes a property of a property (and so on…) of an instance of the second concept

has descendant

describes the same associative fact as "is-descendant-of", but in the opposite direction

specialisation

categorisation fact type (used to target a specific non-abstract class, that is a specialisation of a parent class; for example NavaidEquipment specialisation VOR)
or
contextualisation fact type

categorization*

a particular instance of the concept is also an instance of the category

is-of-type*

is used for expressing units of measurements (UOM)

Logical Operations

The following table introduces the logical operations (e.g. "and", "not", "or", etc.) used in the SBVR Profile for AIXM. The exact representation of the operations is in the second column (using keywords convention).

Note 1: The logical expression that defines each AIXM SBVR rule is evaluated applying the usual operators priority/interpretation

  • "AND" is evaluated before "OR". For example: TRUE AND TRUE OR FALSE = TRUE. No parenthesis are used in SBVR expressions in order to indicate the order in which the operations are evaluated. The objective is to keep the rules as simple as possible. The lack of parenthesis usually lead to a rule being split into several separate rules. This also leads to more precise diagnostic messages.
  • "NOT" applies to the whole expression that follows it, until the next operator (if present) or until the end of the rule. For example: TRUE AND NOT FALSE AND TRUE = TRUE. This is equivalent to "TRUE AND (NOT FALSE) AND TRUE". 

Note 2: the keywords marked with an * sign are not used for the moment. They are kept for completeness sake, some might become necessary later.

Logical Operation

SBVR Profile for ATM Representation

Meaning

conjunction

p and q

True when all operands are true

disjunction

p or q

True when at least one operand is true

equivalence*

p if and only if q

True when operands are either all true or all false

exclusive disjunction*

p or q but not both

One operand is true and the other is false

implication

if p then q

The following equivalent formulation is sometimes used in this profile in order to improve the readability of the text:

"Eachshall…"

binary logical operation that operates on an antecedent and a consequent and that formulates that the meaning of the consequent is true if the meaning of the antecedent is true

logical negation

not p

True when the operand is false

nand*

not both p and q

true when at least one operand is false

nor*

neither p nor q

true when all operands are false

whether or not*

p whether or not q

binary logical operation that has a consequent and an inconsequent and that formulates that the meaning the consequent is true regardless of the meaning the inconsequent.

Quantification

The following table introduces the quantifications (e.g. "at least one") used as part of the SBVR Profile for AIXM. The second column contains the representation (using keywords convention).

quantifier
name

SBVR Profile for ATM Representation

logic
symbol

description

universal

each x

For each and every x, taken one at a time

existential

at least one x

At least one x

exactly-one

exactly one x

∃1

There is exactly one (at least one and at most one) x

at-most-one

at most one x

∃0..1

There is at most one x

at-most-n

at most n x

∃0..n
(n ≥ 1)

There is at most n x Note: n is always instantiated by a number ≥ 1. So this is really a set of quantifiers (n = 1, etc.)

at-least-n

at least n x

n..
(n ≥ 1)

There is at least n x Note: n is always instantiated by a number ≥ 1. So this is really a set of quantifiers (n = 1, etc.)

at-least-2

more than one x

n..
(n = 2)

There is at least 2 x.

exactly-n

exactly n x

n
(n ≥ 1)

There is at exactly (at least and at most) n x Note: n is always instantiated by a number ≥ 1. So this is really a set of quantifiers (n = 1, etc.)

numeric range

at least n and at most m x

n..m
(n ≥ 1)
(m ≥ 2)

There is at least n and at most m x

Modality

The following table introduces the modalities (e.g. "It is obligatory") used in the SBVR Profile for AIXM. The fourth column details the representation in the profile.
Note: the keywords marked with an * sign are not used for the moment. They are kept for completeness sake, some might become necessary later.

Modality

SBVR Profile for ATM

Reading (Verbalised as) after applying transformation using negations:

obligation

It is obligatory that p

The following formulations are used in this profile in order to distinguish between a strict and loose enforcement of an obligation (based on the ICAO practice):
p shall
p should ...

"shall" = obligation with strict enforcement level

"should" = obligation with loose enforcement level

It is not permitted that not p

prohibition
(negation of permission)

It is prohibited that p

In relation with the two forms of obligation (strict and loose enforcement,, based on the ICAO practice), the prohibition formulation can also take two forms:

p shall not
p should not ...

It is obligatory that not p

Note: Please be aware of the distinction between the use of the phrases "It is obligatory that"/"It is prohibited that" and the pattern "Each...shall/should". The latter implies that the target entity or attribute has to exist, whereas this is not always the case. Therefore, the negative formulation is preferred in most cases, as it will check the value only when the entity or the attribute is actually present.
Example:
Each Runway with assigned lengthStrip value shall have assigned lengthStrip.uom value equal-to ('FT','M')
versus
It is prohibited that a Runway with assigned lengthStrip value has lengthStrip.uom value not equal-to ('FT','M').


Additional SBVR keywords

The following table introduces additional keywords that are used in this Profile.

Keyword

Explanation

Way of use in SBVR AIXM Profile

a, an

universal or existential quantification

depending on context based on English rules

assigned value

existential quantification (that the referent thing is not null)

for readability reasons (and to comply with the English language syntax), it is usually written as follows:
assigned noun-concept value

Note: a nilReason is not considered an assigned value.

with

has fact type plus a condition on the property or descendant

used as a simplified form of:
p has q and q …some condition for q...

that

existential quantification for a part of a condition starting with a verb concept

typically used in front of the verb concept, between two noun concepts with associated conditions
... p… some condition for p… that verb q … some condition for q …

equal-to

existential quantification plus a condition that the referent thing is the same thing as the referent of the term that comes next

typically used in front of a Name or a list of Names, when the item also has to exist

higher-than

existential quantification plus a condition that the referent thing is a numerical value that is larger than the referent of the term that comes next

typically used after a noun-concept in the form of a class attribute that takes numerical values

higher-or-equal-to

existential quantification plus a condition that the referent thing is a numerical value that is larger than or equal to the referent of the term that comes next

typically used after a noun-concept in the form of a class attribute that takes numerical values

lower-than

existential quantification plus a condition that the referent thing is a numerical value that is smaller than the referent of the term that comes next

typically used after a noun-concept in the form of a class attribute that takes numerical values

lower-or-equal-to

existential quantification plus a condition that the referent thing is a numerical value that is smaller than or equal to the referent of the term that comes next

typically used after a noun-concept in the form of a class attribute that takes numerical values

intersects

existential quantification plus a condition that the referent thing is a time interval that has a common portion or that is fully overlapping with another time period.

The same term is used in the OGC® WFS Temporality Extension (12-027r4), where it is defined as semantically equivalent to the fes:AnyInteracts operator as defined in OGC® Filter Encoding 2.0 Encoding Standard (09-026r2), 7.9.2

typically used to compare the timeValid properties of two TimeSlices

resolved-into

existential quantification plus a condition that the value of the noun-concept that precedes the keyword corresponds to an instance of the verb and noun-concept that come next

used to indicate the action of evaluating the value of an association role name instance and identifying the target feature instance, taking into consideration the associations implementation method used (according to the AIXM Feature Identification and reference document)

other-than

at-most-one quantification plus condition that the referent thing is not the same thing as the referent of the term that comes next

typically used in front of a Name or a list of Names, when the item may also be null

Methodology

This section is primarily intended for those involved in the writing of the SBVR text of the AIXM Business Rules. However, it might also provide interesting hints for the readers of the document, as it shows how a rule is being developed starting from a fact established by the model, a reference document (such as an ICAO Annex containing Standards and Recommended Practices) and applying the SBVR methodology.
The starting point for writing the SBVR text of a rule is the AIXM UML model, which describes "fact types" such as:

  • "Runway isSituatedAt AirportHeliport"
  • "name is-property-of AirportHeliport"
  • etc.
  • Some of these fact types are documented as associations between classes and there is an explicit verb (the name of the association, such as "isSituatedAt"). Some others are attributes of a class (and the verb that describes the fact type is implicitly "is-property-of"). Note that the graphical syntax for NounConcepts and FactTypes is used in these examples, as described earlier in the document.

In the first phase, the objective is to capture the various constraints that are used to define bounds, borders or limits on this set of facts. Any such rule shall have at its core a "fact type". In addition, pure operative rules that are not directly related to a fact type established by the model might also have to be captured. For example, the required accuracy of the boundary points of a restricted area depends on whether the area is inside or outside a TMA. There is no fact type that relates a Restricted Area with a TMA, they are both instances of the Airspace class. However, the business concept of "overlapping geometry" can be included in the business vocabulary of the aeronautical information domain and enables expressing unambiguously such rules.
Thus, a recipe for writing a rule in SBVR could be:

  • write the rule in operational terms, trying to identify the main class in the AIXM UML model that is concerned (AirportHeliport, Airspace, Navaid, etc.).
  • identify the fact types in the model to which the constraint refers (could be represented as an attribute of a class, an association of a class, or could be a more complex part of the model, involving 2-3 classes and their attributes, indirectly related);
  • start building the rule text around that fact type:
    • add quantification to each noun concept involved;
    • add logical operations, if more conditions are involved;
    • add modality for the fact type.

For example:

  • "It is obligatory that each Runway isSituatedAt exactly one AirportHeliport
  • "It is obligatory that exactly one name is-property-of each AirportHeliport"

Keep in mind that obligations come in two forms in the aeronautical information domain: strict (expressed with "shall") and loose (expressed with "should").
The fact type "is-property-of" is maybe easier to understand if written in the opposite direction using "has/have".

  • "Each AirportHeliport shall have exactly one name"

In fact, the two rules mentioned above are already hard-coded in the AIXM UML model and do not actually need to be also defined as AIXM Business Rules.The real goal is to document rules that are not already coded in the UML model. For example, a data consistency rule stating that "a heliport cannot have any associated runway", is defined following the same steps:

  • identify in the AIXM UML model the fact types concerned:
    • Runway isSituatedAt AirportHeliport
    • Runway has type
    • AirportHeliport has type
  • the model already includes the constraint that the Airport type attribute can get a value from a predefined list: ('AD', 'AH','HP','LS','OTHER'). The value that interests us in this case is 'HP' (heliport). Combining this constraint with the second fact type gives the following: AirportHeliport has type equal-to 'HP'.
  • adding modality and quantification gives the following rule: It is prohibited that a Runway has type equal-to 'FATO' and Runway isSituatedAt AirportHeliport and AirportHeliport has type equal-to 'HP'
    • in his form, the rule might a bit difficult to understand by domain experts. Therefore, for short rules a simpler form (using the keyword "with") may be used: "Runway with type equal-to 'FATO'" instead of "Runway has type equal-to 'FATO' and Runway..."
    • the rule can be written as: "It is prohibited that a Runway with type equal-to 'FATO' isSituatedAt AirportHeliport with type equal-to 'HP'"

It could be argued that the rule can be written more clear in the opposite direction: "Each AirportHeliport with type equal-to 'HP' shall not have associated Runway with type equal-to 'FATO'". However, the fact-type established by the model is that 'Runway is situated at Airport'. All associations in the model have directionality. Therefore, it is better to take this into consideration when writing the rule. In XML, the Runway will point to the AirportHeliport, therefore the rule can be checked directly from the Runway towards the AirportHeliport.