- From: Andy Seaborne <andy@apache.org>
- Date: Fri, 9 Feb 2024 17:49:16 +0000
- To: RDF-star Working Group <public-rdf-star-wg@w3.org>
Correction: Some of the option 2 examples do not take into account the specific well-formedness condition of option 2. The condition requires the uniqueness of the subject blank for the rdf:subject/rdf:predicate/rdf:object triples. https://lists.w3.org/Archives/Public/public-rdf-star-wg/2024Jan/0138.html and https://github.com/w3c/rdf-star-wg/wiki/Revision-of-the-sugar-proposal """ _:b a fresh new blank node, unique within the RDF graph. """ """ **Definition**: An RDF graph is reification well-formed iff: 1. The object of each `rdf-star:is-reification-of` triple is a blank node. 2. Any blank node appearing as object of a `rdf-star:is-reification-of` triple occurs only in that triple and exactly once as subject of a `rdf:subject` triple, a `rdf:predicate` triple, and a `rdf:object` triple. """ In the Friday (2024-02-09) Semantics TF call, a discussion about RDF merge concluded that RDF merge would be extended to preserve the well-formedness so that merging two well-formed graphs produced a well-formed graph. Andy --- Corrections --- The major effect is on "Turtle predicate-object lists" case. == Case: Repeated text (given name) << :e | :s :p :o >> :x :y . << :e | :s :p :o >> :x :y . -- Option2 Each use of << :e | :s :p :o >> must be defined to use the same blank node. Triples (NT-level) :e rdf:nameOf _:blank . _:blank rdf:subject :s . _:blank rdf:predicate :p . _:blank rdf:object :o . # Second usage adds the same triples. :e :x :y . == Case: Repeated text (implicit blank node) << :s :p :o >> :x :y . << :s :p :o >> :x :y . -- Option2 Triples (NT-level) ## Fresh blank node per occurrence, same blank node per triple. _:a1 rdf:nameOf _:blank . _:blank rdf:subject :s . _:blank rdf:predicate :p . _:blank rdf:object :o . _:a1 :x :y. _:a2 rdf:nameOf _:blank . _:a2 :x :y. == Case: Turtle predicate-object lists Because << :e | :s :p :o >> has the same blank node ## [A] << :e | :s :p :o >> :x1 :y1 ; :x2 :y2 . and ## [B] << :e | :s :p :o >> :x1 :y1 . << :e | :s :p :o >> :x2 :y2 . produce the same N-Triples. == Case: Annotations 1 Annotations translate to named occurrences and these translate again to the data model (here, written in N-Triples). :s :p :o {| :x1 :y1 ; :x1a y1a |} :s :p :o {| :x2 :y2 |} which is (still in "agreed" syntax): :s :p :o . << _:a1 | :s :p :o >> :x1 :y1 . << _:a2 | :s :p :o >> :x2 :y2 . _:a1 :x1 :y1 . _:a1 :x1a :y1 . _:a2 :x2 :y2 . for new blank nodes _:a1 and _:a2. The :x1/:y1 and :x2/:y2 have been kept apart. -- Option 2 Triples (NT level) :s :p :o . _:a1 rdf:nameOf _:blank . _:blank rdf:subject :s . _:blank rdf:predicate :p . _:blank rdf:object :o . _:a1 :x1 :y1 . _:a1 :x1a :y1a . _:a2 rdf:nameOf _:blank . _:a2 :x2 :y2 . == Case: Annotations 2 :s :p :o {| :e | :x1 :y1 |} :s :p :o {| :e | :x2 :y2 |} translates to :s :p :o . << :e | :s :p :o >> :x1 :y1 . << :e | :s :p :o >> :x2 :y2 . :e :x1 :y1 . :e :x2 :y2 . -- Option 2 Triples (NT level) :s :p :o . :e rdf:nameOf _:blank . _:blank rdf:subject :s . _:blank rdf:predicate :p . _:blank rdf:object :o . :e :x1 :y1 . :e :x2 :y2 .
Received on Friday, 9 February 2024 17:49:25 UTC