}
Role role=H(propertyExpression);
Individual freshIndividualA=Individual.createAnonymous("fresh-individual-A");
Individual freshIndividualB=Individual.createAnonymous("fresh-individual-B");
Atom roleAssertion=role.getRoleAssertion(freshIndividualA,freshIndividualB);
Tableau tableau=getTableau();
Set<HierarchyNode<Role>> nodesToTest=new HashSet<HierarchyNode<Role>>();
nodesToTest.addAll(m_objectRoleHierarchy.getTopNode().getChildNodes());
while (!nodesToTest.isEmpty()) {
HierarchyNode<Role> nodeToTest=nodesToTest.iterator().next();
nodesToTest.remove(nodeToTest);
Role roleToTest=nodeToTest.getRepresentative();
Atom roleToTestAssertion=roleToTest.getRoleAssertion(freshIndividualA,freshIndividualB);
Set<Atom> perTestAtoms=new HashSet<Atom>(2);
perTestAtoms.add(roleAssertion);
perTestAtoms.add(roleToTestAssertion);
if (!tableau.isSatisfiable(false,perTestAtoms,null,null,null,null,new ReasoningTaskDescription(true,"disjointness of {0} and {1}",role,roleToTest))) {
// disjoint
if (direct)
result.add(nodeToTest);
else
result.addAll(nodeToTest.getDescendantNodes());