F-Logic supports two types of object attributes-those which can have only one value and those which can have many values. Here is an example of single valued attribute roels_bycile[color-->black]. Here is another example: roel[wife-->tiny]. This statement represent the fact 'roel has wife tiny". We shall use the following graphic representation for single valued attributes:
The example of multi-valued attribute is as follows:
roel[owns -->>{roels_bicycle, roels_farm, sachha, noosam}].
Here it is in the graphic form:
Multi-valued attributes will be always represented by edges with two arrows. It is possible to combine the information about object attributes and classes. The last statement supplemented with class information will look as follows:
roel:person[owns -->>{roels_bicycle:bicycle, roels_farm:farm, sachha:cat, noosam:dog}].
F-Logic allows to combine simple statement into complex ones with the help of logical connections AND, OR ,NOT. As it is common in logic programming languages, AND is denoted by simple comma ','. OR is denoted by a semicolon ';'. NOT is normally described as "not". It is also possible to combine information about several attributes of an object into one statement. The assertions about different values of one multivalued attribute could be done in several places. The following three statements are equivalent
roel[owns -->>{roels_bicycle:bicycle, roels_farm:farm, sachha:cat, noosam}], roel[wife-->tiny]. (Note that ',' stands for AND)
roel[wife-->tiny, owns -->>{roels_bicycle:bicycle, roels_farm:farm, sachha:cat, noosam:dog}].
roel[wife-->tiny, owns -->>{roels_bicycle:bicycle}], roel[owns-->>{roels_farm:farm, sachha:cat, noosam:dog}]
Such complex statements are called F-Molecules, while simple statements are called F-Atoms. The graphic representation flattens the differences between these 3 cases:
C 2003 S. Krivov Send your comments to skrivov@zoo.uvm.edu