W3C home > Mailing lists > Public > www-rdf-interest@w3.org > May 2003

RE: rdfs:class and rdfs:resource

From: Jon Hanna <jon@spin.ie>
Date: Wed, 7 May 2003 17:30:02 +0100
To: "Www-Rdf-Interest" <www-rdf-interest@w3.org>
Message-ID: <NDBBLCBLIMDOPKMOPHLHAEMAFBAA.jon@spin.ie>

> Hello all,
>
> I have been working in the RDF schema specification and I have trouble
> with the concepts of:
> rdfs:Class and rdfs:Resource
> rdfs:Resource is the most general class and rdfs:class is the concept
> of class.
> Thus,I donīt understand the meaning of that rdfs:Resource is an
> instance of rdfs:class and that every class is a rdfs:subClassOf
> rdfs:Resource.
> I hope someone can give an help on this.
> Kindly regards,
> Teresa

It's a bit circular. It's one of those things that can seem confusing at
first, and then after a moment of Satori it becomes so obvious that it's
hard to explain. I'll have a stab at it anyway.

Everything is a resource. We say "resource" rather than "thing" or "entity"
because this is the web, and "resource" is the web term.

A hypothetical resource is #jonsCar (particularly hypothetical since I don't
drive).

Classes define types of resource. A hypothetical class is #Car.

To say that #jonsCar is a #Car we use:

<#jonsCar> <rdf:type> <#Car> .

or in RDF/XML:

<Car rdf:ID="jonsCar" />

Now not only does RDF allow us to say things about #jonsCar, but it also
allows us to say things about #Car. In particular we would benefit from
doing so in schemata.

And just as #jonsCar is a type of #Car, so #Car is a type of rdfs:Class. We
can express this as:

<#Car> <rdf:type> <rdfs:Class> .

or in RDF/XML:

<rdfs:Class rdf:ID="Car" /> .

rdfs:Class is itself of type rdfs:Class:

<rdfs:Class> <rdf:type> <rdfs:Class> .

And we can also have a class to which everything belongs; rdfs:Resource.

<#jonsCar> <rdf:type> <rdfs:Resource> .
<#Car> <rdf:type> <rdfs:Resource> .
<rdfs:Class> <rdf:type> <rdfs:Resource> .
<#anythingAtAll> <rdf:type> <rdfs:Resource> .

Now because rdfs:Resource is the object of these rdf:type statements it is
clearly a Class, hence <rdfs:Resource> <rdf:type> <rdfs:Class>.

And because everything is an instance of rdfs:Resource, then all classes are
subclasses of rdfs:Resource (#jonsCar cannot be a #Car unless it is also a
thing, and everything is an rdfs:Resource).

In practice you will likely use rdfs:Class more than rdfs:Resource, simply
because it's more often worth stating that something is a class.
Received on Wednesday, 7 May 2003 12:24:17 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:51:59 GMT