- 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