- From: Jeff Heflin <heflin@cse.lehigh.edu>
- Date: Mon, 09 Dec 2002 11:59:11 -0500
- To: WebOnt <www-webont-wg@w3.org>
As I was actioned at last Thursday's telecon, here is closing text for the ontology versioning issue. I have essentially taken my proposal from 12/02 and made the agreed-upon changes: We will add the following identifiers to the OWL namespace: priorVersion backCompatibleWith incompatibleWith deprecatedClass deprecatedProperty In short, all of these identifiers are "extralogical" in the sense that they are not intended to be used by inference engines and that none of them will have any additional impact on the semantics. In addition, we will remove the following identifier from the OWL namespace. versionInfo Each of the new identifier are described below: priorVersion ------------- Triple usage: <newdoc> priorVersion <olddoc> The ontology identified by <olddoc> is a priorVersion of the one identified by <newdoc>. This has no meaning in the model theoretic semantics other than that given by the RDF(S) model theory. However, it may be used by software to organize ontologies by versions. backCompatibleWith ----------------------- Triple usage: <newdoc> backCompatibleWith <olddoc> The ontology identified by <newdoc> is a a later version of the one identified by <olddoc>, and is backward compatible with it. In particular, this 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). If backCompatibleWith is not declared for two versions, then compatibility should not be assumed. Like priorVersion, this has no meaning in the model theoretic semantics other than that given by the RDF(S) model theory. Note, 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 would change the model theoretic semantics, but at this time it is not clear what the correct approach would be. A later version of OWL may address this issue. incompatibleWith ----------------- Triple usage: <newdoc> incompatibleWith <olddoc> The ontology identified by <newdoc> is a a later version of the one identified by <olddoc>, and is not backward compatible with it. Essentially, this is for use by ontology authors that want to be explicit that documents cannot upgrade to use the new version without some changes. 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 meaning in the model theoretic semantics other than that given by the RDF(S) model theory. However, authoring tools may 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 rdf:resource="http://www.example.org/vehicle-1.0"> <owl:priorVersion rdf: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 rdf:resource="#Car" /> <!-- note that sameClass only means that the classes have the same extension, so this DOES NOT lead to the entailment that Automobile is of type DeprecatedClass too --> </owl:Class> <!-- assume hasDriver is obsolete and its inverse drives is preferred --> <owl:DeprecatedProperty rdf:ID="hasDriver" /> <owl:Property rdf:ID="drives" > <owl:inverseOf rdf:resource="#hasDriver" /> </owl:Property> <!-- 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="backCompatibleWith"> <rdfs:domain rdf:resource="#Ontology" /> <rdfs:range rdf:resource="#Ontology" /> <rdfs:subPropertyOf rdf:resource="#priorVersion" /> </rdf:Property> <rdf:Property rdf:ID="incompatibleWith"> <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>
Received on Monday, 9 December 2002 11:59:20 UTC