Backus-Naur Form (BNF) は、 プログラミング言語やコマンド・セットの構文を指定するために使用される、 最も一般的な表記の 1 つです。 ここには、Enterprise JavaBeans (EJB) 照会言語の構文をリストしてあります。
EJB QL ::= [select_clause] from_clause [where_clause] [order_by_clause] DYNAMIC EJB QL := query_expression [order_by_clause] query_expression := query_term [UNION [ALL] query_term]* query_term := {select_clause_dynamic from_clause [where_clause] [group_by_clause] [having_clause] } | (query_expression) } [order_by_clause] from_clause::=FROM identification_variable_declaration [, {identification_variable_declaration | collection_member_declaration } ]* identification_variable_declaration::=collection_member_declaration | range_variable_declaration [join]* join := [ { LEFT [OUTER] | INNER }] JOIN {collection_valued_path_expression | single_valued_path_expression} [AS] identifier collection_member_declaration::= IN ( collection_valued_path_expression ) [AS] identifier range_variable_declaration::=abstract_schema_name [AS] identifier single_valued_path_expression ::= {single_valued_navigation | identification_variable}. ( cmp_field | method | cmp_field.value_object_attribute | cmp_field.value_object_method ) | single_valued_navigation single_valued_navigation::= identification_variable.[ single_valued_cmr_field. ]* single_valued_cmr_field collection_valued_path_expression ::= identification_variable.[ single_valued_cmr_field. ]* collection_valued_cmr_field select_clause::= SELECT { ALL | DISTINCT } {single_valued_path_expression | identification_variable | OBJECT ( identification_variable) | aggregate_functions } select_clause_dynamic ::= SELECT { ALL | DISTINCT } [ selection , ]* selection selection ::= { expression | subselect } [[AS] id ] order_by_clause::= ORDER BY [ {single_valued_path_expression | integer} [ASC|DESC],]* {single_valued_path_expression | integer}[ASC|DESC] where_clause::= WHERE conditional_expression conditional_expression ::= conditional_term | conditional_expression OR conditional_termconditional_term ::= conditional_factor | conditional_term AND conditional_factorconditional_factor ::= [NOT] conditional_primaryconditional_primary::=simple_cond_expression | (conditional_expression) simple_cond_expression ::= comparison_expression | between_expression | like_expression | in_expression | null_comparison_expression | empty_collection_comparison_expression | quantified_expression | exists_expression | is_of_type_expression | collection_member_expression between_expression ::= expression [NOT] BETWEEN expression AND expression in_expression ::= single_valued_path_expression [NOT] IN { (subselect) | ( [ atom ,]* atom ) } atom = { string-literal | numeric-constant | input-parameter } like_expression ::= expression [NOT] LIKE {string_literal | input_parameter} [ESCAPE {string_literal | input_parameter}] null_comparison_expression ::= single_valued_path_expression IS [ NOT ] NULL empty_collection_comparison_expression ::= collection_valued_path_expression IS [NOT] EMPTY collection_member_expression ::= { single_valued_path_expression | input_paramter } [ NOT ] MEMBER [ OF ] collection_valued_path_expression quantified_expression ::= expression comparison_operator {SOME | ANY | ALL} (subselect) exists_expression ::= EXISTS {collection_valued_path_expression | (subselect)} subselect ::= SELECT [{ ALL | DISTINCT }] expression from_clause [where_clause] [group_by_clause] [having_clause] group_by_clause::= GROUP BY [single_valued_path_expression,]* single_valued_path_expression having_clause ::= HAVING conditional_expression is_of_type_expression ::= identifier IS OF TYPE ([[ONLY] abstract_schema_name,]* [ONLY] abstract_schema_name) comparison_expression ::= expression comparison_operator { expression | ( subquery ) } comparison_operator ::= = | > | >= | < | <= | <> method ::= method_name( [[expression , ]* expression ] ) expression ::= term | expression {+|-} term term ::= factor | term {*|/} factor factor ::= {+|-} primary primary ::= single_valued_path_expression | literal | ( expression ) | input_parameter | functions | aggregate_functions aggregate_functions := AVG([ALL|DISTINCT] expression) | COUNT({[ALL|DISTINCT] expression | * | identification_variable }) | MAX([ALL|DISTINCT] expression) | MIN([ALL|DISTINCT] expression) | SUM([ALL|DISTINCT] expression) | functions ::= ABS(expression) | BIGINT(expression) | CHAR({expression [,{ISO|USA|EUR|JIS}] ) | CONCAT (expression , expression ) | DATE(expression) | DAY({expression ) | DAYS( expression) | DECIMAL( expression [,integer[,integer]]) DIGITS( expression) | DOUBLE( expression ) | FLOAT( expression) | HOUR ( expression ) | INTEGER( expression ) | LCASE ( expression) | LENGTH(expression) | LOCATE( expression, expression [, expression] ) | MICROSECOND( expression ) | MINUTE ( expression ) | MOD (expression, expression) | MONTH( expression ) | REAL( expression) | SECOND( expression ) | SMALLINT( expression ) | SQRT ( expression) | SUBSTRING( expression, expression[, expression]) | TIME( expression ) | TIMESTAMP( expression ) | UCASE ( expression) | YEAR( expression ) xrel := XREL identification_variable . { single_valued_cmr_field | collection_valued_cmr_field } [ , identification_variable . { single_valued_cmr_field | collection_valued_cmr_field } ]*