Mailing list ARC-DEV: Archives

RDF statements don't have identifiers

From: Eric Hanson 
Subject: RDF statements don't have identifiers
Date: Thu, 15 May 2008 19:25:57 -0700


Hi,

Long time follower of ARC and RDF.  This post probably belongs in a 
general Semantic Web list, but I want to post it here instead because 
IMHO ARC is at the cutting edge of making RDF practical and pragmatic 
for actual use in the real world.

I'm close to giving up on cannonical RDF.  I don't want to.  I'm pretty 
deeply invested in it and don't see a better alternative anywhere in 
sight, but it simply isn't meeting my needs.  I'm hoping someone can 
tell me I'm wrong, or perhaps my observation will spark interest in 
developing a hybrid model.

Here's the problem:  As far as I can tell, it's not possible to make 
statements about statements, because RDF statements don't have 
identifiers.  As such, it's impossible to do a whole host of things that 
I believe are essential to any web-scale data platform:

1) You should be able to say *who* stated a statement, with an :author 
predicate.

2) Statement authors should be able to say things about statements they 
make like, say "this statement is sarcasm" or "this statement is a joke" 
or "i retract this statement"

3) Users should be able to say things about the "truth" of other users' 
  statements, like "this is false" or "this is true" or "this is very 
insightful"

3) You should be able to say when a statement was stated with some sort 
of :statedOn predicate

4) You should be able to say a *ton* of other things about statements 
with the same degree of flexibility and expressiveness that you can 
about any other resource, using the full expressive power of RDF.  You 
need to be able to describe statements with statements.

There are a few clumsy kludges that could arguably meet some of these needs:

1) RDF's reification capabilities are useless for this because a 
statement that has been reified isn't actually being stated, and it 
takes several triples to reify a single triple.  It's just awkward and 
highly inefficient for wide-scale use.

2) You can make statements about a *graph* which contains one or more 
triples, but one can envision many useful RDF-ish systems where every 
base-level statement has a number of statements about it:  who and when 
are just the beginning.  As such, short of putting each triple in it's 
own graph, which is the closest thing i've heard to a solution but still 
seems quite awkward.

As such, I argue that RDF isn't sufficient for real world applications. 
  Saying things about what other people say is a fundamental part of the 
process of communication and structured information storage, and RDF 
doesn't accommodate it.

The solution, I believe, is a quad-store model, very similar to RDF and 
queriable with something very similar to SPARQL, but where any statement 
can have an id.

Am I off in left field here, or is RDF fundamentally insufficient?

Thanks,
Eric