- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Tue, 12 Jan 2021 11:03:38 -0500
- To: Pierre-Antoine Champin <pierre-antoine.champin@ercim.eu>, public-rdf-star@w3.org
On 1/12/21 3:29 AM, Pierre-Antoine Champin wrote: > > > On 08/01/2021 19:56, Peter F. Patel-Schneider wrote: >> Oops, I mixed up RDF graphs and RDF intepretations. This makes some of my >> complaints incorrect. >> >> >> On 1/8/21 1:22 PM, Pierre-Antoine Champin wrote: >> >>> On 08/01/2021 17:05, Peter F. Patel-Schneider wrote: >>>> What advantages does this semantics have over a mapping to RDF reification? >>> RDF reification is referentially transparent, while this proposal keeps IRIs >>> and literals in embedded triples referentially opaque. >> But it is possible to use an extended mapping to achieve referential opacity. > I am not sure what you mean by "extended mapping" here. The original demonstration that an extension of RDF reification can achieve partial referential opacity is in https://lists.w3.org/Archives/Public/public-rdf-star/2020Nov/0044.html Here is a modification of the approach that uses new datatypes, somewhat similar to part of https://github.com/w3c/rdf-star/pull/81. This modification also streamlines some aspects of the approach and uses fewer new identifiers. Let rdf* be an IRI namespace. Let rdf*:literal be the IRI of a datatype. The lexical space of this datatype consists of strings of the form "l"^^<d> if d is not the IRI rdf:langString and "l"@t^^<d> otherwise, where l is a Unicode string, d is an IRI, and t is a language tag. The lexical to value mapping of rdf*:literal is the identity function. Let rdf*:IRI be the IRI of a datatype. The lexical space of this dataype is strings that are IRIs. The lexical to value mapping of rdf*:IRI is the identity function. Define a mapping L on RDF literals and IRIs as follows: For an RDF literal t with lexical form l, optional language tag t, and datatype d, L(l) is the RDF literal with datatype rdf*:literal and lexical form "l"^^<d> or "l"@t^^<d>, as appropriate. For an IRI i, L(i) is the RDF literal with datatype rdf*:IRI and lexical form i. Given a set of recognized datatypes, the mapping -* from RDF* graphs to RDF graphs is defined as follows: Pick some embedded triple ( s, p, o ) such that none of s, p, and o are triples, replace all occurrences of it by a fresh blank node b, and add the triples ( b, rdf:type, rdf:Statement ) ( b, rdf:subject, s ) if s is not a malformed literal ( b, rdf*:subject, L(s) ) if s is not a blank node ( b, rdf:predicate, p ) if p is not a malformed literal ( b, rdf*:predicate, L(p) ) if p is not a blank node ( b, rdf:object, o ) if o is not a malformed literal ( b, rdf*:object, L(o) ) if o is not a blank node Finish when there are no embedded triples left. This assumes that IRIs cannot contain angle brackets. If they can, then some slight modifications are needed. An RDF* interpretation is then just an RDF interpretation. In normal use an RDF* system would always recognize rdf*:literal and rdf*:IRI but this is not strictly necessary.
Received on Tuesday, 12 January 2021 16:03:53 UTC