Semantics: proposals by Peter Patel‐Schneider for several partly opaque semantics - w3c/rdf-star-wg GitHub Wiki

The first alternative semantics (pfps1) stays close in exposition to the RDF 1.1 semantics.  It has some similarities to Enrico's opaque semantics but has transparency for blank nodes (but different from the CG semantics).  The basic idea in this semantics is to map quoted triples to 3-tuples of resources where each element of the tuple carries the meaning of the corresponding component of the triple.  Instead of using explicit mappings from IRIs and literals to strings this semantics adds unspecified mappings that allow syntactic meaning and semantic meaning to diverge and thereby provide opacity.

The set of RDF triples is the smallest set of 3-tuples S P O where
S is a IRI, a blank node, or an RDF triple;
P is an IRI; and
O is an IRI, a blank node, a literal, or an RDF triple.
An RDF graph G is a set of RDF triples.

A simple interpretation I = < IR, IP, IEXT, IS, IL, ISQ, ILQ, IT > consists of
1. A non-empty set IR of resources, called the domain or universe of I.
2. A set IP, called the set of properties of I.
3. A mapping IEXT from IP into the powerset of IR x IR, i.e., the set of sets of pairs < x, y > with x and y in IR,
   such that IEXT(IS(owl:sameAs)) is the identity mapping over IR.
4. A mapping IS from IRIs into (IR union IP).
5. A partial mapping IL from literals into IR.
6. A mapping ISQ from IRIs into IR.  This is the opaque (or syntactic) mapping for IRIs.
7. A mapping ILQ from literals into IR.   This is the opaque (or syntactic) mapping for literals.
8. A mapping IT from (IR union IP) x IP x (IR union IP) into IR.   This provides meaning for quoted triples.

Given a (simple) interpretation I define IQ(E) (quoted interpretation) as
if E is an IRI then IQ(E) = ISQ(E),
if E is a literal then IQ(E) = ILQ(E),
if E is a ground triple s p o . then IQ(E) = IT(IQ(s), IQ(p), IQ(o)).

Given a (simple) interpretation I define IA(E) (asserted interpretation) as
if E is an IRI then IA(E) = IS(E),
if E is a literal then IA(E) = IL(E),
if E is a ground triple s p o. then IA(E) = IT(IQ(s), IQ(p), IQ(o)).

In a (simple) interpretation I extend I to a truth mapping for ground triples and ground graphs.
For E a ground triple s p o. define I(E) = true if IS(p) is in IP and the pair  is in IEXT(IS(p)) otherwise I(E) = false.
For E a ground RDF graph define I(E) = false if I(E') = false for some triple E' in E, otherwise I(E) = true.

Adding blank nodes:
Given an interpretation I let A be a mapping from a set of blank nodes to IR.
Define [I*A](E) to be A(E) on blank nodes,
       <[I*A](S), [I*A](P), [I*A](O)> on triples of the form S P O. ,
       and IA(E) otherwise.
For E a triple s p o. define [I+A](E) = true if IS(p) is in IP and the pair <[I*A](s),[I*A](o)> is in IEXT(IS(p)) otherwise [I+A](E) = false.
For E an RDF graph define [I+A](E) = false if [I+A](E') = false for some triple E' in E, otherwise [I+A](E) = true.
For E an RDF graph define I(E) = true if [I+A](E) = true for some mapping A from the set of blank nodes in E to IR, 
otherwise I(E) = false.

To make literals transparent (+L) just add the condition
ILQ(E) = IL(E)
To make IRIs transparent (+I) just add the condition
ISQ(E) = IS(E)




The second alternative semantics (pfps2) supports a partition of properties that determine whether their subject and object are interpreted syntactically or semantically.

The set of RDF triples is as above.

A simple interpretation I = < IR, IP, IEXT, IS, IL, ISQ, ILQ, IT > is as above, with a disjoint partition of IP into IPS and IPQ and two extra conditions (so that RDF graphs can force properties into IPS or IPQ):
9. IPS = { x : < x, IS(rdf:SemanticProperty) > in IEXT(IS(rdf:type)) }
10. IPQ = { x : < x, IS(rdf:SyntacticProperty) > in IEXT(IS(rdf:type)) }

Define IQ and ISQ and above

Given a (simple) interpretation I define ISS(E) as
if E is an IRI then ISS(E) = IS(E),
if E is a literal then ISS(E) = IL(E),
if E is a triple s p o. then ISS(E) = IT(ISS(s), ISS(p), ISS(o)).

In a (simple) interpretation I extend I to a truth mapping for ground triples and ground graphs.
For E a ground triple s p o. define I(E) as 
  I(E) = true if I(p) in IPS and  is in IEXT(IS(p))
  I(E) = true if I(p) in IPQ and  is in IEXT(IS(p))
  I(E) = false otherwise.
For E an RDF graph define I(E) = false if I(E') = false for some triple E' in E, otherwise I(E) =true.

Handle blank nodes as above.



The third alternative semantics (pfps3) is a variation on the first alternative semantics where 3-tuples are members of the domain.  This makes the connection between quoted triples and facts more explicit.  To further this connection, IEXT is modified from a map to a set of 3-tuples.   This semantics is not the same as the first but the difference should not be visible in RDF or RDFS.

The set of RDF triples is as above.

A simple interpretation I = < IR, IP, IEXT, IS, IL, ISQ, ILQ > consists of
1. A non-empty set IR of resources, called the domain or universe of I.
2. A set IP, called the set of properties of I.
3. A set IEXT, a subset of IP x IR x IR,
   such that the restriction of the first element to IS(owl:sameAs) is the identity mapping over IR.
4. A mapping IS from IRIs into (IR union IP).
5. A partial mapping IL from literals into IR.
6. A mapping ISQ from IRIs into IR.  This is the opaque (or syntactic) mapping for IRIs.
7. A mapping ILQ from literals into IR.   This is the opaque (or syntactic) mapping for literals.

Given a (simple) interpretation I define IQ(E) as
if E is an IRI then IQ(E) = ISQ(E),
if E is a literal then IQ(E) = ILQ(E),
if E is a ground triple s p o. then IQ(s p o) =  if this is in IR, undefined otherwise.

Given a (simple) interpretation I define IA(E) as
if E is an IRI then IA(E) = IS(E),
if E is a literal then IA(E) = IL(E),
if E is a triple s p o. then IA(s p o) = IQ(E)

In a (simple) interpretation I extend I to a truth mapping for ground triples and ground graphs.
For E a ground triple s p o. define I(E) = true if IS(p) is in IP and the 3-tuple  is in IEXT otherwise I(E) = false.
For E an RDF graph define I(E) = false if I(E') = false for some triple E' in E, otherwise I(E) = true.

Adding blank nodes is the same as in the first alternative.

To make literals transparent (+L) just add the condition
ILQ(E) = IL(E)
To make IRIs transparent (+I) just add the condition
ISQ(E) = IS(E)



Examples of entailment and non-entailment (at least as far as I can tell):

:lois :believes << :clark :wears :glasses >> .
entails in all the above semantics
:lois :believes << _:x :wears :glasses >> .

:lois :believes << _:y :wears :glasses >> .
entails in all the above semantics
:lois :believes << _:x :wears :glasses >> .

:lois :believes << :clark :heightinfeet "6"^^xsd:int >> .
:believes rdf:type rdf:SemanticProperty .
entails in +L semantics or in pfps2 only
:lois :believes << :clark :heightinfeet "6"^^xsd:integer >> .

:clark owl:sameAs :superman 
:lois :believes << :clark :heightinfeet "6"^^xsd:int >> .
entails in +I semantics only
:lois :believes << :superman :heightinfeet "6"^^xsd:int >> .

_:x owl:sameAs :clark .
:lois :believes << _:x :wears :glasses >> .
entails in all +I semantics only
:lois :believes << :clark :wears :glasses >> .

_:x owl:sameAs _:y .
:lois :believes << _:x :wears :glasses >> .
:lois :believes << _:y :heightinfeet "6"^^xsd:int >> .
entails in all the above semantics
:lois :believes << _:z :wears :glasses >> .
:lois :believes << _:z :heightinfeet "6"^^xsd:int >> .



A fully opaque semantics (pfps4) would add to pfps1
9. A mapping IBQ from blank nodes into IR.
if E is a blank node then IQ(E) = IBQ(E)
and make the change
Define [I+A] to be A on blank nodes in asserted triples, < [I+A]S, [I+A]P, [I+A]O > on triples, and I otherwise.
but I don't think that there is then a semantic extension to transparent blank nodes.

In this semantics

:lois :believes << :clark :wears :glasses >> .
does not entail
:lois :believes << _:x :wears :glasses >> .

:lois :believes << _:y :wears :glasses >> .
does not entail
:lois :believes << _:x :wears :glasses >> .
⚠️ **GitHub.com Fallback** ⚠️