2-stage identifier resolution
Norman Gray
norman at astro.gla.ac.uk
Fri Apr 21 04:09:18 PDT 2006
Ray
On 2006 Apr 20 , at 21.17, Ray Plante wrote:
> On Thu, 20 Apr 2006, Norman Gray wrote:
>> Quoth RFC3986, section 3.5:
>>
>> It's the client that dereferences the fragment: ``the fragment
>> identifier is separated from the rest of the URI prior to a
>> dereference, and thus the identifying information within the fragment
>> itself is dereferenced solely by the user agent, regardless of the
>> URI scheme.''
>
> I think this is satisfied. The user agent strips off the fragment,
> gives
> the IVOA ID to a registry and gets back a description containing a
> service
> endpoint. The agent then passes the fragment to that endpoint to
> get the
> part of the resource--i.e., one VOEvent record.
The '#' vs. '?' could potentially support the two-step v. one-step
alternative that you described and Roy implied. Thus <ivo://
nvo.caltech/VOEventRepo#60601> is resolved in two steps, by the
client resolving <ivo://nvo.caltech/VOEventRepo> and then querying
for '60601' (as Roy said). But <ivo://nvo.caltech/VOEventRepo?60601>
is potentially resolvable on the registry, as an added-value service,
returning a VOEvent masquerading as a VOResource.
As a side issue:
It occurs to me that there's an alternative way of handling this. At
the moment, IVO URIs are resolved via queries to a Registry service
(these are still SOAP queries, aren't they?). The alternative is to
have an ivo-to-http mapping defined, so that this URI maps to <http://
ivo.example.org/nvo.caltech/VOEventRepo> or <http://ivo.example.org/
nvo.caltech/VOEventRepo?60601>, which can be directly dereferenced,
or passed around in software, to read the corresponding VOResource
directly.
This is one of the ways (indeed, it may be the most common way) that
DOIs are resolved. URI <doi:10.1145/945645.945664> can be resolved
by turning it into <http://dx.doi.org/10.1145/945645.945664> and
dereferencing it. Easy!
The extra goodness that could come this way is that by setting the
HTTP Accept header, you can (by design) indicate the desired format
of the result. Thus dereferencing <http://ivo.example.org/
nvo.caltech/VOEventRepo?60601> could return a VOResource _or_ a
VOEvent depending on the Accept header.
> Which brings me to the my last point, which is most important.
> From the
> perspective of the IVOA ID spec, there is no difference between #
> and ?.
> So either should be fine. On the other hand, I do not perceive any
> possible disasters either.
Indeed, and I take the point that there are two specs relevant here.
For what it's worth, I don't see any specific disasters here either.
But the point of coding in tune with a standard's assumptions and
design is that you don't have to be imaginative. But if you code
against a standard's design and assumptions, you have to think of the
various ways things could go wrong, and the ways in which libraries,
or proxies, or next year's clever thing will potentially mess things
up or freeze you out. That's really all I was saying -- it wasn't
meant to be a biggie.
All the best,
Norman
--
------------------------------------------------------------------------
----
Norman Gray / http://nxg.me.uk
eurovotech.org / University of Leicester, UK
More information about the registry
mailing list