Exploring the Future Potential of AI-Enabled Smartphone Processors
OOPS!: on-line ontology diagnosis by Maria Poveda
1. OOPS! (ONTOLOGY PITFALL SCANNER!):
ON-LINE ONTOLOGY DIAGNOSIS
María Poveda-Villalón
Asunción Gómez-Pérez and Mari Carmen Suárez-Figueroa
Ontology Engineering Group.
Universidad Politécnica de Madrid.
mpoveda@fi.upm.es
Data Quality Tutorial – SEMANTICS 2016
12th September
This work has been partially supportedby the Spanish project"4V:volumen, velocidad, variedad y validez en
la gestión innovadorade datos” (TIN2013-46238-C4-2-R) and theEuropeanproject “Ready4SmartCities - ICT
Roadmap and Data Interoperability for Energy Systems in Smart Cities” (FP7-608711).
OOPS! website: http://oops.linkeddata.es
Twitter account: @OOPSoeg
2. OOPS!: on-line ontology diagnosis
License
• This work is licensed under the Creative Commons
Attribution – Non Commercial – Share Alike License
• You are free:
• to Share — to copy, distribute and transmit the work
• to Remix — to adapt the work
• Under the following conditions
• Attribution — You must attribute the work by inserting
• “[source http://www.oeg-upm.net/]” at the footer of each reused
slide
• a credits slide stating: “OOPS! (OntOlogy Pitfall Scanner!): on-
line ontology diagnosis” by María Poveda-Villalón, Mari Carmen
Suárez-Figueroa and Asunción Gómez-Pérez ”
• Non-commercial
• Share-Alike
2
3. OOPS!: on-line ontology diagnosis
Ontology engineering and ontology evaluation
• The correct application of methodologies benefits the ontology quality
• No complete guaranty
3
Ontology evaluation (checking the technical quality
of an ontology against a frame of reference) is a
crucial activity in ontology engineering projects
Ontology diagnosis: identifying parts
of the ontology directly responsible for
incorrectness and incompleteness
1996 1997 ... 2001 2002 2003 20041995 2005 2006 ... 2009 2010
Guide 101 XD
EXtreme
Ontology
RapidOWL
Grüninger
& Fox
On-To-
Knowledge
METHON
TOLOGY
DILIGENT NeOn
O. Development Methodologies Ontology Development Lightweight Approaches
4. OOPS!: on-line ontology diagnosis
Introduction
4
Ontology Evaluation
Conceptual
Practical
Top level frameworks and definitions
Guidelines and methods
Tools
5. OOPS!: on-line ontology diagnosis
Top level frameworks and definitions
Guidelines and methods
Tools
Introduction
5
Ontology Evaluation
Conceptual
Practical
• Upper-level ontology engineers
• Deep knowledge in formal logic
and philosophy
6. OOPS!: on-line ontology diagnosis
Introduction
6
Ontology Evaluation
• Ontology engineers
• Knowledge in
ontological engineering
Conceptual
Practical
Top level frameworks and definitions
Guidelines and methods
Tools
• Upper-level ontology engineers
• Deep knowledge in formal logic
and philosophy
7. OOPS!: on-line ontology diagnosis
Introduction
7
Ontology Evaluation
• Ontology engineers
• Knowledge in
ontological engineering
Conceptual
Practical
• Upper-level ontology engineers
• Deep knowledge in formal logic
and philosophy
Top level frameworks and definitions
Guidelines and methods
Tools
• Ontology developers
• Domain experts
Target audience
8. OOPS!: on-line ontology diagnosis
Table of Contents
• Introduction
• Approach
• Pitfall catalogue
• OOPS!
• Future lines of work
8
10. OOPS!: on-line ontology diagnosis
Manual inspection
Literature review
24 piftalls
Classification:
aspects and errors
in hierarchies
20102nd
14 piftalls
Manual inspection
Classification:
Ontology Design
Patterns
2009
OOPS!PitfalloriginCatalogue
1st
ExtensionCompilation
Phase
Iterative process
10
11. OOPS!: on-line ontology diagnosis
Manual inspection
Literature review
24 piftalls
Classification:
aspects and errors
in hierarchies
20102nd
14 piftalls
Manual inspection
Classification:
Ontology Design
Patterns
2009
OOPS!PitfalloriginCatalogue
1st
Manual inspection
Literature review
Web User Interface
29 piftalls
Classification:
dimensions in tools
2012
21 pitfalls detected
3rd
ExtensionCompilation Implementation
Phase
Iterative process
11
12. OOPS!: on-line ontology diagnosis
Manual inspection
Literature review
24 piftalls
Classification:
aspects and errors
in hierarchies
20102nd
14 piftalls
Manual inspection
Classification:
Ontology Design
Patterns
2009
OOPS!PitfalloriginCatalogue
1st
Manual inspection
Literature review
Web User Interface
29 piftalls
Classification:
dimensions in tools
2012
21 pitfalls detected
3rd
Manual inspection
Literature review
Collaborations
Web User Interface
Web Service
40 piftalls
Classification:
aspects and
importance levels
2014
32 pitfalls detected
ExtensionCompilation Implementation Linked Data ext.
4th
Phase
Iterative process
12
13. OOPS!: on-line ontology diagnosis
Manual inspection
Literature review
Collaborations
Web User Interface
Web Service
41 piftalls
Classification:
aspects and
importance levels
2015
33 pitfalls detected
Quality model
Repair suggestions
5th
Manual inspection
Literature review
24 piftalls
Classification:
aspects and errors
in hierarchies
20102nd
14 piftalls
Manual inspection
Classification:
Ontology Design
Patterns
2009
OOPS!PitfalloriginCatalogue
1st
Manual inspection
Literature review
Web User Interface
29 piftalls
Classification:
dimensions in tools
2012
21 pitfalls detected
3rd
Manual inspection
Literature review
Collaborations
Web User Interface
Web Service
40 piftalls
Classification:
aspects and
importance levels
2014
32 pitfalls detected
RefinementExtensionCompilation Implementation Linked Data ext.
4th
Phase
Iterative process
13
14. OOPS!: on-line ontology diagnosis
Table of Contents
• Introduction
• Approach
• Pitfall catalogue
• OOPS!
• Future lines of work
14
15. OOPS!: on-line ontology diagnosis
Disclaimer
• Pitfalls could represent errors
• Pitfalls could lead to errors
• Pitfalls are not always errors depending on:
o modelling decisions taken by the team of developers
o ontology requirements previously set
o application context of the ontology
o the domain of the ontology
15
16. OOPS!: on-line ontology diagnosis
List of 41 pitfalls
16
P01. Creating polysemous elements
P02. Creating synonyms as classes
P03. Creating the relationship “is” instead ofusing
“rdfs:subClassOf”, “rdf:type” or “owl:sameAs”
P04. Creating unconnected ontology elements
P05. Defining wrong inverse relationships
P06. Including cycles in a class hierarchy
P07. Merging differentconcepts in the same class
P08. Missing annotations
P09. Missing domain information
P10. Missing disjointness
P11. Missing domain or range in properties
P12. Equivalentproperties notexplicitly declared
P13. Inverse relationships notexplicitly declared
P14. Misusing “owl:allValuesFrom”
P15. Using “some not” in place of “not some”
P16. Using a primitive class in place of a defined one
P17. Overspecializing a hierarchy
P18. Overspecializing the domain or range
P19. Defining multiple domains or ranges in properties
P20. Misusing ontology annotations
P21. Using a miscellaneous class
P22. Using differentnaming conventions in the ontology
P23. Duplicating a datatype already provided by the
implementation language
P24. Using recursive definitions
P25. Defining a relationship as inverse to itself
P26. Defining inverse relationships for a symmetric one
P27. Defining wrong equivalentproperties
P28. Defining wrong symmetric relationships
P29. Defining wrong transitive relationships
P30. Equivalentclasses notexplicitly declared
P31. Defining wrong equivalentclasses
P32. Several classes with the same label
P33. Creating a property chain with just one property
P34. Untyped class
P35. Untyped property
P36. URI contains file extension
P37. Ontology not available on the Web
P38. No OWL ontology declaration
P39.Ambiguous namespace
P40. Namespace hijacking
P41. No license declared
17. OOPS!: on-line ontology diagnosis
Pitfall template
Pitfall template
17
Title Code and title of the pitfall
Importance
level
{Critical | Important | Minor}
Aspects
Ontology evaluation
aspects related to the pitfall
Affects to
{Ontology | [Classes,
Object properties, Datatype
properties]}
Description
Detailed explanation of what the pitfall consists in. This field might contain
references to other approaches.
Example
Graphical representation Natural language description
UML_Ont profile
OWL source
Natural language explanation of the
graphical example or OWL code.
How to solve it
Description of the actions to be taken by ontology engineers in order to solve the
described pitfall.
References* Pointers to related bibliographical references or links to URLs.
* optional
Process
details
Process
details
18. OOPS!: on-line ontology diagnosis
Assigning importance level
§ Survey to the Semantic Web community
§ For 35 pitfalls (from that point level assigned during description)
§ Participants were asked to mark each pitfall as:
o Critical
o Important
o Minor
o Not a problem (additional)
§ 54 answers:
o 28 experts
o 22 medium confidence
o 4 low confidence
18
According to the negative consequences of each
pitfall in the ontology
19. OOPS!: on-line ontology diagnosis
Critical (1)
P01. Creating polysemous elements
P03. Creating the relationship “is” instead of using ''rdfs:subClassOf'', ''rdf:type'' or ''owl:sameAs''
P05. Defining wrong inverse relationships
P06. Including cycles in a class hierarchy
P14. Misusing ''owl:allValuesFrom''
P15. Using “some not” in place of “not some”
P16. Using a primitive class in place of a defined one
P19. Defining multiple domains or ranges in properties
P27. Defining wrong equivalent properties
P28. Defining wrong symmetric relationships
P29. Defining wrong transitive relationships
P31. Defining wrong equivalent classes
P37. Ontology not available on the Web
P39. Ambiguous namespace
P40. Namespace hijacking
Important (2)
P10. Missing disjointness
P11. Missing domain or range in properties
P12. Equivalent properties not explicitly declared
P17. Overspecializing a hierarchy
P18. Overspecializing the domain or range
P23. Duplicating a datatype already provided by the
implementation language
P24. Using recursive definitions
P25. Defining a relationship as inverse to itself
P26. Defining inverse relationships for a symmetric one
P30. Equivalent classes not explicitly declared
P34. Untyped class
P35. Untyped property
P38. No OWL ontology declaration
P41. No license declared
Minor (3)
P02. Creating synonyms as classes
P04. Creating unconnected ontology elements
P07. Merging different concepts in the same class
P08. Missing annotations
P09. Missing domain information
P13. Inverse relationships not explicitly declared
P20. Misusing ontology annotations
P21. Using a miscellaneous class
P22. Using different naming conventions in the
ontology
P32. Several classes with the same label
P33. Creating a property chain with just one property
P36. URI contains file extension
Pitfall classification by importance level
19
Phase 2
Phase 1
survey
Phase 1
survey
Phase 2
Phase 1
survey
Phase 2
20. OOPS!: on-line ontology diagnosis 20
Classifying by ontology evaluation aspects
Structural
Dimension
Usability-profiling
Dimension
Functional Dimension
Ontology Understanding
Ontology Clarity
Ontology Metadata
Modeling Decisions
Requirement
Completeness
Wrong Inference
No Inference
Real World Modelling
or Common Sense
Structural
Dimension
Functional Dimension
Ontology Language
Application Context
Legend
AspectDimension Critical pitfall Important pitfall Minor pitfall * Pitfall appears twice
P05. Defining wrong inverse relationships
P19. Defining multiple domains or ranges in properties
P06. Including cycles in a class hierarchy
P15. Using “some not” in place of “not some”
P18. Overspecializing the domain or range
P27. Defining wrong equivalent properties
P28. Defining wrong symmetric relationships
P29. Defining wrong transitive relationships
P31. Defining wrong equivalent classes
P01. Creating polysemous
elements *
21. OOPS!: on-line ontology diagnosis 21
Classifying by ontology evaluation aspects
Structural
Dimension
Usability-profiling
Dimension
Functional Dimension
Ontology Understanding
Ontology Clarity
Ontology Metadata
Modeling Decisions
Requirement
Completeness
Wrong Inference
No Inference
Real World Modelling
or Common Sense
Structural
Dimension
Functional Dimension
Ontology Language
Application Context
Legend
AspectDimension Critical pitfall Important pitfall Minor pitfall * Pitfall appears twice
P05. Defining wrong inverse relationships
P19. Defining multiple domains or ranges in properties
P06. Including cycles in a class hierarchy
P15. Using “some not” in place of “not some”
P18. Overspecializing the domain or range
P27. Defining wrong equivalent properties
P28. Defining wrong symmetric relationships
P29. Defining wrong transitive relationships
P31. Defining wrong equivalent classes
P01. Creating polysemous
elements *
P13. Inverse relationships not
explicitly declared
P11. Missing domain or range
in properties
P12. Equivalent properties not
explicitly declared
22. OOPS!: on-line ontology diagnosis 22
Classifying by ontology evaluation aspects
P05. Defining wrong inverse relationships
P13. Inverse relationships not
explicitly declared
P19. Defining multiple domains or ranges in properties
P24. Using recursive definitions
P09. Missing domain
information *
P07. Merging different
concepts in the same
class
P02. Creating synonyms
as classes
P20. Misusing ontology
annotations
P01. Creating polysemous
elements *
P17. Overspecializing a hierarchy
P03. Creating the relationship “is”
instead of using “rdfs:subClassOf”,
“rdf:type” or “owl:sameAs”
P11. Missing domain or range
in properties
P21. Using a miscellaneous class
P12. Equivalent properties not
explicitly declared
P23. Duplicating a datatype already provided
by the implementation language
P04. Creating unconnected
ontology elements
P06. Including cycles in a class hierarchy
P08. Missing
annotations
P10. Missing disjointness (2)
P14. Misusing “allValuesFrom” P15. Using “some not” in place of “not some”
P16. Using a primitive class in place of a defined one
P18. Overspecializing the domain or range
Ontology Understanding
Modeling Decisions
Requirement
Completeness
Wrong Inference
No Inference
Real World Modelling
or Common Sense
Ontology Clarity
P22. Using different naming
conventions in the ontology
Structural
Dimension
Usability-profiling
Dimension
Functional Dimension
P25. Defining a relationship as inverse to itself
P26. Defining inverse relationships
for a symmetric one
P27. Defining wrong equivalent properties
P28. Defining wrong symmetric relationships
P29. Defining wrong transitive relationships
P30. Equivalent classes not explicitly declared
P31. Defining wrong equivalent classes
P32. Several classes with
the same label
P33. Creating a property chain with just one
property
Ontology Language
P34. Untyped class
P35. Untyped property
P36. URI contains file
extension
Application Context
P37. Ontology not
available on the Web *
P38. No OWL ontology
declaration *
P39. Ambiguous namespace
P40. Namespace hijacking
P41. No license declared
Ontology Metadata
P01. Creating polysemous
elements *
P38. No OWL ontology
declaration *
P37. Ontology not available on the
Web *
Legend
AspectDimension Critical pitfall Important pitfall Minor pitfall * Pitfall appears twice
23. OOPS!: on-line ontology diagnosis
Detection method template
Detection method template
23
Code Code of the method
Pitfall
cardinality
{1 |N}
Method
addresses
{Ontology | [Classes, Object
properties, Datatype properties]}
Technique
{[Structural pattern matching,
Linguistic analysis,
Specific characteristic search]}
Pitfall
affects to
{Ontology | [Classes, Object
properties, Datatype properties]}
Description
General explanation of what the method consists in based on the pitfall to be detected.
Limitations*
Corner cases or well-known exceptions where the pitfalls are not currently detected.
Patterns
Graphical representation Natural language description
UML_Ont profile
OWL source
Natural language explanation of the pattern.
External resources used*
Pointers to external libraries, systems or resources used within the method
implementation.
* optional
From
pitfall
template
24. OOPS!: on-line ontology diagnosis
Pitfalls and methods: example P25
24
P25. Defining a relationship as inverse to itself
Title P25. Defining a relationship as inverse to itself
Importance
level
Important
Aspects Modelling decisions Affects to Object properties
Description
A relationship is defined as inverse of itself. In this case, this relationship could have been defined as
owl:SymmetricProperty instead.
Examples
Graphical representation and/or OWL code Natural language description
<<owl:inverseOf>>
<<owl:ObjectProperty>>
hasBorderWith
The graphical example shows the object property
“hasBorderWith”, which has been defined as inverse
of itself by means of the primitive owl:inverseOf.
How to solve it
One should check whether the object property defined as inverse of itself satisfies the following condi-
tion: every time the object property holds between the individuals “a” and “b” it also holds between
“b” and “a”. If the object property does fulfil the condition, it should be defined as symmetric (using
owl:SymmetricProperty) and the owl:inverseOf statement should be deleted.
While the situation described in this pitfall will not lead to any reasoning problem and it could be
considered a workaround to avoid increasing the ontology expressivity, it is more accurate to define the
object property as symmetric (using owl:SymmetricProperty) instead of as inverse to itself.
Table 6: P25. Defining a relationship as inverse to itself
Code M1-P25. Detecting relationships inverse to themselves
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to Object properties
Description
This method iterates over the list of object properties included in the ontology.
If a given object property acts at the same time as subject and object in an owl:inverseOf statement (pattern
A), then a pitfall is flagged.
25. OOPS!: on-line ontology diagnosis
P25
descriptionTitle P25. Defining a relationship as inverse to itself
Importance
level
Important
Aspects Modelling decisions Affects to Object properties
Description
A relationship is defined as inverse of itself. In this case, this relationship could have been defined as
owl:SymmetricProperty instead.
Examples
Graphical representation and/or OWL code Natural language description
<<owl:inverseOf>>
<<owl:ObjectProperty>>
hasBorderWith
The graphical example shows the object property
“hasBorderWith”, which has been defined as inverse
of itself by means of the primitive owl:inverseOf.
How to solve it
One should check whether the object property defined as inverse of itself satisfies the following condi-
tion: every time the object property holds between the individuals “a” and “b” it also holds between
“b” and “a”. If the object property does fulfil the condition, it should be defined as symmetric (using
owl:SymmetricProperty) and the owl:inverseOf statement should be deleted.
While the situation described in this pitfall will not lead to any reasoning problem and it could be
considered a workaround to avoid increasing the ontology expressivity, it is more accurate to define the
object property as symmetric (using owl:SymmetricProperty) instead of as inverse to itself.
Table 6: P25. Defining a relationship as inverse to itself
Code M1-P25. Detecting relationships inverse to themselves
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to Object properties
Description
This method iterates over the list of object properties included in the ontology.
If a given object property acts at the same time as subject and object in an owl:inverseOf statement (pattern
A), then a pitfall is flagged.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
<<owl:inverseOf>>
<<owl:ObjectProperty>>
objectPropertyS
The graphical pattern shows an object property that
has an owl:inverseOf axiom whose target object
property is the same object property.
Table 7: Detection method proposed for P25
8
Pitfalls and methods: example P25
25
P25. Defining a relationship as inverse to itselfTitle P25. Defining a relationship as inverse to itself
Importance
level
Important
Aspects Modelling decisions Affects to Object properties
Description
A relationship is defined as inverse of itself. In this case, this relationship could have been defined as
owl:SymmetricProperty instead.
Examples
Graphical representation and/or OWL code Natural language description
<<owl:inverseOf>>
<<owl:ObjectProperty>>
hasBorderWith
The graphical example shows the object property
“hasBorderWith”, which has been defined as inverse
of itself by means of the primitive owl:inverseOf.
How to solve it
One should check whether the object property defined as inverse of itself satisfies the following condi-
tion: every time the object property holds between the individuals “a” and “b” it also holds between
“b” and “a”. If the object property does fulfil the condition, it should be defined as symmetric (using
owl:SymmetricProperty) and the owl:inverseOf statement should be deleted.
While the situation described in this pitfall will not lead to any reasoning problem and it could be
considered a workaround to avoid increasing the ontology expressivity, it is more accurate to define the
object property as symmetric (using owl:SymmetricProperty) instead of as inverse to itself.
Table 6: P25. Defining a relationship as inverse to itself
Code M1-P25. Detecting relationships inverse to themselves
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to Object properties
Description
This method iterates over the list of object properties included in the ontology.
If a given object property acts at the same time as subject and object in an owl:inverseOf statement (pattern
A), then a pitfall is flagged.
Title P25. Defining a relationship as inverse to itself
Importanc
level
Aspects Modelling decisions Affects to
Description
A relationship is defined as inverse of itself. In this case, this relationship c
owl:SymmetricProperty instead.
Examples
Graphical representation and/or OWL code Natural langu
<<owl:inverseOf>>
<<owl:ObjectProperty>>
hasBorderWith
The graphical example
“hasBorderWith”, which
of itself by means of the
How to solve it
One should check whether the object property defined as inverse of itself sa
tion: every time the object property holds between the individuals “a” and
“b” and “a”. If the object property does fulfil the condition, it should be de
owl:SymmetricProperty) and the owl:inverseOf statement should be deleted.
While the situation described in this pitfall will not lead to any reasoning
considered a workaround to avoid increasing the ontology expressivity, it is m
object property as symmetric (using owl:SymmetricProperty) instead of as inver
Table 6: P25. Defining a relationship as inverse to
Title P25. Defining a relationship as inverse to itself
Importance
level
Important
Aspects Modelling decisions Affects to Object properties
Description
A relationship is defined as inverse of itself. In this case, this relationship could have been defined as
owl:SymmetricProperty instead.
Examples
Graphical representation and/or OWL code Natural language description
<<owl:inverseOf>>
<<owl:ObjectProperty>>
hasBorderWith
The graphical example shows the object property
“hasBorderWith”, which has been defined as inverse
of itself by means of the primitive owl:inverseOf.
How to solve it
One should check whether the object property defined as inverse of itself satisfies the following condi-
tion: every time the object property holds between the individuals “a” and “b” it also holds between
“b” and “a”. If the object property does fulfil the condition, it should be defined as symmetric (using
owl:SymmetricProperty) and the owl:inverseOf statement should be deleted.
While the situation described in this pitfall will not lead to any reasoning problem and it could be
considered a workaround to avoid increasing the ontology expressivity, it is more accurate to define the
object property as symmetric (using owl:SymmetricProperty) instead of as inverse to itself.
Table 6: P25. Defining a relationship as inverse to itself
Code M1-P25. Detecting relationships inverse to themselves
26. OOPS!: on-line ontology diagnosis
Pitfalls and methods: example P25
26
M1-P25. Detecting relationships inverse to themselvesP25
description
While the situation described in this pitfall will not lead to any reasoning problem and it could be
considered a workaround to avoid increasing the ontology expressivity, it is more accurate to define the
object property as symmetric (using owl:SymmetricProperty) instead of as inverse to itself.
Table 6: P25. Defining a relationship as inverse to itself
Code M1-P25. Detecting relationships inverse to themselves
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to Object properties
Description
This method iterates over the list of object properties included in the ontology.
If a given object property acts at the same time as subject and object in an owl:inverseOf statement (pattern
A), then a pitfall is flagged.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
<<owl:inverseOf>>
<<owl:ObjectProperty>>
objectPropertyS
The graphical pattern shows an object property that
has an owl:inverseOf axiom whose target object
property is the same object property.
Table 7: Detection method proposed for P25
Title P25. Defining a relationship as inverse to itself
Importance
level
Important
Aspects Modelling decisions Affects to Object properties
Description
A relationship is defined as inverse of itself. In this case, this relationship could have been defined as
owl:SymmetricProperty instead.
Examples
Graphical representation and/or OWL code Natural language description
<<owl:inverseOf>>
<<owl:ObjectProperty>>
hasBorderWith
The graphical example shows the object property
“hasBorderWith”, which has been defined as inverse
of itself by means of the primitive owl:inverseOf.
How to solve it
One should check whether the object property defined as inverse of itself satisfies the following condi-
tion: every time the object property holds between the individuals “a” and “b” it also holds between
“b” and “a”. If the object property does fulfil the condition, it should be defined as symmetric (using
owl:SymmetricProperty) and the owl:inverseOf statement should be deleted.
While the situation described in this pitfall will not lead to any reasoning problem and it could be
considered a workaround to avoid increasing the ontology expressivity, it is more accurate to define the
object property as symmetric (using owl:SymmetricProperty) instead of as inverse to itself.
Table 6: P25. Defining a relationship as inverse to itself
Code M1-P25. Detecting relationships inverse to themselves
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to Object properties
Description
This method iterates over the list of object properties included in the ontology.
If a given object property acts at the same time as subject and object in an owl:inverseOf statement (pattern
A), then a pitfall is flagged.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
<<owl:inverseOf>>
<<owl:ObjectProperty>>
objectPropertyS
The graphical pattern shows an object property that
has an owl:inverseOf axiom whose target object
property is the same object property.
Table 7: Detection method proposed for P25
8
27. OOPS!: on-line ontology diagnosis
Pitfalls and methods: example P19
27
P19. Defining multiple domains or ranges in properties
Title
P19. Defining multiple domains or ranges in proper-
ties
Importance
level
Critical
Aspects Wrong inference Affects to
Object properties
Datatype properties
Description
The domain or range (or both) of a property (relationships and attributes) is defined by stating more than
one rdfs:domain or rdfs:range statements. In OWL multiple rdfs:domain or rdfs:range axioms are allowed,
but they are interpreted as conjunction, being, therefore, equivalent to the construct owl:intersectionOf.
This pitfall is related to the common error that appears when defining domains and ranges described in [2].
Examples
Graphical representation and/or OWL code Natural language description
Event
Nation
<<owl:ObjectProperty>>
takesPlaceIn
<<rdfs:domain>>
<<rdfs:range>>
City
<<rdfs:range>>
The graphical example shows an object property,
“takesPlacesIn”, whose domain is the class “Event”
and whose range is defined as “City” and as “Na-
tion”. As the range of the relationship is interpreted
as an intersection, whenever an individual appears as
object in such relationship, it will be classified both
as instance of “City” and “Nation”. This situation
is probably not intended by the developer, since the
intersection of “City” and “Nation” is the empty set.
How to solve it
If there is more than one rdfs:domain or rdfs:range statements defined for a given object or datatype
property, check:
For domains:
(a) For each object or datatype property with multiple domains in the ontology, we recommend answering
the following question “Does every individual in the domain of the given property necessarily belong
to each and every one of the intersected classes?”. If the answer is “no”, developers should (a) join the
classes that appear in the different domain declarations by the “or” operator (i.e., owl:unionOf) and set
this union of classes as the domain of the property and (b) remove the initial rdfs:domain declarations.
For ranges:
(a) For each object property with multiple ranges in the ontology, we recommend answering the following
question “Does every individual in the range of the given object property necessarily belong to each and
every one of the intersected classes?”. If the answer is “no”, developers should (a) join the classes that
appear in the different range declarations by the “or” operator (i.e., owl:unionOf) and set this union of
classes as the range of the property and (b) remove the initial rdfs:range declarations.
(b) For each datatype property with multiple domains in the ontology, we recommend including at most
one datatype as range. We recommend taking into account the built-in datatype hierarchy defined in
[1] to select such datatype. If there is more than one plausible candidate, find their lowest common
ancestor and set it as the range of the datatype property.
References
[1] Built-in datatype hierarchy http://www.w3.org/TR/xmlschema-2/built-in-datatypes
[2] Rector, A., Drummond, N., Horridge, M., Rogers, J., Knublauch, H., Stevens, R., Wang,
H., and Wroe, C. (2004). OWL pizzas: Practical experience of teaching OWL-DL: Common
errors & common patterns. In Engineering Knowledge in the Age of the Semantic Web,
pages 63-81. Springer.
28. OOPS!: on-line ontology diagnosis
P19
descriptionTitle
P19. Defining multiple domains or ranges in proper-
ties
Importance
level
Critical
Aspects Wrong inference Affects to
Object properties
Datatype properties
Description
The domain or range (or both) of a property (relationships and attributes) is defined by stating more than
one rdfs:domain or rdfs:range statements. In OWL multiple rdfs:domain or rdfs:range axioms are allowed,
but they are interpreted as conjunction, being, therefore, equivalent to the construct owl:intersectionOf.
This pitfall is related to the common error that appears when defining domains and ranges described in [2].
Examples
Graphical representation and/or OWL code Natural language description
Event
Nation
<<owl:ObjectProperty>>
takesPlaceIn
<<rdfs:domain>>
<<rdfs:range>>
City
<<rdfs:range>>
The graphical example shows an object property,
“takesPlacesIn”, whose domain is the class “Event”
and whose range is defined as “City” and as “Na-
tion”. As the range of the relationship is interpreted
as an intersection, whenever an individual appears as
object in such relationship, it will be classified both
as instance of “City” and “Nation”. This situation
is probably not intended by the developer, since the
intersection of “City” and “Nation” is the empty set.
How to solve it
If there is more than one rdfs:domain or rdfs:range statements defined for a given object or datatype
property, check:
For domains:
(a) For each object or datatype property with multiple domains in the ontology, we recommend answering
the following question “Does every individual in the domain of the given property necessarily belong
to each and every one of the intersected classes?”. If the answer is “no”, developers should (a) join the
classes that appear in the different domain declarations by the “or” operator (i.e., owl:unionOf) and set
this union of classes as the domain of the property and (b) remove the initial rdfs:domain declarations.
For ranges:
(a) For each object property with multiple ranges in the ontology, we recommend answering the following
question “Does every individual in the range of the given object property necessarily belong to each and
every one of the intersected classes?”. If the answer is “no”, developers should (a) join the classes that
appear in the different range declarations by the “or” operator (i.e., owl:unionOf) and set this union of
classes as the range of the property and (b) remove the initial rdfs:range declarations.
(b) For each datatype property with multiple domains in the ontology, we recommend including at most
one datatype as range. We recommend taking into account the built-in datatype hierarchy defined in
[1] to select such datatype. If there is more than one plausible candidate, find their lowest common
ancestor and set it as the range of the datatype property.
References
[1] Built-in datatype hierarchy http://www.w3.org/TR/xmlschema-2/built-in-datatypes
[2] Rector, A., Drummond, N., Horridge, M., Rogers, J., Knublauch, H., Stevens, R., Wang,
H., and Wroe, C. (2004). OWL pizzas: Practical experience of teaching OWL-DL: Common
errors & common patterns. In Engineering Knowledge in the Age of the Semantic Web,
pages 63-81. Springer.
Table 3: P19. Defining multiple domains or ranges in properties
5
Pitfalls and methods: example P19
28
P19. Defining multiple domains or ranges in properties
Title
P19. Defining multiple domains or ranges in proper-
ties
Importance
level
Critical
Aspects Wrong inference Affects to
Object properties
Datatype properties
Description
The domain or range (or both) of a property (relationships and attributes) is defined by stating more than
one rdfs:domain or rdfs:range statements. In OWL multiple rdfs:domain or rdfs:range axioms are allowed,
but they are interpreted as conjunction, being, therefore, equivalent to the construct owl:intersectionOf.
This pitfall is related to the common error that appears when defining domains and ranges described in [2].
Examples
Graphical representation and/or OWL code Natural language description
The graphical example shows an object property,
“takesPlacesIn”, whose domain is the class “Event”
and whose range is defined as “City” and as “Na-
tion”. As the range of the relationship is interpreted
as an intersection, whenever an individual appears as
object in such relationship, it will be classified both
as instance of “City” and “Nation”. This situation
is probably not intended by the developer, since the
intersection of “City” and “Nation” is the empty set.
How to solve it
If there is more than one rdfs:domain or rdfs:range statements defined for a given object or datatype
property, check:
For domains:
(a) For each object or datatype property with multiple domains in the ontology, we recommend answering
the following question “Does every individual in the domain of the given property necessarily belong
Title
P19. Defining multiple domains or ranges in proper-
ties
Importance
level
Critical
Aspects Wrong inference Affects to
Object properties
Datatype properties
Description
The domain or range (or both) of a property (relationships and attributes) is defined by stating more than
one rdfs:domain or rdfs:range statements. In OWL multiple rdfs:domain or rdfs:range axioms are allowed,
but they are interpreted as conjunction, being, therefore, equivalent to the construct owl:intersectionOf.
This pitfall is related to the common error that appears when defining domains and ranges described in [2].
Examples
Graphical representation and/or OWL code Natural language description
Event
Nation
<<owl:ObjectProperty>>
takesPlaceIn
<<rdfs:domain>>
<<rdfs:range>>
City
<<rdfs:range>>
The graphical example shows an object property,
“takesPlacesIn”, whose domain is the class “Event”
and whose range is defined as “City” and as “Na-
tion”. As the range of the relationship is interpreted
as an intersection, whenever an individual appears as
object in such relationship, it will be classified both
as instance of “City” and “Nation”. This situation
is probably not intended by the developer, since the
intersection of “City” and “Nation” is the empty set.
How to solve it
If there is more than one rdfs:domain or rdfs:range statements defined for a given object or datatype
property, check:
For domains:
(a) For each object or datatype property with multiple domains in the ontology, we recommend answering
29. OOPS!: on-line ontology diagnosis
P19
description
Pitfalls and methods: example P19
29
M1-P19. Detecting multiple domains or ranges in object properties
Title
P19. Defining multiple domains or ranges in proper-
ties
Importance
level
Critical
Aspects Wrong inference Affects to
Object properties
Datatype properties
Description
The domain or range (or both) of a property (relationships and attributes) is defined by stating more than
one rdfs:domain or rdfs:range statements. In OWL multiple rdfs:domain or rdfs:range axioms are allowed,
but they are interpreted as conjunction, being, therefore, equivalent to the construct owl:intersectionOf.
This pitfall is related to the common error that appears when defining domains and ranges described in [2].
Examples
Graphical representation and/or OWL code Natural language description
Event
Nation
<<owl:ObjectProperty>>
takesPlaceIn
<<rdfs:domain>>
<<rdfs:range>>
City
<<rdfs:range>>
The graphical example shows an object property,
“takesPlacesIn”, whose domain is the class “Event”
and whose range is defined as “City” and as “Na-
tion”. As the range of the relationship is interpreted
as an intersection, whenever an individual appears as
object in such relationship, it will be classified both
as instance of “City” and “Nation”. This situation
is probably not intended by the developer, since the
intersection of “City” and “Nation” is the empty set.
How to solve it
If there is more than one rdfs:domain or rdfs:range statements defined for a given object or datatype
property, check:
For domains:
(a) For each object or datatype property with multiple domains in the ontology, we recommend answering
the following question “Does every individual in the domain of the given property necessarily belong
to each and every one of the intersected classes?”. If the answer is “no”, developers should (a) join the
classes that appear in the different domain declarations by the “or” operator (i.e., owl:unionOf) and set
this union of classes as the domain of the property and (b) remove the initial rdfs:domain declarations.
For ranges:
(a) For each object property with multiple ranges in the ontology, we recommend answering the following
question “Does every individual in the range of the given object property necessarily belong to each and
every one of the intersected classes?”. If the answer is “no”, developers should (a) join the classes that
appear in the different range declarations by the “or” operator (i.e., owl:unionOf) and set this union of
classes as the range of the property and (b) remove the initial rdfs:range declarations.
(b) For each datatype property with multiple domains in the ontology, we recommend including at most
one datatype as range. We recommend taking into account the built-in datatype hierarchy defined in
[1] to select such datatype. If there is more than one plausible candidate, find their lowest common
ancestor and set it as the range of the datatype property.
References
[1] Built-in datatype hierarchy http://www.w3.org/TR/xmlschema-2/built-in-datatypes
[2] Rector, A., Drummond, N., Horridge, M., Rogers, J., Knublauch, H., Stevens, R., Wang,
H., and Wroe, C. (2004). OWL pizzas: Practical experience of teaching OWL-DL: Common
errors & common patterns. In Engineering Knowledge in the Age of the Semantic Web,
pages 63-81. Springer.
Table 3: P19. Defining multiple domains or ranges in properties
5
Code M1-P19. Detecting multiple domains or ranges in object properties
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to
Object properties
Datatype properties
Description
This method iterates over the list of object properties included in the ontology.
If an object property has more than one rdfs:domain axiom (pattern A) and the classes the domain axioms
refer to do not match, then a pitfall is flagged.
If an object property has more than one rdfs:range axiom (pattern B) and the classes the range axioms
refer to do not match, then a pitfall is flagged.
The method checks if the multiple classes declared as domain or range are the same class or equiva-
lent classes. If class restrictions apply, the method checks whether they are syntactically equivalent.
Limitations
The method does not check if two different class restrictions or anonymous classes logically represent identical
sets of individuals.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
ClassA ClassB
<<owl:ObjectProperty>>
objectPropertyS
<<rdfs:domain>> <<rdfs:domain>>
The graphical pattern shows an object property that
has two rdfs:domain axioms defined.
Pattern B:
ClassA ClassB
<<owl:ObjectProperty>>
objectPropertyS
<<rdfs:range>> <<rdfs:range>>
The graphical pattern shows an object property that
has two rdfs:range axioms defined.
Table 1: Detection method 1 proposed for P19
M2-P19. Detecting multiple domains or ranges in datatype properties
Code M2-P19. Detecting multiple domains or ranges in datatype properties
Pitfall
cardinality
N Method addresses Datatype properties
Technique Structural pattern matching Pitfall affects to
Object properties
Datatype properties
Description
This method iterates over the list of datatype properties included in the ontology.
If a datatype property has more than one rdfs:domain axiom (pattern A) and the classes the domain
axioms refer to do not match, then a pitfall is flagged.
If a datatype property has more than one rdfs:range axiom (pattern B) and the datatypes the range
axioms refer to are not the same one, then a pitfall is flagged.
The method checks if the multiple classes declared as domain are the same class or equivalent classes. If
class restrictions apply, the method checks whether they are syntactically equivalent.
Limitations
The method does not check if two different class restrictions or anonymous classes logically represent identical
sets of individuals.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
ClassA ClassB
<<owl:DatatypeProperty>>
datatypePropertyS
<<rdfs:domain>><<rdfs:domain>>
The graphical pattern shows a datatype property
that has two rdfs:domain axioms defined.
Pattern B:
<<primitive>>
xsd:datatype1
<<owl:DatatypeProperty>>
datatypePropertyS
<<rdfs:range>> <<rdfs:range>>
<<primitive>>
xsd:datatype2 The graphical pattern shows a datatype property
that has two rdfs:range axioms defined.
Table 5: Detection method 2 proposed for P19
30. OOPS!: on-line ontology diagnosis
M1-P19
M2-P19
Code M1-P19. Detecting multiple domains or ranges in object properties
Pitfall
cardinality
N Method addresses Object properties
Technique Structural pattern matching Pitfall affects to
Object properties
Datatype properties
Description
This method iterates over the list of object properties included in the ontology.
If an object property has more than one rdfs:domain axiom (pattern A) and the classes the domain axioms
refer to do not match, then a pitfall is flagged.
If an object property has more than one rdfs:range axiom (pattern B) and the classes the range axioms
refer to do not match, then a pitfall is flagged.
The method checks if the multiple classes declared as domain or range are the same class or equiva-
lent classes. If class restrictions apply, the method checks whether they are syntactically equivalent.
Limitations
The method does not check if two different class restrictions or anonymous classes logically represent identical
sets of individuals.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
ClassA ClassB
<<owl:ObjectProperty>>
objectPropertyS
<<rdfs:domain>> <<rdfs:domain>>
The graphical pattern shows an object property that
has two rdfs:domain axioms defined.
Pattern B:
ClassA ClassB
<<owl:ObjectProperty>>
objectPropertyS
<<rdfs:range>> <<rdfs:range>>
The graphical pattern shows an object property that
has two rdfs:range axioms defined.
Table 1: Detection method 1 proposed for P19
1
Pitfalls and methods: example P19
30
Title
P19. Defining multiple domains or ranges in proper-
ties
Importance
level
Critical
Aspects Wrong inference Affects to
Object properties
Datatype properties
Description
The domain or range (or both) of a property (relationships and attributes) is defined by stating more than
one rdfs:domain or rdfs:range statements. In OWL multiple rdfs:domain or rdfs:range axioms are allowed,
but they are interpreted as conjunction, being, therefore, equivalent to the construct owl:intersectionOf.
This pitfall is related to the common error that appears when defining domains and ranges described in [2].
Examples
Graphical representation and/or OWL code Natural language description
Event
Nation
<<owl:ObjectProperty>>
takesPlaceIn
<<rdfs:domain>>
<<rdfs:range>>
City
<<rdfs:range>>
The graphical example shows an object property,
“takesPlacesIn”, whose domain is the class “Event”
and whose range is defined as “City” and as “Na-
tion”. As the range of the relationship is interpreted
as an intersection, whenever an individual appears as
object in such relationship, it will be classified both
as instance of “City” and “Nation”. This situation
is probably not intended by the developer, since the
intersection of “City” and “Nation” is the empty set.
How to solve it
If there is more than one rdfs:domain or rdfs:range statements defined for a given object or datatype
property, check:
For domains:
(a) For each object or datatype property with multiple domains in the ontology, we recommend answering
the following question “Does every individual in the domain of the given property necessarily belong
to each and every one of the intersected classes?”. If the answer is “no”, developers should (a) join the
classes that appear in the different domain declarations by the “or” operator (i.e., owl:unionOf) and set
this union of classes as the domain of the property and (b) remove the initial rdfs:domain declarations.
For ranges:
(a) For each object property with multiple ranges in the ontology, we recommend answering the following
question “Does every individual in the range of the given object property necessarily belong to each and
every one of the intersected classes?”. If the answer is “no”, developers should (a) join the classes that
appear in the different range declarations by the “or” operator (i.e., owl:unionOf) and set this union of
classes as the range of the property and (b) remove the initial rdfs:range declarations.
(b) For each datatype property with multiple domains in the ontology, we recommend including at most
one datatype as range. We recommend taking into account the built-in datatype hierarchy defined in
[1] to select such datatype. If there is more than one plausible candidate, find their lowest common
ancestor and set it as the range of the datatype property.
References
[1] Built-in datatype hierarchy http://www.w3.org/TR/xmlschema-2/built-in-datatypes
[2] Rector, A., Drummond, N., Horridge, M., Rogers, J., Knublauch, H., Stevens, R., Wang,
H., and Wroe, C. (2004). OWL pizzas: Practical experience of teaching OWL-DL: Common
errors & common patterns. In Engineering Knowledge in the Age of the Semantic Web,
pages 63-81. Springer.
Table 3: P19. Defining multiple domains or ranges in properties
5
M1-P19. Detecting multiple domains or ranges in object properties
M2-P19. Detecting multiple domains or ranges in datatype properties
Code M2-P19. Detecting multiple domains or ranges in datatype properties
Pitfall
cardinality
N Method addresses Datatype properties
Technique Structural pattern matching Pitfall affects to
Object properties
Datatype properties
Description
This method iterates over the list of datatype properties included in the ontology.
If a datatype property has more than one rdfs:domain axiom (pattern A) and the classes the domain
axioms refer to do not match, then a pitfall is flagged.
If a datatype property has more than one rdfs:range axiom (pattern B) and the datatypes the range
axioms refer to are not the same one, then a pitfall is flagged.
The method checks if the multiple classes declared as domain are the same class or equivalent classes. If
class restrictions apply, the method checks whether they are syntactically equivalent.
Limitations
The method does not check if two different class restrictions or anonymous classes logically represent identical
sets of individuals.
Patterns
Graphical representation and/or OWL code Natural language description
Pattern A:
ClassA ClassB
<<owl:DatatypeProperty>>
datatypePropertyS
<<rdfs:domain>><<rdfs:domain>>
The graphical pattern shows a datatype property
that has two rdfs:domain axioms defined.
Pattern B:
<<primitive>>
xsd:datatype1
<<owl:DatatypeProperty>>
datatypePropertyS
<<rdfs:range>> <<rdfs:range>>
<<primitive>>
xsd:datatype2 The graphical pattern shows a datatype property
that has two rdfs:range axioms defined.
Table 5: Detection method 2 proposed for P19
M1-P19. Detecting multiple domains or ranges in object properties
N Method addresses Object properties
Structural pattern matching Pitfall affects to
Object properties
Datatype properties
Description
iterates over the list of object properties included in the ontology.
property has more than one rdfs:domain axiom (pattern A) and the classes the domain axioms
ot match, then a pitfall is flagged.
property has more than one rdfs:range axiom (pattern B) and the classes the range axioms
ot match, then a pitfall is flagged.
checks if the multiple classes declared as domain or range are the same class or equiva-
If class restrictions apply, the method checks whether they are syntactically equivalent.
Limitations
does not check if two different class restrictions or anonymous classes logically represent identical
duals.
Patterns
al representation and/or OWL code Natural language description
ClassB
wl:ObjectProperty>>
bjectPropertyS
>> <<rdfs:domain>>
The graphical pattern shows an object property that
has two rdfs:domain axioms defined.
ClassB
wl:ObjectProperty>>
objectPropertyS
>> <<rdfs:range>>
The graphical pattern shows an object property that
has two rdfs:range axioms defined.
refer to do not match, then a pitfall is flagged.
If an object property has more than one rdfs:range axiom
refer to do not match, then a pitfall is flagged.
The method checks if the multiple classes declared as do
lent classes. If class restrictions apply, the method checks w
Limitations
The method does not check if two different class restrictions o
sets of individuals.
Patterns
Graphical representation and/or OWL code
Pattern A:
ClassA ClassB
<<owl:ObjectProperty>>
objectPropertyS
<<rdfs:domain>> <<rdfs:domain>>
The
has t
Pattern B:
ClassA ClassB
<<owl:ObjectProperty>>
objectPropertyS
<<rdfs:range>> <<rdfs:range>>
The
has t
Table 1: Detection method 1
1
M2-P19. Detecting multiple domains or ranges in datatype properties
N Method addresses Datatype properties
Structural pattern matching Pitfall affects to
Object properties
Datatype properties
Description
iterates over the list of datatype properties included in the ontology.
e property has more than one rdfs:domain axiom (pattern A) and the classes the domain
to do not match, then a pitfall is flagged.
e property has more than one rdfs:range axiom (pattern B) and the datatypes the range
to are not the same one, then a pitfall is flagged.
checks if the multiple classes declared as domain are the same class or equivalent classes. If
ons apply, the method checks whether they are syntactically equivalent.
Code M2-P19. Detecting multiple domains or rang
Pitfall
cardinality
N Meth
Technique Structural pattern matching Pitfa
Description
This method iterates over the list of datatype properties inc
If a datatype property has more than one rdfs:domain ax
axioms refer to do not match, then a pitfall is flagged.
If a datatype property has more than one rdfs:range axi
axioms refer to are not the same one, then a pitfall is flagge
The method checks if the multiple classes declared as dom
class restrictions apply, the method checks whether they are
Limitations
The method does not check if two different class restrictions o
sets of individuals.
Patterns
Graphical representation and/or OWL code
Pattern A:
ClassA ClassB
<<owl:DatatypeProperty>>
datatypePropertyS
<<rdfs:domain>><<rdfs:domain>>
The
that
Pattern B:
<<primitive>>
xsd:datatype1
<<owl:DatatypeProperty>>
datatypePropertyS
<<rdfs:range>> <<rdfs:range>>
<<primitive>>
xsd:datatype2 The
that
Table 5: Detection method 2
P19
description
31. OOPS!: on-line ontology diagnosis
Table of Contents
• Introduction
• Approach
• Pitfall catalogue
• OOPS!
• Future lines of work
31
32. OOPS!: on-line ontology diagnosis
OOPS! – OntOlogy Pitfall Scanner!
32
§ Implements the 48 detection methods for 33
o Pitfalls selection
o Selection by dimensions and aspects
§ Web user interface http://oops.linkeddata.es/
§ Web service http://oops-ws.oeg-upm.net/
URI input
OWL
code
input
33. OOPS!: on-line ontology diagnosis
OOPS! – OntOlogy Pitfall Scanner!
33
§ Implements the 48 detection methods for 33
o Pitfalls selection
o Selection by dimensions and aspects
§ Web user interface http://oops.linkeddata.es/
§ Web service http://oops-ws.oeg-upm.net/
URI input
OWL
code
input
Importance level
Pitfall
description
Affected
elements
34. OOPS!: on-line ontology diagnosis
OOPS! – OntOlogy Pitfall Scanner!
34
§ Implements the 48 detection methods for 33
o Pitfalls selection
o Selection by dimensions and aspects
§ Web user interface http://oops.linkeddata.es/
§ Web service http://oops-ws.oeg-upm.net/
URI input
OWL
code
input
Importance level
Pitfall
description
Affected
elements
1. OOPS! USER INTERFACE AND WEB SERVICE
– oops:hasDescription: indicates the description of the suggestion value.
– oops:hasAffectedElement: this element will contain as many URIs as ele-
ments detected during the analysis.
Listing ?? shows an example of response provided by the web service in format
RDF/XML for the request shown in Listing ??. It can be observed that the request
indicated three pitfalls to be detected from which only two have been found.
1 <rdf:RDF
2 xmlns:rdf=" http: //www. w3 . org /1999/02/22´ rdf´syntax´ns#"
3 xmlns:owl=" http: //www. w3 . org /2002/07/ owl#"
4 xmlns:xsd=" http: //www. w3 . org /2001/XMLSchema#"
5 xmlns:oops=" http: //www. oeg´upm. net /oops#"
6 xmlns:rdfs=" http: //www. w3 . org /2000/01/ rdf´schema#" >
7 <r d f : D e s c r i p t i o n rdf:about=" http: //www. oeg´upm. net /oops#suggestion ">
8 <r d f : t y p e r d f : r e s o u r c e=" http: //www. w3 . org /2002/07/ owl#Class "/>
9 </ r d f : D e s c r i p t i o n>
10 <r d f : D e s c r i p t i o n rdf:about=" http: //www. oeg´upm. net /oops/ fdea1aa6 ´71d6´4557´
a17a´dc3244ff536b ">
11 <oops:hasCode rdf:datatype=" http: //www. w3 . org /2001/XMLSchema#s t r i n g ">P10</
oops:hasCode>
12 <oops:hasName rdf:datatype=" http: //www. w3 . org /2001/XMLSchema#s t r i n g ">Missing
d i s j o i n t n e s s [ 1 , 2 , 3]</oops:hasName>
13 <oops:hasDescription rdf:datatype=" http: //www. w3 . org /2001/XMLSchema#s t r i n g ">
The ontology l a c k s d i s j o i n t axioms between c l a s s e s or between p r o p e r t i e s
that should be defined as d i s j o i n t .</ oops:hasDescription> <r d f : t y p e
r d f : r e s o u r c e=" http: //www. oeg´upm. net /oops#p i t f a l l "/>
14 <oops:hasImportanceLevel rdf:datatype=" http: //www. w3 . org /2001/XMLSchema#
s t r i n g ">Important</ oops:hasImportanceLevel>
15 <oops:hasNumberAffectedElements rdf:datatype=" http: //www. w3 . org /2001/
XMLSchema#i n t e g e r ">1</ oops:hasNumberAffectedElements>
16 </ r d f : D e s c r i p t i o n>
17 <r d f : D e s c r i p t i o n rdf:about=" http: //www. oeg´upm. net /oops /496 ae03d ´48c6 ´406d´8
d07´530bf05c9ac1 ">
18 <o o p s : h a s P i t f a l l r d f : r e s o u r c e=" http: //www. oeg´upm. net /oops/ fdea1aa6 ´71d6
´4557´a17a´dc3244ff536b "/>
19 <r d f : t y p e r d f : r e s o u r c e=" http: //www. oeg´upm. net /oops#response "/>
20 </ r d f : D e s c r i p t i o n>
21 <r d f : D e s c r i p t i o n rdf:about=" http: //www. oeg´upm. net /oops#p i t f a l l ">
22 <r d f : t y p e r d f : r e s o u r c e=" http: //www. w3 . org /2002/07/ owl#Class "/>
23 </ r d f : D e s c r i p t i o n>
24 </rdf:RDF>
Listing 1.4: Example of XML/RDF response from the web service
37. OOPS!: on-line ontology diagnosis
International adoption and use
37
§ 60 Countries
§ 3000 times used
38. OOPS!: on-line ontology diagnosis
Adoption and use
38
§ Used at university courses
§ Used in scientific reports
o Evaluation and assessment
§ Used in companies
o Development and training
§ Integrated in other systems:
o 3 External: LOV, OntoHub, DrOntoAPI
o 3 OEG: Widoco, SmartCity ontology catalogue, OnToology
39. OOPS!: on-line ontology diagnosis
Table of Contents
• Introduction
• Approach
• Pitfall catalogue
• OOPS!
• Future lines of work
39
40. OOPS!: on-line ontology diagnosis
Wrapping up
40
Pitfall
catalogue
§ 41 pitfall descriptions
§ Importance levels
§ Classification
§ Repair tips
Detection
methods
§ 48 methods
§ 33 pitfalls
OOPS!
§ Access for users and
systems
§ Broadly used and
adopted
41. OOPS!: on-line ontology diagnosis
Future lines of work
41
OOPS!
§ To integrate OOPS! within ontology
editors
§ To carry out a quantitative assessment
of OOPS!
Pitfall
catalogue
§ To maintain and extend
the catalogue
o Multilingualism
o Metadata
o Annotations
o Adapt to OWL 2
§ To establish relationships
between pitfalls
Detection
methods
§ To transform and compare
structural patterns with SPARQL
queries
§ To improve detection methods
(linguistic techniques)
§ To include the guidelines for
ontology repair
§ To improve scalability for
large ontologies
§ To use data during the
diagnosis
§ Diagnosis of the
data? Potential
integration with Loupe
43. OOPS!: on-line ontology diagnosis
References
43
§ Poveda Villalón, M. (2016). Ontology Evaluation: a pitfall-based approach to ontology diagnosis (Doctoral
dissertation, ETSI_Informatica).
§ Poveda-Villalón, M., Gómez-Pérez, A., & Suárez-Figueroa, M. C. (2014). Oops!(ontology pitfall scanner!): An
on-line tool for ontology evaluation. International Journal on Semantic Web and Information Systems
(IJSWIS), 10(2), 7-34.
Icons made by Freepik from www.flaticon.com
44. OOPS! (ONTOLOGY PITFALL SCANNER!):
ON-LINE ONTOLOGY DIAGNOSIS
María Poveda-Villalón
Mari Carmen Suárez-Figueroa and Asunción Gómez-Pérez
Ontology Engineering Group.
Universidad Politécnica de Madrid.
mpoveda@fi.upm.es
Data Quality Tutorial – SEMANTICS 2016
12th September
This work has been partially supportedby the Spanish project"4V:volumen, velocidad, variedad y validez en
la gestión innovadorade datos” (TIN2013-46238-C4-2-R) and theEuropeanproject “Ready4SmartCities - ICT
Roadmap and Data Interoperability for Energy Systems in Smart Cities” (FP7-608711).
OOPS! website: http://oops.linkeddata.es
Twitter account: @OOPSoeg