OntologyAlgorithm { public static Set<TermId> getAncestorTerms( Ontology ontology, TermId rootTerm, Set<TermId> children, boolean includeOriginalTerm) { ImmutableOntology subontology = (ImmutableOntology) ontology.subOntology(rootTerm); return getAncestorTerms(subontology, children, includeOriginalTerm); } private  OntologyAlgorithm(); static boolean existsPath(
      Ontology ontology,
      final TermId sourceID,
      TermId destID); static Set<TermId> getChildTerms(
    Ontology ontology, TermId parentTermId); static Set<TermId> getChildTerms(
      Ontology ontology,
      TermId parentTermId,
      boolean includeOriginalTerm); static Set<TermId> getChildTerms(
    Ontology ontology, Set<TermId> parentTermIdSet); static Set<TermId> getParentTerms(
    Ontology ontology, Set<TermId> childTermIdSet); static Set<TermId> getParentTerms(
      Ontology ontology,
      Set<TermId> childTermIdSet,
      boolean includeOriginalTerm); static Set<TermId> getDescendents(
    Ontology ontology, TermId parentTermId); static Set<TermId> getParentTerms(
      Ontology ontology,
      TermId childTermId,
      boolean includeOriginalTerm); static Set<TermId> getAncestorTerms(
      Ontology ontology,
      TermId rootTerm,
      Set<TermId> children,
      boolean includeOriginalTerm); static Set<TermId> getAncestorTerms(
      Ontology ontology,
      TermId rootTerm,
      TermId child,
      boolean includeOriginalTerm); static Set<TermId> getAncestorTerms(
      Ontology ontology,
      Set<TermId> children,
      boolean includeOriginalTerm); static Set<TermId> getAncestorTerms(
      Ontology ontology,
      TermId child,
      boolean includeOriginalTerm); static Set<TermId> getParentTerms(
    Ontology ontology, TermId childTermId); static Set<TermId> getAncestorTerms(
    Ontology ontology, TermId childTermId); static boolean isSubclass(
    Ontology ontology, TermId source, TermId dest); static boolean termsAreSiblings(
    Ontology ontology, TermId t1, TermId t2); static boolean termsAreRelated(
    Ontology ontology, TermId t1, TermId t2); static boolean termsAreUnrelated(
    Ontology ontology, TermId t1, TermId t2);  }
@Test public void testGetAncestorsFromSubOntology() { Set<TermId> expected1 = ImmutableSet.of(id1, id2, id3, id4, id5); assertEquals(expected1, getAncestorTerms(ontology, id5, id1, true)); Set<TermId> expected2 = ImmutableSet.of(id2, id3, id4, id5); assertEquals(expected2, getAncestorTerms(ontology, id5, id1, false)); Set<TermId> expected3 = ImmutableSet.of(id1, id2); assertEquals(expected3, getAncestorTerms(ontology, id2, id1, true)); Set<TermId> expected4 = ImmutableSet.of(id2); assertEquals(expected4, getAncestorTerms(ontology, id2, id1, false)); }
@Test public void testGetAncestorsId1() { Set<TermId> expected = ImmutableSet.of(id1, id2, id3, id4, id5); assertEquals(expected, getAncestorTerms(ontology, id1)); }