void WhereClause() : { Element el ; } { LOOKAHEAD(2) el = QueryPattern() { getQuery().setQueryElement(el) ; } | el = GroupGraphPattern() { getQuery().setQueryElement(el) ; } } . . . . Element QueryPattern() : { Element el ; } { // el = GroupGraphPattern() { return el ; } { ElementGroup elg = new ElementGroup() ; } ( el = GraphPatternNotTriples() { elg.addElement(el) ; } ()? QueryPatternTail(elg) | Triples(elg) ()? ( el = GraphPatternNotTriples() { elg.addElement(el) ; } ()? QueryPatternTail(elg) )? ) { return compressGroupOfOneGroup(elg) ; } }