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