On 06/01/2008, Frank Manola <fmanola@acm.org> wrote:
> I don't think it's a matter of the interpretation being
> incompatible. The relational model simply requires that when you
> have a situation in which it appears a predicate must be repeated (or
> a single predicate must have multiple values), you must define a
> separate relation. RDF simply assumes ahead of time that all
> predicates may potentially be like this, and restricts itself to
> binary relations.
>
I've been trying to follow this and hopefully I've got a point here
that might help.
Predicates need not be repeated in order to store multiple values -
the idea of multiple values is rather arbitrary. The usual example
is, strings are collections of characters, characters are bytes, bytes
are bits. Date goes on about objects in the same way that they can be
modelled as just another attribute type. This means that how you
define a type of an attributes is rather arbitary - it depends where
you start from.
So our sets of characters is a string but you don't say well we'll
call our predicate "charsInSubject" and have multiple predicates to
store something that a string would do. Likewise objects and so on.
Attributes can also be of type relations (Chapter 6 of Intro to
Database Systems and Chapter 12.6 has some notes on it).
In your example you want to store to subjects for a book. The
attribute type then becomes a set of strings (or whatever type your
want to choose for subjects of books).
If you wanted to model RDF in the relational model without a billion
tables (if you went say the 5NF) and reduce the number of rows you
could just have one subject to set of predicates which have themselves
a set of objects.