On 21/12/2020 11:34, Laura Morales wrote:
Pardon, a couple of things that are not completely clear to me:
- is :a :b :c {| :d "object" |} a valid Turtle syntax? I've never seen it
before
Yes - it is the new annotation syntax for RDF*
See the link in previous email to the RDF-start community test cases.
- if I load this with Fuseki/Jena << :a :b :c >> :d :e . will Jena
automatically create the :a :c :c triple? This is important for me to know, or if there is
a switch to enable this behavior
No, it will not create the triple ":a :b :c"
<< :a :b :c >> :d :e .
is one triple.
subject = << :a :b :c >>
predicate = :d
object = :e
Simply write:
:a :b :c .
<< :a :b :c >> :d :e .
or use
:a :b :c {| :d :e |}
(the latter is not in 3.17.0)
This is different to the original paper. This is the same as RDF-star
community specs at the moment.
Annotation syntax arose to make it convenient to assert and annotate at
the same time.
Always asserting ":a :b :c" when <<>> is used is limiting;
<< :a :b :c >> :withdrawn "2020-12-31" .
is impossible because :a :b :c would still be there. i.e. you can't talk
about a triple without it being "true" - true means
graph contains (:a :b :c)
Some of the use cases :
https://w3c.github.io/rdf-star/UCR/rdf-star-ucr.html
Andy
Otherwise great explanation as always, thank you Andy.
Sent: Monday, December 21, 2020 at 12:21 PM
From: "Andy Seaborne" <[email protected]>
To: [email protected]
Subject: Re: Turtle* same term twice
On 21/12/2020 07:47, Lorenz Buehmann wrote:
On 20.12.20 17:19, Andy Seaborne wrote:
On 20/12/2020 09:20, Lorenz Buehmann wrote:
On 19.12.20 21:14, Laura Morales wrote:
Is this
<< :a :b :c >> :d ; :e .
the equivalent of this?
<< :a :b :c >> :d .
<< :a :b :c >> :e .
Will Fuseki/Jena store them and treat them the same exact way?
https://w3c.github.io/rdf-star/rdf-star-cg-spec.html#turtle-star-grammar
Yes - there is no changes to Turtle except to add <<>> as a new kind
of RDF term. For syntax, the new annotation syntax (in issue 9) is
likely to happen and is a way to write <<>> and assert the triple in
one form.
Yep - something that I think might be confusing for people start using
RDF* might be the fact that
<< :a :b :c >> :d .
>
is just an annotation but doesn't add the triple itself.
<< :a :b :c >> :d "object" .
is a triple. It is a triple about another ":a :b :c" These <<>> things
behave like literals in the sense that their representation tells you
everything you need to know about them.
The subject is the (new) RDF term << :a :b :c >>.
I'm also
wondering how triple stores will handle this if the triple itself
doesn't exist
<< :a :b :c >> is a new kind of Node in Jena (Node_Triple).
- will it simply be dropped after parsing the whole
document is done? Given that the triple could occur after the annotation
in a stream, this needs some more effort for triple stores, right?
Not in Jena the <<>> is a new RDF Term (node) and is a first-class
object in the system. It does not need triple ":a :b :c" to exist.
Annotations are not stored directly with the triple they annotate. There
is an indirection through the <<>> term.
Also,
what happens if a SPARQL INSERT does add just the annotation? I guess
nothing, or will the annotation be kept nevertheless - I don't think so?
On the other hand, the annotation syntax will add both, the triple and
the annotation in a step - this is nice.
For our readers: this is annotation syntax:
:a :b :c {| :d "object" |}
it is syntax for two triples:
:a :b :c .
<< :a :b :c >> :d "object" .
Modelling in the data is used for complex use cases -
Here is a larger example where we have two separate sources for a triple:
PREFIX : <http://example/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
:s :p :o {| :source [ :graph <http://host1/> ;
:date "2020-01-20"^^xsd:date
] ;
:source [ :graph <http://host2/> ;
:date "2020-12-31"^^xsd:date
]
|} .
It is:
@prefix : <http://example/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:s :p :o .
<< :s :p :o >>
:source [ :date "2020-12-31"^^xsd:date ;
:graph <http://host2/>
] .
<< :s :p :o >>
:source [ :date "2020-01-20"^^xsd:date ;
:graph <http://host1/>
] .
or (same triples)
<< :s :p :o >>
:source [ :date "2020-12-31"^^xsd:date ;
:graph <http://host2/>
] ;
:source [ :date "2020-01-20"^^xsd:date ;
:graph <http://host1/>
] .
Like every use of "1"^^xsd:integer or <http://example/> is the same RDF
term (and unliek the []-syntax) , every use of <<:s :p :o>> is the same
term.
Andy
Everything else is left untouched.
";" and "," are just syntactic sugar in Turtle.
How the triples are written makes no difference - a graph is a set of
triples.
Syntax test suite:
https://w3c.github.io/rdf-star/tests/turtle/syntax/manifest.html
Andy