Latest ADQL doc and proposal for evolutioin
Yuji SHIRASAKI
yuji.shirasaki at nao.ac.jp
Fri Feb 8 07:40:07 PST 2008
Dear VOQL-TEG,
I have read the ADQL BNF.
I have no objection to the current ADQL syntax.
Best regards,
---
Yuji Shirasaki, National Astrnomical Observatory of Japan
From: Pedro Osuna <Pedro.Osuna at sciops.esa.int>
Subject: Fwd: Latest ADQL doc and proposal for evolutioin
Date: Mon, 4 Feb 2008 10:24:36 +0100
> Dear all,
>
> I am not sure whether the absolute absence of any comment at all on
> the work done -following my mail from 25 Jan- is due to a possible
> problem on the voql-teg list or simply just another issue.
>
> In case there has been a problem, I am copying several of us so I can
> be sure this is arriving some people. I'd appreciate that you
> acknowledge receipt of this mail.
>
> I will forward this mail to the whole VOQL community this week. Please
> make any comments you might have before Friday.
>
> Thanks.
> Cheers,
> P.
>
>
> Begin forwarded message:
>
> > From: Pedro Osuna <Pedro.Osuna at sciops.esa.int>
> > Date: 25 de enero de 2008 16:23:47 GMT+01:00
> > To: VOQL-TEG <voql-teg at ivoa.net>
> > Cc: Inaki Ortiz <Inaki.Ortiz at sciops.esa.int>
> > Subject: Latest ADQL doc and proposal for evolutioin
> >
> > Dear all,
> >
> > there has been a great deal of work behind the scenes by Pat, Inaki,
> > Jeff and Alex to try to define the Region, as we agreed some time
> > ago, and during our last Cambridge meeting.
> >
> > The process has not ben easy at all, but I believe we are in a
> > position to expose to the whole VOQL community a mature document
> > that could be proposed for PR in the coming month.
> >
> > We are still lacking the text for the Region stuff within the
> > document, which we agreed will be written by two native Enlgish
> > speakers (Pat and Jeff) with support from Alex and Inaki if needed.
> > Nevertheless, we do have a neat BNF (which is the most important
> > thing) written by Inaki and Jeff, and this is what will form the
> > basis for the ADQL.
> >
> > I would like you -voql-teg- to review the document and give your
> > comments, and whether you are happy enough so it goes to the general
> > VOQL community.
> >
> > I attach the latest document produced by Inaki and inline his
> > description of the latest changes in the document. Please let us
> > know your comments if any. I will call for a teleconf meeting once
> > you have had time enough to read the document.
> >
> > I want to thank here Inaki, Pat, Jeff and Alex for their hard work
> > ont he Region issue.
> >
> > Cheers,
> > P.
> >
> >
> > ----------------------------------------------------------------------------------------------------------------------------------------
> >
> > Please find attached the latest ADQL-BNF that I have compiled with
> > recent inputs. The main changes are as follows:
> > Region is no longer a boolean predicate but a function.
> > Region construct is now able to accommodate a subset of OpenGIS-like
> > definitions.
> > Region is now considered as a system defined function.
> > New coordinates construct to encapsulate latitude and longitude sets.
> > Point construct changed to be like other geometry types.
> > Coordsys explicitly defined to allow literals and column references.
> > Geometry types built from single coord_sys to avoid redundancy.
> > 1. Before
> > Before we had the region defined as a boolean predicate containing
> > either a contains or an intersects predicate.
> >
> > <predicate> ::=
> > <comparison_predicate> | <between_predicate> |
> > <in_predicate> | <like_predicate>
> > | <null_predicate> | <exists_predicate> | <region_predicate>
> >
> > <region_predicate> ::= <contains_predicate> | <intersects_predicate>
> >
> > <contains_predicate> ::=
> > [ NOT ]CONTAINS <left_paren> <region>
> > <comma> <coordsys>
> > <comma> <coord_lon>
> > <comma> <coord_lat> <right_paren>
> >
> > <coord_sys_keyword> ::= ICRS | GAL
> >
> > <coord_sys_value> ::= <column_reference> | <user_defined_function>
> >
> > <coord_sys> ::= <coord_sys_keyword> | <coord_sys_value>
> >
> > <intersects_predicate> ::=
> > INTERSECTS <left_paren> <region>
> > <comma> <region> <right_paren>
> >
> > <region> ::= <region_expression> | <region_value>
> >
> > <region_expression> ::= <circle> | <rectangle> | <polygon>
> >
> > <circle> ::=
> > CIRCLE <left_paren> <coord_sys>
> > <comma> <coord_lon>
> > <comma> <coord_lat>
> > <comma> <radius> <right_paren>
> > [...]
> >
> > <region_value> ::= <column_reference> | <user_defined_function>
> >
> > 2. After
> > We now reuse the 'numeric value function' container and append to it
> > a new placeholder for system defined functions. Initially this
> > container includes all the region stuff plus, e.g., an explicit
> > distance function (as per request).
> > Hence, we have no more boolean predicates to define the geometrical
> > functions, just SQL92 compatible functions that could be described
> > following the OpenGIS syntax. We also include the point construct
> > and make any region function (contains, intersects, ...) deal with a
> > more abstract concept: the Geometry, which include for the time
> > being point, circle, rectangle and polygon (and could be extended if
> > necessary to any element of the OpenGIS Geometry class hierarchy).
> > With this approach we would be now dealing with SQL-compatible
> > functions (easy to implement) rather than boolean predicates. This
> > could be done as follows:
> >
> > <numeric_value_function> ::=
> > <trigonometric_function>
> > | <math_function>
> > | <user_defined_function>
> > | <system_defined_function>
> >
> > <system_defined_function> ::= <distance_function> | <region_function>
> > !! others could fit here
> >
> > <distance_function> ::=
> > DISTANCE <left_paren> <point> <comma> <point> <right_paren>
> >
> > <region_function> ::= <contains_function> | <intersects_function>
> > !! other functions could fit here: Equals, Disjoint, Touches,
> > Crosses, Within, Overlaps, Relate
> >
> > <contains_function> ::=
> > CONTAINS <left_paren> <geometry>
> > <comma> <geometry> <right_paren>
> >
> > <intersects_function> ::=
> > INTERSECTS <left_paren> <geometry>
> > <comma> <geometry> <right_paren>
> >
> > <geometry> ::= <point> | <circle> | <rectangle> | <polygon>
> >
> > <point> ::=
> > POINT <left_paren>
> > <coord_sys> <comma> <coordinates>
> > <right_paren>
> >
> > <coordinates> ::= <coord_lon> <comma> <coord_lat>
> >
> > <coord_sys> ::= <string_value_expression>
> >
> > <coord_lat> ::= <numeric_value_expression>
> > !! generic latitude
> >
> > <coord_lon> ::= <numeric_value_expression>
> > !! generic longitude
> >
> > <circle> ::=
> > CIRCLE <left_paren>
> > <coord_sys> <comma>
> > <coordinates> <comma> <radius>
> > <right_paren>
> >
> > <radius> ::= <numeric_value_expression>
> >
> > <rectangle> ::=
> > RECTANGLE <left_paren>
> > <coord_sys> <comma>
> > <coordinates> <comma> <coordinates>
> > <right_paren>
> >
> > <polygon> ::=
> > POLYGON <left_paren>
> > <coordsys> <comma>
> > <coordinates> <comma> <coordinates> <comma> <coordinates>
> > { <comma> <coordinates> } ?
> > <right_paren>
> >
> > --
> > Iñaki Ortiz de Landaluce
> >
> > European Space Agency (ESA)
> > European Space Astronomy Centre (ESAC)
> > Science Operations Department (SCI-O)
> > Science Archives Engineering Unit (SCI-OE)
> >
> > E-mail: Inaki.Ortiz at sciops.esa.int
> > Tel: +34 91 813 13 67 Fax: +34 91 813 13 22
> >
> > European Space Astronomy Centre (ESAC)
> > 28691 Villanueva de la Cañada
> > P.O. Box 78, Madrid, SPAIN
> > * Region is no longer a boolean predicate but a function.
> > * Region construct is now able to accommodate a subset of OpenGIS-
> > like definitions.
> > * Region is now considered as a system defined function.
> > * New coordinates construct to encapsulate latitude and longitude
> > sets.
> > * Point construct changed to be like other geometry types.
> > * Coordsys explicitly defined to allow literals and column
> > references.
> > * Geometry types built from single coord_sys to avoid redundancy.
> > * UDF, REGION, GAL, ICRS taken out from ADQL reserved word list
> > * POINT added to ADQL reserved word list
> >
> > <ADQL_language_character> ::=
> > <simple_Latin_letter>
> > | <digit>
> > | <SQL_special_character>
> >
> > <ADQL_reserved_word> ::=
> > ABS
> > | ACOS
> > | ASIN
> > | ATAN
> > | ATAN2
> > | CEILING
> > | CIRCLE
> > | CONTAINS
> > | COS
> > | DEGREES
> > | EXP
> > | FLOOR
> > | INTERSECTS
> > | LOG
> > | LOG10
> > | MODE
> > | PI
> > | POINT
> > | POLYGON
> > | POWER
> > | RADIANS
> > | RECTANGLE
> > | RAND
> > | ROUND
> > | SIN
> > | SQRT
> > | SQUARE
> > | TAN
> > | TOP
> > | TRUNCATE
> >
> > <SQL_embedded_language_character> ::=
> > <left_bracket>
> > | <right_bracket>
> >
> > <SQL_reserved_word> ::=
> > ABSOLUTE | ACTION | ADD | ALL | ALLOCATE | ALTER | AND | ANY | ARE
> > | AS | ASC | ASSERTION | AT | AUTHORIZATION | AVG
> > | BEGIN | BETWEEN | BIT | BIT_LENGTH | BOTH | BY
> > | CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER
> > | CHARACTER_LENGTH
> > | CHAR_LENGTH | CHECK | CLOSE | COALESCE | COLLATE | COLLATION
> > | COLUMN | COMMIT
> > | CONNECT | CONNECTION | CONSTRAINT | CONSTRAINTS | CONTINUE
> > | CONVERT | CORRESPONDING | COUNT
> > | CREATE | CROSS | CURRENT | CURRENT_DATE | CURRENT_TIME
> > | CURRENT_TIMESTAMP
> > | CURRENT_USER | CURSOR
> > | DATE | DAY | DEALLOCATE | DECIMAL | DECLARE | DEFAULT
> > | DEFERRABLE | DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR
> > | DIAGNOSTICS
> > | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
> > | ELSE | END | END-EXEC | ESCAPE | EXCEPT | EXCEPTION | EXEC
> > | EXECUTE
> > | EXISTS | EXTERNAL | EXTRACT
> > | FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FULL
> > | GET | GLOBAL | GO | GOTO | GRANT | GROUP
> > | HAVING | HOUR
> > | IDENTITY | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER | INPUT
> > | INSENSITIVE
> > | INSERT | INT | INTEGER | INTERSECT | INTERVAL | INTO | IS
> > | ISOLATION
> > | JOIN
> > | KEY
> > | LANGUAGE | LAST | LEADING | LEFT | LEVEL | LIKE | LOCAL | LOWER
> > | MATCH | MAX | MIN | MINUTE | MODULE | MONTH
> > | NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO | NOT | NULL
> > | NULLIF | NUMERIC
> > | OCTET_LENGTH | OF | ON | ONLY | OPEN | OPTION | OR | ORDER | OUTER
> > | OUTPUT | OVERLAPS
> > | PAD | PARTIAL | POSITION | PRECISION | PREPARE | PRESERVE | PRIMARY
> > | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
> > | READ | REAL | REFERENCES | RELATIVE | RESTRICT | REVOKE | RIGHT
> > | ROLLBACK | ROWS
> > | SCHEMA | SCROLL | SECOND | SECTION | SELECT | SESSION
> > | SESSION_USER | SET
> > | SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE | SQLERROR
> > | SQLSTATE | SUBSTRING | SUM | SYSTEM_USER
> > | TABLE | TEMPORARY | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR
> > | TIMEZONE_MINUTE
> > | TO | TRAILING | TRANSACTION | TRANSLATE | TRANSLATION | TRIM | TRUE
> > | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE | USER | USING
> > | VALUE | VALUES | VARCHAR | VARYING | VIEW
> > | WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
> > | YEAR
> > | ZONE
> >
> > <SQL_special_character> ::=
> > <ampersand>
> > | <asterisk>
> > | <colon>
> > | <comma>
> > | <double_quote>
> > | <equals_operator>
> > | <greater_than_operator>
> > | <left_paren>
> > | <less_than_operator>
> > | <minus_sign>
> > | <percent>
> > | <period>
> > | <plus_sign>
> > | <question_mark>
> > | <quote>
> > | <right_paren>
> > | <semicolon>
> > | <solidus>
> > | <space>
> > | <underscore>
> > | <vertical_bar>
> >
> >
> > <ampersand> ::= &
> >
> > <approximate_numeric_literal> ::= <mantissa> E <exponent>
> >
> > <as_clause> ::= [ AS ] <column_name>
> >
> > <asterisk> ::= *
> >
> > <between_predicate> ::=
> > <value_expression> [ NOT ] BETWEEN <value_expression> AND
> > <value_expression>
> >
> > <boolean_factor> ::= [ NOT ] <boolean_primary>
> >
> > <boolean_primary> ::=
> > <predicate> | <left_paren> <search_condition> <right_paren>
> >
> > <boolean_term> ::= <boolean_factor> | <boolean_term> AND
> > <boolean_factor>
> >
> > <catalog_name> ::= <identifier>
> >
> > <character_factor> ::= <character_primary>
> >
> > <character_primary> ::= <value_expression_primary> |
> > <user_defined_function>
> >
> > <character_representation> ::= <nonquote_character> | <quote_symbol>
> >
> > <character_string_literal> ::=
> > <quote> [ <character_representation>... ] <quote>
> > [ {<separator>... <quote>
> > [ <character_representation>... ]<quote>}... ]
> >
> > <character_value_expression> ::= <concatenation> | <character_factor>
> >
> > <circle> ::=
> > CIRCLE <left_paren>
> > <coord_sys> <comma>
> > <coordinates> <comma> <radius>
> > <right_paren>
> >
> > <colon> ::= :
> >
> > <column_name> ::= <identifier>
> >
> > <column_name_list> ::= <column_name> [ { <comma> <column_name> }... ]
> >
> > <column_reference> ::= [ <qualifier> <period> ] <column_name>
> >
> > <comma> ::= ,
> >
> > <comment> ::= <comment_introducer> [ <comment_character>... ]
> > <newline>
> >
> > <comment_character> ::= <nonquote_character> | <quote>
> >
> > <comment_introducer> ::= <minus_sign><minus_sign> [<minus_sign>...]
> >
> > <comp_operator> ::=
> > <equals_operator>
> > | <not_equals_operator>
> > | <less_than_operator>
> > | <greater_than_operator>
> > | <less_than_or_equals_operator>
> > | <greater_than_or_equals_operator>
> >
> > <comparison_predicate> ::= <value_expression> <comp_operator>
> > <value_expression>
> >
> > <concatenation> ::=
> > <character_value_expression> <concatenation_operator>
> > <character_factor>
> >
> > <concatenation_operator> ::= ||
> >
> > <contains_function> ::=
> > CONTAINS <left_paren> <geometry>
> > <comma> <geometry> <right_paren>
> >
> > <coordinates> ::= <coord_lon> <comma> <coord_lat>
> >
> > <coord_lat> ::= <numeric_value_expression>
> > !! generic latitude
> >
> > <coord_lon> ::= <numeric_value_expression>
> > !! generic longitude
> >
> > <coord_sys> ::= <string_value_expression>
> >
> > <correlation_name> ::= <identifier>
> >
> > <correlation_specification> ::= [ AS ] <correlation_name>
> >
> > <default_function_prefix> ::=
> > !! The prefix is set by default to "udf_."
> > !! It should be possible to change the default prefix to accommodate
> > local preferences
> >
> > <delimited_identifier> ::= <double_quote>
> > <delimited_identifier_body> <double_quote>
> >
> > <delimited_identifier_body> ::= <delimited_identifier_part>?
> >
> > <delimited_identifier_part> ::= <nondoublequote_character> |
> > <doublequote_symbol>
> >
> > <delimiter_token> ::=
> > <character_string_literal>
> > | <delimited_identifier>
> > | <ADQL_special_character>
> > | <SQL_special_character>
> > | <not_equals_operator>
> > | <greater_than_or_equals_operator>
> > | <less_than_or_equals_operator>
> > | <concatenation_operator>
> > | <double_period>
> > | <left_bracket>
> > | <right_bracket>
> >
> > <derived_column> ::= <value_expression> [ <as_clause> ]
> >
> > <derived_table> ::= <table_subquery>
> >
> > <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
> >
> > <distance_function> ::
> > DISTANCE <left_paren> <point> <comma> <point> <right_paren>
> >
> > <double_period> ::= ..
> >
> > <double_quote> ::= "
> >
> > <double_quote_symbol> ::= <double_quote><double_quote>
> >
> > <equals_operator> ::= =
> >
> > <exact_numeric_literal> ::=
> > <unsigned_integer> [ <period> [ <unsigned_integer> ] ]
> > | <period> <unsigned_integer>
> >
> > <exists_predicate> ::= EXISTS <table_subquery>
> >
> > <exponent> ::= <signed_integer>
> >
> > <factor> ::= [ <sign> ] <numeric_primary>
> >
> > <from_clause> ::= FROM <table_reference> [ { <comma>
> > <table_reference> }... ]
> >
> > <general_literal> ::= <character_string_literal>
> >
> > <general_set_function> ::=
> > <set_function_type> <left_paren> [ <set_quantifier> ]
> > <value_expression> <right_paren>
> >
> > <geometry> ::= <point> | <circle> | <rectangle> | <polygon>
> >
> > <greater_than_operator> ::= >
> >
> > <greater_than_or_equals_operator> ::= >=
> >
> > <group_by_clause> ::= GROUP BY <grouping_column_reference_list>
> >
> > <grouping_column_reference> ::= <column_reference>
> >
> > <grouping_column_reference_list> ::=
> > <grouping_column_reference> [ { <comma>
> > <grouping_column_reference> }... ]
> >
> > <having_clause> ::= HAVING <search_condition>
> >
> > <identifier> ::= <regular_identifier> | <delimited_identifier>
> >
> > <in_predicate> ::= <value_expression> [ NOT ] IN <in_predicate_value>
> >
> > <in_predicate_value> ::=
> > <table_subquery> | <left_paren> <in_value_list> <right_paren>
> >
> > <in_value_list> ::=
> > <value_expression> { <comma> <value_expression> } ...
> >
> > <intersects_function> ::=
> > INTERSECTS <left_paren> <geometry>
> > <comma> <geometry> <right_paren>
> >
> > <join_column_list> ::= <column_name_list>
> >
> > <join_condition> ::= ON <search_condition>
> >
> > <join_specification> ::= <join_condition> | <named_columns_join>
> >
> > <join_type> ::=
> > INNER
> > | <outer_join_type> [ OUTER ]
> >
> > <joined_table> ::=
> > <qualified_join>
> > | <left_paren> <joined_table> <right_paren>
> >
> > <keyword> ::= <SQL_reserved_word> | <ADQL_reserved_word>
> >
> > <left_bracket> ::= [
> >
> > <left_paren> ::= (
> >
> > <less_than_operator> ::= <
> >
> > <less_than_or_equals_operator> ::= <=
> >
> > <like_predicate> ::=
> > <match_value> [ NOT ] LIKE <pattern>
> >
> > <mantissa> ::= <exact_numeric_literal>
> >
> > <match_value> ::= <character_value_expression>
> >
> > <math_function> ::=
> > ABS <left_paren> <numeric_value_expression> <right_paren>
> > | CEILING <left_paren> <numeric_value_expression> <right_paren>
> > | DEGREES <left_paren> <numeric_value_expression> <right_paren>
> > | EXP <left_paren> <numeric_value_expression> <right_paren>
> > | FLOOR <left_paren> <numeric_value_expression> <right_paren>
> > | LOG <left_paren> <numeric_value_expression> <right_paren>
> > | PI <left_paren><right_paren>
> > | POWER <left_paren> <numeric_value_expression> <comma>
> > <unsigned_integer> <right_paren>
> > | RADIANS <left_paren> <numeric_value_expression> <right_paren>
> > | SQUARE <left_paren> <numeric_value_expression> <right_paren>
> > | SQRT <left_paren> <numeric_value_expression> <right_paren>
> > | LOG10 <left_paren> <numeric_value_expression> <right_paren>
> > | RAND <left_paren> [ <numeric_value_expression> ] <right_paren>
> > | ROUND <left_paren> <numeric_value_expression> <right_paren>
> > | TRUNCATE <left_paren> <numeric_value_expression> <right_paren>
> >
> > <minus_sign> ::= -
> >
> > <named_columns_join> ::= USING <left_paren> <join_column_list>
> > <right_paren>
> >
> > <newline> ::= !! implementation defined end of line indicator
> >
> > <nondelimiter_token> ::=
> > <regular_identifier>
> > | <keyword>
> > | <unsigned_numeric_literal>
> >
> > <nondoublequote_character> ::= !! See syntax rules
> >
> > <nonquote_character> ::= !! One ASCII character
> >
> > <not_equals_operator> ::= <not_equals_operator1> |
> > <not_equals_operator2>
> >
> > <not_equals_operator1> ::= <>
> >
> > <not_equals_operator2> ::= !=
> >
> > <null_predicate> ::= <column_reference> IS [ NOT ] NULL
> >
> > <numeric_primary> ::= <value_expression_primary> |
> > <numeric_value_function>
> >
> > <numeric_value_expression> ::=
> > <term>
> > | <numeric_value_expression> <plus_sign> <term>
> > | <numeric_value_expression> <minus_sign> <term>
> >
> > <numeric_value_function> ::=
> > <trigonometric_function>
> > | <math_function>
> > | <user_defined_function>
> > | <system_defined_function>
> >
> > <order_by_clause> ::= ORDER BY <sort_specification_list>
> >
> > <ordering_specification> ::= ASC | DESC
> >
> > <outer_join_type> ::= LEFT | RIGHT | FULL
> >
> > <pattern> ::= <character_value_expression>
> >
> > <percent> ::= %
> >
> > <period> ::= .
> >
> > <plus_sign> ::= +
> >
> > <polygon> ::=
> > POLYGON <left_paren>
> > <coordsys> <comma>
> > <coordinates> <comma> <coordinates> <comma> <coordinates>
> > { <comma> <coordinates> } ?
> > <right_paren>
> >
> > <point> ::=
> > POINT <left_paren>
> > <coord_sys> <comma> <coordinates>
> > <right_paren>
> >
> > <predicate> ::=
> > <comparison_predicate>
> > | <between_predicate>
> > | <in_predicate>
> > | <like_predicate>
> > | <null_predicate>
> > | <exists_predicate>
> >
> > <qualified_join> ::=
> > <table_reference> [ NATURAL ] [ <join_type> ] JOIN
> > <table_reference> [ <join_specification> ]
> >
> > <qualifier> ::= <table_name> | <correlation_name>
> >
> > <query_expression> ::=
> > <query_specification>
> > | <joined_table>
> >
> > <query_specification> ::=
> > SELECT [ <set_quantifier> ] [ <set_limit> ] <select_list>
> > <table_expression>
> >
> > <question_mark> ::= ?
> >
> > <quote> ::= '
> >
> > <quote_symbol> ::= <quote> <quote>
> >
> > <radius> ::= <numeric_value_expression>
> >
> > <rectangle> ::=
> > RECTANGLE <left_paren>
> > <coord_sys> <comma>
> > <coordinates> <comma> <coordinates>
> > <right_paren>
> >
> > <region_function> ::= <contains_function> | <intersects_function>
> > !! other functions could fit here: Equals, Disjoint, Touches,
> > Crosses, Within, Overlaps, Relate
> >
> > <regular_identifier> ::=
> > <simple_Latin_letter>... [ { <underscore> | <simple_Latin_letter>
> > | <digit> } ... ]
> >
> > <right_bracket> ::= ]
> >
> > <right_paren> ::= )
> >
> > <schema_name> ::= [ <catalog_name> <period> ]
> > <unqualified_schema_name>
> >
> > <search_condition> ::=
> > <boolean_term>
> > | <search_condition> OR <boolean_term>
> >
> > <select_list> ::=
> > <asterisk>
> > | <select_sublist> [ { <comma> <select_sublist> }... ]
> >
> > <select_sublist> ::= <derived_column> | <qualifier> <period>
> > <asterisk>
> >
> > <semicolon> ::= ;
> >
> > <separator> ::= { <comment> | <space> | <newline> }...
> >
> > <set_function_specification> ::=
> > COUNT <left_paren> <asterisk> <right_paren>
> > | <general_set_function>
> >
> > <set_function_type> ::= AVG | MAX | MIN | SUM | COUNT
> >
> > <set_limit> ::= TOP <unsigned_integer>
> >
> > <set_quantifier> ::= DISTINCT | ALL
> >
> > <sign> ::= <plus_sign> | <minus_sign>
> >
> > <signed_integer> ::= [ <sign> ] <unsigned_integer>
> >
> > <simple_Latin_letter> ::=
> > <simple_Latin_upper_case_letter>
> > | <simple_Latin_lower_case_letter>
> >
> > <simple_Latin_lower_case_letter> ::=
> > a | b | c | d | e | f | g | h | i | j | k | l | m | n
> > | o | p | q | r | s | t | u | v | w | x | y | z
> >
> > <simple_Latin_upper_case_letter> ::=
> > A | B | C | D | E | F | G | H | I | J | K | L | M | N
> > | O | P | Q | R | S | T | U | V | W | X | Y | Z
> >
> > <solidus> ::= /
> >
> > <sort_key> ::= <column_name> | <unsigned_integer>
> >
> > <sort_specification> ::= <sort_key> [ <ordering_specification> ]
> >
> > <sort_specification_list> ::= <sort_specification> [ { <comma>
> > <sort_specification> }... ]
> >
> > <space> ::= !! space character here
> >
> > <string_value_expression> ::= <character_value_expression>
> >
> > <subquery> ::=
> > <left_paren> <query_expression> <right_paren>
> >
> > <system_defined_function> ::= <distance_function> | <region_function>
> > !! others could fit here
> >
> > <table_expression> ::=
> > <from_clause>
> > [ <where_clause> ]
> > [ <group_by_clause> ]
> > [ <having_clause> ]
> > [ <order_by_clause> ]
> >
> > <table_name> ::= [ <schema_name> <period> ] <identifier>
> >
> > <table_reference> ::=
> > <table_name> [ <correlation_specification> ]
> > | <derived_table> <correlation specification>
> > | <joined_table>
> >
> > <table_subquery> ::= <subquery>
> >
> > <term> ::=
> > <factor>
> > | <term> <asterisk> <factor>
> > | <term> <solidus> <factor>
> >
> > <token> ::=
> > <nondelimiter_token>
> > | <delimiter_token>
> >
> > <trigonometric_function> ::=
> > ACOS <left_paren> <numeric_value_expression> <right_paren>
> > | ASIN <left_paren> <numeric_value_expression> <right_paren>
> > | ATAN <left_paren> <numeric_value_expression> <right_paren>
> > | ATAN2 <left_paren> <numeric_value_expression> <comma>
> > <numeric_value_expression> <right_paren>
> > | COS <left_paren> <numeric_value_expression> <right_paren>
> > | COT <left_paren> <numeric_value_expression> <right_paren>
> > | SIN <left_paren> <numeric_value_expression> <right_paren>
> > | TAN <left_paren> <numeric_value_expression> <right_paren>
> >
> > <underscore> ::= _
> >
> > <unqualified_schema_name> ::= <identifier>
> >
> > <unsigned_integer> ::= <digit> ...
> >
> > <unsigned_literal> ::= <unsigned_numeric_literal> | <general_literal>
> >
> > <unsigned_numeric literal> ::=
> > <exact_numeric_literal>
> > | <approximate_numeric_literal>
> >
> > <unsigned_value_specification> ::= <unsigned_literal>
> >
> > <user_defined_function> ::=
> > <user_defined_function_name>
> > <left_paren>
> > [ <user_defined_function_param> [ { <comma>
> > <user_defined_function_param> } ?] ]
> > <right_paren>
> >
> > <user_defined_function_name> ::=
> > [ <default_function_prefix> ] <regular_identifier>
> >
> > <user_defined_function_param> ::=
> > <numeric_value_expression> | <character_value_expression>
> >
> > <value_expression> ::=
> > <numeric_value_expression>
> > | <string_value_expression>
> >
> > <value_expression_primary> ::=
> > <unsigned_value_specification>
> > | <column_reference>
> > | <set_function_specification>
> > | <left_paren> <value_expression> <right_paren>
> >
> > <vertical_bar> ::= |
> >
> > <where_clause> ::= WHERE <search_condition>
> >
> > _________________________________________
> > Pedro Osuna Alcalaya
> >
> > European Space Agency (ESA)
> > European Space Astronomy Centre (ESAC)
> > Science Operations Department (SCI-O)
> > Science Archives and Computer Support Engineering Unit (SCI-OE)
> > e-mail: Pedro.Osuna at esa.int
> > Tel + 34 91 813 13 14 Fax: +34 91 813 11 72
> > _________________________________________
> > European Space Astronomy Centre (ESAC)
> > P.O. Box 78
> > E-28691 Villanueva de la Cañada
> > MADRID - SPAIN
> >
> >
> >
> >
>
>
>
> _________________________________________
> Pedro Osuna Alcalaya
>
> European Space Agency (ESA)
> European Space Astronomy Centre (ESAC)
> Science Operations Department (SCI-O)
> Science Archives and Computer Support Engineering Unit (SCI-OE)
> e-mail: Pedro.Osuna at esa.int
> Tel + 34 91 813 13 14 Fax: +34 91 813 11 72
> _________________________________________
> European Space Astronomy Centre (ESAC)
> P.O. Box 78
> E-28691 Villanueva de la Cañada
> MADRID - SPAIN
>
>
>
>
>
> ================================================================================================
> This message and any attachments are intended for the use of the addressee or addressees only. The
> unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its content
> is prohibited. If you received this message in error, please delete it from your system and notify
> the sender. E-mails can be altered and their integrity cannot be guaranteed. ESA shall not be liable
> for any e-mail if modified.
> =================================================================================================
>
More information about the voql-teg
mailing list