@Test
public void topObjectDisjoints()
{
final KnowledgeBaseImpl kb = new KnowledgeBaseImpl();
final ATermAppl p = term("p");
final ATermAppl subP = term("subP");
final ATermAppl q = term("q");
kb.addObjectProperty(p);
kb.addObjectProperty(subP);
kb.addObjectProperty(q);
kb.addSubProperty(subP, p);
kb.addDisjointProperty(p, q);
kb.getRoleTaxonomy(true).getTop().print();
kb.getRoleTaxonomy(false).getTop().print();
assertTrue(kb.isDisjointProperty(BOTTOM_OBJECT_PROPERTY, TOP_OBJECT_PROPERTY));
assertTrue(kb.isDisjointProperty(TOP_OBJECT_PROPERTY, BOTTOM_OBJECT_PROPERTY));
assertEquals(singletonSets(BOTTOM_OBJECT_PROPERTY), kb.getDisjointProperties(TOP_OBJECT_PROPERTY));
assertEquals(singletonSets(BOTTOM_OBJECT_PROPERTY, TOP_OBJECT_PROPERTY, p, subP, q), kb.getDisjointProperties(BOTTOM_OBJECT_PROPERTY));
assertEquals(singletonSets(BOTTOM_OBJECT_PROPERTY, q), kb.getDisjointProperties(p));
assertEquals(singletonSets(BOTTOM_OBJECT_PROPERTY, p, subP), kb.getDisjointProperties(q));
assertEquals(singletonSets(BOTTOM_OBJECT_PROPERTY), kb.getDisjointProperties(TOP_OBJECT_PROPERTY, true));
assertEquals(singletonSets(TOP_OBJECT_PROPERTY), kb.getDisjointProperties(BOTTOM_OBJECT_PROPERTY, true));
assertEquals(singletonSets(q), kb.getDisjointProperties(p, true));
assertEquals(singletonSets(p), kb.getDisjointProperties(q, true));
}