From W3C Wiki

RDF Reification

"Reify" means to take an abstract idea, and to make it concrete.

In the world of RDF, it means to write RDF statements about RDF statements.


For instance, you might have a triple:

  I like RDF.

To reify it, you would say:

<statement> rdf:type rdf:Statement
<statement> rdf:subject <me>
<statement> rdf:predicate <likes>
<statement> rdf:object <RDF>


The statement is the triple (subject, predicate, object.)

The reified form of a statement is a node R that has four properties:

<R> rdf:type rdf:Statement
<R> rdf:subject <subject>
<R> rdf:predicate <predicate>
<R> rdf:object <object>


I have read that a reified statement is a "resource" which represents a statement. I'm not quite clear of the difference between reified form and a reified statement. It seems to me that a reified statement refers to the node <R>, while reified form just refers to it's shape.

If that's the case, I'd just say: "A reified statement is a node that follows the reified form..."

There are two reference messages that may help decode the mystery; message #1, message #2

-- LionKimbro DateTime(2004-06-14T00:11:00)

Are reified nodes things that you make, or are they "automatically given to you" by your tuple store?

For example, if you loaded a normal tuple store, and then said, "give me the BlankNode that has this for the subject, this for the predicate, and this for the object, and is of rdf:type rdf:Statement,"- is the tuple store obligated to give you back a BlankNode?

Or, instead, are you supposed to manually construct these things, using NodeId's for BlankNodes, and..?

-- LionKimbro DateTime(2004-06-15T04:05:03)