owl:AnnotationProperty is an rdfs:subClassOf of rdf:Property
OWL has the notion of annotation properties and ontology properties. These are needed in OWL DL for semantic reasons.
OWL Full does not put any constraints on annotations in an ontology. OWL DL allows annotations on classes, properties, individuals and ontology headers, but only under the following conditions:
dc:creator cannot be at the same time a datatype property and an
annotation property.
Five annotation properties are predefined by OWL, namely:
<rdfs:Class rdf:ID="AnnotationProperty">
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
Annotation properties must have an explicit typing triple of the form:
AnnotationPropertyID rdf:type owl:AnnotationProperty
Here is an example of legal use of an annotation property in OWL DL:
<owl:AnnotationProperty rdf:about="&dc;creator"/>
<owl:Class rdf:about="#MusicalWork">
<rdfs:label>Musical work</rdfs:label>
<dc:creator>N.N.</dc:creator>
</owl:Class>
The example assumes &dc; and dc: point
respectively to the Dublin Core URI and namespace. Thus, using Dublin Core
properties as annotation properties in OWL DL requires an explicit typing
triple. This ensures annotations are handled in a semantically correct fashion
by OWL DL reasoners (see the OWL Semantics and Abstract Syntax document
[OWL S&AS] for
details).
Once we define dc:creator as an annotation property, OWL DL does
NOT allow property axioms such as the range constraint below:
<-- This is illegal in OWL DL -->
<owl:AnnotationProperty rdf:about="&dc;creator">
<rdfs:range rdf:resource="&xsd;string"/>
</owl:AnnotationProperty>
Note that one can still specify the value type of a literal in an annotation-property statement:
<Opera rdf:about="#Tosca">
<dc:creator rdf:datatype="&xsd;string">Giacomo Puccini</dc:creator>
</Opera>
Do not use