On re-using ontologies

It is usually considered good practice to use elements, i.e., classes and properties, of exisiting ontologies such as FOAF or Dublin Core. That way the semantics of you new ontology become more obivious. And more systems will “understand” you data, even if they do not know your newly defined vocabulary, yet.

In cases of classes it is simple. Say you want to equip an object with a geographic position (by using an object property). There is a commonly used ontology by W3C for (simple) geographic information: http://www.w3.org/2003/01/geo/wgs84_pos# This ontology contains a class Point which can be used as the range of the new object property:

   Prefix(wgs84:=<http://www.w3.org/2003/01/geo/wgs84_pos# >)
   …
   Declaration( ObjectProperty( my:isLocatedAt ) )
   ObjectPropertyRange( my:isLocatedAt wgs84:Point )

However, the situation is different if you want to re-use properties. For sake of brevity let’s stick to the mentioned  W3C geo ontology. Say you want model a peak with its altitude. The W3C ontology contains a data property alt that seems suitable. It seems likely to set the domain of the alt data property to Peak:

   Prefix(wgs84:=<http://www.w3.org/2003/01/geo/wgs84_pos# >)
   …
   Declaration( Class( my:Peak ) )
   DataPropertyDomain( wgs84:alt my:Peak )

What happens if someone imports your ontology (of course it is a successful cool ontology everyone wants to use)? The ObjectPropertyDomain axiom imported from your ontology states that every individual that uses the alt property (including instance of wgs84:Point) are instances of your class Peak! That is obviously not intended. Is it impossible to re-use properties?

One solution of the problem is to define a new property and make is sub-property of the existing one:

   Prefix(wgs84:=<http://www.w3.org/2003/01/geo/wgs84_pos# >)
   …
   Declaration( Class( my:Peak ) )
   Declaration( DataProperty( my:altitude ) )
   SubDataPropertyOf( my:altitude wgs84:alt )
   DataPropertyDomain( my:altitude my:Peak )

Now only individuals using you newly defined altitude property become instances of you Peak class. You do not say anything about an element of W3C’s geo ontology in you ontology. However, a system not yet knowing your ontology, is still able to identify the altitude value because the property is also a wgs84:alt property.

Comments are closed.