Author: Jonathan Borden jonathan@openhealth.org This version: May 27, 2001
Previous version: May 24, 2001
This document defines an Abstract Syntax or Infoset for RDF [1]. RDF Statements are commonly refered to as triples of {predicate,subject,object}. In practice RDF Datastores may supplement the triple with associated information. This abstract syntax defines the supplemented information items.
A Context is a set of Statements
A Statement is represented by the 7-tuple: <predicate,subject,object, contextURI,id, index, asserted>
An atom represents either a URI Reference, according to RFC 2396, or a quantified variable matching the EBNF:
atom := (quantvar | URIreference)
quantvar := ('?' Name) Name as defined in XML 1.0
A predicate is an atom
.
A subject is an atom.
An object is an atom. Note that literal strings may be represented by the data:
URI scheme.
A context is represented by a URI, directly analogous to the base URI information item in an XML Infoset.
An RDF Statement may have an optional id
by which the statement is refered to (combined with the contextURI).
The index
gives the index of a statement within a context in document order.
The index allows preservation of statement order as if each RDF <Description> defines a container, and folds the RDF concept of
container directly into the RDF Abstract Syntax.
A boolean flag indicating whether the statement is asserted
within the context.
A statement may be referred to by index
using a syntax consistent with the ChildSeq
syntax of XPointer []. For example,
the 2nd statement in a context is referred to as:
/2
This syntax allows reference to a particular statement in a context as if the context were an <rdf:Seq> container. One can refer to a range of statements by inserting a hyphen between the start and ending index of the range, e.g.: /2-6.
The statement:
(not (says jon (color sky blue))
is represented by the Statements:
These tuples may be expanded using URI references (assuming a namespace name http://example.org/logic# as:
The Squish [2] query: (dc:creator, foo, ?x)(foaf:mbox, ?x, mailto:jonathan@openhealth.org)
is represented as: