VOSI 1.1 review
Markus Demleitner
msdemlei at ari.uni-heidelberg.de
Sat May 7 15:26:15 CEST 2016
Dear GWS,
[if you're on the DAL mailing list as well: sorry for the deluge,
this should have reached you 18 hours ago, but the list isn't gws@,
it's grid@]
I took the liberty of committing some, I claim, content-preserving
markup fixes into VOSI 1.1, rev. 3389.
However, here are some points regarding contents that I'd like to
make and perhaps discuss in Cape Town (what's left after might go to
the RFC page...):
(1) Abstract: "to participate in the IVOA" sounds a bit like 2003. As does,
now that I re-read it, the entire abstract that doesn't really say what
VOSI actually is about. How about:
VOSI (Virtual Observatory Support Interfaces) defines a set of three
endpoints that allow clients and other VO components to discover
service metadata and properties from a service rather than from a
registry. Specifically, a capabilities endpoint serves information on
access modes to the service, an availability endpoint informs about
scheduled or accidental downtimes and their reasons, and a table
metadata endpoint gives the structure of any table(s) underlying the
service. The endpoints are defined in terms of (trivial) HTTP-based
interfaces and XML schemata defining the responses.
(2) Sect. 2, last paragraph: "When using the REST binding, any HTTP URLs
may be used." This may be a minor thing, but I think experience has
shown that it's easy to mess things up with this much freedom. I'd much
prefer if this said:
In the REST binding, standards SHOULD arrange URL schemes such that
all endpoints, including the VOSI endpoints, are siblings. In this
way, the capabilities endpoint -- which in effect serves as a roadmap
to the service -- can be located by simply replacing the last
component of the path in any service access URI and replacing it with
the literal \texttt{capabilities}.
The exception to this rule is availability. The reason for this
exception is that these endpoints will typically be hosted at a
physically different location.
(this would need a redactional change further down to fix the
capabilities name).
(3) are you sure you want to keep the huge element names with the full
namespaces? In registry, we have a few brief introductory text mapping
canonical prefixes to URIs and thus dodge all the ugly typesetting
almost inevitable with long URIs in running text.
(4) Sect. 3.3 says:
When reporting availability, the service should do a good check on its
underlying parts to see if it is still operational and not just make a
simple return from a web server, e.g., if it relies on a database...
I've never liked that language. If availability ever actually gets
used, clients will probably fire off a large number of requests to it.
Doing actual tests for each of these requests would put a severe strain
on the resources. I'd much rather read:
The availability report should reflect the results of an actual test
of the resource described. Operators may cache these results for a
reasonable time span. Serving an actual availability request should
be cheap resource-wise, and it should be fast so as not to discourage
clients from using availability.
(5) Sect 3.4 still has the "detail" parameter. I still claim this
should be removed. It doesn't help the client (at least until all VOSI
1.0 services are dead, it would still have to be prepared to process
in-root table metadata, and even after they'd probably want the
one-document form if possible). It also doesn't help the service, as it
will have to implement the split form even if it doesn't need it.
No, I still claim we can simply say:
In the REST binding, the tableset metadata may be a hierarchical web
resource with a registered URL. In this case, a request to the tables
endpoint returns a document without \xmlel{Column} or
\xmlel{ForeignKey} elements. This signals to a client that detailed
table metadata is available from child resources of the table
resource, named with the fully-qualified table name. For example:
GET http://example.net/srv/tables/ivoa.ObsCore
would return a Table document describing the ivoa.ObsCore table.
This is primarily intended for services with a large number of tables
and/or columns for which a full TableSet document would be
prohibitively large.
Better for the service -- it will simply choose the representation most
appropriate for the data it serves --, at least as good for the client,
as it just has to inspect the response it gets rather than worry about
possible redirects to discover service behaviour.
(6) In Sect. 4, it says "If such a capability is provided..." for
capability and availability capabilities, where they are made mandatory
above. I think for consistency we should strike these "if"s.
(7) Some examples have a schemaLocation, some don't... Anyway, my
recommendation would be to have the files external and include them so
they can be schema-validated before REC-ing the whole thing. May I?
(8) I'm against including the schemas in the document. It's wasting a
lot of paper for something nobody in their right mind would ever read,
and it makes for a second place where things would need to get fixed
when there's a problem.
See you soon,
Markus
More information about the grid
mailing list