Skip to content

RDF star "baseline"

Enrico Franconi edited this page May 31, 2024 · 9 revisions

RDF-star "baseline" (DRAFT 2024.05.31)

ABSTRACT SYNTAX

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

Notes:

  • RDF 1.1 syntax is the above without the tripleTerm category and its dependents.
  • A term is denoted by r, a triple by t, and a graph by g.
  • Given a triple t, we denote the subject, predicate, object of t as t.s, t.p, t.o, respectively.

SIMPLE SEMANTICS

An RDF simple interpretation I is a structure <IR, IP, IS, IL, IEXT, RE, SRE> consisting of:

  1. A non-empty set IR of resources, called the domain or universe of I.
  2. A set IP, called the set of properties of I.
  3. A mapping IS from IRIs into IR ⋃ IP, called the interpretation of IRIs.
  4. A partial mapping IL from literal into IR, called the interpretation of literals.
  5. A mapping IEXT from IP into 2IR x IR, called the extension of properties.
  6. An injective function RE from IR x IP x IR into IR, called the denotation of transparent triple terms.
  7. An injective function SRE from opaqueTripleTerm into literal, called the syntactic denotation of transparent 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)   if r is a iri
  • [I+A](r) = IL(r)   if r is a literal
  • [I+A](r) = RE([I+A](r.s), [I+A](r.p), [I+A](r.o))   if r is a transparentTripleTerm ⏪️
  • [I+A](r) = IL(SRE(r))   if r is a opaqueTripleTerm ⏪️
  • [I+A](r) = A(r)   if r is a BlankNode
  • [I+A](t) = TRUE   if and only if   <[I+A](t.s), [I+A](t.o)> ∈ IEXT([I+A](t.p))

  • [I+A](g) = TRUE   if 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').

Notes:

  • RDF 1.1 simple semantics is the above without the parts within ⏩...⏪ marks.

RDF SEMANTICS

WELL FORMED RDF

RDF semantics is defined over the following well formed fragment of RDF.

graph                 ::= triple*
triple                ::= ( subject predicate object ) | 
                          ( reifier rdf:reifies transparentTripleTerm ) |
                          ( opaqueTripleTerm rdf:hasAnnotation annotation )
subject               ::= noLiteralAtomicTerm
predicate             ::= iri_but_rdf:reifies_or_rdf:hasAnnotation 
object                ::= atomicTerm
noLiteralAtomicTerm   ::= iri | BlankNode
atomicTerm            ::= noLiteralAtomicTerm | literal
noLiteralTerm         ::= noLiteralAtomicTerm | tripleTerm
term                  ::= noLiteralTerm | literal
reifier               ::= subject  
annotation            ::= object  
tripleTerm            ::= transparentTripleTerm | opaqueTripleTerm
transparentTripleTerm ::= triple
opaqueTripleTerm      ::= triple

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) = TRUE   and
  • all the RDF 1.1 metamodelling crap   and
  • all the RDF 1.1 axiomatic triples crap   ⏩ and
  • ∀ x1,x2,y . (x1,y) ∈ IEXT(IS(rdf:hasAnnotation)) ⋀ (x2,y) ∈ IEXT(IS(rdf:hasAnnotation)) → x1=x2   and
  • 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').

Notes:

  • RDF 1.1 RDF semantics is the above without the parts within ⏩...⏪ marks.
  • Observe that RDF 1.1 is always well formed.
Clone this wiki locally