OWLOntology ont = loadOntology( base + "anon_inverse.owl" );
OWLClass C = Class( ns + "C" );
OWLClass D = Class( ns + "D" );
OWLObjectProperty r = ObjectProperty( ns + "r" );
OWLDescription desc = some( inverse( r ), D );
Reasoner reasoner = new Reasoner( OWL.manager );
reasoner.loadOntologies( Collections.singleton( ont ) );
assertEquals( Collections.singleton( Collections.singleton( C ) ), reasoner
.getSubClasses( desc ) );
assertTrue( reasoner.isInverseFunctional( ObjectProperty( ns + "functionalP" ) ) );
assertTrue( reasoner.isFunctional( ObjectProperty( ns + "inverseFunctionalP" ) ) );
assertTrue( reasoner.isTransitive( ObjectProperty( ns + "transitiveP" ) ) );
assertTrue( reasoner.isSymmetric( ObjectProperty( ns + "symmetricP" ) ) );
assertTrue( reasoner.isReflexive( ObjectProperty( ns + "reflexiveP" ) ) );
assertTrue( reasoner.isIrreflexive( ObjectProperty( ns + "irreflexiveP" ) ) );
assertTrue( reasoner.isAntiSymmetric( ObjectProperty( ns + "asymmetricP" ) ) );
OWLObjectProperty p1 = ObjectProperty( ns + "p1" );
OWLObjectProperty p2 = ObjectProperty( ns + "p2" );
OWLObjectProperty p3 = ObjectProperty( ns + "p3" );
assertTrue( reasoner.isEquivalentProperty( p1, p2 ) );
assertTrue( reasoner.isEquivalentProperty( p1, p3 ) );
assertTrue( reasoner.isEquivalentProperty( p2, p3 ) );
}