an extreme example of a "punning" ontology

Here is an ontology that (ab)uses overloading, which is the use of a URI
in different logical contexts.  

The transfer syntax of OWL 1 DL forbade overloading, but this meant that
some useful ontologies were not in OWL 1 DL.  OWL 2 DL employs punning
to allow many kinds of overloading while retaining implementability.
OWL 2 Full (and RDF and RDFS) allows even more overloading and has a
stronger semantics for some kinds of overloading.


   Ontology( ex:o1 ex:o1
     Import(ex:o3)  Import(ex:o1)

     EquivalentClasses ( Annotation ( ex:c1 "Surprise" ) ex:c1 
       IntersectionOf ( SomeValuesFrom ( ex:c1 ex:c1 )
       		      	SomeValuesFrom ( ex:c1 xsd:integer ) ) )

     EquivalentClasses ( ex:c3
       IntersectionOf ( MaxCardinality ( 1 ex:c1 )
       		        HasValue ( ex:c1 ex:c3 )
			HasValue ( ex:c1 ex:c4 ) ) ) 

     PropertyDomain ( ex:c1 ex:c1 )

     DisjointClasses ( xsd:integer ex:c1 )
 
     ClassAssertion ( ex:c1 ex:c1 )

     ClassAssertion ( ex:c3 ex:c3 )

     SameIndividual ( ex:c1 ex:c2 )

     SameIndividual ( ex:o3 ex:o4 )
     
     SameIndividual ( owl:sameAs owl:sameAs )
   )



Usages of URIs in the Ontology

Context		URIs 

Ontology Name	ex:o1 
Version Name	ex:o1
Import Target	ex:o1 ex:o3
Class		ex:c1 xsd:integer ex:c3 ex:c4
Datatype	xsd:integer
Object Property	ex:c1
Data Property	ex:c1
Annotation Prop	ex:c1
Individuals 	ex:o3 ex:o4 ex:c1 ex:c2 ex:c3 ex:c4 owl:sameAs


The syntactically illegal OWL 2 DL overloadings in the ontology are:
- using ex:c1 as both an object and a data property
- using ex:c1 as both an object and an annotation property
- using ex:c1 as both a data and an annotation property
- using xsd:integer as both a class and a datatype

All other overloadings are acceptable and examples of punning in OWL 2
DL (i.e., there are no cross-over effects of the overloading):
- using ex:c1 as both an individual and a class
- using ex:c1 as both an individual and an object property
- using ex:c1 as both an individual and a data property
- using ex:c1 as both an individual and an annotation property
- using ex:c1 as both a class and an object property
- using ex:c1 as both a class and a data property
- using ex:c1 as both a class and an annotation property
- using ex:o1 as both an ontology name and a version name
- using ex:o1 as both an ontology name and an import target
- using ex:o1 as both an version name and an import target

It is also illegal in OWL 2 DL to use the disallowed vocabulary, so
using owl:sameAs as an individual is syntactically illegal.

The above ontology could be translated to an RDF graph using the mapping
to RDF (with perhaps a minor relaxation, but the intent is quite easy to
determine).  The resulting RDF graph would be an acceptable OWL 2 Full
ontology.  There would be some extra consequences because of the
differences between the OWL 2 Full semantics and the OWL 2 DL semantics.
- ex:c1 and ex:c2 would be equivalent classes
- ex:c1 would be an instance of ex:c2
- ex:c3 and ex:c4 would be equivalent classes
- ex:c3 would be an instance of ex:c4

It would *not* be the case that the OWL 2 Full semantics would require
the importation of ex:o4, even though ex:o3 is imported and ex:o3 and
ex:o4 are the same individual.

Received on Thursday, 21 August 2008 17:34:33 UTC