- From: Timothée Haudebourg <timothee.haudebourg@spruceid.com>
- Date: Tue, 21 Feb 2023 12:30:37 +0100
- To: public-rdf-star-wg@w3.org
Thanks Enrico, you made me realize I've completely overlooked the model
theoretic semantics up until now (I hope I'll be pardoned, I'm still
relatively new on this topic).
Anyway. The semantics you proposed is so simple I am now convinced
referential transparency should be the default (I discuss how to add
opacity below), although I would omit the last semantic condition:
[I+A](s,p,o)=true iff ∃b. [I+A](<<<s,p,o>>>)=[I+A](b)
Is that really necessary? That would forbid anyone from quoting non
asserted triples. I believe removing it would only affect the logical
equivalence without breaking the other properties of this semantics,
right? Without it, the semantics is equivalent to the alternative
referentially transparent semantics discussed in the CG:
https://www.w3.org/2021/12/rdf-star.html#other-alternatives-to-referential-opacity
Now how do we reintroduce referential opacity on top of that? Would it
be a good idea to add new types of resources that wraps around syntactic
constructs to add opacity? Let me explain with an example.
:klarkKent owl:sameAs :superman .
:Journalist rdfs:subClassOf :Worker .
:lois :knows <<:klarkKent rdf:type :Journalist>> .
With referential transparency the quoted triple is equivalent to the
following:
_:stm unstar:subject :klarkKent .
_:stm unstar:predicate rdf:type .
_:stm unstar:object :Journalist .
Because :lois does not know that :klarkKent is :superman (I don't know
the Superman lore, maybe she actually knows but let's assume not), we do
not want referential transparency for :klarkKent in the quoted triple.
However we may safely assume that :lois knows everything about what a
:Journalist is, in particular that if :klarkKent is a :Journalist she
also knows he is a :Worker, so we may want transparency there. A sort of
selective transparency. I express the opacity with an additional <>, but
I know this is not a good syntax:
:lois :knows <<<:klarkKent> rdf:type :Journalist>> .
:klarkKent is now opaque, which would be equivalent to the following:
_:stm unstar:opaqueSubject _:subject .
_:stm unstar:predicate rdf:type .
_:stm unstar:object :Journalist .
_:subject rdf:type unstar:quotedIRI .
_:subject unstar:value "https://example.org/klarkKent"^^xsd:anyURI .
I introduce the unstar:opaqueSubject property that we can substitute to
the unstar:subject to specify that the subject is opaque. The domain of
unstar:opaqueSubject is some unstar:opaqueNode (unstar:quotedIRI,
unstar:quotedBlank, unstar:quotedLiteral) that describes the syntactic
representation of the node, without referring to its interpretation.
Similarly to unstar:quotedIRI, unstar:quotedLiteral can describe a
literal value and its type:
_:literal rdf:type unstar:quotedLiteral .
_:literal unstar:value "01" .
_:literal unstar:datatype xsd:integer .
I'm not sure how we would quote blank node identifiers unless we have a
way of identifying the graph we are in. In which case the blank node
identifier _:0 could be quoted as
_:blank rdf:type unstar:quotedBlank .
_:blank unstar:value "0" .
_:blank unstar:namespace g .
where g is the hypothetical graph identifier.
I think I can come up with a model theoretic semantics for all of that
if needed (except maybe for the blank node identifier part).
To summarize:
- Semantic predication: can be achieved by simply quoting and stating
triples:
:john :teaches :cs101 .
<< :john :teaches :cs101 >> rdf:type :teaching ;
dct:Location dbr:Stanford_University ;
dct:PeriodOfTime :1st-term-2022 .
- Syntactic predication: can be achieved by quoting with opaque
components:
<< <:john> <:teaches> <:cs101> >> :recorded "2021-07-07"^^xsd:date .
- Modal/epistemic predication: here I'm not sure because I don't yet
understand the difference with semantic predication.
Some additional notes:
- unstar:subject and unstar:opaqueSubject are not necessarily
mutually exclusive. We could have a quoted triple with transparent
subject AND that also specifies the syntactic representation of the
subject (or predicate or object):
_:stm unstar:subject _:klarkKent .
_:stm unstar:opaqueSubject _:subject .
_:subject rdf:type unstar:quotedIRI .
_:subject unstar:value "https://example.org/klarkKent"^^xsd:anyURI .
- We may allow quoting components alone, outside of quoted triples,
like <:klarkKent>. In this case we need to decide a custom syntax in
quoted triples to differentiate between opaque components and
transparent quoted components.
--
Timothée
Received on Tuesday, 21 February 2023 11:30:35 UTC