owl2_graph_reasoner in pkb branch

12 views
Skip to first unread message

Chris Mungall

unread,
Nov 13, 2010, 7:29:52 PM11/13/10
to thea-o...@googlegroups.com

I'm working a lot of the pkb branch these days, mostly on the following two modules:

> ** owl2_graph_reasoner
>
> ---+ Synopsis
>
> Provides simple graph-like reachability operations over an OWL
> ontology. This is not intended to be a complete reasoner, but is
> useful for performing simple traversal type queries. For example, the
> following finds all classes reachable from my_leaf_class. Path is a
> list of condensed relationships:
>
> ==
> class_ancestor_over(my_leaf_class,Anc,Path)
> ==
>
> Path is condensed - if there are multiple subclass edges in a row,
> these are compacted to a single one. Same for transitive
> someValuesFrom chains, etc
>
> ** owl2_lcs
>
> ---+ Synopsis
>
> This module is used for caclulating meaningful least common subsumer
> (LCS) class expressions.
>
> Note this is not as trivial as calculating the least common subsuming
> named class, see the examples below.
>
> This module also has similar functionality for individuals. It
> includes a method individual_msc/3 which will calculate the minimal
> subsuming class for an individual, up to a specified depth.
>
>
> ---+ Example
>
> Consider the ontology:
>
> ==
> Class: spicy_tomato_pizza
> EquivalentTo: pizza and hasPart some (topping and hasQuality some spicy) and hasPart some tomato
>
> Class: pizza
> SubClassOf: hasPart some mozzarella
>
> Class: spicy_paneer_curry
> EquivalentTo: curry and hasPart some paneer and hasPart some (sauce and derivesFrom some tomato) and hasQuality some spicy
>
> Class: paneer SubClassOf: cheese
> Class: mozzarella SubClassOf: cheese
>
> Class: pizza SubClassOf: food
> Class: curry SubClassOf: food
> ==
>
> The named LCS of STP and SPC is "food", which is not very informative. This tool derives a more specific class expression:
>
> ==
> food and
> ((hasPart some tomato) or (hasPart some derivesFrom some tomato)) and
> ((hasPart some hasQuality some spicy) or (hasQuality some spicy)) and
> hasPart some cheese
> ==
>
> This is quite an awkward class expression. It can be simplified by adding property chain axioms to the ontology.
>

I've been making the other additional change here and there to other modules, mostly adding to command line capabilities. I'll merge some of these back in soon.

I'm not sure if owl2_lcs belongs in Thea on in a separate Thea applications project.

Reply all
Reply to author
Forward
0 new messages