Re: proposal: a reifier should reify only one "thing"

On 18 Apr 2024, at 09:55, Pierre-Antoine Champin <> wrote:

I could however live with something in the line of:
"For a given subject, rdf:reifies SHOULD not have multiple values. Note however that this does not prevent a graph to contain several triples with the same subject, the rdf:reifies predicate, and syntactically distinct objects, if these objects are considered to denote the same thing."

While I am against this choice on the ground that it would rule out several typical reification use cases, let’s assume I accept it.

We have two ways to look at it:

  1.  the objects denote the same resource, but not their components s,p,o;
  2.  the objects denote the same resource, and also their components s,p,o denote the same resource, respectively.

(1) We can still write triples that Amazon-et-al apparently find confusing (most of us do not):

:w1 rdf:reifies <<( :liz : married :richard )>> .
:w1 :location :miami .
:w1 rdf:reifies <<( :liz :married-in :miami )>> .
:w1 :groom :richard .
:w1 rdf:reifies <<( :richard : married :liz )>> .

which by the way entails:
<<( :liz : married :richard )>> owl:same-as <<( :liz :married-in :las-vegas )>> .
<<( :liz : married :richard )>> owl:same-as <<( :richard : married :liz )>> .

You can write symmetric properties, which was described to be confusing as well:

:w1 rdf:reifies <<( :liz : married :richard )>> .
:w1 rdf:reifies <<( :richard : married :liz )>> .

So, option (1) nullifies the attempt to avoid confusion (which is still the only reason I got for imposing the many-to-one restriction).

(2) The observations of option (1) also hold for option (2).
In addition, simple entailment and therefore SPARQL BGPs have to rely on more complex reasoning mechanisms than bnode generalisation or simple matching. Indeed, under option (2):

:e rdf:reifies <<( :s1 :p1 :o1 )>> .
:e rdf:reifies <<( :s2 :p2 :o2 )>> .
:s1 :p1 :o1 .

simply entails:
:s1 _:y :o2 .

ASK WHERE { _:x rdf:reifies <<( :s1 _:y :o2 )>> }  ➡︎ TRUE

I strongly believe that not having a model-theoretic semantics for well defined constructs is not an option in the SEMANTIC web stack, differently from DATABASE languages such as LPGs which lack semantics. So, we have to accept the above consequences.

The only way out, as initially pointed out by Dörthe, is to adopt full opacity, namely two triple terms denote the same resource if and only if they have the same canonical syntactic form - if you can somehow define such canonical syntactic form for RDF triples. Then, none of the above observations apply, and we have a semantically sound approach. Of course, this means that reification in RDF 1.2 can only talk about syntactic triples, which still covers some use cases (syntactic annotation , syntactic provenance, LPGs possibly without undirected edges).


Received on Thursday, 18 April 2024 13:38:05 UTC