- From: Brian McBride <bwm@hplb.hpl.hp.com>
- Date: Tue, 20 Aug 2002 10:56:19 +0100
- 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 UTC