Previous Next

When there must be multiple parents in the asserted hierarchy?

Ideally, no elementary category would have more than one elementary parent - i.e. no elementary category would be subsumed by more than one other elementary category. Put another way, the asserted hierarchy ought to be a pure tree.

Unfortunately, GRAIL is not sufficiently powerful to allow us to make this restriction absolute. In fact the GRAIL compiler will allow you to add many elementary parents to an elementary category, but it is in general a very bad idea to do so because it throws away most of the power of GRAIL.

There are normally only two places where there should be multiple parents in the asserted hierarchy: at the very top and at the very bottom.

At the very top, there is sometimes a need for very general categories which cut across other categories. An example from the medical experience is the notion of a disorder which can be anything from a tumour to a temperature. It cuts across so many other categories that it is easier to create a second supplementary structure than to try to reshape the rest to fit.

At the very bottom, there are sometimes values which are not mutually exclusive. For example in some versions of the medical hierarchy both-sided is made a child of both left-sided and right sided.

The keywords addSuper and addSub can be used to add an additional asserted parent or child to an existing elementary category. Note that they may only be used between elementary categories. For example:

SymbolicValueType newSub SidedValueType.
  SidedValueType newSub leftSided.
  SidedValueType newSub rightSided.
  rightSided newSub bothSided.
  bothSided addSuper leftSided.

It makes no difference in this case which parent is added with newSub and which with addSuper.

Again we emphasise: you are unlikely to produce models that work well and are easy to maintain if they contain more than a very few statements using addSub or addSuper.

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