VOTable 1.5 Working Draft (2023-09-13)

Francois Ochsenbein francois.ochsenbein at gmail.com
Tue Oct 3 16:00:12 CEST 2023


Dear Markus,

>Dear François,
>
>Good to hear from you!
>
>On Wed, Sep 27, 2023 at 03:56:56PM +0200, Francois Ochsenbein wrote:
>> permit a definition of this relation in both directions, as pointed
>> out by Pierre Fernique. The safe way of doing this in a relational
>> model is to insert the reference (foreign key) in each of the n
>> components, not the other way.
>
>Um... I don't think I understand that point.  If this is advocating
>the old "backward referencing" use of FIELD/@ref: the reason we have
>been struggling with COOSYS all these years and still can't reliably
>do automatic epoch propagation is exactly that FIELD/@ref is
>insufficient in several ways:

Well, the "old backward referencing" is safe, in the sense that you
can't generate a contradiction, which is fundamental if you want to
ensure the reliability in the description of your data. Accepting both
ways of referencing is opening the door for contradictions…

I would like to emphasize that the COOSYS was defined in VOTABLE, since
the very first version, to accurately DESCRIBE the COOrdinate SYStem(s)
used in a table because the sky position is of particular importance in
all phenomena related to sky observations. It's also why a COOSYS may
exist in the VOTABLE upmost element, or in a RESOURCE (then concerns only
one resource), or in a TABLE (concerns a single table) ; the forward
referencing implies to restrict COOSYS inside a TABLE.

The proposed change in VOTable 1.5 is exacly to assign to COOSYS the role
of a "special" group, as it was several times pointed out by Francois
Bonnarel.

>* Referential integrity: a single COOSYS element can be referenced by
>  multiple, say, longitude-like FIELDs: which one would by use to
>  build the position?

If some ambiguity may exist, define a GROUP for this purpose !
In the case a single coordinate system is used over all tables,
there is no need to reference the COOSYS in the FIELDs as long
as UCDs are correcly provided in the fields.

>* One-role-limitation: a field can be part of multiple coordinate
>  sets; consider a time that is both a mean epoch in a COOSYS and a
>  value in a TIMESYS (from where it would receive its time metadata);
>  which of the two would @ref point to?

Again, that's exactly why the GROUP exists !

>* Role identification: To reconstruct a coordinate set from COOSYS
>  and the FIELD-s and PARAM-s @ref-ing it, you have to figure out
>  which is the longitude, latitude, derivatives, etc.  So far, the
>  only way to do that is the UCDs, but that's fragile and guesswork.
>  You could try putting the utypes the present proposal introduces
>  into the FIELD-s' @utype-s, but then you are back to the problems
>  for referential integrity and the one-role limitation.

Again, COOSYS is there used as a pointer to columns, which is not
its role. Using a GROUP is as safe as the proposed change.

>* Implementational inconvenience: you have to change FIELDs to
>  express metadata external to the FIELD itself, which makes for
>  complicated and fragile code when writing VOTables.  With forward
>  referencing, the metadata resides in isolated blocks that you can
>  add easily as soon as the FIELD-s have an @ID.

Here I don't understand what you mean — which change do you need?

>These points are also the reason why MIVOT also employs
>forward-referencing (and all its predecessors did the same).
>
>> Several groups of positions may moreover exist in the table: for
>> example in a list of clusters, two barycenters are given, one from
>> what was detected in the optical, and a second from radio
>> detections, and both positions are (hopefully!) given in the same
>> coordinate system. The enumeration of the FIELDs giving both
>> positions within the COOSYS would be quite confusing,
>
>No -- you would then simply have two nicely isolated COOSYS elements.
>
>I have no principled objections to use some extra GROUP to link
>COOSYS and FIELDs, which would let you get away with just one COOSYS
>element in this situation, at the expense of significantly more
>complicated code in both the client and the server side.  As I said
>in
><https://github.com/ivoa-std/VOTable/pull/40#issuecomment-1719256399>:
>If someone else writes that code for the client side, I'll do it on
>the server side; but I suspect if you try to write such code, you
>will find it's a complication that's probably simply not worth it.

That's exactly the discussion I was referring to, this change is a
transformation of COOSYS into a specialized GROUP. But I can't
understand why the code would be more complex if you have the
relationship referenced in a GROUP rather than in a COOSYS playing
the GROUP's role ?

I'm also concerned by the vocabulary proposed in the section 3.4 —
assigning the same utype name to a parallax and a distance seems
inconsistent, and is a potential source for large errors, as was
discussed following Mark Taylor's remarks.

Thank you anyway for the discussions !

François Ochsenbein
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ivoa.net/pipermail/apps/attachments/20231003/7180243b/attachment.htm>


More information about the apps mailing list