Previous Next


Transitive relations are relatively straightforward to understand. The basic pattern is that The part of the part is a kind of part of the whole. The pattern carries on indefinitely.

So if we say that seat covers are parts of seats, and seats are part of vehicles, then seat covers are also part of vehicles. Likewise if tread is part of tyres, and tyres are part of vehicles, then the tread is part of the vehicle.

(Philosophers and linguists worry about whether indefinitely long chains of part-of links should really be considered transitive, but for purposes of classification, we shall maintain here unequivocally that they should.)

To illustrate transitivity, let us extend the model a bit further as follows:

> New categories
DomainCategory newSub VehiclePart.
  VehiclePart newSub Seat.
  VehiclePart newSub Wheel.
  VehiclePart newSub Nut.
  VehiclePart newSub SeatCover.
  VehiclePart newSub Tyre.
  VehiclePart newSub Tread.
DomainCategory newSub Damage.
  Damage newSub Puncture.
  Damage newSub Wear.
  Damage newSub Tear.

>New attribute and its transitive declaration.
DomainAttribute newAttribute hasPart isPartOf allAll oneMany.
hasPart transitiveDown.

VehiclePart grammaticallyAndSensibly isPartOf Vehicle.
VehiclePart grammaticallyAndSensibly isPartOf VehiclePart.

> Facts
Vehicle necessarily hasPart Seat.
  Seat necessarily hasPart SeatCover.
Vehicle necessarily hasPart Wheel.
  Wheel necessarily hasPart Tyre.
    Tyre necessarily hasPart Tread.

> The definitions for demonstrating transitive relations
(VehiclePart which isPartOf Vehicle) name AssembledVehiclePart

Note the declaration:

hasPart transitiveDown

immediately following the newAttribute statement for hasPart. This declaration states that the attribute hasPart is transitive. (The downwards direction marker is now obsolete but can be useful to the compiler for optimisations.)

Evaluate everything and then browse AssembledVehiclePart. You should get an result as shown below. The list of subsumed categories includes Tread and SeatCover. Without the transitiveDown declaration neither Tread nor ,SeatCover would have been included. (Note that the order of the list of subsumed items is irrelevant.)

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