- From: Jeen Broekstra <jbroeks@cs.vu.nl>
- Date: Thu, 12 Oct 2000 12:21:24 +0200 (CEST)
- To: Tom Van Eetvelde <tom.van_eetvelde@alcatel.be>
- cc: www-rdf-interest@w3.org
On Thu, 12 Oct 2000, Tom Van Eetvelde wrote: > I wonder why in the RDFS specification, 'domain' is defined as follows: [snip] > 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. It is. In the definition of subClassOf it states: 2.3.2. rdfs:subClassOf This property specifies a subset/superset relation between classes. The rdfs:subClassOf property is transitive. If class A is a subclass of some broader class B, and B is a subclass of C, then A is also implicitly a subclass of C. Consequently, resources that are instances of class A will also be instances of C, since A is a sub-set of both B and C. [snip] I have added the RDF descriptions of your examples below, with some comments. > E.g. suppose the following is defined: > * class 'animal' <rdfs:Class ID="animal"/> > * property 'eats' with domain animal <rdf:Property ID="eats"> <rdfs:domain rdf:resource="#animal"/> </rdf:Property> > I would like to introduce now the class 'carnivore' as subclass of animal > with the restriction that 'carnivore' only eats 'animal'. This is not possible in RDFS. You can not restrict domain/range of a property locally (= in a class definition). The best you can do is the introduction of a new property: <rdfs:Class ID="carnivore"> <rdfs:subClassOf rdf:resource="#animal"/> </rdfs:Class> <rdf:Property ID="carnivore_eats"> <rdfs:subPropertyOf rdf:resource="#eats"/> <rdfs:domain rdf:resource="#carnivore"/> <rdfs:range rdf:resource="#animal"/> </rdf:Property> The gazelle: <rdf:Description about="#gazelle"> <rdf:type rdf:resource="#animal"/> </rdf:Description> And your lion would look like: <rdf:Description about="#lion"> <rdf:type rdf:resource="#carnivore"> <carnivore_eats rdf:resource="#gazelle"/> </rdf:Description> or, alternatively: <rdf:Description about="#lion"> <rdf:type rdf:resource="#animal"/> <eats rdf:resource="#gazelle"/> </rdf:Description> > a lion is of type animal, lion eats gazelle which is of type > animal, so lion is a carnivore. Unfortunately, this inference is not possible, for a number of reasons: 1. As said before, the property range restriction you propose is not possible. You can only introduce a new property. 2. Even if it were possible, the facts that: a) lion is an animal b) it eats a gazelle c) a gazelle is an animal are not enough to infer that lion is a carnivore. I'll abstract from the animals example: Suppose we have a class C and a subclass C', and we have property P which we can apply to C and C', but in C' its range is restricted to C. Also assume we have an instance c of C, and and instance d of C, and we know P(c,d). We still can not infer that c is an instance of C', because we do not know whether _only_ instances of C' can have instances of C as the value of a property P. Back to zoo-speak: We do not know whether carnivores are the only animals that eat other animals. > So in fact, you actually narrow the class 'animal' by narrowing > the range of its properties This narrowing of the range is only possible at a global level[1]. That means that if you narrow the range for eats, you do that not only for carnivores but also for every other class that uses that particular property. > I believe this could also make the slotconstraints in the 'OIL > to RDFS translation' a bit more natural. The problem stated above is exactly the reason we introduced slotconstraints in the RDFS syntax of OIL in the first place :) Regards, Jeen [1] Notice, that in the current spec range restrictions like this are not possible at all, since it is explicitly required that only one range statement is made over a property. However, given recent discussions, I assume that this will change. -- Vrije Universiteit, Faculty of Sciences Jeen Broekstra Division of Mathematics & Computer Science jbroeks@cs.vu.nl de Boelelaan 1081a http://www.cs.vu.nl/~jbroeks 1081 HV Amsterdam, the Netherlands
Received on Thursday, 12 October 2000 06:22:48 UTC