Skip to content

Files

Latest commit

 

History

History

OWLTools-Core

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
For full documentation, see the Wiki:

 * http://code.google.com/p/owltools

== Use Cases ==

At this time, this library is intended to satisfy a number of different use cases, including:

* Simplified access to the OWLAPI for common operations involving annotation properties and inter-class connectivity

* A fast way to perform sound transitive closure over a large and complex ontology

* A framework for ontology-based data mining, statistics, semantic similarity and class enrichment

* Provides tools to build an ontology release

These capabilities may be split into separate APIs at some point.

USE CASES

* Testing for "direct connectivity" between classes

An ontology contains multiple axioms, including basic all-some restrictions:

[1] a SubClassOf part_of some b

as well as nested expressions:

[2] c SubClassOf part_of some (develops_from some d)

Informally, we consider these connected in the sense there is no intermediate named objects. We wish to [i] test for connectivity between
pairs of classes such as <a,b> and <c,d>, and [ii] determine the relationship between these pairs ("part_of some" and "part_of some develops_from some"
respectively).

Currently this is difficult with the OWLAPI.

*  Testing for "indirect connectivity" between classes

An ontology contains axioms such as

[1] a SubClassOf part_of some b
[2] b SubClassOf part_of some c
[3] TransitiveProperty(part_of)

If we want to find classes whose instances are all part_of c we can ask a DL reasoner for subclasses of "part_of some c", and get the
desired answer of {a,b} (assuming the ontology is of a size it can be reasoned over using a DL reasoner).

However, starting from a is more difficult. If we want to find all "part_of ancestors" of a (more formally:
all classes X such that "part_of X" subsumes a) then we must either explicitly test all such class expressions,
or exhaustively name the set of "part_of X" class expressions prior to reasoning.

This is even more difficult if we want to find "all ancestors" of a.

* Testing for LCSs between classes (incl. class expressions)

Semantic similarity requires finding the LCS (Least Common Subsumer) of two classes. For optimal results we
want to include class expressions such that if we have

big_ear = ear and big
big_eye = eye and big
ear SubClassOf organ
eye SubClassOf organ

then

LCS(big_ear,big_eye) = organ and big

For optimal results we need to generate class expressions in the set of ancestors (see previous use case).

big_ear_human = human and has_part some big_ear
big_eye_sheep = sheep and has_part some big_eye
LCS = mammal and has_part some (organ and big)

(See email to OWL discussion list)

* Semantic similarity

given instance data such as

human1 facts: human and has_part some big_ear and has_part some small_eye and ...
human2 facts: human and ...

we want to determine the semantic similarity between these individuals based on their properties in common.
We can use a variety of metrics - jacard similarity, maximum information content of LCS, average IC
of all elements of LCS as considered independent....