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

Author: Tom Donaldson - Applications Working Group Vice-Chair
Date: 05 May 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 would be appropriate would be those FIELDs or PARAMs whose single values are meant to be interpreted as arrays of size 1. Since those cases are rare, and some legacy clients will misinterpret such specification, we for now discourage the use of arraysize="1" entirely.

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 not be used, as it is interpreted differently by different clients at this point. If a future VOTable specification re-encourages its use, arraysize="1" will mean "array of length 1".

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 (see also section 2.2).

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

Topic revision: r3 - 2018-05-31 - MarkTaylor
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback