Re: [External] : handling ("asserted") s-p-o triples and ("stated" or "reified") id-s-p-o 4-tuples in RDF/SPARQL

There was a small typo in my last email [1]: changed "asserted" -> "stated" in the following sentence:
The 4-tuple, id-s-p-o, must be unique in an RDF graph. If present, an id-s-p-o can either be "stated" or "reified".
Thanks,
Souri.

[1] https://lists.w3.org/Archives/Public/public-rdf-star-wg/2024Aug/0010.html (Souri, Mon, 5 Aug 2024 19:29:29 +0000)
________________________________
From: Souripriya Das <souripriya.das@oracle.com>
Sent: Monday, August 5, 2024 3:29 PM
To: RDF-star WG <public-rdf-star-wg@w3.org>
Subject: [External] : handling ("asserted") s-p-o triples and ("stated" or "reified") id-s-p-o 4-tuples in RDF/SPARQL

Notations I am using below for the three proposed categories of tuples in RDF1.2:
============
- A: "Asserted" triples => present in graph as s-p-o
- S: "Stated under id" 4-tuples => id rdf:states s-p-o
- R: "Reified under id" 4-tuples => id rdf:reifies s-p-o

Issue A: Handling "stated" vs. "reified" for a given id and s-p-o?
=============================
I think it is better to stay within RDF for this and not involve RDFS rdfs:subPropertyOf.

We can impose the following constraint on RDF graph content:
The 4-tuple, id-s-p-o, must be unique in an RDF graph. If present, an id-s-p-o can either be "asserted" or "reified".

SPARQL INSERT, upon successful completion, will have the following effect on the target RDF graph's content:
- INSERT DATA { :id rdf:states <<( :s :p :o )>> } => the graph will contain id-s-p-o as "stated".
- INSERT DATA { :id rdf:reifies <<( :s :p :o )>> } => the graph will contain id-s-p-o -- as "stated", if it was already present as "stated", and as "reified" otherwise.

Issue B: Should presence of "stated" id-s-p-o guarantee presence of asserted" s-p-o?
===================================
I do not think we should include such a guarantee. This is lossy unless an implementation handles it using reference counts. It is better to keep presence or absence of "asserted" s-p-o triple completely independent of the presence or absence of "stated" id-s-p-o 4-tuples (for one or more values of id).

SPARQL: Combinations to match:
===================
- A =>                        ?s ?p ?o .    # Asserted
- S =>     ?id     ~     ?s ?p ?o .    # Stated
- R =>     ?id     ||     ?s ?p ?o .    # Reified
- AS =>   ?id    @    ?s ?p ?o .    # Asserted or Stated
- AR =>   ?id    |+|   ?s ?p ?o .    # Asserted or Reified
- SR =>   ?id    |~|   ?s ?p ?o .    # Stated or Reified
- ASR => ?id   |@|  ?s ?p ?o .    # Asserted or Stated or Reified
Note: When "asserted" s-p-o is matched, the ?id variable (if any) will not have a binding.

Thanks,
Souri.

Received on Monday, 5 August 2024 22:37:59 UTC