Lambda-DB: Embedded OQL Syntax


Author: Dirk Olbertz, Fraunhofer ISST; modified by Leonidas Fegaras.

	program ::= { C++code }

	C++code ::= % oql ;
	C++code ::= '{' program '}'
	C++code ::= { C++token }

	C++token ::= 'any token other than {, }, or %'

	ODL_type ::= Id
	ODL_type ::= set < ODL_type >
	ODL_type ::= bag < ODL_type >
	ODL_type ::= list < ODL_type >

	oql ::= DEFINE Id [ ( [ Id {, Id } ] ) ] AS query
	oql ::= DEFINE [ Id :: ] Id ( [ Id : ODL_type {, Id : ODL_type } ] ) : ODL_type as query
	oql ::= MODULE Id
	oql ::= destination := query
	oql ::= destination += query
	oql ::= destination -= query
	oql ::= Id -= query
	oql ::= Id : ODL_type
	oql ::= FOR EACH Id IN query DO C++code
        oql ::= PRINT query [ integer_literal ]
	oql ::= CREATE INDEX Id ON Id ( Id {, Id } )
	oql ::= DROP INDEX Id
	oql ::= PRINT STATISTICS
	oql ::= COLLECT STATISTICS
        oql ::= OPTIONS Id = integer_literal {, Id = integer_literal }
	oql ::= BEGIN
	oql ::= COMMIT
	oql ::= ABORT
	oql ::= INITIALIZE
	oql ::= CLEANUP

	destination ::= query DOT Id

	query ::= NIL
	query ::= TRUE
	query ::= FALSE
        query ::= integer_literal
        query ::= float_literal
        query ::= string_literal
        query ::= Id
        query ::= ( query )

	query ::= query + query
        query ::= query - query
        query ::= query * query
        query ::= query / query
        query ::= - query
        query ::= query MOD query
        query ::= ABS ( query )
        query ::= query || query

	query ::= query = query
        query ::= query != query
        query ::= query > query
        query ::= query < query
        query ::= query >= query
        query ::= query <= query
	query ::= query LIKE string_literal
	query ::= IF query THEN query ELSE query

	query ::= NOT query
        query ::= query AND query
        query ::= query OR query

	query ::= Id ( [ query ] )
        query ::= Id ( Id : query {, Id : query } )
        query ::= PERSISTENT Id ( Id : query {, Id : query } )
        query ::= STRUCT ( Id : query {, Id : query } )
        query ::= SET ( [ query {, query } ] )
        query ::= BAG ( [ query {, query } ] )
        query ::= LIST ( [ query {, query} ] )
        query ::= ( query , query {, query } )				
        query ::= [ LIST ] ( query .. query )
        query ::= ARRAY ( [ query {, query } ] )
        query ::= UNION ( Id : query )

	query ::= query DOT Id
	query ::= query DOT Id ( query {, query } )
        query ::= * query		
	query ::= query [ query ]
        query ::= query [ query : query ]
        query ::= FIRST ( query )
        query ::= LAST ( query )
	query ::= Id ( [ query {, query } ] )
	query ::= CASE query OF { Id : } query {, { Id : } query } [, DEFAULT : query ] END

	query ::= FOR ALL Id IN query : query
        query ::= EXISTS Id IN query : query
        query ::= EXISTS ( query )				
        query ::= UNIQUE ( query )				
        query ::= query IN query
        query ::= query comparison_operator quantifier query	
        query ::= COUNT ( query )
        query ::= COUNT ( * )
        query ::= SUM ( query )
        query ::= MIN ( query )
        query ::= MAX ( query )
        query ::= AVG ( query )

	query ::= SELECT [ DISTINCT ] projection_attributes
		    FROM variable_declaration {, variable_declaration }
		    [ WHERE query ]
                    [ GROUP BY partition_attributes ]
		    [ HAVING query ]
                    [ ORDER BY sort_criterion {, sort_criterion } ]
	projection_attributes ::= projection {, projection }
	projection_attributes ::= *
	projection ::= query
	projection ::= Id : query
	projection ::= query AS Id
	variable_declaration ::= query [ [ AS ] Id ]
	variable_declaration ::= Id IN query
	partition_attributes ::= projection {, projection }
	sort_criterion ::= query [ ordering ]
	ordering ::= ASC
	ordering ::= DESC

	query ::= query INTERSECT query
        query ::= query UNION query
        query ::= query EXCEPT query

        query ::= LISTTOSET ( query )
        query ::= ELEMENT ( query )
        query ::= DISTINCT ( query )
        query ::= FLATTEN ( query )
        query ::= ( Id ) query


Last modified: 3/22/01 by Leonidas Fegaras