A look inside a VOEvent¶
As we’ve discussed, VOEvents are designed to be readable both by machines and by humans. Let’s start by looking at a real live VOEvent by eye and picking out the important characteristics. Here’s one:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <?xml version="1.0" encoding="UTF-8"?>
<voe:VOEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:voe="http://www.ivoa.net/xml/VOEvent/v2.0"
xsi:schemaLocation="http://www.ivoa.net/xml/VOEvent/v2.0
http://www.ivoa.net/xml/VOEvent/VOEvent-v2.0.xsd"
version="2.0" role="test"
ivorn="ivo://org.hotwired/exciting_events#123">
<Who>
<AuthorIVORN>ivo://hotwired.org</AuthorIVORN>
<Date>1970-01-01T00:00:00</Date>
<Author>
<title>Hotwired VOEvent Tutorial</title>
</Author>
</Who>
<What>
<Group name="source_flux">
<Param dataType="float" name="peak_flux" ucd="em.radio.100-200MHz"
unit="Janskys" value="0.0015">
<Description>Peak Flux</Description>
</Param>
<Param dataType="float" name="int_flux" ucd="em.radio.100-200MHz"
unit="Janskys" value="2.0e-3">
<Description>Integrated Flux</Description>
</Param>
</Group>
</What>
<WhereWhen>
<ObsDataLocation>
<ObservatoryLocation id="GEOSURFACE"/>
<ObservationLocation>
<AstroCoordSystem id="UTC-FK5-GEO"/>
<AstroCoords coord_system_id="UTC-FK5-GEO">
<Time unit="s">
<TimeInstant>
<ISOTime>1970-01-01T00:00:00</ISOTime>
</TimeInstant>
</Time>
<Position2D unit="deg">
<Name1>RA</Name1>
<Name2>Dec</Name2>
<Value2>
<C1>123.5</C1>
<C2>45</C2>
</Value2>
<Error2Radius>0.1</Error2Radius>
</Position2D>
</AstroCoords>
</ObservationLocation>
</ObsDataLocation>
</WhereWhen>
<How>
<Description>JDS spied with his little eye</Description>
</How>
<Why importance="0.5">
<Inference probability="0.1" relation="identified">
<Name>GRB121212A</Name>
<Concept>process.variation.burst;em.radio</Concept>
</Inference>
</Why>
<Citations>
<EventIVORN cite="followup">ivo://org.hotwired/exciting_events#1</EventIVORN>
</Citations>
</voe:VOEvent>
|
The first thing to realise is that it’s not important to understand all the details. There’s a lot of “boilerplate” markup language which isn’t necessary to getting a good overview of what’s going on here. However, it should be pretty easy to tease out a few salient points.
Overall structure¶
The first thing that should be immediately obvious are the blocks referring to the who, what, where & when, how, and why that we previously discussed.
The Who
block in lines 8 to 14 tells us that this event was generated back
in 1970 by an author who was eagerly anticipating this tutorial session.
What
that author observed is described by lines 15 through 26 it was a
radio source, for which we provide peak and integrated flux densities in
Janskys at a frequency between 100 and 200 MHz. WhereWhen
(lines 27–50)
tells us that the observation was made at an observatory on the Earth’s
surface, and provides an RA and dec with association uncertainties. How
just provides a free-form text description of how the observation was made,
and Why
identifies this with a GRB taking place in 2012 (nearly 43 years
after this observation was made—not bad!).
Event roles¶
While, in general, we’re going to avoid considering the subtleties of the markup, there are a few features it’s worth pointing out. First, right up the top of the event we have the string:
role="test"
This is important. It serves as notice to recipients that the event does not
describe an actual astronomical event. If you are experimenting with VOEvent,
you should always use the test
role, even if you don’t intend for your
events to be published: if one should leak of your sandbox, it could be
horribly expensive if somebody mistakes it for a notice of a genuine transient
and triggers their multi-hundred-million-dollar followup facility.
That said, there are three other possible roles we should mention.
observation
is the obvious one: it’s reporting the results of a particular
observation. utility
is informing the recipient about details of the
observing system; for example, a change in configuration. Finally,
prediction
indicates that the author is indulging in a little fortune
telling.
IVORNs and identifiers¶
Next, let’s talk about IVORNs, or “IVOA Resource Names”. IVORNs provide unique identifiers for entities known to the virtual observatory, where “entity” is quite broadly defined. In particular, here we provide an identifier both for the author of the event:
<AuthorIVORN>ivo://org.hotwired</AuthorIVORN>
and for the event itself:
ivo://org.hotwired/exciting_events#123
First, consider the identity of the author: org.hotwired
. In formal IVOA
terms, this should be a “naming authority” which has the right to create
IVOA-compliant identifers for the resources it creates. In practice, the
necessary registration material to make this worthwhile for VOEvents isn’t yet
in place, so we’ll improvise: choose a string which you are confident will
usefully identify you (or your facility) to the recipient, and which is
unlikely to clash with anybody else issuing VOEvents. Using a straightforward
internet host (DNS) name (like hotwired.org
) is discouraged (folks might
try to resolve it through the normal internet systems, which will fail), but
reversing it to create something which is uniquely tied to a given
organization but which can’t be confused with a regular host name should work,
and that’s exactly what we’ve done here.
Now, look at the identity of the event itself. This is particularly worth
noting, as the VOEvent standard assigns specific meanings to each part. In
this case, we are considering event number 123 published to the
exciting_events
stream by org.hotwired
. In general, we expect events
to be grouped into streams in this way, where a stream represents a specific
source of events—a given instrument or a particular way of processing the
data, say. A single naming authority could manage multiple streams (so we
could imagine org.hotwired
also publishing to the tedious_events
stream).
We can refer to other events by specifying their IVORN. For example, this event specifies:
<Citations>
<EventIVORN cite="followup">ivo://org.hotwired/exciting_events#1</EventIVORN>
</Citations>
This means that this VOEvent is reporting a follow-up to a previous
observation, which was described by event 1 in the same stream. As well as
followup
, it is also possible for the current event to use supersedes
to provide a corrected version of a previous event, or retraction
to
withdraw it altogether. Ultimately, an event aggregation service could group
together VOEvents which cite each other to build up a full description of a
particular astronomical event.
At time of writing, there is no central body for VOEvents which creates naming authorities or enforces standards on IVORNs. For now, you’re simply encouraged to structure your IVORNS following the above guidelines. Longer term, work is ongoing to integrate the VOEvent system with the wider VOEvent “registry” system, which will help ensure standards are enforced and provide mechanisms to look up details of particular authors, available event streams, and the events themselves.
Unified Content Descriptors¶
Depending on the source of the event, it might be “obvious” to the human that “peak flux” measured in Janskys likely refers to some sort of electromagnetic radiation. However, the computer which might be automatically processing and making decisions based on this VOEvent needs all the help it can get. To that end, we can annotate the event with Unified Content Descriptors, or UCDs (Derriere et al, 2005). For example, we write
ucd="em.radio.100-200MHz"
to indicate the type of measurement that peak_flux
and int_flux
refer
to. A very similar idea applies to the scientific inference:
<Concept>process.variation.burst;em.radio</Concept>