Diagram (this article has no graphical representation)
|Also known as||OIL|
|Author(s)||Catherine Roussey, Oscar Corcho|
|SubmittedBy||Catherine Roussey, Oscar Corcho|
|Motivation|| Our work is based on the debugging process of real ontologies that have been developed by domain experts, who are not necessarily too familiar with DL, and hence can misuse DL constructors and misunderstand the semantics of some OWL expressions, leading to unwanted unsatisfiable classes. Our patterns were first found during the debugging process of a medium-sized OWL ontology (165 classes) developed by a domain expert in the area of hydrology called HydrOntology. The first version of this ontology had a total of 114 unsatisfiable classes. The information provided by the debugging systems used on (root) unsatisfiable classes was not easily understandable by domain experts to find the reasons for their unsatisfiability. And in several occasions during the debugging process the generation of justifications for unsatisfiability took several hours, what made these tools hard to use. Using this debugging process and several other real ontologies debugging one, we found out that in several occasions domain experts were just changing axioms from the original ontology in a somehow random manner, even changing the intended meaning of the definitions instead of correcting errors in their formalisations.
We have identified a set of patterns that are commonly used by domain experts in their DL formalisations and OWL implementations, and that normally result in unsatisfiable classes or modelling errors. Thus they are antipatterns. A Koenig define antipatterns as patterns that appear obvious but are ineffective or far from optimal in practice, representing worst practice about how to structure and build software. We also have made an effort to identify common alternatives for providing solutions to them, so that they can be used by domain experts to debug their ontologies.
All these antipatterns come from a misuse and misunderstanding of DL expressions by ontology developers. Thus they are all Logical AntiPatterns (LAP): they are independent from a specific domain of interest, but dependent on the expressivity of the logical formalism used for the representation.
|Aim||The ontology developer created a universal restriction to say that C1 instances can only be linked with property R to C2 instances. Next, a new universal restriction is added saying that C1 instances can only be linked with R to C3 instances, with C2 and C3 disjoint. In general, this is because the ontology developer forgot the previous axiom in the same class or in the parent class.|
|Solution description|| C1 subClassOf R only C2; C1 subClassOf R only C3; C2 disjointWith C3
If it makes sense, we propose to the domain expert to transform the two universal restrictions into only one that refers to the disjunction of C2 and C3.
C1 subClassOf R only (C2 or C3); C2 disjointWith C3
other alternative solutions could be:
1) suppress the disjointness axiom.
2) create two sublass of C1 such as: C1.1 subClassOf C1; C1.1 subClassOf R only C2; C1.2 subClassOf C1; C1.2 subClassOf R only C3; C2 disjointWith C3;
3) create C4 such as C4 isEqualTo C2 or C3; C1 subClassOf R only C4; C2 disjointWith C3.
4) create two subproperty of R: R2 subPropertyOf R; R3 subProperty of R; C1 subClassOf R2 only C2; C1 subClassOf R3 only C3; C2 disjointWith C3.
|Problem example|| Transtitional_Waters subClassOf is_nearby only Sea_Waters; Transitional_Waters subClassOf is_nearby only River_Mouths; River_Mouths disjointWith Sea_Waters
see Aguas_de_Transicion concept in hydrontology.
Wet_Zone subClassOf Wetlands and are_inundated only Sea_Water and are_inundated only Surface_Water and are_inundated min 1 Thing;
see Zona_Humeda concept in hydrontology.
|Pattern solution example||http://www.dia.fi.upm.es/~ocorcho/OWLDebugging/|
|Consequences|| Transtitional_Waters subClassOf is_nearby only (Sea_Waters or River_Mouths); River_Mouths disjointWith Sea_Waters
Wet_Zone subClassOf Wetlands and are_inundated only (Sea_Water or Surface_Water) and are_inundated min 1 Thing;
|Used in combination with|
|Submission to event|