PR-TAP-1.1 - Some comments

Mark Taylor m.b.taylor at
Fri Sep 8 12:42:49 CEST 2017

On Fri, 8 Sep 2017, Markus Demleitner wrote:

> Dear DAL,
> I'd like to chime in on two of the issues raised by Gregory:
> On Thu, Sep 07, 2017 at 11:36:20AM +0200, Grégory Mantelet wrote:
> >     - Section 4.2-Tables:
> >         1. The column 'table_index' is declared with the datatype 'int' and
> > the
> >            arraysize '1'.
> >             => Does it mean that it is an array of only one item?
> >                I don't think so. Then, would not it better if arraysize
> > stays
> >                'null'?
> I suppose that's more of a VOTable thing, but I think it would be
> great if we could clearly state somewhere that 
>   datatype="X" arraysize="1"
> is not (or is?) the same as 
>   datatype="X"
> There are services out there that attach arraysize="1" to any scalar,
> which of course leads to interoperability problems.  TAP should then
> just say "do it like VOTable does it".

I always thought that in VOTable (following FITS practice),
setting the arraysize attribute to "1" has an identical meaning
to omitting it, i.e. that VOTable makes no distinction between
a scalar and a single-element array.  However now that I look
I can't find that confirmed (or denied) in the VOTable specification.
But in any case, the intention of listing arraysize values of 1
in the tables in section 4 is presumably just to indicate
that these are scalar values.

But as I commented in my email discussing TAP-1.1-20170707-WD

On Wed, 19 Jul 2017, Mark Taylor wrote:

>     In general I think all of the TAP_SCHEMA table columns
>     defined in sections 4.1-4.4 should be described using the
>     generic terms either "integer" or "string" (or "character array").
>     Mandating VOTable datatype and arraysize attributes looks
>     to me like introducing more problems than it solves.

I think that listing the VOTable-specific attributes datatype,
arraysize and xtype in these tables is unnecessarily confusing.
What's being discussed here is not the serialization but the
content of the database, which is not intrinsically based on
VOTable syntax, and for which TAP 1.1 does not specify a
type system.

So instead of

   column name   datatype   arraysize   xtype   not-null
   -----------   --------   ---------   -----   --------
   table_name    char       *           null    true
   table_index   int        1           null    false

along with a paragraph in the sec 4 introduction explaining
that char doesn't necessarily mean char, * doesn't necessarily
mean *, and int doesn't necessarily mean int ("The arraysize
values specified ... consistent with the recommended types")
why not just write

   column name   type     not-null
   -----------   ----     --------
   table_name    string   true
   table_index   integer  false

?  The only datatype/arraysize/xtype combinations that appear
in these tables are char/*/null and int/1/null, so the
additional detail in the current text is not providing much value.


Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor at +44-117-9288776

More information about the dal mailing list