W3C home > Mailing lists > Public > semantic-web@w3.org > October 2005

Re: why are properties decoupled from classes

From: Danny Ayers <danny.ayers@gmail.com>
Date: Wed, 26 Oct 2005 02:50:36 +0200
Message-ID: <1f2ed5cd0510251750p3da9f81ct8310dd8aef8029b1@mail.gmail.com>
To: Xavier Noria <fxn@hashref.com>
Cc: semantic-web@w3.org

On 10/25/05, Xavier Noria <fxn@hashref.com> wrote:
> In RDFS and friends properties do not "belong" to classes, whereas in
> OOP normally they do. For instance, if you've got an instance of
> foaf:Person you cannot assume there's any assertion about
> foaf:interest for him.
> Which is the rationale behind that choice?

The rationale is pretty much what Rich said, though to fill in some bits -

There's a bit of a conceptual shift from OO classes to their RDFS
namesakes, the typing is done rather differently.Personally I tend to
think of the latter more as sets, as in really easy set theory (Venn
diagrams and the like), and as far as I'm aware the logic is generally
consistent with that. When you bring in properties they're something
that draws a ring around a couple of sets, an arrow between them.

But when it comes to inheritance, it's like adding a dimension, below
there's a simple graph (or list of 3-part statements), upwards there's
the class/property hierarchies. For some weird mathematical reason it
happens that statements like (X subClassOf Y) and (subClassOf type
Property) work in such a world, mushing up the the dimensions a bit.
But the logic is solid, you can build engines on it.

A key bit on the assumptions is that "missing isn't broken" [1], the
rationale there being I guess that this kind of a model will work in
the Web environment, where you can't be sure in advance how much or
how little further info will be available. You will never see a
NullPointerException with the RDF model.

If you're familiar with relational databases, there's a fairly close
correspondence. A property is a table (call it foaf:name) with two
columns, subject (e.g. _:person)  and object ("Xavier Noria"). The
biggest difference here is that in the traditional relational model
(i.e. SQL) any statement/row that's not in the table is considered
logically false, in the the RDF (open world) model it's just unknown.

If you can take all that lot on faith, there's probably another place
you should look, the RDFS rules made explicit [2] (derived from the
the specs). This viewpoint is down in predicate logic land. If you've
ever played with Prolog that's also very close (but like the
relational DBs assumes a closed-world model, missing is false).

Having said all that, the object-oriented view can be a reasonable


[1] http://rdfweb.org/mt/foaflog/archives/2003/07/24/12.22.48/
[2] http://www.agfa.com/w3c/euler/rdfs-rules.n3

See also:

Semantic Web Tutorial Using N3 -

Starting Points -


Received on Wednesday, 26 October 2005 00:50:58 UTC

This archive was generated by hypermail 2.4.0 : Thursday, 24 March 2022 20:40:56 UTC