- From: Pierre-Antoine Champin <pierre-antoine@w3.org>
- Date: Wed, 31 Jan 2024 08:46:25 +0100
- To: RDF-star WG <public-rdf-star-wg@w3.org>
- Message-ID: <60388c64-d092-46f2-8c44-6ffdd34f6d54@w3.org>
Oops. There was a mistake:
On 30/01/2024 22:49, Pierre-Antoine Champin wrote:
>
> Don't worry, this is NOT yet another approach ! On the contrary, it is
> an attempt to reconcile the different approaches currently on the table.
>
> This thought arose from
>
> * the email I just sent about Antoine Zimmermann's semantics [1], and
> * a discussion on github about ill-formed literals [2].
>
> Currently, some RDF implementations used native datatypes to represent
> literals. For example, the literal "42"^^xsd:integer is /not/
> represented internally by the pair of strings ("42",
> "http://www.w3.org/2001/XMLSchema#integer"), but by a native int. This
> has a number of advantages (more compact to store, more efficient to
> compute with), but it also comes with limitations:
> * ill-formed integers, such as "foo"^^xsd:integers, can not be
> represented (although they are /syntactically/ valid) ;_
> _* syntactically distinct integers such as "42"^^xsd:integers and
> "042"^^xsd:integers become undistinguishable ;
> * as a consequence, these implementation do not always round trip:
> graphs may come out slightly different from how they came in.
>
> Is it wrong to implement RDF that way, then? Semantically, the three
> limitations above make perfect sense(!). If we consider that these
> implementations work at the D-entailment level rather than at the
> strict abstract syntax level, then they can be argued to be perfectly
> complying with the spec (that's basically my argument in [2]).
>
>
> Now, let's consider the two options on the right ("triple-terms" and
> "edge-statements") of the synthetic table that I posted earlier [3],
> and if we extend their semantics using f az-RDF-reification semantics
> (see my summary in [1]). Then we could imagine an implementation of
> RDF 1.2 which would, internally, represent
>
> << :e | :s :p :o >> :a :b.
>
> NOT using triple-terms or edge-statements, but simply as
>
> :e rdf:nameOf [
> rdf:subject :s ;
> rdf:predicate :p ;
> rdf:object :o ;
> :a :b ;
> ].
>
should have been
:e rdf:nameOf [
rdf:subject :s ;
rdf:predicate :p ;
rdf:object :o ;
] ;
:a :b.
Thanks to Thomas Lörtsch for catching this.
> (e.g. exactly as proposed in the sugar+ approach).
>
> This is acceptable since the latter is entailed by the former (under
> az-RDF-reification semantics). Similarly to the implementations
> working at the D-entailement level (as illustrated above), these
> implementations could be considered to work at the
> az-RDF-reification-entailment level. They would not perfectly
> round-trip, but what they would produce would always be a consequence
> of what they were given (just like with the D-entailment case above).
>
> Granted, the two cases differ in some aspects, but I find the parallel
> interesting: implementations that do not want to extend the abstract
> syntax could have a nice and compliant way out of it, just like
> implementations that do not want to support ill-formed integers.
>
> pa
>
> [1] https://www.w3.org/mid/7133d1bc-3618-43e2-96cd-d815536ff1d6@w3.org
> [2] https://github.com/w3c/rdf-concepts/issues/60
> [3]
> https://htmlpreview.github.io/?https://github.com/w3c/rdf-star-wg/blob/main/docs/seeking-consensus-2024-01.html
>
Attachments
- application/pgp-keys attachment: OpenPGP public key
Received on Wednesday, 31 January 2024 07:46:30 UTC