[DALI] comments on WD
Mark Taylor
m.b.taylor at bristol.ac.uk
Fri Apr 20 09:24:06 PDT 2012
Markus's comments remind me that I sent a list of comments on the
DALI WD to Pat a couple of months back which I don't think ever made
it to the mailing list. Some are editorial some are more substantial.
I copy the message below; I may or may not get round to summarising
the substantial points on the DALI wiki page. I'll note here though
that adopting Markus's suggestion of significantly de-complicating
the parameter capabilities would get rid of a couple of the
queries/concerns I've brought up.
--
Mark Taylor Astronomical Programmer Physics, Bristol University, UK
m.b.taylor at bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
Date: Tue, 7 Feb 2012 12:50:18 +0000 (GMT)
From: Mark Taylor <m.b.taylor at bristol.ac.uk>
To: Patrick Dowler <patrick.dowler at nrc-cnrc.gc.ca>
Cc: Doug Tody <dtody at nrao.edu>,
"Durand, Daniel" <Daniel.Durand at nrc-cnrc.gc.ca>,
Mike Fitzpatrick <fitz at tucana.tuc.noao.edu>
Subject: Re: WD-DALI-1.0
Hi Pat et al.,
On Mon, 6 Feb 2012, Patrick Dowler wrote:
> I finally found time to make the changes to the doc from my Pune notes.
I'd
> like to get this up asap (like tomorrow) so that I can (optimistically)
make
> another pass by the end of feb. If you have time to scan for anything I
missed
> that you recall we discussed that would be great.
Some comments. In some cases I'm just flagging issues, not sure I
have a good answer. Have very little recollection of what was
discussed in Pune (actually, not sure I was in the session), so
this is just a general response to the document as it stands.
General:
The document refers to "DAL services" or "all DAL services"
when it means services compliant to this DALI specification.
Simple Cone Search v1.0 at least could be described as a DAL
service but fails to meet this spec in several regards.
Would it be better to say "DALI-compliant services"?
Sec 2.1:
"A concrete DAL service specification will specify one or more
asynchronous job list resources..." - reword, either
"A concrete *asynchronous* DAL service..." or
"... will specify zero or more asynchronous ...".
Same applies at the end of section 2.2 for sync services.
Sec 2.2:
GET and POST - are we saying that every DALI service MUST accept
requests using both GET and POST? If so, must they treat them
as having the same semantics? If so, make this clear (and if not,
make clear what is intended). Do we need to worry about
safety/idempotency issues which might make GET inappropriate
in some cases (see RFC2616 sec 9.1)?
"Clients should generally expect to get redirects..." - better to
say "Clients should generally be prepared to handle redirects..."
(otherwise a client might be justified in acting surprised if it
gets a direct response).
Sec 2.5:
"TODO: example table document" - it's done!
Sec 3.1.3:
The rules for multiple values are quite messy, especially the
interaction between specifying multiple param=value pairs and
a single param=value pairs with commas. Do these forms have to
be equivalent? Presumably we're constrained to maintain consistency
with existing DAL standards - what are the constraints?
Sec 3:
What are the rules for parameter name syntax? E.g. are spaces or
other non-alphanumeric characters permitted? Is Unicode catered for?
In the async case presumably this is addressed by UWS, but that
doesn't apply to the sync case.
Probably the best thing is to point at an existing specification
that applies; either say that the same rules UWS enforces
(er, does it enforce some?) apply for sync too, or say the rules
come from application/x-www-form-urlencoded or multipart/form-data
MIME types (do they have the same rules?). For sync queries,
clarify whether it's OK to use either or both of those
content types (or something else?). Is it OK to mix them?
(the example in sec 3.2.5 suggests yes).
What do you do if you want to specify a single unqualified
parameter value containing a comma or a semicolon (i.e. without
the semantics of sec 3.1.3/3.1.4) like GENRE=shake,rattle and roll
- is it impossible? Should you percent-encode it?
Actually for Qualifiers (semicolons) it's probably OK, since sec
3.1.4 says "If specified by the definition of a parameter...".
Something like a position won't have a semicolon unless it has
semantics like that. But for commas it's presented here as
fundamental to the parameter syntax, so it's harder.
Sec 3.2.2:
I don't much like the rule that the service MUST use the latest
recommendation it supports if the client does not specify.
What if the support for the latest version is experimental/poor?
Any reason why an absent version specification from the client
can't just mean the server gets to decide?
Specifying dated pre-recommendation version numbers like
VERSION=1.1-20120601: I can see it's well-defined, but in view
of the way those numbers can proliferate it looks too complicated
to be useful. The client might ask for a version which is later
than the server knows about, and even if the two versions are
close enough that interaction would work well, the request would fail.
Given how long it can take before standards get to REC sometimes
I'd like to see more pragmatic handling of this. How about
VERSION=1.1* or something, meaning anything on the 1.1 track
but not necessarily the final REC version? More complicated, but
still probably an improvement would be VERSION=1.1-20120601+,
meaning the given version or anything later (including the REC).
Sec 3.2.4:
I don't really like requiring the overflow indicator even if
there may be no rows for MAXREC=0. I'd say if the overflow
indicator is returned it means that at least one row would be
present in a real query, since this is the normal overflow
semantics. But services may omit the the overflow indicator
without implying anything about the number of rows.
Sec 3.2.5:
UPLOAD=table1,http://example.com/t1,table1,http://example.com/t2
^
typo, second "table1" should read "table2".
Sec 4.1:
TBD item about whether result must be named "result" - I don't think
there's much to be gained by mandating this, the UWS service will
supply a redirect anyway (doesn't it?), so the client knows the name.
Sec 4.4:
What's the purpose of requiring a QUERY_STATUS info before the TABLE?
The possbilities are:
Success:
<INFO name="QUERY_STATUS" value="OK"/>
<TABLE/>
Error detected early:
<INFO name="QUERY_STATUS" value="ERROR"/>
<!-- no table -->
Error detected late:
<INFO name="QUERY_STATUS" value="OK"/>
<TABLE/>
<INFO name="QUERY_STATUS" value="ERROR"?
Overflow:
<INFO name="QUERY_STATUS" value="OK"/>
<TABLE/>
<INFO name="QUERY_STATUS" value="OVERFLOW"/>
The only thing an OK status means is that a TABLE is following, but
you can tell that by finding the table. The INFO you're interested
in is the last one in the results resource, which is either after
a TABLE or the only thing there. So, you could ditch the early
INFO and just require a single one, after any TABLE element (if there
is one).
In any case, the wording does not accommodate an early detected error:
"must contain a RESOURCE ... containing a single TABLE" and
"RESOURCE ... must contain, before the TABLE element, an INFO..."
should be modified to take account of the fact that in case of an
early deteced error, no TABLE will be present. I made a similar
comment on TAP section 2.9 at
http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/TAPImplementationNotes
The text "... containing a single TABLE ..." is probably wrong on
another count too, that resource might want to contain multiple tables
(I believe this is allowed for in TAP/PQL).
Mark
More information about the dal
mailing list