Re: Best Practice for Renaming OWL Vocabulary Elements

Martin,


These are comments that are not based on implementation practices, just 
from my naive ontology engineering perspective.

Le 21/04/2011 11:46, Martin Hepp a écrit :
> Dear all:
>
> I am considering to rename a few conceptual elements in the
> GoodRelations ontology. However, they are already in use in data,
> queries, and applications. Thus, I am thinking of the least intrusive
> way of implementing this. I think this question is also relevant for
> many other OWL vocabularies on the Web.
>
> Attached, please find my proposal. It critically depends on the
> ability of typical triple-stores to compute basic(*) inferences for
>
> - owl:equivalentProperty for owl:DatatypeProperty and
> owl:ObjectProperty entities, - owl:equivalentClass for pairs of
> owl:Class and - owl:sameAs for pairs of "ontological" instances, e.g.
> value nodes defined in the vocabulary.
>
> With "basic", I mean that additional triples for the additional class
> membership or property or instance must be materialized; this could
> be a subset of the complete theoretical implications. As far as I
> know, Virtuoso does support this to a sufficient degree, but I am
> unsure about other parts of widely deployed infrastructure.
>
> It would be no problem to express the necessary inferences by means
> of a SPARQL CONSTRUCT rule or in SPIN.
>
> Please share any suggestions and concerns with me.
>
> Old, but in use: --------------- foo:LongClassName a owl:Class ;
> rdfs:label "LongClassName" .
>
> foo:LongPropertyName1 a owl:DatatypeProperty ; rdfs:domain
> foo:LongClassName ; rdfs:label "LongPropertyName1" .
>
> foo:LongPropertyName2 a owl:ObjectProperty ; rdfs:domain
> foo:LongClassName ; rdfs:range foo:SomeOtherClass1 ; rdfs:label
> "LongPropertyName1" .
>
> foo:LongNameIndividual a foo:SomeOtherClass2 ; rdfs:label
> "LongNameIndividual" .
>
> Now, we want to rename those elements as follows, without breaking
> old data nor old queries / applications:
>
> foo:LongClassName -->  foo:NewClassName foo:LongPropertyName1 -->
> foo:NewPropertyName1 foo:LongPropertyName2 -->  foo:NewPropertyName2
> foo:LongNameIndividual -->  foo:NewNameIndividual
>
> Proposal: -------- a) Step 1: Define new classes, properties,
> individuals and link back to their old variants
>
> foo:NewClassName a owl:Class ; owl:equivalentClass foo:LongClassName
> . rdfs:label "NewClassName (Note: This was foo:LongClassName
> previously)" .

The label should be "NewClassName" (or even "New Class Name"@en) and the 
note should rather be in a rdfs:comment.

foo:NewClassName rdfs:label "New Class Name"@en;
                  rdfs:comment "This was foo:LongClassName previously. 
foo:LongClassName is now deprecated and foo:NewClassName should be used 
instead."@en .

> foo:NewPropertyName1 a owl:DatatypeProperty ; owl:equivalentProperty
> foo:LongPropertyName1 ; rdfs:domain foo:NewClassName ; rdfs:label
> "NewPropertyName1 (Note: This was foo:LongPropertyName1 previously)"
> .
>
> foo:NewPropertyName2 a owl:ObjectProperty ; owl:equivalentProperty
> foo:LongPropertyName2 ; rdfs:domain foo:NewClassName ; rdfs:range
> foo:SomeOtherClass1 ; rdfs:label "NewPropertyName2 (Note: This was
> foo:LongPropertyName2 previously)" .
>
> foo:NewNameIndividual a foo:SomeOtherClass2 ; owl:sameAs
> foo:LongNameIndividual ; rdfs:label "NewNameIndividual (Note: This
> was foo:LongNameIndividual previously)" .
>
> b) Step 2: Deprecate the old elements in OWL 2 style (using
> owl:deprecated) foo:LongClassName a owl:Class; owl:deprecated true;
> rdfs:label "LongClassName - Deprecated, use foo:NewClassName instead"
> .

Same as above: keep the rdfs:label and add rdfs:comment "This class is 
now deprecated, use foo:NewClassName instead."@en

> foo:LongPropertyName1 a owl:DatatypeProperty ; owl:deprecated true;
> rdfs:domain foo:LongClassName ; rdfs:label "LongPropertyName1 -
> Deprecated, use foo:NewPropertyName1 instead" .
>
> foo:LongPropertyName2 a owl:ObjectProperty ; owl:deprecated true ;
> rdfs:domain foo:LongClassName ; rdfs:range foo:SomeOtherClass1 ;
> rdfs:label "LongPropertyName1 - Deprecated, use foo:NewPropertyName2
> instead" .
>
> foo:LongNameIndividual a foo:SomeOtherClass2 ; owl:deprecated true ;
> rdfs:label "LongNameIndividual - Deprecated, use
> foo:NewNameIndividual instead" .
>
> c) Since the owl:deprecated property is not defined in OWL1, I would
> also add the following axiom in order to remain within OWL 1 DL: #OWL
> 1 DL compatibility of the OWL2 deprecated property owl:deprecated a
> owl:AnnotationProperty.

You can also add:

foo:LongClassName a owl:DeprecatedClass .
foo:LongPropertyName1 a owl:DeprecatedProperty .

which are defined in OWL 1 and 2.


> Thanks in advance!
>
> Best
>
> Martin
>
> -------------------------------------------------------- martin hepp
> e-business&  web science research group universitaet der bundeswehr
> muenchen
>
> e-mail:  hepp@ebusiness-unibw.org phone:   +49-(0)89-6004-4217 fax:
> +49-(0)89-6004-4620 www:     http://www.unibw.de/ebusiness/ (group)
> http://www.heppnetz.de/ (personal) skype:   mfhepp twitter: mfhepp
>
>
>


-- 
Antoine Zimmermann
Researcher at:
Laboratoire d'InfoRmatique en Image et Systèmes d'information
Database Group
7 Avenue Jean Capelle
69621 Villeurbanne Cedex
France
Tel: +33(0)4 72 43 61 74 - Fax: +33(0)4 72 43 87 13
Lecturer at:
Institut National des Sciences Appliquées de Lyon
20 Avenue Albert Einstein
69621 Villeurbanne Cedex
France
antoine.zimmermann@insa-lyon.fr
http://zimmer.aprilfoolsreview.com/

Received on Thursday, 21 April 2011 11:19:11 UTC