Turtle 1.2
Er zijn meerdere syntaxen en betekenissen van geëmbedde triples voorgesteld. Implementaties in software verschillen nogal tussen welke versie zij geïmplementeerd hebben. De kans is ook zeker aanwezig dat de voorstellen nog weer gaan veranderen. Deze blogpost put uit RDF-1.2 Turtle (werkdocument), maar die is nog niet vastgesteld.
Geëmbedde triples heten nu Triple terms (in de conceptuele RDF-basis) en ze zijn slechts syntactisch mogelijk op de objectpositie.
(In eerdere voorstellen was dat nog ook op de subjectplek.)
Het enige predicaat bij zo’n reifying triple mag rdf:reifies
zijn.
De geëmbedde triple staat tussen <<(
en )>>
.
:employee38 :familyName "Smith" .
_:id rdf:reifies <<( :employee38 :jobTitle "Assistant Designer" )>> .
_:id :accordingTo :employee22 .
Maar omdat deze beperkingen dan weer erg limiterend is, is er extra Turtle syntax bedacht. Dat wordt in het algemeen in programmeertalen syntactic sugar genoemd, als je hetzelfde op een compactere manier kunt uitdrukken. Bovenstaand voorbeeld kun je dan uitdrukken middels:
:employee38 :familyName "Smith" .
<< :employee38 :jobTitle "Assistant Designer" >> :accordingTo :employee22 .
Merk op dat _:id
een blank node is, die in het tweede voorbeeld automatisch gegenereerd wordt.
Deze _:id
, de reifier geheten, representeert de geëmbedde triple term.
Als je naar de reifier wil verwijzen in nog andere triples, dan gebruik je daarvoor:
:employee38 :familyName "Smith" .
<< :employee38 :jobTitle "Assistant Designer" ~ _:id >> :accordingTo :employee22 .
Merk op dat de functietitels steeds niet gezegd zijn in de graaf: de triple term is zelf niet een triple in de graaf, maar staat slechts in de objectpositie ergens in zo’n graaf. Dat kun je door de geëmbedde triple ook los op te nemen in je graaf, maar ook daarvoor is er nieuwe Turtle-syntax.
:a :name "Alice" ~ :t {|
:statedBy :bob ;
:recorded "2021-07-07"^^xsd:date
|} .
wat gelijk staat aan:
:a :name "Alice" .
<< :a :name "Alice" ~ :t >>
:statedBy :bob ;
:recorded "2021-07-07"^^xsd:date .
wat weer gelijk is aan, op het meest basale niveau:
:a :name "Alice" .
:t rdf:reifies <<( :a :name "Alice" )>> .
:t :statedBy :bob .
:t :recorded "2021-07-07"^^xsd:date .
Ik kan wel waarderen dat geëmbedde triples niet meer op subjectpositie voor kunnen komen en dat ze hebben bedacht wat nou de syntactic sugaring precies voorstelt, nl. gewoon triples triples all the way down.
Maar hoe de betekenis ervan precies loopt en wat de juiste syntax wordt bij vaststelling van RDF-1.2, dat is nog niet duidelijk. Ik ben erg benieuwd wat het finale product gaat worden en hoop dan dat implementaties mettertijd snel conform worden.
Het charter van de werkgroep loopt af op 28 nov 2024, maar er zijn nog genoeg issues en discussies in de bijbehorende GitHub repo’s, bijv.