As per subject, Is it valid to assert a single rdf:Statement
with multiple rdf:predicate
triples attached to it?
Background: I'm trying to build inferred triples by means of simple rules based on SPARUL
(ie, INSERT <inferred triples> WHERE <preconditions>
). In my dataset, I have reified statements based on the rdf:
vocabulary, and it makes sense to make inferences like:
?stmt rdf:predicate ?p; ?p rdfs:subPropertyOf ?p1 =>
=> a statement with rdf:predicate ?p1 is also asserted.
The purpose of such inference is mainly vocabulary mapping: people searching with the vocabulary defining ?p1
would also find statements stated by people using the vocabulary where ?p
is defined (eg, skos:prefLabel(?p) rdfs:subPropertyOf schema:name(?p1)
).
I can't find any documentation that states a statement can only have one rdf:predicate
, or the opposite. It seems to me that one predicate only would be the cleaner option, however, if that was the case, I would need to duplicate almost all of the existing statement (including additional triples like provenance or significance score) and use ?p1
as the predicate for the new one.
If, instead, I simply add an rdf:predicate
to the existing one, the implied semantics would be: "there are two which differ by predicate only" and all queries searching for ?p
or ?p1
should work without problems, but I'm not sure I'm not missing anything.
Actually, one thing I can see is that a reified statement count couldn't be based on counting triples like ?s a rdf:Statement
, but that doesn't seem to be a big deal in my case.
Going to answer with the information I gather from the Semantic Web group on Facebook (Many thanks to those who contributed).
The common practice is that one reified statement represents one statement only. The interpretation I proposed doesn't work well with the fact that one URI should represent one entity only.
Besides, one can deduce such the unicity from the specs (emphasis on the definite article is mine):
The predicate of an RDF statement is the instance of rdf:Property identified by the predicate of the triple.
Moreover, it's unlikely that frameworks like Jena would work well with my approach.
So, definitely not a good idea, I'll go with duplicates.