W3C home > Mailing lists > Public > www-rdf-comments@w3.org > July to September 2002

Re: RDF Issue rdfs-clarify-subClass-and-instance

From: Brian McBride <bwm@hplb.hpl.hp.com>
Date: Tue, 20 Aug 2002 10:56:19 +0100
Message-Id: <5.1.0.14.0.20020820101722.0218daf8@0-mail-1.hpl.hp.com>
To: graham wideman <graham@wideman-one.com>, Frank Manola <fmanola@mitre.org>
Cc: www-rdf-comments@w3.org

At 15:53 19/08/2002 -0700, graham wideman wrote:
>Brian:
>
>Well, first, I'm very gratified to see a response to this, thanks!
>
>That said, the resolution basically says "see new spec and primer", which 
>I have done.

Thank you.  I'm also sending this message to the primer editor to enlist 
his help in seeing what can be done to  the text to make things more clear.

>  I find the spec pretty much impenetrable so far as determining what it 
> has to say on this issue, particular in the all-important matter of 
> comparing and contrasting the concepts involved.

The model theory is heavy stuff, so maybe we should focus on the primer 
here.  It may also be worth a look at the schema spec to see if that helps 
at all.

   http://www.w3.org/TR/rdf-schema/

>
>
>Turning to the primer for clarification, section 4.1 is the foundation for 
>understanding the crucial topic of "Defining Classes", and discusses 
>rdf:type, rdfs:Class, rdfs:subClassOf.  To my eye this section is 
>completely unsuccessful in communicating the surely simple relationship 
>amongst these keywords and concepts. It makes the following statements:
>
>a. "The property rdf:type is used to indicate that a resource is a member 
>of a class."
>
>b. "When a resource has an rdf:type property whose value is some specific 
>class, we say that the resource is an instance of the specified class."
>
>c. "Individual classes will always have an rdf:type property whose value 
>is rdfs:Class (or some subclass of rdfs:Class, as described below)."
>
>d. "A subset/superset relation between classes is defined using the 
>pre-defined rdfs:subClassOf property."
>
>...and notably the MiniVan example provided to illuminate the use of these 
>keywords to declare classes and instances fails to include any instances 
>(such as MiniVan with license number XYZ123).
>
>At this point, the reader (ie: me) is struggling to discern whether:


I'll leave Frank to comment on how to make the text clearer, but let me try 
at least to answer your questions:


>1. Does RDF distinguish between instance and subclass (my original 
>question)? Ie: are all instances also classes?

No.  (c) above says that classes always have an rdf:type property whose 
value is rdfs:Class (or some subclass of rdfs:Class).  If a resource has no 
such property, it is not a class.

>  (a) and (b) suggest that rdf:type declares an instance (ie: not a class),

Ah - there is a confusion.  Nobody said that an instance is not a 
class.  In RDF, all classes are instances of rdfs:Class.  Note the wording 
of (b).  We don't say that things are either instances or they are not.  We 
say that they are "instances of class Foo", or they are not.

>  but then (c) suggests that rdf:type is also used as a mechanism to by 
> which a class specifies what its ancestor(s) are.

I don't see that it does.  (c) does suggest that class rdfs:Class has 
subClasses.  In fact I've used this in an RDF schema for p3p, but lets pick 
an arbritary example.  I could define the class 
bwm:ClassesDefinedByBrianMcBride to be a subclass of rdfs:Class.  I could 
then say something like:

   bwm:ClassesDefinedByBrianMcBride rdfs:subClassOf rdfs:Class .
   bwm:AClass                       rdf:type 
bwm:ClassesDefinedByBrianMcBride .

This implies

   bwm:AClass rdf:type rdfs:Class .

Now none of this says anything about the class hierarchy of bwm:AClass.  We 
know nothing about its sub and super classes.

And just for fun, since in RDF a class can be a member of itself, I could 
also say:

   bwm:ClassesDefinedByBrianMcBride rdf:type bwm:ClassesDefinedByBrianMcBride .


>   But if that's the case, then (i) what distinguishes an instance from a 
> class,

As I've said above, the question should be what distinguishes an instance 
of Foo and the answer is whether or not it has an rdf:type property with 
value Foo.  And in particular a class is always an instance rdfs:Class, 
i.e. all classes are instances of rdfs:Class, but not all instances are 
classes.

The best way I have found to visualize this is to draw venn diagrams.  Hard 
to do in ascii, so I'll leave that as an exercise for you.

>  and (ii) what's the point of the subClassOf property?

It has the usual function you would expect, e.g. a way of saying that all 
penguins are birds.

>And in fact in the example, rds:type is *not* used to point to 
>intermediate ancestor classes, only to rdf-schema#Class.
>
>2. From (d), in RDF, is subset/superset synonymous with subclass/superclass?

I'm a little careful of the word synonymous.  Short answer is yes.  Long 
answer is that associated with each class is a set, called the extension of 
the class, which is basically the set of its members.  If A is a subclass 
of B, then extension(A) is a subset of the extension(B).


>Bottom line: There are only a few fundamental concepts here, the relation 
>among them I *hope* is well defined,

We think so

>  but the description of what those relationships might be is murky as the 
> discussion currently stands.
>
>As a suggestion, it would be helpful to provide a table with, say, three 
>columns (view as monospaced text):
>
>Declares a     type     subClassOf
>-----------------------------------
>???            #Class    ---
>???            #Class    #OtherClass
>???            ClassA    ---
>???            ClassA    ClassB
>
>... and fill in the "Declares a" column.

I'm having trouble understanding what you mean here.  There is no concept 
of declaration in RDF.  RDF is not a programming langauge.  Could you 
explain a little more about what you mean by the "Declares a" column?  Or 
maybe Frank will see what you mean immediately.

>I'm fairly sure it'll turn out that a class declaration only results with 
>type=rdf#Class, which means that statement (c) from the primer is wrong 
>(or is using the phrase "subclass of rdfs:Class) in some odd way).

I've tried to explain the "odd way" above.  If you were to ignore the 
phrase "(or some subclass of rdfs:Class)" would it then all make 
sense.  That phrase does introduce some complications, but I suspect Frank 
included it in order to be more precise.


>Anyhow, thanks again for your response,

I'd like to thank you for taking the time to explain what you find confusing.

Brian
Received on Tuesday, 20 August 2002 05:57:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 21 September 2012 14:16:30 GMT