Previous Next

Reformulating the model

Browse Car again and look at the criteria, note that the criteria tell you that cars run on petrol but not that they are road vehicles or anything about what it means to be a road vehicle. That information is implicit in the hierarchy.

It would probably be better to rethink the model to make both pieces of information explicit. (Don’t be afraid to rethink models and rebuild them from scratch. Most models have been rebuilt from scratch several, sometimes dozens of, times. You won’t get it right the first time).

Let’s reformulate the model so that both the fuel and whether it runs on rail or road are of equal status.

What we want to do:

  1. Remove RoadVehicle and RailVehicle from the asserted hierarchy.
  2. Define attributes and values so that we can describe a vehicle running on road or rail.
  3. Describe each vehicle using the attribute as running either on road or rail using necessary statements.
  4. Define the idea of RoadVehicle and RailVehicle in terms of those attributes and values using which expressions.

First create a new model, now make a new copy of the source file you are using. (Sometimes it is easier to start from scratch, but in this case we can probably manage to keep most of what we have already done.)

Remove RoadVehicles and RailVehicles (flattening the asserted hierarchy). Since we are going to use formal subsumption instead of asserted subsumption to classify the different kinds of vehicles, we need to remove the elementary categories RoadVehicle and RailVehicle from the asserted hierarchy.

Edit the initial commands in the file until they look as shown below. (The cut and paste keys can make this a quick operation.)

TransportCategory newSub Vehicle.
  Vehicle newSub Bus.
  Vehicle newSub Car.
  Vehicle newSub Train.
  Vehicle newSub Tram.

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