DTD for Space-Time Information
Arnold Rots
arots at head-cfa.harvard.edu
Thu Apr 4 06:10:20 PST 2002
I finished the first draft of a DTD for specification of space-time
coordinates; it is attached.
Note the following:
- It contains a proposed expansion of COOSYS.
- It includes provisions to specify the coordinate information for
queries, resource profiles, catalog data and observational data.
- What is still missing is tieing in the UCDs.
- And it still needs a mechanism to tie coordinate system definitions
across the various elements.
It is therefore not complete, but I wanted to get this out before
VOTable 1.0 is completely cast in stone.
Cheers,
- Arnold
--------------------------------------------------------------------------
Arnold H. Rots Chandra X-ray Science Center
Smithsonian Astrophysical Observatory tel: +1 617 496 7701
60 Garden Street, MS 81 fax: +1 617 495 7356
Cambridge, MA 02138 arots at head-cfa.harvard.edu
USA http://hea-www.harvard.edu/~arots/
--------------------------------------------------------------------------
Space-time Coordinate Definitions for the VOTable
=================================================
Arnold Rots
CfA/CXC
This is a draft of hierarchical structures (classes) to be used to
specifying space-time related metadata. The problem with the UCD is
that it is purely phenomenological, while what we need for metadata is
something that ensures completeness and self-consistency. In order to
achieve that I am proposing to build metadata objects with required
structures, where the individual attribute keywords are taken from en
(expanded) UCD list.
What remains to be done is to tie attributes to the UCD keywords.
For UCDs, see:
http://cdsweb.u-strasbg.fr/doc/UCD.htx
What follows is an attempt to specify the space-time metadata in
XML which will hopefully make its way into the VOTable.
(I have not yet tried to understand schemata).
The classes have been defined almost exclusively through ELEMENT
definitions; that is not necessarily the way it needs to be
implemented but it provides the required logic and is consistent with
the current state of VOTable.
The basic elements are:
SEARCH_LOCATION Contains a query
COOSYS Coordinate definition for catalog data
OBSERVATORY_LOCATION \ Together describe returned
OBSERVATION_LOCATION / observational data
RESOURCE_PROFILE Contains the resource profile
What needs to be enforced is that the values of all attributes of the
top level objects are inherited by all child objects. Specifically,
child objects of the same parent are required to use the same epoch,
equinox, time scale, time format, reference positions, etc.
Other consistencies that need to be enforced are coordinate types,
including when given in a referenced FITS (ephemeris) file.
The default units are meter, degree, and second, though day may be
used for JD and MJD formats.
Of special note is the FITS REGION file that is allowed to define a
coordinate area. The specification is available at:
http://hea-www.harvard.edu/~arots/asc/fits/region.ps
Objects
=======
<!-- The five main elements -->
<!-- This contains a complete resource profile -->
<!ELEMENT RESOURCE_PROFILE (COORD_COVER, COORD_RESL?, COORD_FOV?)>
<!-- Catalog coordinate definition -->
<!-- Use element COOSYS below -->
<!-- The next two describe observational data to be returned -->
<!ELEMENT OBSERVATORY_LOCATION (COORD_LOCATION)>
<!ELEMENT OBSERVATION_LOCATION (COORD_LOCATION, COORD_RESL, COORD_FOV)>
<!-- The coordinate information in a query -->
<!ELEMENT SEARCH_LOCATION (COORD_LOCATION, COORD_RESL, COORD_FOV, COORD_SEARCH)>
<!-- The building blocks for the main elements -->
<!-- The coordinate definition element -->
<!ELEMENT COOSYS>
<!ATTLIST COOSYS
ID ID #REQUIRED
coord_ref_pos (GEOCENTER | BARYCENTER | HELIOCENTER | TELESCOPE) "GEOCENTER"
coord_ref_frame (ICRS | FK5 | FK4) "ICRS"
coord_epoch CDATA "2000.0"
coord_equinox (B1900.0 | B1950.0 | J2000.0) "J2000.0"
time_scale (TT | TDT | ET | TDB | TCG | TCB | TAI | IAT | UTC | LST) "TT"
time_format (JD | MJD | ISO8601 | CAL | S | D) "ISO8601"
time_ref_val CDATA #IMPLIED
time_ref_loc (GEOCENTER | BARYCENTER | HELIOCENTER | TELESCOPE) "GEOCENTER"
coord_type (2SPHER | 3SPHER | CART | 2SPHERVEL | 3SPHERVEL | CARTVEL) "2SPHER"
>
<!-- The basic coordinate element -->
<!ELEMENT COORD_LOCATION (COOSYS, COORDS)>
<!-- This holds the coordinate values for COORD_LOCATION -->
<!ELEMENT COORDS (COORDFILE | C2SPHER | C3SPHER | CCART | C2SPHERVEL | C3SPHERVEL | CCARTVEL)>
<!-- The next 7 are the seven different coordinate types that are allowed -->
<!-- An ephemeris file -->
<!ELEMENT COORDFILE (FITS)>
<!ATTLIST COORDFILE
coord_type (2SPHER | 3SPHER | CART | 2SPHERVEL | 3SPHERVEL | CARTVEL) "CARTVEL"
>
<!-- 2-D spherical coordinates, such as RA and Dec -->
<!ELEMENT C2SPHER>
<!ATTLIST C2SPHER
coord_type CDATA "2SPHER" #FIXED
time CDATA #REQUIRED
longitude CDATA #REQUIRED
latitude CDATA #REQUIRED
>
<!-- Two angles and a radius -->
<!ELEMENT C3SPHER>
<!ATTLIST C3SPHER
coord_type CDATA "3SPHER" #FIXED
time CDATA #REQUIRED
longitude CDATA #REQUIRED
latitude CDATA #REQUIRED
radius CDATA #REQUIRED
radunit "m"
>
<!-- 3-D cartesian -->
<!ELEMENT CCART>
<!ATTLIST CCART
coord_type CDATA "CART" #FIXED
time CDATA #REQUIRED
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED
unit "m"
>
<!-- 2-D spherical with velocities (proper motions) -->
<!ELEMENT C2SPHERVEL>
<!ATTLIST C2SPHERVEL
coord_type CDATA "2SPHERVEL" #FIXED
time CDATA #REQUIRED
longitude CDATA #REQUIRED
latitude CDATA #REQUIRED
longvel CDATA #REQUIRED
latvel CDATA #REQUIRED
velunit "deg/s"
>
<!-- 3-D spherical with velocities -->
<!ELEMENT C3SPHERVEL>
<!ATTLIST C3SPHERVEL
coord_type CDATA "3SPHERVEL" #FIXED
time CDATA #REQUIRED
longitude CDATA #REQUIRED
latitude CDATA #REQUIRED
radius CDATA #REQUIRED
radunit "m"
longvel CDATA #REQUIRED
latvel CDATA #REQUIRED
velunit "deg/s"
radvel CDATA #REQUIRED
radvelunit "m/s"
>
<!-- 3-D Cartesian with velocities, as in orbit ephemeris files -->
<!ELEMENT CCARTVEL>
<!ATTLIST CCARTVEL
coord_type CDATA "CARTVEL" #FIXED
time CDATA #REQUIRED
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED
unit "m"
vx CDATA #REQUIRED
vy CDATA #REQUIRED
vz CDATA #REQUIRED
velunit "m/s"
>
<!-- Express a size around a point specified by a COORD_LOCATION object -->
<!ELEMENT COORD_SIZE (CS2IND | CS3IND | CS2TILT)>
<!-- To begin with, there are three types, depending on dimensionality and orientation-->
<!-- 2-D with independent axes -->
<!ELEMENT CS2IND>
<!ATTLIST CS2IND
coord_size_type "2INDEPT" #FIXED
deltatime CDATA #REQUIRED
deltalong CDATA #REQUIRED
deltalat CDATA #REQUIRED
timeunit "s"
angunit "deg"
>
<!-- 3-D with independent axes -->
<!ELEMENT CS3IND>
<!ATTLIST CS3IND
coord_size_type "3INDEPT" #FIXED
deltatime CDATA #REQUIRED
deltalong CDATA #REQUIRED
deltalat CDATA #REQUIRED
deltarad CDATA #REQUIRED
timeunit "s"
angunit "deg"
radunit "m"
>
<!-- 2-D, but tilted -->
<!ELEMENT CS2TILT>
<!ATTLIST CS2TILT
coord_size_type "2TILT" #FIXED
deltatime CDATA #REQUIRED
bmajor CDATA #REQUIRED
bminor CDATA #REQUIRED
posang CDATA #REQUIRED
timeunit "s"
bmunit "deg"
>
<!-- These are the three applications of COORD_SIZE -->
<!-- Resolution -->
<!ELEMENT COORD_RESL (COORD_SIZE)>
<!-- Source size parameters -->
<!ELEMENT SOURCE_SIZE (COORD_SIZE)>
<!-- Errors on coordinates -->
<!ELEMENT COORD_ERROR (COORD_SIZE)>
<!-- Define an area in space-time -->
<!-- This is not the same as defining a shape around a position, as in COORD_SIZE-->
<!ELEMENT COORD_AREA (TIMERANGE, (REGIONFILE | CIRCSPHER | COORDRANGE+))>
<!-- The time element of COORD_AREA; BIG_BANG and PRESENT are special values -->
<!ELEMENT TIME_RANGE>
<!ATTLIST TIME_RANGE
starttime "BIG_BANG"
stoptime "PRESENT"
startinclude (Y | N) "Y"
stopinclude (Y | N) "Y"
>
<!-- The spatial part may be specified by a REGION file -->
<!ELEMENT REGIONFILE (FITS)>
<!-- ... or it may be a circle or sphere -->
<!ELEMENT CIRCSPHER>
<!ATTLIST CIRCSPHER
radius CDATA #REQUIRED
>
<!-- ... or a set of coordinate ranges, one for each axis -->
<!ELEMENT COORDRANGE>
<!ATTLIST COORDRANGE
coordindex (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9) "1" #REQUIRED
lolimit "-1.0E38"
hilimit "+1.0E38"
loinclude (Y | N) "Y"
hiinclude (Y | N) "Y"
>
<!-- These are the three applications of COORD_AREA -->
<!-- A field-of-view -->
<!ELEMENT COORD_FOV (COORD_AREA)>
<!-- An area in which to search -->
<!ELEMENT COORD_SEARCH (COORD_AREA)>
<!-- The coverage of a resource -->
<!ELEMENT COORD_COVER (COOSYS, COORD_AREA)>
More information about the votable
mailing list