2.2 Is-a  Statements

Is-a statements describe class hierarchy and membership of object in various classes. There are two types of is-a statements. O:C means that object O is a member of the class C. You can read it as "O is a C". For example roel:organic_farmer means "roel is an organic farmer".   A::B means that class A is a subclass of class B. You can read A::B as "every A is a B". For example organic_farmer::farmer means that every organic_farmer is a farmer. The logical relation between these two types of statement is as follows:

if O:A and A::B then O:B

For example from two facts roel:organic_farmer and organic_farmer::farmer we may derive the fact roel:farmer. The relation " ::" is transitive. Transitive means that it is similar to the familiar relation of order between numbers. We know from arithmetic that for any three numbers a, b, c the following is true:

if a<b and b<c then a<c.

This property  of order relation "<" is called transitivity.  So now you can guess that for relation  "::" we can write it like this:

if A::B and B::C then A::B.

It is in fact very intuitive. Say if you have two facts  ecological_modeler::ecologist "every ecological modeler  is an ecologist" and ecologist ::scientist "every ecologist  is a scientist"   you can derive that  "every ecological modeler is a scientist",  that is ecological_modeler::scientist.

Here is the way how we shall represent the  two types of is-a statement  in a graphic form. The diagrams were generated with dot program, which is the  part of AT&T Graphviz package  . Each diagram is supplemented by the dot code,

 

roel:person ecologist::scientist
dot-code     dot-code

             

In F-Logic, an object may belong simultaneously to a number of classes which do not have a common ancestor. This is another way to say that F-Logic supports multiple inheritance.

Here is an example pertained to Ecosystem Services Database. It is a small fragment of   ESD biogeochemical cycle model. 

nitrogen_compound::chemical_agent.
nitrogen[label->'N']:nitrogen_compound.
nitrogen_gas[label->'N2']:nitrogen_compound.
ammonia[label->'NH3']:nitrogen_compound.
ammonium[label->'NH4']:nitrogen_compound.
nitrous_oxide[label->'N2O']:nitrogen_compound.
nitric_oxide[label->'NO']:nitrogen_compound.
nitrogen_dioxide[label->'NO2']:nitrogen_compound.
nitrite_ion[label->'NO2-']:nitrogen_compound.
nitrate_ion[label->'NO3-']:nitrogen_compound.
 

dot-code

 

 

Top    |  Previous   |   Next

C 2003 S. Krivov  Send your comments to skrivov@zoo.uvm.edu