RDF star "baseline" - w3c/rdf-star-wg GitHub Wiki
graph ::= triple*
triple ::= subject predicate object
subject ::= NoLiteralTerm
predicate ::= iri
object ::= term
NoLiteralAtomicTerm ::= iri | BlankNode
atomicTerm ::= NoLiteralAtomicTerm | literal
NoLiteralTerm ::= NoLiteralAtomicTerm | tripleTerm
term ::= NoLiteralTerm | literal
tripleTerm ::= transparentTripleTerm | opaqueTripleTerm
transparentTripleTerm ::= triple
opaqueTripleTerm ::= triple
- 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
t, we denote the subject, predicate, object oftast.s,t.p,t.o, respectively.
An RDF simple interpretation I is a structure <IR, IP, IS, IL, IEXT, RE, SRE> 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 transparent triple terms. ⏪ - ⏩ An injective function
SREfrom opaqueTripleTerm into literal, called the syntactic denotation of opaque 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 transparentTripleTerm ⏪️ - ⏩
[I+A](r) = IL(SRE(r))ifris a opaqueTripleTerm ⏪️ -
[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 ::= ( subject predicate object ) |
( reifier rdf:reifies transparentTripleTerm ) |
( annotation rdf:isAnnotationOf opaqueTripleTerm )
subject ::= noLiteralAtomicTerm
predicate ::= iri_but_rdf:reifies_or_rdf:isAnnotationOf
object ::= atomicTerm
noLiteralAtomicTerm ::= iri | BlankNode
atomicTerm ::= noLiteralAtomicTerm | literal
noLiteralTerm ::= noLiteralAtomicTerm | tripleTerm
term ::= noLiteralTerm | literal
reifier ::= subject
annotation ::= subject
tripleTerm ::= transparentTripleTerm | opaqueTripleTerm
transparentTripleTerm ::= triple
opaqueTripleTerm ::= triple
Non context-free syntactic condition: A graph can not have two triples with the same annotation and distinct opaque triple terms.
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 crap and
- all the RDF 1.1 axiomatic triples crap ⏩ and
∀ x,y1,y2 . (x,y1) ∈ IEXT(IS(rdf:isAnnotationOf)) ⋀ (x,y2) ∈ IEXT(IS(rdf:isAnnotationOf)) → y1=y2and- more metamodelling crap and
- more axiomatic triples crap ⏪️
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.
- Observe that RDF 1.1 is always well formed.