0

I’ve been reading up on RDF, triplestores, etc. and one of the most powerful concepts I’ve seen is the notion of meta-triples (i.e. triples that describe other triples). To illustrate what I mean, imagine we have some triples like so:

(person:jb -> foaf:firstName -> string:Joe)
(person:jb -> foaf:lastName -> string:Blow)

If we wanted to make a claim about the veracity of those triples, for instance, who said they were true (for the purposes of this example someone identified as xyz) we might put the original two triples in an RDF Graph with an identifier of bar, and then add triples to another RDF Graph (perhaps the default graph in the RDF Dataset containing the Graph identified by bar) that looked like this:

(bar -> claimedBy -> person:xyz)

My question is: what happens when someone comes along later and wants to make a meta-triple about just one of the triples in Graph bar? It seems like if you wanted to preserve the ability to make meta-triples describing each individual triple, then effectively every triple would need to be in its own graph. This feels vaguely “at odds” with the concept of an RDF Graph, described here as a “a set of RDF triples.” Now, certainly a set of one is still a set, but the concept of an RDF Graph hardly seems meaningful if each graph consists of only one triple, and yet if one wanted to preserve the individual addressability of triple, that seems inevitable.

The far worse issue seems to be that if there were a Graph containing multiple triples that needed to be split out into multiple Graphs in order to make a meta-triple referring to a single triple from the original Graph, the ability to identify the two triples (the one belonging to the original Graph, and the copy that was split out into a separate Graph so it could be individually described) as the same triple would be gone. This seems like a serious problem!

In looking at the serialization formats (N-Quads, etc), this issue seems to get captured by the concept of a quad where it’s 
(subject, predicate, object, context), and each triple can (within that serialization format) have its own context, but then those quads get serialized back into a Dataset comprised of N Graphs, which are effectively triples grouped by context.

Am I understanding this right? Am I missing something fundamental here? Is there some reason not to just generally allow all triples to be individually addressable for the purposes of making meta-triples that describe them?

ipmcc
  • 29,581
  • 5
  • 84
  • 147
  • Named Graphs are for making statements about graphs. RDF Reification is for making statements about statements. – cygri May 05 '19 at 19:48
  • 2
    Possible duplicate of [How can I express additional information (time, probability) about a relation in RDF?](https://stackoverflow.com/questions/32923213/how-can-i-express-additional-information-time-probability-about-a-relation-in) – Jeen Broekstra May 06 '19 at 03:35
  • 1
    That said, you should also have a look at the nice and concise answer from @cygri : https://stackoverflow.com/a/55889556/4744359 – UninformedUser May 06 '19 at 08:22

0 Answers0