Search code examples
rdfturtle-rdfblank-nodes

How does rdf reification work when the object is a bNode?


RDF reification is pretty straightforward as long as subject, predicate and object are IRIs (or the object a literal). But what does the rdf:Statement look like when the object is a blank node (bNode)? An example ("I saw a man in a dirty raincoat"):

ex:I ex:saw [
    a ex:Man ;
    ex:wore ex:dirtyRaincoat ];

I could imagine two scenarios: 1) having only the bNode identifier in the object (requiring that I know what it is or that I create one myself.

[ a rdf:Statement ;
    rdf:subject ex:I ;
    rdf:predicate ex:saw ;
    rdf:object _:b1 ] .
_:b1 a ex:Man ;
    ex:wore ex:dirtyRaincoat .

2) to put all of the bNode into the object position of rdf:object:

[ a rdf:Statement ;
    rdf:subject ex:I ;
    rdf:predicate ex:saw ;
    rdf:object [
        a ex:Man ;
        ex:wore ex:dirtyRaincoat .
] ] .

Solution

  • There is no difference: both your scenarios are actually exactly the same model. The square bracket notation you use in the second scenario is merely a syntactical shortcut you can use for blank nodes that have several properties. So it's a syntax variation in Turtle, but they are identical RDF models.