VOSI 1.1 initial working draft
Mark Taylor
M.B.Taylor at bristol.ac.uk
Tue Feb 16 18:02:36 CET 2016
Brian, Pat and GWS,
I have implemented a client for the scalable tableset endpoint as
proposed in the VOSI-1.1-20160129 WD.
If you like, you can try it out using this topcat pre-release:
ftp://andromeda.star.bris.ac.uk/pub/star/topcat/pre/topcat-full_vosi11.jar
Open the TAP window and point it at Pat's implementation as advertised
at http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap (or just select
the "CADC Table Query (TAP) Service" from the list of TAP services),
To see this option at work, in the TAP window, use the
TAP|Metadata Acquisition submenu, and select one of
VOSI11-1step (without detail=min)
VOSI11-2step (with detail=min)
(changing the option re-acquires the metadata).
If you run topcat with the -verbose flag it will log to stderr
what HTTP connections it's actually making.
This service implementation seems to work as described in the WD.
So, I think the proposal is implementable, at least for this service
(which has well-behaved table names).
However, I have a few comments/suggestions on the text
(all concerning section 3.4, "Table Metadata"):
Table name specification:
When requesting table details (columns & foreign keys) the table
name is appended as a child resource of the tables endpoint,
i.e. following a "/" after the ".../tables" part of the URL.
Since this is only one level of hierarchy, I think it would be
more natural to specify it as a parameter value, i.e.:
http://example.net/srv/tables?table=ivoa.ObsCore
rather than
http://example.net/srv/tables/ivoa.ObsCore
especially since lots of TAPVizieR tables contain '/' characters.
If you don't agree, that's OK. But either way I'd like to have
some explicit text and an example for how to cope with table names
that have weird characters in, as many (especially from TAPVizieR) do,
to make sure that I know how to ask for details for, e.g.
"J/A+A/364/712/table6".
303 Redirect:
I can sort of see the point of issuing a 303 redirect to the
?detail=min endpoint in the case of refusing the full dataset;
it gives clients a way to determine whether they have been
fobbed off with column-less metadata when that's not what they
asked for. But I'm not sure how useful it is. At least in my
libraries, grubbing around for HTTP response codes is fiddly to do,
and when implementing it I didn't bother, I just assumes that if
there are no columns it's because the service is refusing
to issue them.
In particular the proposed 303 mechanism does not, unlike the
403 Forbidden code suggested in an earlier version of this proposal
(http://mail.ivoa.net/pipermail/grid/2015-May/002728.html),
do much to address the problem of backward compatibility,
since many clients won't even notice that they didn't get a 200
(java.net.HttpURLConnection.getFollowRedirects() defaults to true,
and I'd guess similar things in other languages, though not curl).
So I'd be inclined to suggest dropping this part of the proposal,
since it complicates matters without adding much.
Detail specification:
As proposed, there are the following endpoints:
tap_url/tables?detail=min - service must not include detail
tap_url/tables - service decides whether to include detail
In some cases, it's not clear whether it's a good idea for the service
to supply or withold the detail, and it could be helpful for both
ends if the client could supply a hint.
E.g. if the client is going to grab all the detail straight away
in any case (by a load of unconditional per-table queries), then
a service with a large-but-not-huge number of tables isn't helping
anybody by forcing detail=min.
I would suggest instead:
tap_url/tables?detail=min - service must not include detail
tap_url/tables?detail=max - service decides, but client would like detail
tap_url/tables - service decides, client has no preference
The service remains free to implement detail=max in the same way
as for no detail argument.
Having written that ... maybe it's not such a great idea, since it's
not intuitively obvious that detail=max should be able to decay to
detail=min, maybe it should fail instead. If that all sounds too
complicated, maybe just leave it as is. It's a thought anyway.
QName formatting:
A couple of schema types come out wrong in the formatted text;
the XML document root types are quoted in the LaTeX as:
{http://www.ivoa.net/xml/VODataService/v1.1}TableSet
{http://www.ivoa.net/xml/VODataService/v1.1}Table
and those curly brackets are effectively ignored by the LaTeX
processing. I think the curly brackets should be escaped using
preceding backslashes in the LaTeX source, or you might want to
apply some different formatting to identify those strings as QNames.
typo:
foreigh->foreign
Mark
On Tue, 2 Feb 2016, Brian Major wrote:
> Dear GWS,
>
> An initial working draft of version 1.1 of the IVOA Support Interfaces
> (VOSI) document has been posted:
>
> <goog_999565820>
> http://www.ivoa.net/documents/VOSI/20160129/
>
> The aim of this version is to offer a more scalable mechanism for viewing
> table metadata. As per the agreements reached in Sydney, the document
> describes how this can be achieved by:
>
> - Allowing services to implement and enforce a detail=min parameter on
> the /tables endpoint on which on a subset of table metadata (which does not
> include columns) is returned.
> - By allowing clients to view the full metadata of a single table on
> the /tables/<table-name> endpoint.
>
> Pat Dowler, along with editing this version of the document (thanks!), has
> prototyped the functionality into the CADC TAP service. Below is the
> tables endpoint:
>
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables
>
> You can see how the request above enforces the minimum view by issuing a
> redirect with the detail=min parameter included:
>
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables?detail=min
>
> Clients can get full details on single tables by adding the table name to
> the path. For example:
>
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/ivoa.ObsCore
>
>
> For your convenience, a view of the diff on the source .tex file can be
> seen here:
>
> https://volute.g-vo.org/viewvc/volute/trunk/projects/grid/VOSI/VOSI.tex?r1=3233&r2=3232&view=diff&diff_format=f
>
>
> Cheers,
> Brian
>
--
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 grid
mailing list