- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Thu, 18 Jan 2007 11:22:44 +0100
- To: Michael Schneider <m_schnei@gmx.de>
- Cc: chris@bizer.de, semantic-web@w3.org, semantic_web@googlegroups.com
On 18 Jan 2007, at 00:32, Michael Schneider wrote:
>> RDF reification doesn't work for practical reasons
>
> Why is this so? I always had some vague feeling that reification
> does not have many friends within the community, but I never found
> a real reason for this: Neither a technical reasons, nor a modeling
> reason.
Here's a real reason. Scenario: provenance tracking.
Michael wants to publish the claim "Reification is great."
Chris wants to publish the claim "That's nonsense."
Richard wants to have both claims in an RDF store and keep track of
who said what.
First with reification. Michael:
:reification :is :great .
Chris disagrees. So he has to reify the statement and attach a claim
that the statement is nonsense.
:michael_statement
rdf:subject :reification;
rdf:predicate :is;
rdf:object :great;
rdf:type :NonsensicalStatement .
Now Richards wants to load all these statements into an RDF store. No
problem. He also wants to keep track of provenance; thus he has to
reify each statement and attach provenance. I will use your proposed
shorthand notation from earlier in the thread because otherwise it
would be too tedious:
:reification :is :great .
:michael_statement
rdf:subject :reification;
rdf:predicate :is;
rdf:object :great;
rdf:type :NonsensicalStatement .
`:reification :is :great .`
:asserted_by :michael .
`:michael_statement rdf:subject :reification .`
:asserted_by :chris .
`:michael_statement rdf:predicate :is .`
:asserted_by :chris .
`:michael_statement rdf:object :great .`
:asserted_by :chris .
`:michael_statement rdf:type :NonsensicalStatement .`
:asserted_by :chris .
Richard is bothered a little bit by having to reify the reified
statement.
Now imagine if Bob gets into the discussion disagreeing with the
claim made by Chris; now Richard has to store reified reified reified
statements. Then Charlie and Dora get into the discussion ... I'm
tempted to write down the triples just to show that it gets quite
cumbersome.
Enter named graphs.
:michael_graph {
:reification :is_great_for :provenance_tracking .
}
Chris disagrees:
:chris_graph {
:michael_graph rdf:type :Nonsense .
}
Richard's store:
:michael_graph {
:reification :is_great_for :provenance_tracking .
}
:chris_graph {
:michael_graph rdf:type :Nonsense .
}
:provenance_graph {
:michael_graph :asserted_by :michael .
:chris_graph :asserted_by :michael .
}
And accommodating the contributions of Bob, Charlie and Dora is
straightforward.
See why reification does not have many friends?
Surprisingly, some people choose to use reification nonetheless. Why
is this so? Is it just because its unfinished empty concrete shell
was left in the RDF spec? I never found a real reason, neither
technical nor modelling.
Yours,
Richard
Received on Thursday, 18 January 2007 10:23:50 UTC