Abstract syntax: an attempt

All,

This is a repeat, with some small corrections and adjustments, of some 
content from my earlier message to Frank Manola (about reification test 
questions).  This is also intended as a follow-on contribution to Brian's 
draft partitioning of the problem space.

What I am trying to do here is present an abstract syntax that is not tied 
to any surface syntax, and which I think could be a basis for hanging some 
formal semantics onto.

As presented, this syntax aims to capture RDF facts and reifications, and 
nothing else:  this is what I would regard as the RDF "core" syntax.  I 
would anticipate RDF "extensions" being presented as alternative 
productions for 'S'.

NOTE:  "reification" is deliberately called out as a distinct syntax 
production, so that there is a place to hang the semantics that distinguish 
it from any other collection of facts.  There is some syntactic ambiguity 
here that needs to be resolved at some level;  e.g. adjusting the abstract 
syntax so that rdf:subject, rdf:object, rdf:predicate can appear *only* in 
a production for R (and not for A).

...

Terminal symbols:

   N : Nodes      (may be represented by Qnames or URIs)
   L : Literals   (may be represented by strings, data: URIs or arbitrary 
XML elements)
   P : Properties (may be represented by Qnames or URIs)

   rdf:type       (distinguished member of Properties)
   rdf:subject    (distinguished member of Properties)
   rdf:object     (distinguished member of Properties)
   rdf:predicate  (distinguished member of Properties)

   rdf:Statement  (distinguished member of Nodes)

   [ ]            ("punctuation" literals)


Nonterminal symbols:

   G : Graphs             (distinguished symbol of this syntax)
   S : Simple expressions (currently: "triple" or "reification")
   R : Reifications       (description of a Node that denotes a statement)
   A : Assertions         (generic ground fact, expressed as triple)
   V : Values             (nodes or literals)


Productions:

::=    denotes a production in the syntax metalanguage,
|      denotes alternative productions in the syntax metalanguage,
<NULL> is a placeholder for an empty sequence of symbols


   G ::= S | G G | <NULL>

   S ::= R | A

   R ::= [ N rdf:type rdf:Statement ]
         [ N rdf:predicate P ]
         [ N rdf:subject N ]
         [ N rdf:object V ]

   A ::= [ N P V ]

   V ::= N | L

...

#g


------------------------------------------------------------
Graham Klyne                    Baltimore Technologies
Strategic Research              Content Security Group
<Graham.Klyne@Baltimore.com>    <http://www.mimesweeper.com>
                                 <http://www.baltimore.com>
------------------------------------------------------------

Received on Saturday, 16 June 2001 06:17:39 UTC