I'm playing with Protégé 5 to build ontologies. After googling around on the topic of domains and ranges, I'm seeing that domains and ranges are not necessarily the right way to relate two things.
[protege-owl] Specifying domain and range in object properties:
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 EngineJohn isa Person
John hasEngine engine-1At 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).
So, if domains and ranges are bad, then what should I use instead to model relationships between classes of Things?
Edit: I originally had stated that there were no domain / range fields in the new version. Almost immediately after posting this, I realized that those fields were, in fact, still available.