- From: Antoine Zimmermann <antoine.zimmermann@insa-lyon.fr>
- Date: Thu, 21 Apr 2011 13:18:41 +0200
- To: semantic-web@w3.org
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