Search Mailing List Archives
[protege-owl] Specifying domain and range in object properties
tar at isi.edu
Thu Nov 11 09:20:23 PST 2010
On Nov 11, 2010, at 3:58 AM, Dário Abdulrehman wrote:
> 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
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