The Predefined RDF/OWL Schema |
Classes and properties in OWL are defined as instances of appropriate built-in classes, i.e. owl:Class or owl:ObjectProperty. We call such objects meta-objects and we have predefined for them the built-in classes and properties of OWL in the form of an object-oriented schema based on the RDF schema of OWL as it is described here. In that way the system is able to create class and property meta-objects since the corresponding classes are already materialized.
Below we give an example of the definition of the owl:Class together with the corresponding meta-object. Since OWL is built on top of RDF, we have reused an existing object-oriented definition of RDF taken from a previously implemented system, called R-DEVICE.
defclass construct of owl:Class |
This is the defintion of the owl:Class using the defclass construct of CLIPS. This class is subclass of the rdfs:Class (is-a constraint) and has in its definition the corresponding properties that have as rdfs:domain value the owl:Class class (in fact there are more properties, but since our system does not currenlty supports them, we have excluded them from the class definition). Moreover, we have added manually two more slots namely necessary and sufficient. These slots helps us to store useful information during the tranformation of the ontology relevant to necessary and sufficient conditions. The necessary slot holds necessary conditions of classes, e.g. restriction meta-objects due to subclass relationships. The sufficient slot stores sufficient conditions, e.g. classes of class equivalence, in order to perform instance classification.
This is the definition of the owl:Class meta-object which is an object of the class rdfs:Class. In general, meta-objects are used in order to store information about the actual classes. So, owl:Class meta-object holds information about the actual class. Apart from the subclass information and some other property values, there is one more slot namely class-refs. This slot is a system defined slot and it is used in order to store the class type of slots. For example, the slot owl:equivalentClass can take values from the class owl:Class (and of course its subclasses). In this way we treat the lack of CLIPS for defining directly the class type of the value an object property can take. Object properties are declared using the INSTANCE-NAME keyword of CLIPS, so we use the class-refs slot to store the valid type of them. (Recently, a CLIPS version 6.4 has been released that solves this restriction and we plan to use this feature in the future)
|