- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Fri, 24 Sep 2004 12:28:52 +0100
- To: "RDF Data Access Working Group" <public-rdf-dawg@w3.org>, "Seaborne, Andy" <andy.seaborne@hp.com>
Here's a text version of the original grammar AndyS had in
http://lists.w3.org/Archives/Public/public-rdf-dawg/2004JulSep/0511.html
(pretty much lynx -nolinks -dump dawg.html with some line wrapping, plus
grepping out the terminals)
You can diff this and what I had in
http://lists.w3.org/Archives/Public/public-rdf-dawg/2004JulSep/0524.html
to see what I changed
Dave
BNF for DAWG QL
NON-TERMINALS
CompilationUnit ::= Query <EOF>
CommaOpt ::= ( <COMMA> )?
Query ::= ( PrefixDecl )* ( SelectClause |
ConstructClause |
DescribeClause |
AskClause ) ( PrefixDecl )* ( FromClause )? ( <WHERE> GraphPattern )?
SelectClause ::= ( <SELECT> VarAsNode ( CommaOpt VarAsNode )* |
<SELECT> <STAR> )
DescribeClause ::= ( <DESCRIBE> VarOrURI ( CommaOpt VarOrURI )* |
<DESCRIBE> <STAR> )
ConstructClause ::= ( <CONSTRUCT> ConstructPattern |
<CONSTRUCT> <STAR> )
ConstructPattern ::= TriplePatternList
AskClause ::= <ASK>
FromClause ::= <FROM> FromSelector ( CommaOpt FromSelector )*
FromSelector ::= URL
GraphPattern ::= PatternGroup
SourceGraphPattern ::= ( <SOURCE> <STAR> PatternGroup1 |
<SOURCE> VarOrURI PatternGroup1 )
OptionalGraphPattern ::= ( <OPTIONAL> PatternGroup1 |
<LBRACKET> PatternGroup <RBRACKET> )
PatternGroup ::= PatternElement ( PatternElement )*
PatternElement ::= ( TriplePatternList |
ExplicitGroup |
PatternElementForms )
PatternGroup1 ::= PatternElement1
PatternElement1 ::= ( SingleTriplePatternOrGroup |
PatternElementForms )
PatternElementForms ::= ( SourceGraphPattern |
OptionalGraphPattern |
<AND> Expression )
SingleTriplePatternOrGroup ::= ( TriplePattern |
ExplicitGroup )
ExplicitGroup ::= <LPAREN> PatternGroup <RPAREN>
TriplePatternList ::= TriplePattern ( TriplePattern )*
TriplePattern ::= <LPAREN> VarOrURI VarOrURI VarOrLiteral <RPAREN>
VarOrURI ::= ( VarAsNode |
URI )
VarOrLiteral ::= ( VarAsNode |
Literal )
VarAsNode ::= <VAR>
VarAsExpr ::= <VAR>
PrefixDecl ::= ( <PREFIX> <NCNAME> <COLON> QuotedURI |
<PREFIX> <COLON> QuotedURI )
Expression ::= ConditionalOrExpression
ConditionalOrExpression ::= ConditionalXorExpression ( <SC_OR> ConditionalXorExpression )*
ConditionalXorExpression ::= ConditionalAndExpression
ConditionalAndExpression ::= ValueLogical ( <SC_AND> ValueLogical )*
ValueLogical ::= StringEqualityExpression
StringEqualityExpression ::= NumericalLogical ( <STR_EQ> NumericalLogical |
<STR_NE> NumericalLogical |
<STR_MATCH> PatternLiteral |
<STR_NMATCH> PatternLiteral )*
NumericalLogical ::= EqualityExpression
EqualityExpression ::= RelationalExpression ( <EQ> RelationalExpression |
<NEQ> RelationalExpression )?
RelationalExpression ::= NumericExpression ( <LT> NumericExpression |
<GT> NumericExpression |
<LE> NumericExpression |
<GE> NumericExpression )?
NumericExpression ::= ShiftExpression
ShiftExpression ::= AdditiveExpression
AdditiveExpression ::= MultiplicativeExpression ( <PLUS> MultiplicativeExpression |
<MINUS> MultiplicativeExpression )*
MultiplicativeExpression ::= UnaryExpression ( <STAR> UnaryExpression |
<SLASH> UnaryExpression |
<REM> UnaryExpression )*
UnaryExpression ::= ( <PLUS> UnaryExpressionNotPlusMinus |
<MINUS> UnaryExpressionNotPlusMinus |
UnaryExpressionNotPlusMinus )
UnaryExpressionNotPlusMinus ::= ( <TILDE> |
<BANG> ) UnaryExpression |
PrimaryExpression
PrimaryExpression ::= ( VarAsExpr |
Literal |
FunctionCall |
<LPAREN> Expression <RPAREN> )
FunctionCall ::= <AMP> <QNAME> <LPAREN> ArgList <RPAREN>
ArgList ::= ( VarOrLiteral ( <COMMA> VarOrLiteral )* )?
Literal ::= URI |
NumericLiteral |
TextLiteral
NumericLiteral ::= <INTEGER_LITERAL> |
<FLOATING_POINT_LITERAL>
TextLiteral ::= ( <STRING_LITERAL1> |
<STRING_LITERAL2> ) ( <LANG> )? ( <DATATYPE> URI )?
PatternLiteral ::=
URL ::= URI
URI ::= QuotedURI |
QName
QName ::= <QNAME>
QuotedURI ::= <URI>
Terminals
<AMP>
<AND>
<ASK>
<BANG>
<COLON>
<COMMA>
<CONSTRUCT>
<DATATYPE>
<DESCRIBE>
<EOF>
<EQ>
<FLOATING_POINT_LITERAL>
<FROM>
<GE>
<GT>
<INTEGER_LITERAL>
<LANG>
<LBRACKET>
<LE>
<LPAREN>
<LT>
<MINUS>
<NCNAME>
<NEQ>
<OPTIONAL>
<PLUS>
<PREFIX>
<QNAME>
<RBRACKET>
<REM>
<RPAREN>
<SC_AND>
<SC_OR>
<SELECT>
<SLASH>
<SOURCE>
<STAR>
<STRING_LITERAL1>
<STRING_LITERAL2>
<STR_EQ>
<STR_MATCH>
<STR_NE>
<STR_NMATCH>
<TILDE>
<URI>
<VAR>
<WHERE>
Received on Friday, 24 September 2004 11:31:22 UTC