- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Thu, 18 Jan 2024 12:46:33 -0500
- To: public-rdf-star-wg@w3.org
# Necessary Parts
Here is what I think the proposal necessarily involves:
## Concrete Syntaxes:
* New concrete syntax is *just* shorthand, and expands to (something like) RDF
reification.
** (Defer precise details of the new concrete syntaxes, e.g., "|" should not
collide with SPARQL.)
## Concepts:
* No change whatsoever to the normative definitions of RDF graphs, triples, etc.
** So no notion of "edge" or "triple occurrence" or "named triple" in the
normative description of RDF graphs.
## Semantics:
* No changes to the normative parts of the current RDF semantics.
# Options
Here are some options that I see:
## Vocabulary:
* Use the RDF reification vocabulary in toto.
* Use a completely new vocabulary, unrelated to the RDF reification vocabulary.
* Use specializations of (some of) the RDF reification vocabulary.
## Well-formedness:
* Implementations can reject non-well-formed RDF graphs.
## Semantics:
* Modify the section on RDF reification to make it more specific to named triples.
# Implications of the Proposal
Here are some implications of the proposal that I see.
## SPARQL
* No changes to how SPARQL works, so there are five (or four) results from
SELECT ?p WHERE { ?s ?p ?o . } when querying << :a :b :c >> :d :e .
## RDF Graph Operations
* An RDF graph data structure, even if internally optimized, can be written in
N-Triples with no extra space and in (quasi-)linear time.
* Creating an optimized RDF graph requires some extra storage.
* Maintaining an optimized RDF graph requires checking whether changed nodes
are complete reification structures.
peter
On 1/17/24 06:20, Adrian Gschwend wrote:
> Hi all,
>
> In the interest of making progress, we propose to structure the discussion on
> our next long meeting around the proposal below. (Best viewed as Markdown)
>
>
> # What we seem to agree on
>
> There seems to be a consensus in the WG to focus on the notion of "edge" or
> "named occurrence of a triple" (terminology still to be discussed), and away
> from the notion of "unique triple" that was the main focus of the CG.
>
> There seems also to be consensus consensus about a Turtle syntax for edges:
>
> << :e | :s :p :o >> :a :b .
>
> and its variants:
>
> << :s :p :o >> :a :b . # syntactic sugar for << [] | :s :p :o >> :a :b .
> :s :p :o {| :e | :a :b |}. # syntactic sugar for :s :p :o. << :e | :s :p
> :o >> :a :b .
> :s :p :o {| :a :b |}. # syntactic sugar for :s :p :o {| [] | :a :b |}.
>
> Furthermore, the discussion on terminology last Friday made a lot of parallels
> between this notion of edge and the definitions, in the current specs, of
> rdf:Statement and reification.
>
>
> # A possible way forward
>
> An approach that has been discussed several times in the past (including in
> the CG), but seems especially relevant in the current state of the discussion
> (see above), is to consider the double-pointy brackets as syntactic shortcut
> for standard reification. In other words,
>
> << :e | :s :p :o >> :a :b .
>
> would be syntactic sugar for the following triples
>
> :e a rdf:Statement .
> :e rdf:subject :s .
> :e rdf:predicate :p .
> :e rdf:object :o .
> :e :a :b .
>
> and the concrete syntax would not need to be extended.
>
> Of course, if we go down that path, we will have to handle the usual
> criticisms raised against standard reification :
> (a) It is verbose
> (b) It can be inefficient
> (c) It can be messy (nodes with missing or duplicate rdf:subject /
> rdf:predicate / rdf:object)
>
> Issue (a) is alleviated by the double-pointy bracket syntactic sugar in
> Turtle, TrIg and SPARQL. This can be extended to other concrete syntaxes (in
> fact RDF/XML already has some syntactic sugar for reification, and the efforts
> on JSON-LD-star [1] can also be leveraged).
>
> Issues (b) and (c) could be alleviated by introducing a notion of
> "well-formed" RDF (again, a better term can maybe be found). Any node that has
> at least one of the 3 reification properties must have exactly one value for
> each of them, or be deemed ill-formed. Systems would not be required to detect
> or reject ill-formed RDF, but they would not be required to accept it either.
> In other words, ill-formed RDF is not forbidden nor semantically inconsistent,
> but it has no guarantee in terms of interoperability. Existing systems (which
> accept ill-formed RDF) would then still be compliant, but new systems could
> reject ill-formed RDF and use this assumption to optimize storage for
> reifications. By the way, well-formed-ness could be also defined on
> `rdf:first/rdf:rest` ladders.
>
> Note that the notion of well-formed-ness already exists in RDF for Semantic
> Extensions (they are called "syntactic conditions or restrictions") [2]. The
> proposal here is to extend it to plain RDF. Note also that a similar notion
> also exists in Common LISP ("is an error") [3].
>
>
> # Seeking consensus
>
> We propose to dedicate the next long meeting to see if we can reach consensus
> on this plan of action, remembering that consensus is not defined as
> "everybody's favorite solution", but "a solution everybody can live with".
>
> If nobody objects to that proposal, then we can move forward! If only a few
> participants object, we can try to adapt that plan to address their objection.
>
>
>
> [1] https://json-ld.github.io/json-ld-star/
> <https://json-ld.github.io/json-ld-star/>
> [2] https://www.w3.org/TR/rdf11-semantics/#dfn-semantic-extension
> <https://www.w3.org/TR/rdf11-semantics/#dfn-semantic-extension>
> [3] https://www.lispworks.com/documentation/HyperSpec/Body/26_glo_e.htm#error
> <https://www.lispworks.com/documentation/HyperSpec/Body/26_glo_e.htm#error>
>
>
> regards,
>
> Ora, Pierre-Antoine & Adrian
>
>
Received on Thursday, 18 January 2024 17:46:41 UTC