[jpa-spec users] [jsr338-experts] BNF question: how to parse the example containing KEY, VALUE (and LIKE)

From: Christian Romberg <>
Date: Mon, 19 Mar 2012 14:54:51 +0100

Dear group,

While investigating how to parse queries like this (all page/chapter
references refer to EDR 2.1, Dec 19th, 2011):

FROM Person p, in(pc.firstnames) n
WHERE n = 'Joe'

(firstnames is a List<String>)

I came across the following example provided in the spec, which is related
in structure:

section 4.4.4, p. 153:

FROM Item i JOIN p
WHERE KEY(p) LIKE ‘%egret’

I looked at the BNF how this is parsed, and did not find any derivation for
the FROM clause:

where_clause ::= WHERE conditional_expression
conditional_expression ::= conditional_term
conditional_term ::= conditional_factor
conditional_factor ::= conditional_primary
conditional_primary ::= simple_cond_expression
simple_cond_expression ::= like_expression
like_expression ::= string_expression LIKE pattern_value

So eventually I end up with 'string_expression', from which I can not
derive a 'qualified_identification_variable'

string_expression ::=
state_field_path_expression |
string_literal |
input_parameter |
functions_returning_strings |
aggregate_expression |
case_expression |
function_invocation |

Did I miss something, or is there actually a rule missing in the grammar
for this?

Thank you!


Christian Romberg
Chief Engineer | Versant GmbH
(T) +49 40 60990-0
(F) +49 40 60990-113
GmbH is incorporated in Germany. Company registration number: HRB
54723, Amtsgericht Hamburg. Registered Office: Halenreie 42, 22359
Hamburg, Germany. Geschäftsführer: Bernhard Wöbker, Volker John
NOTICE: This e-mail message, including any attachments, is for the sole
use of the intended recipient(s) and may contain confidential or
proprietary information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the intended recipient,
immediately contact the sender by reply e-mail and destroy all copies of
the original message.