Hello RDF community,

I wonder why in the RDFS specification, 'domain' is defined as follows:


3.1.4. rdfs:domain

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:

I would like to introduce now the class 'carnivore' as subclass of animal with the restriction that 'carnivore' only eats 'animal'. If you allow properties being used on subclasses, you can classify resources like:

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.