abstract syntax for R2RML mapping

I hacked up a "grammar" for an R2RML mapping (scare quotes 'cause it's
an abstract syntax -- there are no lexical tokens to e.g. tell if the
first Name is a TableOwner or a LogicalTable). 

http://www.w3.org/2005/01/yacker/uploads/R2RML_Mapping?lang=perl&markup=html#prod-R2RML_Mapping-R2RML_Mapping

Anyone can hack on this. Note that there's no history, so if you're
going to do something radical, it's polite to either save under a new
name or copy the old bnf someplace safe like an email.

I tried to be as faitful to the spec text as possible, which should hilight some possible questions, e.g.

[2] TriplesMap   ::= (TableOwner)? LogicalTable SubjectMap (PredicateObjectMap)* (RefPredicateObjectMap)*
[4] LogicalTable ::= TableName
                   | SqlQuery

Shouldn't the TableOwner be optional only when the LogicalTable is a
TableName, i.e.

[2] TriplesMap   ::= LogicalTable SubjectMap (PredicateObjectMap)* (RefPredicateObjectMap)*
[4] LogicalTable ::= TableOwner? TableName
                   | SqlQuery
?

Anyways, I think working out an abstract syntax will help many people
towards understand R2RML.
-- 
-ericP

Received on Tuesday, 14 June 2011 15:11:23 UTC