next up previous
Next: Rules Up: NeoClassic User's GuideVersion 1.0 Previous: Individuals



Roles are entities that represent the properties of CLASSIC individuals. They map CLASSIC individuals to other (CLASSIC or HOST) individuals. The roles of a CLASSIC individual can either be ``filled'' by individuals (called the role fillers) or have their potential fillers restricted by certain concepts (i.e., as type descriptions), or both, where the fillers and descriptions can be in either the CLASSIC realm or the HOST realm. Attributes are special types of roles that have an implicit maximum number of fillers of 1.

The syntax for defining a role is:[*]

where the symbol is the name of the role, and the boolean specifies whether the role is an attribute (and defaults to false if missing).

A role r can be thought of as a two-place predicate: r(individual1, individual2), where the role-predicate is TRUE if r on individual1 is known to have the value (filler) individual2. For example, brother(Mary, John) would be TRUE if the brother role on the individual Mary is known to have the value John. A role on an individual may have any number of values, possibly none.

Peter F. Patel-Schneider