It may be worth clarifying the following:
http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Declaration_Consistencysays:
An ontology *O* is said to have *consistent declarations* if each IRI
*I* occurring
in the axiom closure of *O* in position of an entity with a type *T* is
declared in *O* as having type *T*. OWL 2 ontologies are not required to
have consistent declarations: an ontology *may* be used even if its
declarations are not consistent.
However, in the RDF parsing spec, it seems we *do* need declaration
consistency.
For example:
_:x *rdf:type* *owl:Restriction* .
_:x *owl:onProperty* y .
_:x *owl:hasSelf* "true"^^*xsd:boolean* .
{ OPE(y) ≠ ε } ObjectHasSelf( OPE(y) )
Here we wouldn't say { OPE(y) ≠ ε }
If declaration consistency was optional we would only need DPE(y) = ε,
APE(y) = ε
As it is now we have "At the end of this process, the graph *G* *must* be
empty.". So if OPE(y) = ε these triples would not be parsed, we would end
parsing the RDF with the "MUST" violated. That situation is potentially
confusing [1] given "an ontology *may* be used even if its declarations are
not consistent", although technically that statement would only apply to the
*results* of the RDF parsing which are apparently always declaration
consistent.
Perhaps a note either in Syntax 5.8.2 or somewhere in Mapping to RDF Graphs.
-Alan
[1]
http://sourceforge.net/tracker/?func=detail&aid=3015732&group_id=90989&atid=595534