=== Base Templates !CardinalityMin, !CardinalityMax, !CardinalityMinMax === [[br]]!CardinalityMin, !CardinalityMax, and !CardinalityMinMax are templates for expressing the [[br]]values of cardinalities. [[br]] [[br]]!CardinalityMinMax(a, b, c) means that a is a cardinality and b and c are integers, and that [[br]]b is the minimal, c the maximal, constraint of a. !CardinalityMin and !CardinalityMax are [[br]]similar, and apply to just the minimal, resp. the maximal constraint. [[br]]!CardinalityMin [[br]] [[br]]Roles: [[br]]1 hasCardinality Cardinality [[br]]2 valMinimumCardinality INTEGER [[br]] [[br]]!CardinalityMax [[br]] [[br]]Roles: [[br]]1 hasCardinality Cardinality [[br]]2 valMaximumCardinality INTEGER [[br]] [[br]]!CardinalityMinMax [[br]] [[br]]Roles: [[br]]1 hasCardinality Cardinality [[br]]2 valMinimumCardinality INTEGER [[br]]3 valMaximumCardinality INTEGER Axiom: {{{ CardinalityMin(x1, x2) <-> Cardinality(x1) & INTEGER(x2) & hasMinimumCardinality(x1, x2) . }}} Axiom: {{{ CardinalityMax(x1, x2) <-> Cardinality(x1) & INTEGER(x2) & hasMaximumCardinality(x1, x2) . }}} Axiom: {{{ CardinalityMinMax(x1, x2, x3) <-> Cardinality(x1) & INTEGER(x2) & INTEGER(x3) & CardinalityMin(x1, x2) & CardinalityMax(x1, x3) . }}} NOTE In ISO 15926, cardinalities are first-class objects. In ISO 15926-2, it is stated that an absence of specified minimum or maximum values for a cardinality should be interpreted as a absence of constraints (clause 5.2.13.1). The nature of the representation of ISO 15926-2 in first-order logic, with an open world assumption, mandates that both lower and upper bounds be given explicitly. Where no minimal constraint applies, the value 0 should be assigned. Where no maximum constraint applies, the reference item * Cardinality should be assigned (see 8.2.1).