Re: rdfs:domain and refs:range in

Hi Alex:

This is because the semantics of RDFS domain and range constructs *imply* additional type membership instead of *constraining* the applicability of a property to a class or value.

With RDFS semantics, a domain spec like so

    foo:schoolAttended rdfs:domain foo:Human.

in combination with the statement

    foo:myDog a foo:Dog ;
              foo:schoolAttended "ACME High School".

implies that

    foo:myDog a foo:Human

instead of throwing a constraint violation error.

Also, if a property had multiple classes as its range or domain, you have to create many useless complex classes in order to avoid unintended type membership inferences:

In RDFS, a domain spec like so

    foo:yearOfBirth rdfs:domain foo:Human, foo:Dog.

in combination with the statement

    foo:myDog a foo:Dog ;
              foo:yearOfBirth 1971.

implies that your dog is a dog and a human:

    foo:myDog a foo:Human, foo:Dog.

i.e. the intersection of being a dog and human, whatever that is.

The only way to avoid this are complex class definitions, like so:

     foo:yearOfBirth rdfs:domain [ a owl:Class;
         owl:unionOf (foo:Human, foo:Dog) ].

which will create many, many of those useless classes in the ontology because of combinatorial effects.

martin hepp          @mfhepp

> On 21 Nov 2016, at 16:39, Alex Prut <> wrote:
> Hello all,
> I'm looking at the raw ontology implementation and documentation, but I can’t find a reason why the ontology was implemented using the schema:domainIncludes and schema:rangeIncludes properties, instead of the standard RDFs rdfs:domain and rdfs:range?
> Thanks,
> Alexandru Pruteanu (M.Sc. in Computer Science at University of Udine)

martin hepp          @mfhepp

Received on Tuesday, 22 November 2016 14:32:06 UTC