Coordinates model - Working draft.

François Bonnarel francois.bonnarel at astro.unistra.fr
Wed Jan 16 17:30:21 CET 2019


Hi all,

I wondered a bit where to enter into this discussion, and eventually I 
choosed to strt by this one, although there has been more material on 
the mailing list since this one was designed.


Le 08/01/2019 à 13:18, Markus Demleitner a écrit :
> Dear DM,
>
> On Fri, Dec 21, 2018 at 04:41:09PM -0500, CresitelloDittmar, Mark wrote:
>>> Similarly (and this is quite a bit more itchy to me right now), I'm
>>> strongly advocating to make TimeInstant concrete and remove all its
>>> derived types (ISOTime, JD, MJD, TimeOffset).  Instead, TimeFrame
>>> should grow a timeorigin attribute.
>>>
>> Full disclosure, I haven't read the apps thread re: TIMESYS, but as I
>> recall, it works only because it requires that timeorigin is expressed in
>> JD specifically.
> Which is fine because it's metadata.  In annotation, flexibility is
> what we need on the *data* side -- in general you don't want to force
> data providers into rigid conventions because that would typically
> force them to change their data in non-trivial ways.  That's why we
> allow all kinds of time scales, reference positions, and (indirectly)
> serialisation formats.
OK, fine.
>
> For *metadata*, that's a different thing -- this is part of the
> annotation itself and is largely controlled by "us"; it is being
> written at publication time by people looking at the VO.  Flexibility
> there only complicates both model and implementations without buying
> anything (except possibly a tiny bit of conversion work for very few
> numbers external to the data itself).
OK again. This is what we decied to do for ObsCore for example. We 
forced a lot of things in the standard for data DESCRIPTION and let the 
data as they are...
>   
>
> Hence, fixing time origin to a float (which certainly can be
> represented in all conceivable serialisations) with a bespoke
> interpretation (as a JD) doesn't hurt the generality of the model at
> all but saves quite a bit of code (and hence bugs) in the clients.

Well, here I don't follow you, Markus,  as you know from the discussion we had for TIMESYS. Time Origin is not simple generic metadata. IN a large collection of TimeSeries it may change also from DataSet to dataSet. Example by Mark which I copy paste here is exactly showing this.


> MCD , January the 14 th wrote :
> o one use case being served by these elements is the event list, where 
> we have
>      + creation time as FITS string (ISOTime)
>      + reference time for events MJDREF in (MJD)
>      + event times in sec from reference time (TIMEOFFSET)
>      In presenting this data, I want to explicitly identify what each 
> of these types are
>        * the string param 'DATE' == ISOTime type
>        * the real param 'MJDREF' == MJD date
>        * the real field "time" == TIMEOFFSET
>      We CAN have 1 type for JD, MJD, ISO ... what would be the 
> datatype of the value? presumably 'datetime'
>      which would need to take on the broader "string" or "real" 
> handling described earlier (if string =>ISOTime, if < 2400000.5... )
>      But, in my opinion, it is better to be explicit here.
>      A/*s trivial as it might be, it is not reasonable to force the 
> data providers to convert their reference times to JD.*/
... last sentence enhanced by me.


>
> ......................................................;
>>> The rationale here is that the concrete form of the timestamp is a
>>> *serialisation* issue, i.e., one of VOTable, FITS, or whatever else.
>>> If the serialisation provides for having ISO-like dates or a binary
>>> representation of civil dates or nothing of the sort shouldn't
>>> determine whether you can serialise STC instances into them.
>>>
>> Not sure I would call it a serialization issue, but yes.. its related.  The
>> thing is, when we have time data, we need to convey how to interpret that
>> value (which on its face is just a 'real' ).
> Well, the trouble is that at least VOTable already has a distinction
> between ISO string and floating point representations, and I'd expect
> any format powerful enough to carray VODML annotation will have
> similar mechanisms (e.g., relational database tables).  So, if you
> put that distinction into the model, too, you have an immediate
> conflict of responsibilities.
>
> Which is bad for many reasons, the most urgent of which is that
> client writers have to decide what should happen if a <FIELD
> xtype="timestamp"/> is annotated as MJDDate (say).
STC ISOtime and timestamp are a little redondant (not totally, see 
below), but DALI doesn't say a word about JD, MJD, Offset etc...

So currently xtype allows to distinguish STC ISOTime from STC 
TimeInstant but not inside the latter.
>
> Just saying "it's invalid, refuse to work with it" is really
> unsatifactory -- probably the document would work just fine if the
> annotation is *removed* (because it's really a timestamp).  Telling a
> user a document that looks fine can't be processed just because of
> annotation that's superfluous in the first place (because the client
> already knows it's a timestamp) is highly annoying, and looking at
> the hacks clients writers currently make to let users work with
> half-broken data I'm sure we'd be seeing lots of ugly heuristics and
> conditional ignoring of annotation.
Well actually timestamp is also includind dates "civil in nature". see 
DALI 1.1 3.3.3

> /However, values that are civil in nature (e.g.//
> //when some processing was completed, when some record was last 
> modified)//
> //may include the time zone indicator Z to explicitly specify the UTC 
> time//
> //zone./
while obviosuly (see discussion on Z and UTC on this mailing list) STC 
ISOtime will not. xtype=timestamp has a wider extent.

So that STC ISOTime is excluding the Z and can be expressed in VOTable 
using xtype=timestamp.


>
> Why increase the number of errors document writers can make and
> clients writers have to handle when there's nothing to be gained by
> (in this case) the extra classes?
>
>
>> This modeling makes it easy to convey that info.. you have a Column or
>> Param which you identify as type "coords:domain.time.JD".  The alternative
>> is to have a single Type (TimeInstant), and a format enumeration/flag.
> Ha!  If you look at your phrase "format enumeration/flag" -- doesn't
> that already shout "serialisation"?  The point I'm making above is
> that the model simply shouldn't talk about formats, because that's
> another level of representation.  The model just has TimeInstant --
> done.
>
> Shorter model, less conflicts, same capabilities -- what's not to
> like?

The main issue is that I think we are dealing with "time representation" 
and not "serializations".
Time represention concept is presented in the Time WCS paper.
Each "time representation" involves various features : units and/or time 
origin, sometimes timescale...
Much more  than a "serialization" issue.
  SO I think the DataModel has to help defining this properly.
For this reason I agree with what has been done in the Coordinates WD.
Except on one point :

Why don't we have something for "Julian years" and "Besselian years" in 
addition ?
They are pretty common in astronomical data and seem to be well defined 
according to the same Time WCS paper.
I remember Arnold advocating against a couple of years ago, but I cannot 
remember the arguments ???

Cheers
François


>
>           -- Markus

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ivoa.net/pipermail/dm/attachments/20190116/5530d7e2/attachment.html>


More information about the dm mailing list