### Base Templates CardinalityMin, CardinalityMax, CardinalityMinMax

CardinalityMin, CardinalityMax, and CardinalityMinMax are templates for expressing the

values of cardinalities.

CardinalityMinMax(a, b, c) means that a is a cardinality and b and c are integers, and that

b is the minimal, c the maximal, constraint of a. CardinalityMin and CardinalityMax are

similar, and apply to just the minimal, resp. the maximal constraint.

CardinalityMin

Roles:

1 hasCardinality Cardinality

2 valMinimumCardinality INTEGER

CardinalityMax

Roles:

1 hasCardinality Cardinality

2 valMaximumCardinality INTEGER

CardinalityMinMax

Roles:

1 hasCardinality Cardinality

2 valMinimumCardinality INTEGER

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).