vodmlid 
feature type 
description 

vodml:model 
This model defines objects which describe the coordinate space, coordinates within that space, and frames, which provide additional
metadata regarding the origin, orientation, etc, of the coordinate space. The model also defines a coordinate system, bundling
frames into associated groups.

AstroCoordSystem 
objectType 
The AstroCoordSystem object holds a collection of component coordinate system descriptions across all represented physical
domains.

AstroCoordSystem.coordSys 
composition 
Coordinate system description for each physical domain (Space, Time, etc). 
Axis 
objectType 
The abstract parent class for all coordinate axis types. We provide concrete classes for the most common types of data, Continuous,
Binned, and Discrete, but allow extension for other types as needed.

Axis.name 
attribute 
Freeform string, provides the name or label for the axis. 
BinnedAxis 
objectType 
Axis description for binned data, where values along the axis correspond to a bin number. 
BinnedAxis.length 
attribute 
The length, or number of bins, along the axis. 
BinnedCoordinate 
dataType 
Coordinate value type specifically intended for binned data (e.g.: pixel indexes).

BinnedCoordinate.cval 
attribute 
The binned coordinate value, expressed as an integer. e.g.: bin number, pixel index.

CartesianCoordSpace 
objectType 
Spatial domain, threedimensional cartesian coordinate space. The particulars of the axis descriptions depend on the physical
constraints of the instance. In Appendix B, we provide the description of a Standard Cartesian Coordinate Space instance
which applies to many Astronomical cases, and may be referenced in serializations.

ContinuousAxis 
objectType 
Axis description for continuous data. This object describes the domain for a particular axis of the domain space. It allows
for the specification of the legal domain range (min,max), and a flag indicating if the axis is cyclic.

ContinuousAxis.cyclic 
attribute 
Flag indicating if the axis is cyclic in nature. If not provided, it is assumed to be FALSE. 
ContinuousAxis.domainMax 
attribute 
Maximum extent of the axis domain space. If not provided, the domain space is considered to have no upper bound (+INFINITY). 
ContinuousAxis.domainMin 
attribute 
Minimum extent of the axis domain space. If not provided, the domain space is considered to have no lower bound (INFINITY). 
CoordFrame 
objectType 
This is the abstract, empty, base class for all coordinate frames. Coordinate frames provide metadata associated with the
coordinate domain space. Typically, this will be related to the origin and orientation of the axes, but might include any
metadata which pertains to the definition of the domain.

CoordSpace 
objectType 
This object defines a domain space. i.e.: it describes the set of possible coordinate values. 
CoordSpace.axis 
composition 
Describes an axis of the coordinate space. 
CoordSys 
objectType 
Abstract head of the coordinate system object tree. 
Coordinate 
dataType 
Abstract base class for the Coordinate data types which represent an absolute location within a coordinate space. Coordinates
MUST refer to a coordinate system, providing additional metadata relevant to interpreting the coordinate value, and its representation.

Coordinate.coordSys 
reference 
Provided additional metadata relevant to interpreting the coordinate value; for example, the spatial reference position, or
time scale, axis descriptions.

CustomRefLocation 
dataType 
A custom reference location in phase space (position and velocity). Position and velocity are given as coordinates with an
associated SpaceFrame. An epoch MAY be provided to further refine the location.

CustomRefLocation.epoch 
attribute 
Epoch for the reference location. 
CustomRefLocation.position 
attribute 
The spatial coordinates of the reference location. 
CustomRefLocation.velocity 
attribute 
The velocity of the reference location. 
DiscreteSetAxis 
objectType 
Axis type specifically intended for enumerated coordinates. Since the content and nature of this axis type is heavily dependent
on the use case, we define no additional metadata here. Extensions of this type may include additional metadata relevant
to the particular use cases. For example, an extension could include the allowed set of values.

Epoch 
primitiveType 
We define epoch as a primitive data type with the expected form "<type><year>" where type = "J" or "B" for Julian or Besselian
respectively, and year is expressed as a decimal year. e.g.: "B1950", "J2000.0"

GenericCoordSpace 
objectType 
Generic, onedimensional coordinate space suitable for use with most nonspatial properties. In Appendix B, we provide the
description of a Standard 1D Coordinate Space instance which may be referenced in serializations.

GenericFrame 
objectType 
The generic coordinate frame is for cases where a domainspecific frame (e.g.: Space, Time), is not required, but the relevant
reference metadata is still needed (e.g.: for Redshift or Spectral data)

GenericFrame.planetaryEphem 
attribute 
A planetary ephemeris MAY be provided, and SHOULD be provided whenever appropriate, to indicate which solar system ephemeris
was used. If needed, but not provided, it is assumed to be "DE405"

GenericFrame.refPosition 
attribute 
Spatial location in phase space (position and velocity) at which the observed value is considered to have been taken. This
will typically be given by a standard reference position, but we allow for custom locations as well.

GenericSys 
objectType 
Specialized coordinate system for generic, onedimensional domains not covered by other, more concrete objects. If a CoordSpace
is not provided, it is assumed to be represented by a Standard 1Dimensional Coordinate Space as described in Appendix B.

Handedness 
enumeration 
The handedness of a coordinate space. For most cases, this will be a fixed value in the specification of the coordinate space.
We provide this element to allow this flexibility when needed. In this document, it is used in the Pixel domain.

Handedness.left 
literal 
positive x and y axes point right and up, the positive z axis points inward 
Handedness.right 
literal 
positive x and y axes point right and up, the positive z axis points outward 
ISOTime 
dataType 
Extension of TimeInstant for time expressed as a structured datetime string.
The string representation of a datetime value should follow the FITS convention for representing dates (Hanish and Farris
et al, 2001). The FITS standard is effectively ISO8601 format without the 'Z' tag to indicate UTC: YYYYMMDD['T'hh:mm:ss[.SSS]].
The TimeScale is provided in the associated TimeFrame.

ISOTime.date 
attribute 
The ISOTime coordinate value. 
JD 
dataType 
Extension of TimeInstant for time expressed in Julian days. Note that JD does not properly specify a time stamp unless it
is related to a time scale and reference position. Precision can easily become an issue with JD, as the numbers tend to be
large.

JD.date 
attribute 
The JD coordinate value. JD dates are dimensionless, with implied units in days. 
MJD 
dataType 
Extension of TimeInstant for time expressed in Modified Julian Days. T(MJD) = T(JD)  2400000.5. 
MJD.date 
attribute 
The MJD coordinate value. MJD dates are dimensionless, with implied units in days. 
PhysicalCoordSpace 
objectType 
Abstract head of coordinate spaces related to physical properties. 
PhysicalCoordSys 
objectType 
Coordinate system description for any physical domain, such as Time, Space, Redshift, Temperature, Flux, etc. 
PhysicalCoordSys.coordSpace 
composition 
Description of the coordinate space occupied by the property. 
PhysicalCoordSys.frame 
composition 
TODO : Missing description : please, update your UML model asap.

PhysicalCoordinate 
dataType 
The most common type of coordinate value. This type is appropriate for any data whose values can be described by an ivoa:Quantity
(numeric, with unit).

PhysicalCoordinate.cval 
attribute 
This coordinate MUST contain a value expressed as an ivoa:Quantity. 
PixelCoordSystem 
objectType 
The PixelCoordSystem provides a complete description of the pixel coordinate space. It SHALL contain one PixelSpace instance
describing each pixel axis.

PixelCoordSystem.pixelSpace 
composition 
The pixel space completely defines the pixel coordinate axes. Each axis MUST be defined as a BinnedAxis type. 
PixelIndex 
dataType 
Specialized BinnedCoordinate for the pixel domain for a 1dimensional pixel index. PixelIndex MUST refer to a PixelCoordSystem.

PixelSpace 
objectType 
A PixelSpace SHALL include one or more BinnedAxis objects describing the pixel coordinate space. A handedness value MAY be
provided to specify the relative orientation of the axes.

PixelSpace.handedness 
attribute 
Specifies the handedness of the coordinate space. 
Point 
dataType 
Multidimensional spatial coordinate. The Point MUST refer to a spatial coordinate system (SpaceSys). The coordinate values
map, in order, to the axes described by the associated CoordSpace. Values for unused/undefined dimensions need not be provided.

Point.axis1 
attribute 
Coordinate value along the first axis of the associated coordinate space, expressed as an ivoa:Quantity. 
Point.axis2 
attribute 
Coordinate value along the second axis of the associated coordinate space, expressed as an ivoa:Quantity. 
Point.axis3 
attribute 
Coordinate value along the third axis of the associated coordinate space, expressed as an ivoa:Quantity. 
PolCoordinate 
dataType 
Abstract head of the polarization coordinate types. Current use cases only require support for discrete polarization states,
however, we include this head class to facilitate extension for other types (eg: polarization fraction and angle).

PolState 
dataType 
Coordinate type for discrete polarization states.

PolState.cval 
attribute 
The coordinate value MUST be from the PolStateEnum enumerated set.

PolStateEnum 
enumeration 
Polarization states: Stokes, Circular, Linear and Vector states

PolStateEnum.I 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.LL 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.LR 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.PA 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.PF 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.PP 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.Q 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.RL 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.RR 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.U 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.V 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.XX 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.XY 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.YX 
literal 
TODO : Missing description : please, update your UML model asap.

PolStateEnum.YY 
literal 
TODO : Missing description : please, update your UML model asap.

RefLocation 
dataType 
RefLocation defines the origin of the spatial coordinate space. This location is represented either by a standard reference
position (for which the absolute location in phase space is known by definition), or a specified point in another Spatial
frame. This object is used as the origin of the SpaceFrame here, but also to specify the Spatial Reference Position (refPosition)
associated with other domain Frames. For example, in the Time domain, the Spatial Reference Position indicates that the 'time'
values are the time that the 'event' occured at that location, which might be different from the detector location.

SpaceFrame 
objectType 
A SpaceFrame is specified by its reference frame (orientation), and a reference position (origin). Currently only standard
reference frames are allowed. An equinox MUST be provided for preICRS reference frames. A planetary ephemeris MAY be provided
if relevant. If needed, but not provided, it is assumed to be "DE405".

SpaceFrame.equinox 
attribute 
Reference date for the frame, required for preICRS reference frames. 
SpaceFrame.planetaryEphem 
attribute 
Ephemeris file for solar system objects SHOULD be specified whenever relevant. 
SpaceFrame.refPosition 
attribute 
The spatial location at which the coordinates are considered to have been determined. This model supports locations provided
as either a standard reference position (e.g. GEOCENTER), or a coordinate specifying a custom location (e.g. long, lat, height
).

SpaceFrame.spaceRefFrame 
attribute 
The spatial reference frame. Values MUST be selected from the controlled vocabulary at the given URL.

SpaceSys 
objectType 
Specialized coordinate system for the Spatial domain. This object SHOULD include an appropriate SpaceFrame. In Appendix
B, we define two standard spatial coordinate space instances (Spherical and Cartesian), which may be referenced in serializations.
If a CoordSpace is not provided, it is assumed to be represented by a Standard Spherical Coordinate Space.

SphericalCoordSpace 
objectType 
Spatial domain, threedimensional spherical coordinate space. The particulars of the axis descriptions depend on the flavor
of space being instantiated. In Appendix B., we provide a Standard Spherical Coordinate Space instance which applies to many
Astronomical use cases. It provides the default space for SpaceSys instances, and may be referenced in serializations.

StdRefLocation 
dataType 
An absolute apriori known location in phase space (position and velocity). Values are selected from the StdRefPosition vocabulary.
Considering that the GEOCENTER is really the only place for which we know the absolute location at all times, all other locations
require the specification of a planetary ephemeris. LSR[KD] are reserved for spectral and reshift frames. TOPOCENTER (location
of the observer) is special in that it assumes that the observing location is available through other means (e.g. a geographic
location or an orbit ephemeris). RELOCATABLE is available for simulations. UNKNOWN should only be used if absolutely necessary.

StdRefLocation.position 
attribute 
Standard reference location. Values MUST be selected from the controlled vocabulary at the given URL. 
TimeFrame 
objectType 
A TimeFrame SHALL include a time scale and reference position. It MAY also include a reference direction. 
TimeFrame.refDirection 
attribute 
The reference direction is needed if the time stamps are transformed to a time frame with a different reference position.
In those situations, the solar system ephemeris also comes into play. See: FITS WCS Paper IV for details, but in short:
The reference direction, presumably the direction to the thing being observed, is used in conjunction with the reference position
and planetary ephemeris to determine the correction applied for the path length change. To be fully useful, one also needs
to know the location at which the observation was made ( i.e. the observatory location), which is not considered to be Frame
metadata.

TimeFrame.refPosition 
attribute 
The spatial location at which the coordinate is considered to have been taken. This model supports locations provided as
either a standard reference position (e.g. GEOCENTER), or a coordinate specifying a custom location (e.g. long, lat, height).

TimeFrame.timescale 
attribute 
The time scale sets the reference frame. The value MUST be selected from the controlled vocabulary at the given URL. 
TimeInstant 
dataType 
TimeStamps which specify a specific instant in time. We define three subtypes (ISOTime, JD, MJD), which allow users to explicitly
identify the representation and interpretation of the TimeInstant.

TimeOffset 
dataType 
Time is given as an offset from a specific point in time (time0). 
TimeOffset.time 
attribute 
The TimeOffset coordinate value. 
TimeOffset.time0 
attribute 
The reference time from which the offset is calculated. This MUST be given as a TimeInstant (e.g.: JD, MJD, ISOTime). 
TimeStamp 
dataType 
This is the abstract basis for a set of simple time domain coordinates which are expected to accommodate the vast majority
of use cases. All TimeStamps, by definition, exist in a standard 1D coordinate space, with domainMinMax of +/Infinity.
All TimeStamps MUST refer to an appropriate TimeSys.

TimeSys 
objectType 
Specialized coordinate system for the Temporal domain. This object SHOULD include an appropriate TimeFrame. If a CoordSpace
is not provided, it is assumed to be represented by a Standard 1Dimensional Coordinate Space as described in Appendix B.
