Hello RDF community,
I wonder why in the RDFS specification, 'domain' is defined as follows:
An instance of ConstraintProperty that is used to indicate the class(es) on whose members a property can be used.
A property may have zero, one, or more than one class as its domain. If there is no domain property, it may be used with any resource. If there is exactly one domain property, it may only be used on instances of that class (which is the value of the domain property). If there is more than one domain property, the constrained property can be used with instances of any of the classes that are values of those domain properties).
What I find a bit unfortunate is the fact that a defined property may only be used on instances of the class mentioned in the domain. I believe the property should also be applicable for aubclasses of the class in the domain.
E.g. suppose the following is defined:
a lion is of type animal, lion eats gazelle which is of type animal, so lion is a carnivore.
So in fact, you actually narrow the class 'animal' by narrowing the range of its properties
I believe this could also make the slotconstraints in the 'OIL to RDFS translation' a bit more natural.