org.semanticweb.owlapi.util
Class OWLObjectPropertyManager

java.lang.Object
  extended by org.semanticweb.owlapi.util.OWLObjectPropertyManager

public class OWLObjectPropertyManager
extends java.lang.Object

Author: Matthew Horridge
The University Of Manchester
Bio-Health Informatics Group
Date: 25-Feb-2008


Constructor Summary
OWLObjectPropertyManager(OWLOntologyManager manager, OWLOntology ont)
           
 
Method Summary
 void dispose()
           
 java.util.Set<OWLObjectPropertyExpression> getCompositeProperties()
           
 java.util.Collection<java.util.Set<OWLObjectPropertyExpression>> getEquivalentObjectProperties()
           
static java.util.Collection<java.util.Set<OWLObjectPropertyExpression>> getEquivalentObjectProperties(java.util.Set<OWLOntology> ontologies)
           
 java.util.Map<OWLObjectPropertyExpression,java.util.Set<OWLObjectPropertyExpression>> getHierarchyReflexiveTransitiveClosure()
           
 java.util.Set<OWLObjectPropertyExpression> getNonSimpleProperties()
           
protected  java.util.Set<OWLOntology> getOntologies()
           
 java.util.Map<OWLObjectPropertyExpression,java.util.Set<OWLObjectPropertyExpression>> getPropertyHierarchy()
          The object property hierarchy relation → is the smallest relation on object property expressions for which the following conditions hold (A → B means that → holds for A and B): if Ax contains an axiom SubObjectPropertyOf(PE1 PE2), then PE1 → PE2 holds; and if Ax contains an axiom EquivalentObjectProperties(PE1 PE2), then PE1 → PE2 and PE2 → PE1 hold; and if Ax contains an axiom InverseObjectProperties(PE1 PE2), then PE1 → INV(PE2) and INV(PE2) → PE1 hold; and if Ax contains an axiom SymmetricObjectProperty(PE), then PE → INV(PE) holds; and if PE1 → PE2 holds, then INV(PE1) → INV(PE2) holds as well.
 java.util.Map<OWLObjectPropertyExpression,java.util.Set<OWLObjectPropertyExpression>> getPropertyPartialOrdering()
           
 boolean isComposite(OWLObjectPropertyExpression expression)
          An object property expression PE is composite in Ax if Ax contains an axiom of the form SubObjectPropertyOf(SubObjectPropertyChain(PE1 ...
 boolean isLessThan(OWLObjectPropertyExpression propA, OWLObjectPropertyExpression propB)
           
 boolean isNonSimple(OWLObjectPropertyExpression expression)
          The relation →* is the reflexive-transitive closure of →.
 boolean isSubPropertyOf(OWLObjectPropertyExpression sub, OWLObjectPropertyExpression sup)
          Tests to see if one property is a sub property of another property in the reflexive transitive closure of the property hierarchy
static void tarjan(java.util.Set<OWLOntology> ontologies, OWLObjectPropertyExpression prop, int index, java.util.Stack<OWLObjectPropertyExpression> stack, java.util.Map<OWLObjectPropertyExpression,java.lang.Integer> indexMap, java.util.Map<OWLObjectPropertyExpression,java.lang.Integer> lowlinkMap, java.util.Set<java.util.Set<OWLObjectPropertyExpression>> result, java.util.Set<OWLObjectPropertyExpression> processed, java.util.Set<OWLObjectPropertyExpression> stackProps)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OWLObjectPropertyManager

public OWLObjectPropertyManager(OWLOntologyManager manager,
                                OWLOntology ont)
Method Detail

dispose

public void dispose()

getOntologies

protected java.util.Set<OWLOntology> getOntologies()

isComposite

public boolean isComposite(OWLObjectPropertyExpression expression)
An object property expression PE is composite in Ax if Ax contains an axiom of the form SubObjectPropertyOf(SubObjectPropertyChain(PE1 ... PEn) PE) with n > 1, or SubObjectPropertyOf(SubObjectPropertyChain(PE1 ... PEn) INV(PE)) with n > 1, or TransitiveObjectProperty(PE), or TransitiveObjectProperty(INV(PE)).

Parameters:
expression - The object property expression to be tested
Returns:
true if the object property is composite (according to the above definition) or false if the object property is not composite.

getCompositeProperties

public java.util.Set<OWLObjectPropertyExpression> getCompositeProperties()

getPropertyHierarchy

public java.util.Map<OWLObjectPropertyExpression,java.util.Set<OWLObjectPropertyExpression>> getPropertyHierarchy()
The object property hierarchy relation → is the smallest relation on object property expressions for which the following conditions hold (A → B means that → holds for A and B): if Ax contains an axiom SubObjectPropertyOf(PE1 PE2), then PE1 → PE2 holds; and if Ax contains an axiom EquivalentObjectProperties(PE1 PE2), then PE1 → PE2 and PE2 → PE1 hold; and if Ax contains an axiom InverseObjectProperties(PE1 PE2), then PE1 → INV(PE2) and INV(PE2) → PE1 hold; and if Ax contains an axiom SymmetricObjectProperty(PE), then PE → INV(PE) holds; and if PE1 → PE2 holds, then INV(PE1) → INV(PE2) holds as well.

Returns:
A Map that maps sub properties to sets of super properties.

getHierarchyReflexiveTransitiveClosure

public java.util.Map<OWLObjectPropertyExpression,java.util.Set<OWLObjectPropertyExpression>> getHierarchyReflexiveTransitiveClosure()

isSubPropertyOf

public boolean isSubPropertyOf(OWLObjectPropertyExpression sub,
                               OWLObjectPropertyExpression sup)
Tests to see if one property is a sub property of another property in the reflexive transitive closure of the property hierarchy

Parameters:
sub - The sub property
sup - The super property
Returns:
true if sub is the sub-property of sup, otherwise false

isNonSimple

public boolean isNonSimple(OWLObjectPropertyExpression expression)
The relation →* is the reflexive-transitive closure of →. An object property expression PE is simple in Ax if, for each object property expression PE' such that PE' →* PE holds, PE' is not composite.

Parameters:
expression - The expression to be tested.
Returns:
true if the object property expression is simple, otherwise false.

getNonSimpleProperties

public java.util.Set<OWLObjectPropertyExpression> getNonSimpleProperties()

getPropertyPartialOrdering

public java.util.Map<OWLObjectPropertyExpression,java.util.Set<OWLObjectPropertyExpression>> getPropertyPartialOrdering()

isLessThan

public boolean isLessThan(OWLObjectPropertyExpression propA,
                          OWLObjectPropertyExpression propB)

getEquivalentObjectProperties

public static java.util.Collection<java.util.Set<OWLObjectPropertyExpression>> getEquivalentObjectProperties(java.util.Set<OWLOntology> ontologies)

getEquivalentObjectProperties

public java.util.Collection<java.util.Set<OWLObjectPropertyExpression>> getEquivalentObjectProperties()

tarjan

public static void tarjan(java.util.Set<OWLOntology> ontologies,
                          OWLObjectPropertyExpression prop,
                          int index,
                          java.util.Stack<OWLObjectPropertyExpression> stack,
                          java.util.Map<OWLObjectPropertyExpression,java.lang.Integer> indexMap,
                          java.util.Map<OWLObjectPropertyExpression,java.lang.Integer> lowlinkMap,
                          java.util.Set<java.util.Set<OWLObjectPropertyExpression>> result,
                          java.util.Set<OWLObjectPropertyExpression> processed,
                          java.util.Set<OWLObjectPropertyExpression> stackProps)