Assume I have in my ontology Class A with owl:versionInfo 'version 1' Then I have to make a correction in its definition, thus creating 'version 2'

Do I have to change the ID of Class A for that 'version 2'? rdf:ID only allows for one occurance of the name.

Or must I use rdf:about for the second version, and deprecate version 1?

Please give an example listing.

Thanks!

asked 05 Nov '12, 16:38

hanst's gravatar image

hanst
48228
accept rate: 0%

edited 09 Nov '12, 17:47

Michael%20Schneider's gravatar image

Michael Schn... ♦
6.2k1712


First of all, the "rdf:ID vs rdf:about" question doesn't take you any further here, since it is only about a certain aspect of the RDF/XML syntax and has nothing to do with RDF or OWL itself. (Just as a side note, using rdf:about always is probably a good idea, as long as you write your RDF/XML by hand [which is, however, probably never a good idea :-)] ).

Your real question appears more to be a question of ontology management, more concretely: ontology update. It should be clear that you should not simply add the new definition of class A to the ontology, because then you would have the axioms from both the old and the new definition for A in your ontology - bad idea! Rather, you have to replace the old class definition. (And in this case, there is not even a need for discussing the "ID vs about" question then, just as another side note.) So, actually, you are about to create a new version of your original ontology, which then contains the new definition of the class A. And this brings us to the topic of ontology versioning!

There is some discussion about ontology versioning in the OWL 2 spec:

http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Versioning_of_OWL_2_Ontologies

The basic idea is to always have two URIs for your ontology:

  • a generic ontology URI, which always refers to the most-current version of the ontology;
  • a specific version URI, which refers to a concrete version and sticks with it.

The ontology URI is just the URI of the ontology header, as it has always been. The version URI is defined by property owl:versionIRI.

So, in your case, the situation might look as follows (using Turtle instead of RDF/XML for good reasons :-)):

Old version of ontology:

<http://example.org/myontology/> 
    rdf:type owl:Ontology ;
    owl:versionIRI <http://example.org/myontology/v1/> .
... old definition of class A ...

New version of ontology:

<http://example.org/myontology/> 
    rdf:type owl:Ontology ;
    owl:versionIRI <http://example.org/myontology/v2/> ;
    owl:priorVersion <http://example.org/myontology/v1/> .
... new definition of class A ...

If you like, you might add an additional owl:incompatibleWith statement to the new version of the ontology, with the version URI of the old version in object position.

In both versions of the ontology, the URI prefix of all defined entities, including class A, should be that of the ontology URI, not the version URI. Otherwise, it would not make much sense anymore to talk about different versions of the "same" ontology.

Edit: In order to keep track of the version of the class A itself, it is still a good idea to add the property owl:versionInfo to the class in any of the ontology versions. So you would have:

In old version of ontology:

:A rdf:type owl:Class ;
    owl:versionInfo "v1" ;
    ... old definition of class ...

In new version of ontology:

:A rdf:type owl:Class ;
    owl:versionInfo "v2" ;
    ... new definition of class ...
permanent link

answered 09 Nov '12, 17:44

Michael%20Schneider's gravatar image

Michael Schn... ♦
6.2k1712
accept rate: 34%

edited 10 Nov '12, 09:14

Thanks, Michael!

The use of the word Version is somewhat misleading, because, if I understand you well, you then create another class, with a link to its predecessor.

That was the problem we were facing in designing an artefact, for example a Mercedes 500 SEL. If you change one aspect of it, it becomes another class, and then version management becomes rather complex. We found a solution for that, see link text . Mercedes 500 SEL then is the UrClass. [just info, I don't expect comments; thanks again!]

(10 Nov '12, 08:36) hanst hanst's gravatar image

@hanst: I have converted your reply into a comment to my answer. You have originally posted your reply as an answer to the original question, which is not appropriate.

(10 Nov '12, 09:06) Michael Schn... ♦ Michael%20Schneider's gravatar image

@hanst: I am creating a new version of the /ontology/, and the predecessor link is from the new ontology version to the old ontology. It is slightly like in the case of the software versioning system Subversion, where each change of, say, a class definition in some Java program leads to a new version of the entire repository. In order to keep track of the version of the /class/ itself, it is still a good idea to add the property owl:versionInfo to the class. I'll add this point to my answer above.

(10 Nov '12, 09:11) Michael Schn... ♦ Michael%20Schneider's gravatar image
-1

I know a website which has detailed owl web, you can go in and have a look http://www.w3.org/TR/owl-guide/.

permanent link

answered 08 Nov '12, 22:23

jajskadu's gravatar image

jajskadu
-1
accept rate: 0%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×686
×632
×10

question asked: 05 Nov '12, 16:38

question was seen: 7,418 times

last updated: 10 Nov '12, 09:14