[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Best practices: Namespaces, versions and RDDL
- From: Eric van der Vlist <vdv@dyomedea.com>
- To: "xml-dev@lists.xml.org" <xml-dev@lists.xml.org>
- Date: Fri, 23 Mar 2001 09:02:34 +0100
It appears to be a common (and useful) usage to use namespace URIs to
carry **some** level of information about the release of a vocabulary to
the applications.
On the other hand, changing a namespace URI means that older
applications will not recognize the vocabulary at all, breaking any
possibility of compatibility.
For instance, if XSLT transformation has defined a template to match
{http://examplotron.org/0.0.0.1.a}:foo, this template will not match
{http://examplotron.org/0.0.0.1.b}:foo and would need to be duplicated
to take both versions into account.
This seems then to be a behavior that should be reserved for major
release changes, i.e. the one that are changing enough of the vocabulary
syntax or semantics to require a change in the supporting applications
but is too extreme for minor release changes.
Attaching something, especially when it includes a user readable
documentation like RDDL does, adds a new requirement to this versioning
since it would be really bad that minor editions to a RDDL document
(such as the correction of a typo) had an impact on the namespace URI.
I'd like to get your feedback on a scheme (inspired by the way the W3C
is controlling the version of their specifications) that could be used
to solve this problem.
A based URI could be used to identify the vocabulary, e.g.:
http://examplotron.org/
This based URI would ***NOT*** be used as a namespace and would be
rewritten to present the latest version of the RDDL document describing
the vocabulary.
At the other side of the chain, each version would be identified by (at
least) 1 revision number: M (Major) and m (minor) and the location of
version M.m would be derived from these numbers, e.g.:
http://examplotron.org/0/3/
(http://examplotron.org/M/m/)
These full paths wouldn't be used either as namespaces URI since they
change too often for this purpose.
The namespace URIs would be those affected to major releases:
http://examplotron.org/0/
(http://examplotron.org/M/)
and these URIs would be rewritten to point to the latest minor release
for this major release.
If at a given point in time, I have the following releases:
http://examplotron.org/1/2/ (1.2)
http://examplotron.org/1/1/ (1.1)
http://examplotron.org/0/3/ (0.3)
http://examplotron.org/0/2/ (0.2)
http://examplotron.org/0/1/ (0.1)
http://examplotron.org/ would be rewritten to
http://examplotron.org/1/2/ (1.2, latest version)
and the namespaces URIs would be:
http://examplotron.org/0/
rewritten as http://examplotron.org/0/3/ (0.3, latest version 0.x)
and
http://examplotron.org/1/
rewritten as http://examplotron.org/1/2/ (1.2, latest version 1.x)
Does it make sense ?
Thanks
Eric
--
Rendez-vous à Paris pour net2001.
http://www.mynet2001.net/pgmonline2001/it2.html
------------------------------------------------------------------------
Eric van der Vlist Dyomedea http://dyomedea.com
http://xmlfr.org http://4xt.org http://ducotede.com
------------------------------------------------------------------------