Discovering Data Collections Note

Markus Demleitner msdemlei at ari.uni-heidelberg.de
Tue Nov 8 11:28:55 CET 2016


Dear Registry community,

Sorry for replying to myself, but as soon as my brain got a bit of
extra air, I remembered what had worried me yesterday at this point:

On Mon, Nov 07, 2016 at 10:16:56AM +0100, Markus Demleitner wrote:
> > groovy:000> new URI("ivo://ivoa.net/std/SIA#query-2.0;aux").getFragment()
> > ===> query-2.0;aux
> 
[...]
> Postfixing the aux is less problematic, and might even make
> version-constrained queries easier.  I'd have to see if there's any
> hidden pitfalls if people really liked them a lot better.  

The pitfall is actually not terribly hidden.  By Identifers 2.0
(http://www.ivoa.net/documents/IVOAIdentifiers/20160523/REC-Identifiers-2.0.html#tth_sEc4.2),
"normal" service discovery with new-style, versioned ids should be by
matching

  standard_id LIKE 'ivo://ivoa.net/std/exampleProto#query-1.%'

(or equivalent); this is because a version 1 client should be able to
operate all of 1.0, 1.1, 1.2, etc., and hence should also try to
discover all of them.

When you postfix the aux, these clients will immediately get all
auxiliary capabilities, which typically they won't want.  Worse,
writing "no auxiliary capabilities, please" (the enumeration use
case) really becomes ugly even if you're aware that auxiliary
capabilities might come your way; current IVOA versioning rules say
that version strings might look like 1.04, so "query-1._" isn't safe.

We could say we should restrain versions to just major.minor (and
you'd have my vote), but enabling postfixing the -aux doesn't sound
like a strong reason for that.

Lest I forget that again, I've added a rationale for the chosen
identifier form in 2.1.2 for the PEN draft (Volute rev. 3697);
formatted on http://docs.g-vo.org/discovercollections.pdf.

The new text is, roughly:

  This particular form for the protocol identifier is chosen to work
  well with the intended way to discover services with such new-style
  standard identifiers. As discussed in sect. 4.2 of the Identifiers
  standard, services supporting the major version n of the protocol std
  would query for, using SQL patterns, 

  ivo://ivoa.net/std/std/tag-n.%,

  where the wildcard allows the simultaneous discovery of all minor
  versions. This is the intended behaviour, since by IVOA versioning
  policies a client for version n should be able to operate all of n.0,
  n.1, and so on.

  If auxiliary ids were built by appending the -aux, this pattern would
  match auxiliary capabilities as well, thus making the enumeration use
  case extremely cumbersome to cover. Prepending the aux-, on the other
  hand, would require embedded wildcards in the pattern of the data
  discovery use case - where both primary and auxiliary capabilities
  should be investigated while protocol versions are typcially a
  secondary concern -, which at the very least is an efficiency
  concern. See sect. 2.2 for the recommended discovery patterns.

This certainly is another hindrance on the way of the whole document
to the short list to the Pulitzer Prize, but frankly, my hopes in
that direction had be modest even before.

       -- Markus


More information about the registry mailing list