Download Φ License Φ Forum Φ Team Φ Home
ConceptBase's capabilities as a modeling tool can be extended by meta classes. The semantics of these meta classes, in particular the semantics of the link types defined for meta classes can be expressed by rules and constraints. Simply by using the link types in some class definition, the semantics is enacted.
Properties like transitivity, symmetry, reflexivity and others can be expressed by meta-formulas. An example is the following definition of transitivity and asymmetry:
Proposition in Class with attribute transitive: Proposition; asymmetric: Proposition rule trans_R: $ forall x,y,z,M/VAR AC/Proposition!transitive C/Proposition P(AC,C,M,C) and (x in C) and (y in C) and (z in C) and (x M y) and (y M z) ==> (x M z) $ constraint asym_IC: $ forall x,y,M/VAR AC/Proposition!asymmetric C/Proposition P(AC,C,M,C) and (x in C) and (y in C) and (x M y) ==> not (y M x) $ end
The link types are defined as attributes of the pre-defined class Proposition. The class Proposition has all objects as instances, including attributes of objects, specialization links (isA) and instantiation links (in). Hence, the link types are made available for any kind of object that is expressible in ConceptBase. The last line of the first formula is the well-known pattern of transitivity. The preceding lines are declaring the ranges of variables. Note that the formula ranges over classes C which define some attribute AC with label M which is defined as an instance of the transitive category. The definition of asymmetry is similar. The complete specification is available from the CB-Forum.
With these definitions, any class can use the link types simply by declaring the user-defined attribute as instance of the link type. For example, the hasAncestor relation of Person is both asymmetric and transitive:
Person in Proposition with asymmetric,transitive hasAncestor: Person endYou can apply the same idea to define properties like uniqueness (of an attribute), various flavors of class specialization, non-emptiness of classes, key properties of attributes and so on. Once the formula for the link type semantics is defined, it can be used whereever suitable. You basically extend the capabilities of the ConceptBase system.
Using the same set of metaformulas, you can define an the knows attribute of Person.
Person with reflexive,symmetric,transitive knows : Person endThe metaformula compiler will then generate the following rules for the 'knows' attribute
forall x/Person (x knows x) forall x,y/Person (x knows y) ==> (y knows x) forall x,y,z/Person (x knows y) and (y knows z) ==> (x knows z)
University of Skövde, Box 408, S-54128 Skövde, Sweden