This section presents the syntax of the RDF Query Language.
QUERY ::= SELECT DEFINE STAT ;
SELECT ::= select [one] [more] [list] [merge] GROUP COUNT SORT [distinct] VARLIST DISPLAY MAX where | ;
GROUP ::= group VAR GROUP | ;
COUNT ::= count VAR | ;
VARLIST ::= QNAME VARLIST | VAR VARLIST | ;
VAR ::= '?'[a-zA-Z0-9]*
SORT ::= sort [reverse] VAR SORT |
sort [reverse] count SORT | ;
DISPLAY ::= display table | display flat | display asquery | display INT | ;
MAX ::= PROJECTION RESULT ;
PROJECTION ::= projection INT | ;
RESULT ::= result INT | ;
DEFINE ::= PREF DEFINE | ;
PREF ::= PREFIX as NAMESPACE ;
STAT ::= STRIPLE | STAT STAT | OR | STAT and STAT |
SOURCE '(' STAT ')' | OPTION '(' STAT ')' ;
OR ::= STAT or STAT ;
STRIPLE ::= SOURCE TRIPLE | CONSTRAINT ;
TRIPLE ::= RES PROP VALUE ;
SOURCE ::= source VAR | source QNAME | ;
OPTION ::= | 'option' ;
CONSTRAINT ::= RES is NODETEST | EXP OPER EXP ;
NODETEST ::= 'BlankNode' | 'Literal' | 'URI' | 'Bound' ;
EXP ::= TERM '+' EXP | TERM '-' EXP | TERM ;
TERM ::= FACT '*' TERM | FACT '/' TERM | FACT ;
FACT ::= '(' EXP ')' | '-' FACT | VAR | LIT | QNAME ;
RES ::= VAR | QNAME ;
VALUE ::= RES | VAR LANG | LIT ;
LIT ::= NUMBER | NUMBER '^^' DATATYPE | STR LANG | STR '^^' DATATYPE ;
STR ::= '"' STRING '"' | "'" STRING "'" ;
LANG ::= | @en | @fr | ... ;
PROP ::= PQUALIFIER PROPERTY | ALL PROPERTY PATH ;
PROPERTY ::= QNAME | VAR | QNAME :: VAR ;
PQUALIFIER ::= not:: | direct:: | ;
ALL ::= all | ;
PATH ::= '{' INT '}' | '[' INT ']' ;
OPER ::= SOPER | TOPER ;
SOPER ::= '<' | '<=' | '=' | '==' | '>=' | '>' | '!=' | '!==' | '~' | '!~' | 'in' |
'!in' | '^' | '!^' ;
TOPER ::= '<:' | '<=:' | '=:' | '>=:' | '>:' | '!<:' | '!<=:' | '!=:' |
'!>=:' | '!>:' ;
QNAME : XML Namespace Qualified Name