On 27/08/15 16:11, Patrick Hoeffel wrote:
All,
I know this is not a new topic, so hopefully there is a reference to the
de-facto standard answer on this (that I have not been able to find on my own
so far).
When I have a Subject that I want to store additional information about, I can
just add triples using the same Subject. Easy.
When I want to say things about a Statement (such as the date range within
which the triple Statement is valid, or the strength or source of the
relationship), the answer is more ambiguous. Reification is the standard
answer, but it is also heavy. I've read about using Quads, Named Graphs, N-ary
Relationships, etc.
What is the current state of the art or best practice in this regard?
No one size fits all. In particular it depends on whether you really
want such qualifiers to be applicable to any triple level statement or
only to particular cases, and whether your data follows particular patterns.
My personal heuristics are something like ...
If you have some graph of relationships where you might want to qualify
relationships by strength or validity but where the entities have other
unqualified attributes then I would go with an n-ary relation type
approach [1].
If your data is more regular and can be thought of as similar to
measurements, or observations or derivations therefrom then I would go
with RDF Data Cube [2] which allows you include time ranges as one of
the dimensions and strength as a qualifying attribute.
If your data comes in batches with different time validity for the
batches then I'd consider named graphs (aka quads, same difference).
If your data is fundamentally arbitrary RDF statements and anything in
there might be qualified and annotated with different values then I'd be
inclined to use reification.
Dave
[1] http://www.w3.org/TR/swbp-n-aryRelations/
[2] http://www.w3.org/TR/vocab-data-cube/