"Name" = 'Archetype Query Lanaguage (AQL)' "Version" = '0.4' "Date" = '14 September 2006' "Author" = 'Chunlan Ma & Heath Frankel' "About" = 'Ocean Informatics' ! ============================================================================= ! Comments ! ============================================================================= Comment Start = '/*' Comment End = '*/' Comment Line = '!' ! Character Set Definitions {quote} = [''] {String Char} = {Printable} - ["] - {quote} {Hex Char} = {Digit} + [ABCDEF] {NonZeroDigit} = {Digit} - [0] !{LetterMinusA} = {Letter} - [a] !{AlphanumericMinusT} = {Alphanumeric} - [t] !{NonZeroAlphanumeric} = {Alphanumeric} - [0] {IdChar} = {Alphanumeric} + [_] ! Terminal Definitions !Identifier = {Letter}({Alphanumeric}|'_')* ! Conflicts with UID !Identifier = {Letter}{IdChar}* ! Conflicts with extended NodeId ! restricted to allow only letters after the 4th character due to conflict with extended NodeId Identifier = {Letter}{IdChar}?{IdChar}?{IdChar}?({Letter}|'_')* ! | '['{Letter}({Alphanumeric}|'_')*']' ! allows keywords as identifiers e.g. [uid] String = '"'{String Char}*'"' | ''{String Char}*'' Integer = {Digit}+ Float = {Digit}+'.'{Digit}+ Date = ''{Digit}{Digit}{Digit}{Digit}'-'{Digit}{Digit}'-'{Digit}{Digit}'' Boolean = 'true' | 'false' !NodeId = 'a''t'{Digit}{Digit}{Digit}{Digit} NodeId = 'at'({Digit}{Digit}{Digit}{Digit}('.0'*('.'{NonZeroDigit}{Digit}*)+|('.'{NonZeroDigit}{Digit}*)*)|'0''.0'*('.'{NonZeroDigit}{Digit}*)+|('.'{NonZeroDigit}{Digit}*)+) !NodeId = 'at'{Digit}{Digit}{Digit}{Digit} ! | 'at'{Digit}{Digit}{Digit}{Digit}'.0'*('.'{NonZeroDigit}{Digit}*)+ ! | 'at'{Digit}{Digit}{Digit}{Digit}('.'{NonZeroDigit}{Digit}*)+ ! | 'at0''.0'*('.'{NonZeroDigit}{Digit}*)+ ! | 'at'('.'{NonZeroDigit}{Digit}*)+ !NodeId = 'at'('.'?{Digit})+ !Parameter = '$'{letter}({Alphanumeric}|'_')* Parameter = '$'{letter}{IdChar}* ! could constrain UID further UniqueId = {digit}+('.'{digit}+)+'.'{digit}+ ! OID | {Hex Char}+('-'{Hex Char}+)+ ! UUID ! could constrain ArchetypeId further ArchetypeId = {Letter}+'-'{Letter}+'-'({Letter}|'_')+'.'({Letter}|'_'|'-')+'.v'{Digit}+('.'{Digit}+)? ComparableOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' ! Gramma Configuration "Case Sensitive" = 'False' "Start Symbol" = ! Rule Definitions ::= |