<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Courier New";
        panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Apple Color Emoji";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1198809092;
        mso-list-type:hybrid;
        mso-list-template-ids:-1612805186 -1933263734 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:Calibri">Mark and all,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">I think the R2 ruling proposal is interesting.&nbsp; By simply making arraysize=”1” illegal, we would:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style="font-family:Calibri">Eliminate the complications of explaining that option in the spec or of interpreting it in clients.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style="font-family:Calibri">Possibly be doing what was meant by the original spec anyway (“The arraysize attribute exists when the corresponding table cell contains more than one…”).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">As you say, it has the downside of not supporting 1-element arrays. I admit to feeling a certain appeal in the consistency and completeness of offering 1-element arrays (just as those are available in programming
 languages), but I can’t think of a specific need, so I won’t push hard either way.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">I do think it’s important that with either R1 or R2, clients should not have to change.&nbsp; The erratum is just another input to consider when deciding their implementation.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">As a side note, I agree that STIL/TOPCAT does do the sensible thing.&nbsp;
</span><span style="font-family:&quot;Apple Color Emoji&quot;">☺</span><span style="font-family:Calibri">&nbsp; For astropy however, it’s worth noting that although it treats arraysize=”1” cases as “arrays”, those arrays offer flexibility within the astropy/numpy framework
 that ends up treating the value as a scalar when one is needed.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">As a simple example, this output:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">One value is an array, the other is a scalar.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">f1 value = [1] (arraysize=&quot;1&quot;)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">f2 value = 1&nbsp;&nbsp; (scalar)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">The array value is treated as a scalar when needed.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">f1val &#43; f2val == 2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">Is generated by this code:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">from astropy.table import Table<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">import math<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">import io<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">vot = &quot;&quot;&quot;&lt;?xml version=&quot;1.0&quot;?&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&lt;VOTABLE version=&quot;1.3&quot; xmlns=&quot;http://www.ivoa.net/xml/VOTable/v1.3&quot;&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RESOURCE&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TABLE name=&quot;trap&quot;&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FIELD datatype=&quot;short&quot; name=&quot;f1&quot; arraysize=&quot;1&quot;/&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FIELD datatype=&quot;short&quot; name=&quot;f2&quot;/&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DATA&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TABLEDATA&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TR&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD&gt;1&lt;/TD&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD&gt;1&lt;/TD&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TR&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TABLEDATA&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DATA&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TABLE&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/RESOURCE&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&lt;/VOTABLE&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&quot;&quot;&quot;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">t = Table.read(io.BytesIO(bytes(vot, 'utf-8')))<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">for row in t:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp; f1val = row['f1']<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp; f2val = row['f2']<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;print('One value is an array, the other is a scalar.')<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp; print('f1 value = {} (arraysize=&quot;1&quot;)'.format(f1val))<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp; print('f2 value = {}&nbsp;&nbsp; (scalar)'.format(f2val))<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp; print('\nThe array value is treated as a scalar when needed.')<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp; if (f1val &#43; f2val == 2):<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print('f1val &#43; f2val == 2')<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Courier"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">I expect that the main problems come up in cases where it’s not clear a scalar is expected, such as re-serialization for sharing with other consumers.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">Tom<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p>&nbsp;</o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-family:Calibri;color:black">From:
</span></b><span style="font-family:Calibri;color:black">&lt;apps-bounces@ivoa.net&gt; on behalf of Mark Taylor &lt;m.b.taylor@bristol.ac.uk&gt;<br>
<b>Date: </b>Thursday, February 15, 2018 at 5:36 AM<br>
<b>To: </b>Applications WG &lt;apps@ivoa.net&gt;<br>
<b>Subject: </b>Re: Proposed erratum to clarify arraysize=&quot;1&quot;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Tom, Markus, others,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">On Mon, 12 Feb 2018, Tom Donaldson wrote:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-right:0in" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal" style="margin-left:.5in">Since this is an erratum, I was thinking in terms of putting the wording<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">there that we would have put in the original if we had realized the lack<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">of clarity.&nbsp;&nbsp;In that frame of mind, the use of “must” makes sense.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">That is what the spec should have said.&nbsp;&nbsp;(I do see this as a clarification<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">rather than a change.&nbsp;&nbsp;Section 4.1 does already say, “The arraysize<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">attribute exists when the corresponding table cell contains more than<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">one…”. )<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Yes well that does make me think.&nbsp;&nbsp;That spec text which you quote<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">implies, though it does not explicitly state, that the use of<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">arraysize=&quot;1&quot; is simply incorrect.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Given that, behaviour on encountering that construction is unspecified,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">so VOTable consumers should either refuse to process such elements<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">(not very helpful) or if not, should do the most sensible thing.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">As the erratum points out, &quot;it is not likely that the provider meant<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">for the values to be interpreted as an array.&quot;, so what current<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">client software ought to do is to treat arraysize=&quot;1&quot; as a scalar.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">The Erratum currently says:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; &quot;Clients that interpret arraysize=&quot;1&quot; exclusively as a single scalar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;value should consider interpreting those values as arrays of size 1,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;since that's what compliant services intend.&quot;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">But, as I (and the Erratum) have said above, it's also most likely<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">the *opposite* of what pre-Erratum services intend.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">[Attentive readers will have spotted that in my argument above<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I'm characteristing STIL/TOPCAT behaviour as &quot;doing the sensible<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">thing&quot;, and Astropy as ... well, not that.&nbsp;&nbsp;(If anybody familiar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">with other VOTable software can report what that does in such<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">circumstances, it would be interesting to hear.)&nbsp;&nbsp;Obviously, I'm not<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">a disinterested observer in this, so if anybody wants to shoot this<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">down, please fire away.]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">So I'm still not convinced that this erratum looks like a clarification<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">rather than a new decision about what VOTable ought to have said<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">in the first place.&nbsp;&nbsp;So much for the legal philosophy.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">But in practical terms, the Erratum is saying:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; R1:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- if arraysize=&quot;1&quot; is present, it means a 1-element array<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- don't write arraysize=&quot;1&quot; unless you mean a 1-element array<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Given that ruling:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 1a) VOTable producers should reconsider whether they really mean<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arraysize=&quot;1&quot;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 1b) VOTable validators should present a warning for arraysize=&quot;1&quot;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that producers may or may not need to do something about<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 1c) Astropy-like clients can carry on unchanged<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 1d) STIL-like clients should go from treating arraysize=&quot;1&quot; as a scalar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to treating it like an array (but may wish to exercise flexibility)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">As I've said in an earlier message, I'm not going to make the change (1d)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">any time soon, at least in the default configuration of TOPCAT/STILTS,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">because it's likely to break stuff.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">An alternative possibility would be:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; R2:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- arraysize=&quot;1&quot; is illegal<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- don't write arraysize=&quot;1&quot;, ever<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">(note this does not correspond to any of the options in Markus's<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">final &quot;What do we do?&quot; slide from<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="http://wiki.ivoa.net/internal/IVOA/InterOpOct2017Apps/arraysize-slides.pdf">http://wiki.ivoa.net/internal/IVOA/InterOpOct2017Apps/arraysize-slides.pdf</a>)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Given that ruling:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 2a) VOTable producers should stop writing arraysize=&quot;1&quot;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 2b) VOTable validators should present an unambiguous error message<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for arraysize=&quot;1&quot;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">&nbsp;&nbsp; 2c) Astropy-like and STIL-like clients can carry on unchanged<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Thus (2c) clients can continue to implement unspecified but plausible<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">behaviour for arraysize=&quot;1&quot;, but behavioural differences will<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">disappear as (2a) services stop emitting ambiguous VOTables.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I am therefore wondering if the Erratum should say R2 rather than R1.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">The prescription is simpler, and the implementation is less disruptive.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">The downside of R2 is that there is then no way to specify a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">1-element array.&nbsp;&nbsp;Question: is that a problem?&nbsp;&nbsp;Does anybody<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">actually need to communicate 1-element arrays as distinct from scalars?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">As I pointed out earlier in this thread, FITS BINTABLE has got away<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">with that situation since its invention.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Mark<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Mark Taylor&nbsp;&nbsp; Astronomical Programmer&nbsp;&nbsp; Physics, Bristol University, UK<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:m.b.taylor@bris.ac.uk">m.b.taylor@bris.ac.uk</a> &#43;44-117-9288776&nbsp;&nbsp;<a href="http://www.star.bris.ac.uk/~mbt/">http://www.star.bris.ac.uk/~mbt/</a><o:p></o:p></p>
</div>
</div>
</body>
</html>