VOTable-1.3 Erratum 3 - Clarification on arraysize="1"

Author: Tom Donaldson - Applications Working Group Vice-Chair
Date: 08 February 2018

The following erratum amends the VOTable-1.3 (Ochsenbein et al. 2013) recommendation.

Rationale

Background

The VOTable specification (all versions to date) allows FIELD and PARAM values to be arrays of primitive types. To allow proper parsing and interpretation of such values, FIELDs and PARAMs have an "arraysize" attribute which describes the size of each dimension of the array. In VOTable 1.3, "arraysize" is described in sections 2.2 and 4.1, and referenced in multiple other places.

The Issue

As discussed at the 2017 Interop meeting in Santiago, the VOTable specification has not been interpreted consistently with respect to an arraysize value of 1 (M. Demleitner - "VOTable arraysize=1 discussion"). Does it mean that a FIELD table cell value should be interpreted as an array of size 1, or is it just reinforcing the fact that single scalar values should be expected? Different clients have picked different answers to that question.

Conversely, if one scalar value is expected per table cell, should arraysize be set to 1 or omitted entirely? Again, different data providers have made different choices for that case. With both data providers and consumers being inconsistent on these questions, interoperability is more challenging than need be, with clients needing to guess the intentions of the data provider.

The Resolution

This erratum clarifies that arraysize should be present if, and only if, the corresponding FIELD or PARAM values are intended to be treated as arrays. FIELDs or PARAMs with single scalar values should not have an arraysize attribute.

The only cases in which arraysize=1 is appropriate are those FIELDs or PARAMs whose single values are meant to be interpreted as arrays of size 1. Since those cases are probably rare, it is recommended that VOTable validators flag a warning any time arraysize=1 is used.

Change of standards text

Section 2.2 - append the following text to end of the section:

Note: arraysize should be present if, and only if, each table cell for the FIELD is intended to be treated as an array. arraysize="1" should only be used in the unusual case that the table cells will contain single values that are intended to be understood as single-value arrays.

Section 4.1 - append the following text to the arraysize bullet:

The arraysize attribute should be omitted unless the corresponding table cell contents is intended to be understood as an array.

Impact Assesment

Operational services will not break as a direct result of this erratum. However:

  • Services that include arraysize="1" for single scalar-valued FIELDs should be corrected to omit arraysize.

  • Clients that interpret arraysize="1" exclusively as a single scalar value should consider interpreting those values as arrays of size 1, since that's what compliant services intend. However, clients may still wish to exercise flexibility there since not all services are compliant with these clarified semantics.

  • It is recommended that VOTable validators flag a warning for all occurrences of arraysize="1". Although that arraysize is legal, it is not likely that the provider meant for the values to be interpreted as an array.

References

Interop presentation - "VOTable arraysize=1 discussion"
M. Demleitner - 2017 - Santiago
http://wiki.ivoa.net/internal/IVOA/InterOpOct2017Apps/arraysize-slides.pdf

Edit | Attach | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 2018-02-08 - TomDonaldson
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback