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). 


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.

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