RDF star "working baseline" - w3c/rdf-star-wg GitHub Wiki
graph ::= triple*
triple ::= tripleStructure
tripleStructure ::= subject predicate object
subject ::= NoLiteralTerm
predicate ::= iri
object ::= term
NoLiteralTerm ::= NoLiteralAtomicTerm | tripleTerm
NoLiteralAtomicTerm ::= iri | BlankNode
tripleTerm ::= tripleStructure
term ::= NoLiteralTerm | literal
- RDF 1.1 syntax is the above without the tripleTerm category and its dependents.
- A term is denoted by
r, a triple byt, and a graph byg. - Given a triple structure
s, we denote the subject, predicate, object ofsass.s,s.p,s.o, respectively.
An RDF simple interpretation I is a structure <IR, IP, IS, IL, IEXT, RE> consisting of:
- A non-empty set
IRof resources, called the domain or universe ofI. - A set
IP, called the set of properties ofI. - A mapping
ISfrom IRIs intoIR ⋃ IP, called the interpretation of IRIs. - A partial mapping
ILfrom literal intoIR, called the interpretation of literals. - A mapping
IEXTfromIPinto2IR x IR, called the extension of properties. - ⏩ An injective function
REfromIR x IP x IRintoIR, called the denotation of triple terms. ⏪
A is a mapping from BlankNode to IR.
Given I and A, the function [I+A](.) is defined over terms, triples, and graphs as follows.
-
[I+A](r) = IS(r)ifris a iri -
[I+A](r) = IL(r)ifris a literal - ⏩
[I+A](r) = RE([I+A](r.s), [I+A](r.p), [I+A](r.o))ifris a tripleTerm ⏪️ -
[I+A](r) = A(r)ifris a BlankNode
-
[I+A](t) = TRUEif and only if<[I+A](t.s), [I+A](t.o)> ∈ IEXT([I+A](t.p)) -
[I+A](g) = TRUEif and only if∀ t ∈ g . [I+A](t) = TRUE
A simple interpretation I is a model of a graph g if and only if ∃ A . [I+A](g) = TRUE.
The set of all models of a graph g is called models(g).
Simple entailment: g ⊨ g' if and only if models(g) ⊆ models(g').
- RDF 1.1 simple semantics is the above without the parts within ⏩...⏪ marks.
graph ::= triple*
triple ::= tripleStructure
tripleStructure ::= ( subject predicate object ) |
( reifier rdf:reifies tripleTerm )
subject ::= noLiteralAtomicTerm
predicate ::= iri
object ::= atomicTerm
noLiteralAtomicTerm ::= iri | BlankNode
atomicTerm ::= noLiteralAtomicTerm | literal
noLiteralTerm ::= noLiteralAtomicTerm | tripleTerm
term ::= noLiteralTerm | literal
reifier ::= subject
tripleTerm ::= tripleStructure
- Observe that RDF 1.1 is always well formed.
RDF semantics is defined over the well formed fragment of RDF.
RDF semantics restricts interpretations as follows:
A RDF interpretation I is a RDF model of a graph g if and only if
-
∃ A . [I+A](g) = TRUEand - all the RDF 1.1 metamodelling stuff and
- all the RDF 1.1 axiomatic triples stuff and
- ⏩ metamodelling characterising reification ⏪️ and
- ⏩ axiomatic triples characterising reification ⏪️
The set of all RDF models of a graph g is called rdf-models(g).
RDF entailment: g ⊨ g' if and only if rdf-models(g) ⊆ rdf-models(g').
- RDF 1.1 RDF semantics is the above without the parts within ⏩...⏪ marks.
A triple term is represented in Turtle as follows:
<<( s p o )>>
The following shortcut for a term (a triple term reifier) is added to Turtle, which can be used in arbitrary subject or object position:
<< e | s p o >>
which expands in Turtle as follows:
<< e | s p o >> p1 o1 . ==> e rdf:reifies <<( s p o )>> . e p1 o1 .
s1 p1 << e | s p o >> . ==> e rdf:reifies <<( s p o )>> . s1 p1 e .
- A Turtle graph with triple term reifiers and without triple terms is always well-formed, and a well-formed graph can always be expressed as a Turtle graph without triple terms but possibly with triple term reifiers.