DALI 1.1 working draft available
Mark Taylor
M.B.Taylor at bristol.ac.uk
Wed Feb 17 17:17:24 CET 2016
Hi DAL,
On Mon, 8 Feb 2016, François Bonnarel wrote:
> This email to advertize you that the DALI 1.1 working draft, edited by
> Pat Dowler is available since last week on the IVOA website, in the
> "Standards" section.
I have some comments. For reference, the version I'm commenting on is
WD-DALI-2015-10-27, from http://www.ivoa.net/documents/DALI/20151027/.
Rubric:
There is an extra "Status of this Document" section *after* the
Table of Contents that claims it's a REC - should be removed.
Sec 2.3.3:
The example of the DALI-examples RDFa property "generic-parameter"
in this section uses what is obviously a TAP-based example.
But I *think* we eventually decided (following Markus's plan not
Pat's) to provide examples for TAP specifically using TAP-specific
properties "query" and "table" rather than the "generic-parameter"
as here (the current TAP 1.1 draft in volute, projects/dal/TAP/TAP.tex
r2949, backs this up).
That makes this example a bit misleading. Perhaps it would be
better to replace it with a DALI-example snippet for a protocol
that is actually expected to use property="generic-parameter".
Sec 2.3.2, 2.5:
The deprecated term "IVORN" should be replaced (by "IVOID" or
"IVOA Identifier", perhaps with a reference to the Identifiers
document).
Sec 3:
This asserts "A DAL job is defined by a set of parameter-value pairs",
and goes on to give examples like "FOO=bar", but it doesn't actually
discuss anywhere how these parameters are passed from client to
service.
It is generally done using either the application/x-www-form-urlencoded
MIME type in the query part of a URL for a GET request
(?p1=v1&p2=v2...) or the multipart/form-data MIME type
in the body of a POST request. POST with
application/x-www-form-urlencoded in the query part may also be
permitted. The only place I know these MIME types
are defined is written down is in the HTML standard:
https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4
This is standard practice, so maybe "obvious", but it might be
a good idea to make it explicit here, so it's easier for
DALI client standard authors and implementers to know where to
go when they're trying to remember how you're supposed to encode
embedded spaces etc.
This affects section 2.1 as well, where it says that you can
POST additional parameters to a given resource, but is not
explicit about how to do that.
Sec 3.3, 3.3.1, 3.3.2:
Integer, real and boolean value representation is mandated here
to be done in accordance with the XML Schema Datatypes standard.
That makes sense for specifying parameters in
application/x-www-form-urlencoded or multipart/form-data form
as part of an HTTP GET or POST, but not if the values are
encoded for output in a VOTable document, since VOTable
has its own encoding rules. It's kind of obvious that that would
be the case, but since sec 3.3 explicitly says that it's
talking about the cases "as parameter values when invoking simple
services, as data values in response documents (e.g. VOTable), etc"
it would be better to be explicit here about exactly when
these literal representations are to be used.
Sec 3.3.3:
The ISO-8601-like format mandated here is (admittedly, informally)
written as follows:
YYYY-MM-DD['T']hh:mm:ss[.SSS]
but following expected (by me, anyway) usage of square brackets,
that doesn't seem to match the textual description of an optional
time part. I think this would be closer to what's intended:
YYYY-MM-DD['T'hh:mm:ss[.SSS]]
The cited references (FITS and STC) both allow arbitrarily many decimal
places for the seconds part. If we want to follow that, it should
say something like
YYYY-MM-DD['Thh:mm:ss[.SSS...]]
and it would be a good idea to add an example where the number of
decimal places is not equal to 3. Otherwise (if decimal places
are supposed to be exactly either 3 or 0) there should be an
explicit comment to that effect.
The text says
"Date and time values must be represented using the [iso8601-like]
convention established for FITS"
and later
"In cases where values may be expressed using Julian Date (JD)
or Modified Julian Date (MJD) ..."
which looks like an inconsistency, but it maybe just needs more
careful wording to indicate what's meant (though I'm not actually
sure what that is - see the next point).
"Timestamp values serialised on VOTable must have the following
metadata in the FIELD element:
datatype='char' arraysize='*' xtype='timestamp'."
This looks like it's saying that if service providers want to
return data tables with columns containing date/time information,
they MUST use the iso8601-like format described here,
and not e.g. MJD, JD, decimal year etc. I suspect that's not
the intention, in which case it needs to be reworded.
If that is the intention, I don't think it should be.
See below for more comments about the attribute values mandated here,
and a separate posting for more comments about timestamps and xtypes.
Sec 3.3.4, 3.3.5, 3.3.6, 3.3.7:
These sections all mandate that the datatype attribute of the
corresponding FIELD element must be "double". Is there a good
reason that services cannot be permitted to use float (or even
an integer type) here? For large results, unwarranted
double precision might mean significantly larger output tables,
and could also be misleading (suggesting more precision than
the values support). It may also make it difficult for
services which have this data in existing tables in a
numeric type other than double (they'd have to rewrite columns
rather than just annotate them appropriately).
I seem to remember that the corresponding requirement in Simple
Cone Search has caused trouble in the past, leading to services
that fail validation, even though there's nothing really wrong
with them.
Sec 3.3.3 and 3.3.7:
These sections mandate that the arraysize attribute of the
corresponding FIELD element must have the value "*".
I don't see any good reason that services should not be permitted
to use some other length specification that does the same job
(e.g. arraysize="19" for iso8601-alike timestamps).
Sec 4.1:
Long lines in table (Content-Length and Last-MOdified entries)
overflow in PDF document.
"Last-MOdified" -> "Last-Modified"
Sec 4.4:
name = "QUERY_STATUS"2. - erase the rogue '2'.
Long lines in table (ERROR and OVERFLOW entries)
overflow in PDF document.
I have some other comments related to timestamps and xtypes.
I plan to write these in a separate message, crossposted to the
time domain mailing list.
Mark
--
Mark Taylor Astronomical Programmer Physics, Bristol University, UK
m.b.taylor at bris.ac.uk +44-117-9288776 http://www.star.bris.ac.uk/~mbt/
More information about the dal
mailing list