Re: Feedback from VOQL-TEG

From: Arnold Rots <arots-at-head.cfa.harvard.edu>
Date: Thu, 8 Feb 2007 17:36:35 -0500 (EST)


Pedro, thank you for the summary.
This looks like good progress!

I took a look at the ADQL draft, particularly the time part, and would like to suggest some changes, appended below.

Cheers,

Arnold H. Rots                                Chandra X-ray Science Center
Smithsonian Astrophysical Observatory                tel:  +1 617 496 7701
60 Garden Street, MS 67                              fax:  +1 617 495 7356
Cambridge, MA 02138                             arots-at-head.cfa.harvard.edu
USA                                     http://hea-www.harvard.edu/~arots/
--------------------------------------------------------------------------

The definition of <unsigned integer> should be (I think):
<unsigned integer> ::= {<digit> [,...]}

I am assuming that {<xyz> [,...]} means 1 or more times, [<xyz> [,...]] means 0 or more. Correct?

The following proposes some modifications of the time types:

  1. Disallow time zone designations; this is not a useful concept in astronomy and disallowing it achieves compatibility with FITS and STC.
  2. Allow time scale specification; if absent, UTC will be assumed.
  3. I did away with the <datetime value>, since it just duplicated <unsigned integer> and reused datetime (see below); instead, I specified restrictions on the range and display of some of the numbers (I don't know how to restrict the range properly in BNF); if you don't want to enforce leading zeroes, replace <digit2> and <digit4> simply by <unsigned integer>.
  4. Allow ISO-8601 datetime strings; again this assures compatibility with STC and FITS, as well as XML in general; it may be implemented as an option on <timestamp string> or as a separate <datetime string>.
  5. For consistency, I defined timestamp value/string and datetime value/string separately, as was done for date and time.
  6. The weakness of these date and time definitions is that the earliest time allowed is 0001-01-01T00:00:00; hence I added JD and MJD - I don't see how we can avoid this.

<date string> ::= <quote> <date value> <quote>
<date value> ::= <years value> <minus sign> <months value> <minus sign> <days value>
<years value> ::= <digit4>
<months value> ::= <digit2> // <13
<days value> ::= <digit2> // <32
<digit2> ::= <digit> <digit> // 2 digits with leading zeroes
<digit4> ::= <digit> <digit> <digit> {<digit> [,...]} // >= 4 digits with leading zeroes
<time string> ::= <quote> <time value> <quote>
<time value> ::= <hours value> <colon> <minutes value> <colon> <seconds value>
<hours value> ::= <digit2> // <25
<minutes value> ::= <digit2> // <60
<seconds value> ::= <seconds integer value> [<period> [<seconds fraction>]]
<seconds integer value> ::= <digit2> // <61
<seconds fraction> ::= <unsigned integer>
<timestamp string> ::= <quote> <timestamp value> <quote>
<timestamp value> ::= <date value> <space> <time value> [<space> <timescale suffix>]
<datetime string> ::= <quote> <datetime value> <quote>
<datetime value> ::= <date value> T <time value> [<space> <timescale suffix>]
<timescale suffix> ::= <left paren> <timescale value> <right paren>
<timescale value> ::= { TT | TDT | ET | TDB | TEB | TAI | IAT | UTC | TCG | TCB }

<jd string> ::= <quote> <jd value> <quote>
<jd value> ::= JD <space> <jday value>
<mjd string> ::= <quote> <mjd value> <quote>
<mjd value> ::= MJD <space> <jday value>
<jday value> ::= <signed integer> [<period> [<unsigned integer>]] [<space> <timescale suffix>]
Received on 2007-02-08Z23:37:18