How do I know/model the applied version of an ontology specification?

As suggested by Michael Schneider (see [1]), this might be an issue 
worth questioning at the owl-dev mailing list. So, here we go (this 
question is taken from [2]):

With the property owl:versionInfo and other related ones, I can define 
version information of an ontology. However, how can I relate a used 
ontology specification version in a description?
For namespace definitions (as far as I know) it is a good practice to 
use a/the (version unspecific) PURL of a ontology specification, because 
"cool URIs don't change". This PURL should usually resolve to the latest 
version of the ontology specification.
So imagine now the following scenario:

    1. I decribed my instances by utilizing version 0.1 of an ontology 
specification
    2. The author of this ontology specification change now some parts 
of this ontology significantly (weel it's just version 0.1 ;) ) and 
version 0.2 is somehow incompatible to version 0.1
    3. The author included, of course, descriptions in both versions of 
the ontology specification that relate them somehow (e.g. 
owl:priorVersion etc.)
    4. An information consumer requests my instance descriptions and 
thereby resolves the namespace of the ontology specification, which 
directs now to version 0.2
    5. The information consumer cannot fully interpret the instance 
data, because he/she/it doesn't know which version I used for describing 
the instance data.

This leads to the conclusion, that one has explicitly define somehow the 
used version of an ontology specification.

A proposal of a solution is:

    1. Introduce a new property that explicitly relates the version 
specific PURL of the ontology specification e.g., ex:thisVersion 
(dc:hasVersion, dc:isVersionOf are to broad here).
    2. Use the version specific PURLs for prefix definitions
       or
    3. Use dcterms:conformsTo to related the version PURLs of the 
applied ontology specification versions. This would double the 
description amount (prefix and conformatsTo definitions).

What do you think about this proposal? Did I oversee an existing 
property for ex:thisVersion (I looked at several ontology specification 
and found not really one, which at least provide also minimal version 
information for version tracing e.g., owl:priorVersion)?

Here is an example with two version specific IRIs of an ontology 
specification that uses owl:versionIRI (as proposed by Michael 
Schneider, so the issue of "ex:thisVersion" is already solved ;) ):

the description of the owl:Ontology particular as it is part of the 
description that could be delivered, when resolving the canonical 
ontology IRI http://purl.org/ontology/co/core#:

@prefix co: <http://purl.org/ontology/co/core#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

co: a    owl:Ontology ;
     dc:title "The Counter Ontology"@en ;
     owl:versionIRI <http://purl.org/ontology/co/20100913/core#> ;
     owl:priorVersion <http://purl.org/ontology/co/20100804/core#> ;
     ... .

the description of the owl:Ontology particular as it is part of the 
description that could be delivered, when resolving the version IRI 
http://purl.org/ontology/co/20100913/core#:

@prefix co: <http://purl.org/ontology/co/20100913/core#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

co: a    owl:Ontology ;
     dc:title "The Counter Ontology"@en ;
     owl:versionIRI <http://purl.org/ontology/co/20100913/core#> ;
     owl:priorVersion <http://purl.org/ontology/co/20100804/core#> ;
     dc:isVersionOf <http://purl.org/ontology/co/core#> ;
     ... .

instance description that references the applied version of an ontology 
directly via its prefix definition (which can automatically be inferred 
by applying a rule that uses the object of the owl:versionIRI for the 
prefix definition, instead of the ontology IRI):

@prefix co: <http://purl.org/ontology/co/20100913/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/terms/> .
@prefix ex: <http://example.org/> .

ex:WebpageCounter a co:Counter ;
    dc:title "Webpage Counter"^^xsd:string ;
    ... .

instance description that references the applied version of an ontology 
via a dcterms:conformsTo relation:

@prefix co: <http://purl.org/ontology/co/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/terms/> .
@prefix ex: <http://example.org/> .

<> dcterms:conformsTo <http://purl.org/ontology/co/20100913/core#> .

ex:WebpageCounter a co:Counter ;
    dc:title "Webpage Counter"^^xsd:string ;
    ... .

Which version of the association of the applied ontology in instance 
description would you prefer?

Currently, I would tend to use for a version specific ontology 
description that addressed not the latest ontology version the version 
IRI (as in the example above). For linking the applied ontology version 
in instance descriptions I would use modelling that uses a version IRI 
in the prefix definition.

Cheers,


Bob


PS: we may need also a further property to explicitly address the latest 
version of an ontology specification, which should usually also be 
served by resolving the (version independent) PURL of the ontology 
specification

PPS: explicitly define the used ontology specification version by using 
an owl:versionInfo relation with the ontology specification PURL as 
subject and the used version as object wouldn't work, because then I 
would normally have two owl:versionInfo triples of this ontology 
specification in my knowledge base (on of the ontology specification 
itself and one of the instance description)


[1] 
http://www.semanticoverflow.com/questions/2815/how-do-i-know-model-the-applied-version-of-an-ontology-specification/2839#2839
[2] 
http://www.semanticoverflow.com/questions/2815/how-do-i-know-model-the-applied-version-of-an-ontology-specification

Received on Friday, 28 January 2011 18:26:15 UTC