Re: rdf:value and RDF Schema (was: typed containers in RDF Schema)

>>At 04:13 PM 6/12/02 -0700, Garret Wilson wrote:
>>>2. If RDF Schema says what the object *is*, then what about multiple
>>>rdf:ranges? ( hints that
>>>this might be possible.) If a property has two ranges defined, then is the
>>>object of the property automatically understood to have *two* types, or does
>>>it mean that each of the objects has one of the two types?
>>The former.  Multiple types for an object are possible and, IMO, 
>>useful.  My stock example is that a horse can be of type animal and 
>>also of type means-of-transport.
>I'm sorry to come back to the matter after almost 3 months.
>However, I have to make a comment, that in the above example the 
>concept "horse"
>is a class and not an object (or if it is preferred: an instance of a class).
>Therefore, "horse" is a sub-class of class "animal" AND class 

True. But note that all the things IN the class, ie the horses 
themselves, are clearly in several classes (at least three).

>Then every concrete horse that is an instance of class "horse" would 
>inherit properties

No. There is no notion of property inheritance in RDFS. It is 
important to not fall into the trap (because it is a trap) of 
thinking of RDFS classes in OOP terms. RDFS is simply a 
general-purpose assertional description language; if you like, a kind 
of database formalism. It is not a structured object-oriented 
programming language.

>from both super-classes of class "horse". This is the well-known 
>multiple inheritance
>and is perfectly ok to OO people.
>However, multiple inheritance is different from multiple typing, 
>i.e. an object to be an
>instance of multiple classes, which (may be I'm wrong) is not so 
>popular to OO people.

An aside, but can you say why? I would have thought that the only 
technical problems would arise from multiple inheritance. Certainly 
those are the most pressing problems in implementing an RDFS reasoner.

>The latest RDF documents imply (do not say explicitly; why?) that a resource
>may be an instance of two classes at the same time.

Yes, of course, just as an object can be in  more than one set. All 
the horses, for example. If the documents don't say this explicitly 
then that is probably because it seems so obvious that it wasnt worth 
saying, but maybe we should re-think that.

>Specifically, in the "RDF Vocabulary Description Language 1.0: RDF 
>Schema" WD it says that:
>"... Two classes may happen to have the same members, while 
>remaining distinct resources. "
>This can only happen if a resource is allowed to have two rdf:type properties.

A resource can have arbitrarily many rdf:type properties. To 
emphasize, this is simple set theory - think Venn diagrams - not OOP 
inheritance hierarchies.

>Furthermore, the multi-typing issue is consistent with the 
>conjuctive semantics of the
>multiple rdfs:domain and rdfs:range properties for a resource 
>If (for example) the value of a property must belong to two classes 
>at the same time, it means that the corresponding
>resource must be a member (an instance) of two classes at the same time.


>The previous WD for RDF schema stated the above fact explicitly:
>( "...A 
>resource may be an instance of more than one class. ..."
>I think that this multiple-typing issue creates a lot of problems 
>for developers, since most systems out there do not
>confront to multiple (conjunctive) typing of objects.

Can you elaborate on what the problems are and what kind of systems 
you are referring to?  And, RDF *permits* multiple typing, but it 
does not *enforce* it., So if you have a hierarchy that has no 
multiple typing then that would be legal RDF.

>One way to overcome this (of course) is to generate a "transparent"
>class that has multiple super-classes and then make the multi-typed 
>object an instance of this new class.
>from the following:
>?x rdf:type A
>?x rdf:type B
>generate the following (inside the application):
>_001 rdfs:subClassOf A
>_001 rdfs:subClassOf B
>?x rdf:type _001
>An application should generate such "transparent" classes, when:
>a) A resource is stated to belong to multiple classes.
>b) A property has multiple domain or range constraints
>The above can result is numerous system-generated classes (the upper 
>limit is the PowerSet of all classes?).

I would not recommend this strategy other than as a last resort. I do 
not follow why you think it is necessary. Can you elaborate on what 
applications of RDF you have in mind that would require it?

>I wonder if the RDF working group have considered this when allowing 
>multiple types for a resource and the
>very much related issue of multiple (conjunctive) domain and range 
>I would like to notice that if multiple typing is not allowed in 
>RDF, then the author of an RDF Schema must himself/herself
>manually add such classes. May be this is the reason for allowing 
>multiple typing; to release the burden from the RDF Schema

No, the reason to allow it is that even the simplest ontologies 
usually require it. For example, consider a database of employee 
records, Employees, let us suppose, can be grouped by job title, by 
department, or by seniority. All of these could be defined in terms 
of class membership. It would be ridiculous to insist that only one 
of the properties could be allowed to be the one that defined 'the' 
class, or that we had to introduce explicit intersection classes for 
all the possible combinations.

Pat Hayes

IHMC					(850)434 8903   home
40 South Alcaniz St.			(850)202 4416   office
Pensacola,  FL 32501			(850)202 4440   fax

Received on Tuesday, 27 August 2002 13:14:32 UTC