RE: plural vs singular properties (a proposal)

I think that RDF model is best seen as a subset of the relational model
where there are only binary relationships. Therefore, in an normalized
RDBMS, there is one table per predicate with only two columns each: one for
the subject, the other for the object of the predicate (as Frank already
alluded to in this thread). If you wanted to declare the existence of a
resource without saying anything about it, you could enter values
(<ex:whatever>, <rdf:Resource>) into the rdf:type table. 

In RDF, every predicate is a one-to-many relationship (not including OWL
restrictions). For two triples, 

<ex:book1> <dc:subject> "semantic web"
<ex:book1> <dc:subject> "database"

you would have at least one table with two rows:

(table) dc:subject
.-----------------------------.
|rdf:subject  |   rdf:object  |
|------------ + --------------|
|ex:book1     | "semantic web"|
|ex:book1     | "database"    |
`-----------------------------'

In this case, there can never be any conflict between RDF and the relational
model (as one is a subset of the other). The primary key for each table will
always consist of both the subject and object columns. 

Any relational data can fit into the RDF model this way, provided it is
first converted to the 6th normal form. It's analogous to currying a
multi-argument function.

To ensure that a property has only one value, you'd have to use
owl:cardinality for that. 

Also, a book with two instances of <dc:subject> doesn't necessarily mean
that it always has those two subjects in the same context. It can be
unambiguous if reified:

<ex:Amazon>   <ex:hasListing>  [<ex:book1> <dc:subject> "semantic web"].
<ex:library1> <ex:hasListing>  [<ex:book1> <dc:subject> "database"].
<ex:person1>  <ex:insistsThat> [<ex:book1> <dc:subject> "semantic web"].

Mark

Received on Monday, 7 January 2008 02:13:24 UTC