Necessary statements
So far, we've seen the two kinds of sanctioning statement - grammatical and sensible. We now meet the third kind of statement, the necessary statement. This is used for situations where a criterion is mandatory but not part of the definition. For instance, we may expect that all owners of road vehicles must be old (for the purposes of our example, old is considered to be old enough to drive - this does not necessarily reflect the actual views of the management!), We can incorporate this into the GRAIL model as follows:
(Person which isOwnerOf RoadVehicle) necessarily hasAge old.
Note that the category on the left is a complex category - previously all our statements involved basic categories. A statement can have any valid category expression on the left or right hand side. Now try browsing the expression:
(Person which isOwnerOf RoadVehicle).
This time, in the definition you'll notice the criterion isOwnerOf RoadVehicle. However, the criterion hasAge old will also be present, telling us the extra information that we've just added to the model. If we now attempt to evaluate:
Girl which isOwnerOf Car.
The evaluation will fail as the criteria hasAge old and hasAge young would both be present in the result of the expression and are conflicting. Recall that hasAge has cardinality manyOne.