result.add(node);
if (!direct)
result.addAll(node.getDescendantNodes());
return dataPropertyHierarchyNodesToNodeSet(result);
}
AtomicRole atomicRole=H(propertyExpression.asOWLDataProperty());
Individual freshIndividual=Individual.create("fresh-individual");
Constant freshConstant=Constant.createAnonymous("fresh-constant");
Atom atomicRoleAssertion=atomicRole.getRoleAssertion(freshIndividual,freshConstant);
Tableau tableau=getTableau();
Set<HierarchyNode<AtomicRole>> nodesToTest=new HashSet<HierarchyNode<AtomicRole>>();
nodesToTest.addAll(m_dataRoleHierarchy.getTopNode().getChildNodes());
while (!nodesToTest.isEmpty()) {
HierarchyNode<AtomicRole> nodeToTest=nodesToTest.iterator().next();
nodesToTest.remove(nodeToTest);
AtomicRole atomicRoleToTest=nodeToTest.getRepresentative();
Atom atomicRoleToTestAssertion=atomicRoleToTest.getRoleAssertion(freshIndividual,freshConstant);
Set<Atom> perTestAtoms=new HashSet<Atom>(2);
perTestAtoms.add(atomicRoleAssertion);
perTestAtoms.add(atomicRoleToTestAssertion);
if (!tableau.isSatisfiable(false,perTestAtoms,null,null,null,null,new ReasoningTaskDescription(true,"disjointness of {0} and {1}",atomicRole,atomicRoleToTest))) {
// disjoint