Measurements and Coordinates
Table of Contents
- Table of Contents
- Model Files
- Generalities
- Rationale
- Coordinate Frames
- Positions
- Time measurements
- Other Measurements
- Notes
Model Files
Coordinates HTML documentation
Measurements HTML documentation
Generalities
As for the other examples we provide two representations for the instances. One is expressed in a Domain Specific Language (DSL) that we are developing along with the VODML-related standards.
The DSL is independent of the serialization format, and allows to describe the instances in a simpler language without much boilerplate.
We also provide the VOTable serializations of those instances, which is what providers and clients will need to work with in practice.
Rationale
Here is a list of requirements we took into account when trying to rework the STC v1 standard.
-
simple and common things should be simple to provide and consume. There is nothing in this model that provides more functionality when compared to the current proposal. However, we tried to simplify the most common scenarios for both data providers and data consumers.
-
complex, custom things should be possible. At the same time, the model should keep supporting more uncommon, complex, or in any way custom scenarios, which is something the current proposal does.
-
COOSYS works in simple cases. So the model provides structures that provide the same information, but in the VODML framework.
-
Allow standardization of common instances. The model should allow a standard library of commonly used instances that can be referenced through globally unique identifiers that client can rely on. This makes the serializations less verbose and makes it easier for clients to parse files in the most common cases.
Coordinate Frames
A coordinate frame defines:
- its origin in terms of another reference frame, possibly a standard one
- its orientation or direction
It does not define its own axes.
Note that a library of common/standard reference frames could be built but it is probably not really useful, because
frame definitions are in this model rather lightweight, and suitable for being included along with the data in all
cases. The current model for SpaceFrame
looks a lot like the COOSYS
element, but expressed rigorously in the VODML
framework, allowing for more complex relationships to be created if need be.
Positions
Positions can be expressed with a great deal of flexibility in this model. However, the price of such flexibility is complexity, which is not ideal for simple, most common cases. For these reasons we modeled some shortcut types that can be used in most cases. Such types make a lot of assumptions implicit, thus reducing the number
ICRS position
This is the simplest possible position, with just an RA and a DEC. The SpaceFrame
instance plays the same role as
COOSYS
, but it is more flexible, as in more complicated instances there may be more frames and sets of coordinates,
as well as custom frame, not necessarily spatial.
Using specific types like SkyPosition
allows instances to be simpler in the most common cases.
Note that in principle the frame instance and reference could be omitted. Whether or not this is a valid instance it
depends on the final version of the model document. One could decide that omitting the frame information a client can
infer the coordinate frame is ICRS
and the reference position TOPOCENTER
, or simply assume the information is
unknown or irrelevant. These cases should be dictated by the STC standard(s).
DSL
File: /examples/stc2/current/instances/position-icrs.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(id: "_SPACE_FRAME", type: "coords:domain.space.SpaceFrame") {
instance role: "spaceRefFrame", value: "ICRS"
instance(role: "refPosition", type: "coords:domain.space.StdRefLocation") {
instance role: "position", value: "TOPOCENTER"
}
}
instance(type: "meas:StdPosition") {
instance (role: "coord", type: "coords:domain.space.EquatorialCoord") {
instance(role: "ra", value: 12.9768538031, unit: "deg")
instance(role: "dec", value: -72.9580158133, unit:"deg")
reference(role: "frame") {
idref "_SPACE_FRAME"
}
}
}
}
VOTable
File: /examples/stc2/current/instances/position-icrs.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="coords:domain.space.SpaceFrame" ID="_SPACE_FRAME">
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.spaceRefFrame">
<LITERAL value="ICRS" dmtype="coords:domain.space.StdRefFrame"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.refPosition">
<INSTANCE dmtype="coords:domain.space.StdRefLocation">
<ATTRIBUTE dmrole="coords:domain.space.StdRefLocation.position">
<LITERAL value="TOPOCENTER" dmtype="coords:domain.space.StdRefPosition"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
<INSTANCE dmtype="meas:StdPosition">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.ra">
<LITERAL value="12.9768538031" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.dec">
<LITERAL value="-72.9580158133" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<REFERENCE dmrole="coords:Coordinate.frame">
<IDREF>_SPACE_FRAME</IDREF>
</REFERENCE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
FK4 B1950 position
This is also a simple example, but in a different frame. You can compare these examples with the ICRS
one above.
DSL
File: /examples/stc2/current/instances/position-fk4.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(id: "_SPACE_FRAME", type: "coords:domain.space.SpaceFrame") {
instance role: "spaceRefFrame", value: "FK4"
instance role: "equinox", value: "B1950"
instance(role: "refPosition", type: "coords:domain.space.StdRefLocation") {
instance role: "position", value: "TOPOCENTER"
}
}
instance(type: "meas:StdPosition") {
instance(role: "coord", type: "coords:domain.space.EquatorialCoord") {
instance role: "ra", value: 12.9768538031, unit: "deg"
instance role: "dec", value: -72.9580158133, unit: "deg"
reference(role: "frame") {
idref "_SPACE_FRAME"
}
}
}
}
VOTable
File: /examples/stc2/current/instances/position-fk4.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="coords:domain.space.SpaceFrame" ID="_SPACE_FRAME">
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.spaceRefFrame">
<LITERAL value="FK4" dmtype="coords:domain.space.StdRefFrame"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.equinox">
<LITERAL value="B1950" dmtype="coords:domain.space.Epoch"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.refPosition">
<INSTANCE dmtype="coords:domain.space.StdRefLocation">
<ATTRIBUTE dmrole="coords:domain.space.StdRefLocation.position">
<LITERAL value="TOPOCENTER" dmtype="coords:domain.space.StdRefPosition"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
<INSTANCE dmtype="meas:StdPosition">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.ra">
<LITERAL value="12.9768538031" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.dec">
<LITERAL value="-72.9580158133" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<REFERENCE dmrole="coords:Coordinate.frame">
<IDREF>_SPACE_FRAME</IDREF>
</REFERENCE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
ICRS Position with Ellipse Error
In this example the position also has an associated error, in particular an ellipse.
Note how the error, like the frame, is a property of the measurement, not the coordinate itself. A client with
knowledge of the coords
model can only find out about the RA and DEC values, while a client of the meas
model
will be able to understand a lot of information, e.g. information about the frame, so that in many cases coordinates
expressed in different frames can be reduced to the same one and e.g. plotted together. Also, meas
clients can figure
out the error of a measurement and its shape.
DSL
File: /examples/stc2/current/instances/position-icrs-ellipse.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(id: "_SPACE_FRAME", type: "coords:domain.space.SpaceFrame") {
instance role: "spaceRefFrame", value: "ICRS"
instance(role: "refPosition", type: "coords:domain.space.StdRefLocation") {
instance role: "position", value: "TOPOCENTER"
}
}
instance(type: "meas:StdPosition") {
instance (role: "coord", type: "coords:domain.space.EquatorialCoord") {
instance(role: "ra", value: 12.9768538031, unit: "deg")
instance(role: "dec", value: -72.9580158133, unit:"deg")
reference(role: "frame") {
idref "_SPACE_FRAME"
}
}
instance(role: "error", type: "meas:Error2D") {
instance (role: "statError", type: "meas:Ellipse") {
instance role: "semiAxis", value: 0.00027, unit: "deg"
instance role: "semiAxis", value: 0.00041, unit: "deg"
instance role: "posAngle", value: 12.345, unit: "deg"
}
}
}
}
VOTable
File: /examples/stc2/current/instances/position-icrs-ellipse.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="coords:domain.space.SpaceFrame" ID="_SPACE_FRAME">
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.spaceRefFrame">
<LITERAL value="ICRS" dmtype="coords:domain.space.StdRefFrame"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.SpaceFrame.refPosition">
<INSTANCE dmtype="coords:domain.space.StdRefLocation">
<ATTRIBUTE dmrole="coords:domain.space.StdRefLocation.position">
<LITERAL value="TOPOCENTER" dmtype="coords:domain.space.StdRefPosition"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
<INSTANCE dmtype="meas:StdPosition">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.ra">
<LITERAL value="12.9768538031" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.dec">
<LITERAL value="-72.9580158133" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<REFERENCE dmrole="coords:Coordinate.frame">
<IDREF>_SPACE_FRAME</IDREF>
</REFERENCE>
</INSTANCE>
</ATTRIBUTE>
<COMPOSITION dmrole="meas:CoordMeasure.error">
<INSTANCE dmtype="meas:Error2D">
<ATTRIBUTE dmrole="meas:Error2D.statError">
<INSTANCE dmtype="meas:Ellipse">
<ATTRIBUTE dmrole="meas:Ellipse.semiAxis">
<LITERAL value="0.00027" dmtype="ivoa:RealQuantity" unit="deg"/>
<LITERAL value="0.00041" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="meas:Ellipse.posAngle">
<LITERAL value="12.345" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</COMPOSITION>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
ICRS Position with Symmetric Error
For comparison, here is a position in ICRS
with a symmetric 2D error, i.e. a circle rather than an ellipse.
DSL
File: /examples/stc2/current/instances/position-icrs-symmetric.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:StdPosition") {
instance (role: "coord", type: "coords:domain.space.EquatorialCoord") {
instance(role: "ra", value: 12.9768538031, unit: "deg")
instance(role: "dec", value: -72.9580158133, unit:"deg")
reference(role: "frame") {
idref "_SPACE_FRAME"
}
}
instance(role: "error", type: "meas:Error2D") {
instance (role: "statError", type: "meas:Symmetrical2D") {
instance role: "radius", value: 0.00027, unit: "deg"
}
}
}
}
VOTable
File: /examples/stc2/current/instances/position-icrs-symmetric.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:StdPosition">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.ra">
<LITERAL value="12.9768538031" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.space.EquatorialCoord.dec">
<LITERAL value="-72.9580158133" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
<REFERENCE dmrole="coords:Coordinate.frame">
<IDREF>_SPACE_FRAME</IDREF>
</REFERENCE>
</INSTANCE>
</ATTRIBUTE>
<COMPOSITION dmrole="meas:CoordMeasure.error">
<INSTANCE dmtype="meas:Error2D">
<ATTRIBUTE dmrole="meas:Error2D.statError">
<INSTANCE dmtype="meas:Symmetrical2D">
<ATTRIBUTE dmrole="meas:Symmetrical2D.radius">
<LITERAL value="0.00027" dmtype="ivoa:RealQuantity" unit="deg"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</COMPOSITION>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
Time measurements
TT ISO Time
DSL
File: /examples/stc2/current/instances/tt-iso-time.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:GenTimeMeasure") {
instance (role: "coord", type: "coords:domain.time.ISOTime") {
instance role: "date", value: "2000-09-02T01:10:14"
}
}
}
VOTable
File: /examples/stc2/current/instances/tt-iso-time.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:GenTimeMeasure">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.time.ISOTime">
<ATTRIBUTE dmrole="coords:domain.time.ISOTime.date">
<LITERAL value="2000-09-02T01:10:14" dmtype="ivoa:datetime"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
TT JD Time
DSL
File: /examples/stc2/current/instances/tt-jd-time.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:StdTimeMeasure") {
instance (role: "coord", type: "coords:domain.time.JD") {
instance role: "date", value: 2450814.5
}
}
}
VOTable
File: /examples/stc2/current/instances/tt-jd-time.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:StdTimeMeasure">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.time.JD">
<ATTRIBUTE dmrole="coords:domain.time.JD.date">
<LITERAL value="2450814.5" dmtype="ivoa:real"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
TT MJD Time
DSL
File: /examples/stc2/current/instances/tt-mjd-time.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:StdTimeMeasure") {
instance (role: "coord", type: "coords:domain.time.MJD") {
instance role: "date", value: 50814.0
}
}
}
VOTable
File: /examples/stc2/current/instances/tt-mjd-time.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:StdTimeMeasure">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.time.MJD">
<ATTRIBUTE dmrole="coords:domain.time.MJD.date">
<LITERAL value="50814.0" dmtype="ivoa:real"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
TT MET Time
DSL
File: /examples/stc2/current/instances/tt-met-time.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:StdTimeMeasure") {
instance (role: "coord", type: "coords:domain.time.TimeOffset") {
instance role: "time", value: 1234.5
instance(role: "time0", type: "coords:domain.time.JD") {
instance role: "date", value: 2451234.02
}
}
}
}
VOTable
File: /examples/stc2/current/instances/tt-met-time.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:StdTimeMeasure">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:domain.time.TimeOffset">
<ATTRIBUTE dmrole="coords:domain.time.TimeOffset.time">
<LITERAL value="1234.5" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="coords:domain.time.TimeOffset.time0">
<INSTANCE dmtype="coords:domain.time.JD">
<ATTRIBUTE dmrole="coords:domain.time.JD.date">
<LITERAL value="2451234.02" dmtype="ivoa:real"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
Other Measurements
Magnitude with Symmetric Error
DSL
File: /examples/stc2/current/instances/magnitude-sym-error.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:GenericCoordMeasure") {
// implicit reference to TOPOCENTER Std 1D frame
instance(role: "coord", type: "coords:PhysicalCoordValue") {
// implicit reference to STD 1D Axis
instance role: "cval", value: -0.28, type: "ivoa:RealQuantity"
}
instance(role: "error", type: "meas:Error1D") {
instance(role: "statError", type: "meas:Symmetrical1D") {
instance role: "radius", value: 0.01
}
}
}
}
VOTable
File: /examples/stc2/current/instances/magnitude-sym-error.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:GenericCoordMeasure">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:PhysicalCoordValue">
<ATTRIBUTE dmrole="coords:PhysicalCoordValue.cval">
<LITERAL value="-0.28" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
<COMPOSITION dmrole="meas:CoordMeasure.error">
<INSTANCE dmtype="meas:Error1D">
<ATTRIBUTE dmrole="meas:Error1D.statError">
<INSTANCE dmtype="meas:Symmetrical1D">
<ATTRIBUTE dmrole="meas:Symmetrical1D.radius">
<LITERAL value="0.01" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</COMPOSITION>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
Magnitude with Asymmetric Error
DSL
File: /examples/stc2/current/instances/magnitude-asym-error.jovial
def modelsFolder = "file:../models"
def voluteFolder = "https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/"
def coordsLocation = new URL("$modelsFolder/STC_coords-v2.0.vo-dml.xml")
def measLocation = new URL("$modelsFolder/STC_meas-v2.0.vo-dml.xml")
def ivoaLocation = new URL("$voluteFolder/ivoa/vo-dml/IVOA-v1.0.vo-dml.xml")
dmInstance {
model(vodmlURL: coordsLocation)
model(vodmlURL: measLocation)
model(vodmlURL: ivoaLocation)
instance(type: "meas:GenericCoordMeasure") {
// implicit reference to STD 1D Axis
instance(role: "coord", type: "coords:PhysicalCoordValue") {
// implicit reference to TOPOCENTER STD 1D frame
instance role: "cval", value: "-0.28", type: "ivoa:RealQuantity"
}
instance(role: "error", type: "meas:Error1D") {
instance(role: "statError", type: "meas:Asymmetrical1D") {
instance role: "plus", value: 0.02
instance role: "minus", value: 0.01
}
}
}
}
VOTable
File: /examples/stc2/current/instances/magnitude-asym-error.vot.xml
<?xml version="1.0" encoding="UTF-8"?><VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VODML>
<MODEL>
<NAME>coords</NAME>
<URL>file:../models/STC_coords-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>meas</NAME>
<URL>file:../models/STC_meas-v2.0.vo-dml.xml</URL>
</MODEL>
<MODEL>
<NAME>ivoa</NAME>
<URL>https://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models//ivoa/vo-dml/IVOA-v1.0.vo-dml.xml</URL>
</MODEL>
<GLOBALS>
<INSTANCE dmtype="meas:GenericCoordMeasure">
<ATTRIBUTE dmrole="meas:CoordMeasure.coord">
<INSTANCE dmtype="coords:PhysicalCoordValue">
<ATTRIBUTE dmrole="coords:PhysicalCoordValue.cval">
<LITERAL value="-0.28" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
<COMPOSITION dmrole="meas:CoordMeasure.error">
<INSTANCE dmtype="meas:Error1D">
<ATTRIBUTE dmrole="meas:Error1D.statError">
<INSTANCE dmtype="meas:Asymmetrical1D">
<ATTRIBUTE dmrole="meas:Asymmetrical1D.plus">
<LITERAL value="0.02" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="meas:Asymmetrical1D.minus">
<LITERAL value="0.01" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
</INSTANCE>
</COMPOSITION>
</INSTANCE>
</GLOBALS>
</VODML>
<RESOURCE ID="EMPTY"/>
</VOTABLE>
Notes
VODML Mapping
There is currently no mechanism for referencing an object by ID/URI. Should there be one or is
REMOTEREFERENCE
enough?