Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] Specifying domain and range in object properties

Thomas Russ tar at
Thu Nov 11 09:20:23 PST 2010

On Nov 11, 2010, at 3:58 AM, Dário Abdulrehman wrote:

> Hi,
> In the Protégé OWL tutorial it is stated that specifying domains and  
> ranges of properties can cause unexpected classification results and  
> it is advised against (p. 37 v1.2 of the tutorial).
> What are the uses of domains and ranges and what are specifically  
> the problems that can arise (an example would be nice).

The important thing to remember is that OWL restrictions enable  
inference.  So what that means is that if you supply domain and range  
information for object properties, then those classes can be inferred  
based on the use of the property.  In particular, domain and ranges  
are NOT type checks in the sense of traditional programming  
languages.  They can only (sometimes) act that way if you have enough  
disjointness information to be able to create a logical inconsistency.

So, for example, let's assume that we have the following ontology

Class: Person
Class: Vehicle
Class: Engine
Property: hasEngine :domain Vehicle :range Engine

John isa Person
John hasEngine engine-1

At this point, inference will occur and conclude that John isa  
Vehicle.  This is not a type violation because the domain and range  
information are used for inference.  (If Person and Vehicle were  
declared to be disjoint classes, then an inconsistent ontology would  
result, which is closer to a classical type-checking result, but it  
only applies if the classes really are disjoint).

That is the type of unexpected classification that can occur.
Now, not everyone agrees with that particular piece of advice.

In fact, Protege OWL in the 3.x series of editors makes use of the  
domain information in deciding how to build up the individual editing  
GUI, so there is active encouragement from the interface to specify  
the domains of properties.  Other applications also use that  
information for similar purposes.

On the other hand, specifying the domain (in particular) of an object  
property will often make it less generally useful, since it means that  
if you try to use it on a class outside that domain, then you will get  
such an unwanted inference.  This is often solved by adding a union  
domain, but it does mean that every time you find a new use for the  
property you have to remember to add the new class to the union  
domain.  If you forget, then you (silently) get an unwanted inference.

More information about the protege-owl mailing list