Previous Next

Sanctioning statements

So far, we’ve only considered elementary categories - those categories that we’ve explicitly defined and placed in the hierarchy. Using attributes, such as hasOwner declared above, we can construct composite categories. However, we can’t just make composite categories at will: asserting that a Person is owned by a Bus is obviously nonsensical and should be prevented! Before it can be used in a definition, an attribute has to be sanctioned. Sanctioning is the mechanism that describes how categories can be put together with attributes to make definitions, and thus specify what it is sensible and meaningful to say.

In GRAIL, there are two levels of sanctioning statements (plus a third level of necessary statements which we will describe later):

To sanction the hasOwner relation at the grammatical level, we create a new statement by evaluating the following statement:

Vehicle grammatically hasOwner LivingThing.

This statement says that in a grammatical sense, a Vehicle can have a owner, which is a LivingThing, associated with it. Roughly speaking, this means that it would not be crazy to ask a question about any sort of living thing owning a vehicle, but it may not make much sense or be the sort of thing we would want to turn up in a list of choices in a user interface. We can ask questions about toads who own cars, but unless we are modelling some sort of cartoon world, it isn’t very sensible.

So what have we done? We’ve expressed the fact that in general, it’s not crazy to talk about vehicles having owners. Not all vehicles will have owners, and not all living things will be owners of vehicles - the further levels of sanctioning will refine these constraints.

RoadVehicle sensibly hasOwner Person.

This statement tells us that for RoadVehicles, it’s sensible to talk about them having people as owners.

In order for a sensible statement to be valid, there must already exist an appropriate grammatical statement. For instance, if we had attempted to evaluate the sensible statement before the grammatical statement, an error would have occurred. Note also that categories inherit the sanctions from their parents. As RoadVehicle inherits from Vehicle, it also inherits the grammatical sanction of the hasDriver relation. Likewise Person inherits the sanction from LivingThing. This is an important point to remember.

Note that there can be more than one grammatical statement for the same attribute. It is also possible for grammatical and sensible statements to occur at the same level. For example, if we say

DomainCategory newSub Organisation.

Then we might want to add.

Vehicle grammatically hasOwner Organisation.
Vehicle sensibly hasOwner Organisation.

To view the statements that are in force for a particular concept, open the Sanctions window, as shown below:

The display indicates that there is currently only one attribute sanctioned (hasOwner). You can select to see the grammatical or the sensible sanctions. You can also ask how the sanction is present in the model, either locally attached to the concept or inherited from one of its ancestors.

Form of GRAIL statements

All GRAIL statements follow the pattern above:

Topic qualifierKeyWord anAttribute Value.

The Topic and Value must be categories and anAttribute must be an attribute. The qualifier keywords grammatically and sensibly have been introduced so far. Other qualifier keywords will be introduced later.

In short, GRAIL statements are triples as in many other languages, plus a qualifier. GRAIL uses the word topic rather than object (as in object-attribute-value triple) in order to avoid confusion with the many other uses of the word object in current circulation.

Previous Next
Making the impossible very difficult, ©, All rights reserved