[versioning-3] is redirection enough?
Norman Gray
norman at astro.gla.ac.uk
Thu Jan 31 07:53:41 PST 2008
On 2008 Jan 29, at 21:58, Rob Seaman wrote:
> I suggest that there should also be a "latest" link that is
> redirected as appropriate. At any given time there will be several
> historical versions, a single current version, and a single version
> under development. Presumably each vocabulary will contain metadata
> describing versioning such that an application that cares about such
> changes can detect them. Beyond that we start to enter a realm of
> evolutionary complications that I don't think we're ready to deal
> with.
I suppose this depends on how the vocabularies are served, and on how
clients use them.
Scenarios:
1. Clients use http://blah/latest#X, and so GET http://blah/latest,
this returns a 302 Found to http://blah/2008, and that's the RDF that
the client uses. In this case, the versioning is done partly by the
HTTP protocol in pointing to the latest version, and partly by the
RDF, since the latest version of a vocabulary would presumably include
the links to the version it replaces. This is how DC works.
2. Clients GET http://blah/latest and are returned (200) the contents,
as RDF, of the latest version. I think this is a non-starter, since I
think serving it this way would require those RDF contents to include
an internal declaration of http://blah/latest as their namespace, and
not the http://blah/2008, and that's too confusing.
3. Clients use http://blah/2008 as the namespace, and GET that. In
this case, the only way clients learn about an updated vocabulary is
if either (a) when it's superceded, a vocabulary is reissued with SKOS
mappings to the replacement terms; or (b) a new version of a
vocabulary contains SKOS mappings to the terms it replaces, and
documentation of terms that are deprecated; or (c) vocabularies don't
contain such mappings internally, but a separate list of inter-version
mappings is maintained at an unchanging well-known URL, which
applications can retrieve when necessary.
The Jakob Voß paper is interesting, but doesn't really seem to deal
with the problem at this level.
I think (2) is out, because of the namespace complications. I think
(3a) is out, because reissuing a vocabulary with changes gives me the
creeps.
(3b) seems awkward, because it doesn't alert a client to the presence
of a new vocabulary. But I don't believe that a client needs to know
this (though it might depend on what the client is wanting to do). If
a client has retrieved a vocabulary file at http://blah/2008, it is
because it needs to know something about a concept in the namespace http://blah/2008
(via either scenario 1 or 3), which it doesn't have in-built
knowledge of. It discovers that it is linked to a previous version of
that vocabulary which it _does_ know about, so it goes away happy.
Alternatively, if it has built-in knowledge of http://blah/2009, then
it also presumably has knowledge of that vocabulary's links to the
earlier version at http://blah/2008, which means it doesn't even have
to bother retrieving the 2008 version's RDF.
Thus, theorem: a client never needs to be directed forward in time in
a list of vocabulary versions.
If so, then (1), (3b) and perhaps (3c) all seem reasonable to me.
Thus, when Bernard says:
>> Wouldn't it be better for me to say that the thing is a http://blah/2008#X
>> once and for all? At least then I'm committing myself to what
>> this concept means in 2008, and not whatever shades of meaning it
>> might acquire in the future.
> But what happens to applications relying on this URI, but wanting to
> use only up-to-date versions of the concept. How will they know
> when, if, how to ... update to new URIs and descriptions?
perhaps the answer is: they don't. If the application knows what http://blah/2009#X
is, then it knows what .../2008#X is (because .../2009 explained),
and if it doesn't, then it doesn't care anyway.
And:
> Deprecation mechanism can be implemented in structured vocabularies.
> Actually we manage that in Mondeca's software. You can't delete an
> indexing concept without redirecting to another one. It does solve
> every problem, for example it does not provide any solution to the
> situation where a single concept is split into several ones, etc.
Sure. I thought the SKOS standard had a variety of annotations
defined for expressing such deprecations, but I can't find it in the
current (20080125) reference. But I'm sure there are other
vocabularies defined for this. Does Mondeca use one such?
Best wishes,
Norman
--
Norman Gray : http://nxg.me.uk
eurovotech.org : University of Leicester
More information about the semantics
mailing list