LANG: Proposal to close ontology versioning (ISSUE 5.14)

Hello everyone,

Here's a new proposal for ISSUE 5.14 (Ontology Versioning) that I hope
won't be too controversial. This issue has been dormant for almost two
months now. If you want to refresh your memory about our previoius
discussions on it, see the threads starting at [1]. A short summary is
also contained in [2]

I propose to add the following identifiers to the OWL namespace:

priorVersion
backCompatWith
deprecatedClass
deprecatedProperty

In short, none of these identifier will have any impact on the
semantics, they are all "extra-logical." I will now describe each of
these in turn.

priorVersion
-------------
Triple usage: <url> priorVersion <url>

The second URL identifies an ontology that is an earlier version of the
first. This has no meaning in the semantics, but could be used by
software to organize ontologies by versions.


backCompatWith
---------------
Triple usage: <url> backCompatWith <url>

The first URL is a later version of the second, and is backward
compatible with it. In particular, it indicates that all identifiers
from the previous version have the same intended interpretations in the
new version. Thus it is a hint to document authors that they can safely
change their documents to commit to the new version (by simply updating
namespace declarations and imports statements to refer to the URL of the
new version). Note that this feature has no impact on the semantics.

This approach does not address the problem described in
Section 3.2 of the Requirements Document (under RDF(S) Support). There,
we gave an example where we wanted to "fix" an incorrect definition of
Dolphin. Solving this problem would require versioning capabilities that
woiuld affect the semantics, but at this time it is not clear what the
correct approach would be. A later version of OWL may address this
issue.


deprecation:
---------------
Triple Usage: 	<classId> rdf:type <owl:DeprecatedClass> or 
		<propertyId> rdf:type <owl:DeprecatedProperty>

Deprecation is a feature commonly used in versioning software (for
example, see the Java programming language) to indicate that a
particular feature is preserved for backward-compatibility purposes, but
may be phased out in the future. Here, a specific identifer is said to
be of type DeprecatedClass or DeprecatedProperty, where DeprecatedClass
is a subclass of rdfs:Class and DeprecatedProperty is a subclass of
rdf:Property. By deprecating the term, it means that the term should not
be used in new documents that commit to the ontology. This allows an
ontology to maintain backward-compatibility while phasing out an old
vocabulary (thus, it only makes sense to use deprecation in combination
with backward compatibility). As a result, it it easier for old data and
applications to migrate to a new version, and thus can increase the
level of adoption of the new version. Once again, this has no effect on
the semantics, but authoring tools should use it to warn users when
checking OWL markup.


Example:
--------

<owl:Ontology rdf:about="">
   <rdfs:label>Vehicle Ontology, v. 1.1</rdfs:label>
   <owl:backCompatWith resource="http://www.example.org/vehicle-1.0">
   <owl:priorVersion resource="http://www.example.org/vehicle-1.0">
</owl:Ontology>


<!-- assume Automobile is now the preferred term for Car -->
<owl:DeprecatedClass rdf:ID="Car" />

<owl:Class rdf:ID="Automobile" />
   <owl:sameClassAs resource="#Car" />
</owl:Class>

<!-- assume a hasWheels property should no longer used (maybe because a
more specific numWheels property is in favor) -->
<owl:DeprecatedProperty ID="hasWheels" />

<!-- other class and property definitions follow -->


Additions to http://www.w3.org/2002/07/owl
--------------------------------------------

<rdf:Property rdf:ID="priorVersion">
   <rdfs:domain rdf:resource="#Ontology" />
   <rdfs:range rdf:resource="#Ontology" />
</rdf:Property>

<rdf:Property rdf:ID="backCompatWith">
   <rdfs:domain rdf:resource="#Ontology" />
   <rdfs:range rdf:resource="#Ontology" />
   <rdfs:subPropertyOf rdf:resource="#priorVersion" />
</rdf:Property>

<rdfs:Class rdf:ID="DeprecatedClass">
   <rdfs:subClassOf resource="Class" />
</rdfs:Class>

<rdfs:Class rdf:ID="DeprecatedProperty">
   <rdfs:subClassOf resource="Property" />
</rdfs:Class>

[1] http://lists.w3.org/Archives/Public/www-webont-wg/2002Sep/0090.html
[2] http://lists.w3.org/Archives/Public/www-webont-wg/2002Sep/0272.html

Received on Tuesday, 19 November 2002 11:24:01 UTC