- From: Andy Seaborne <andy@apache.org>
- Date: Thu, 22 Aug 2024 12:01:14 +0100
- To: public-rdf-star-wg@w3.org
On 22/08/2024 05:16, Souripriya Das wrote: > Suppose there are two kinds of statements that we need to store using > our data model: Truth and Hypothesis. > > Within an id-based scope (i.e., a scope that contains id-s-p-o tuples), > I'd like to specify an s-p-o either as a Truth or as a Hypothesis. If we > use a single RDF-blessed property, rdf:reifies, we can do this as follows: > :id rdf:reifies <<( :s :p :o )>> ; a :Truth . > OR > :id rdf:reifies <<( :s :p :o )>> ; a :Hypothesis . > > What's the complexity? An extra triple has to be added to designate an > id-s-p-o tuple as a Truth or a Hypothesis. Retrieval of one kind of > statements via SPARQL then requires an additional triple-pattern: > Example=> { ?id rdf:reifies <<( ?s ?p ?o )>> ; a :Truth } . > > Doing this in RDF is more complex than what's needed in the case of > relational data. There we do not need to add any extra row to the table > to indicate this – we just need an extra column, in the existing row, to > be populated. SQL query simply needs an extra condition (e.g., > <tableAlias>.kind = 'Truth'), not an extra join. > > Doing this in RDF is more complex than what's needed in the case of LPG > data as well. There, assuming edge is actually stored as a struct or > record, all that is needed is adding and populating an extra attribute > (i.e., edge-property). The query for the extended LPG data only needs an > extra filter (e.g., <edge-var>.kind = "Truth"). > > So, to avoid this Truth/Hypothesis handling complexity related > disadvantage compared to relational data and LPG, my suggestion would be > to integrate the Truth or Hypothesis indicator into the id-s-p-o tuple > itself by providing two distinct RDF-blessed properties, say rdf:asserts > (for Truth) and rdf:reifies (for Hypothesis) – all within the id-based > scope. (This does not affect s-p-o triples in any way because those are > not part of any id-based scope. Those are in a "default" (no id) scope.) Truth/Hypothesis are not the only cases. Consider a trivial vocabulary: ex:added -- fact added to the graph ex:retracted -- fact retracted ex:source -- URL where a triple occurred. These are orthogonal aspects [1]. There could be a subproperty of rdf:reifies in a vocabulary that implies a Truth or Hypothesis class about the reifier making the extra explicit type triple unnecessary. Usage patterns could be a profile. A simple ingestion pipeline can materialize it if desired. At the moment, there is limited to no experience of using RDF 1.2 for relational data or LPG mapping. I would hope a vocabulary and profile appear and mature in a longer timescale. Making anything RDF-blessed (meaning in the rdf: namespace) seems too early. It can emerge later - removing things is harder. Andy > > Thanks, > Souri. > > [1] https://www.w3.org/2009/12/rdf-ws/papers/ws12
Received on Thursday, 22 August 2024 11:01:22 UTC