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