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.

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