OntologyAlgorithm { public static Set<TermId> getParentTerms( Ontology ontology, Set<TermId> childTermIdSet) { ImmutableSet.Builder<TermId> parents = new ImmutableSet.Builder<>(); for (TermId tid : childTermIdSet) { parents.addAll(getParentTerms(ontology, tid)); } return parents.build(); } 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 testRootHasNoParent() { Set<TermId> expected = ImmutableSet.of(id5); assertEquals(expected, getParentTerms(ontology, id5)); }
@Test public void testReturnParentWithoutOriginalTerm() { Set<TermId> expected = ImmutableSet.of(id2, id3, id4); assertEquals(expected, getParentTerms(ontology, id1, false)); expected = new HashSet<>(); assertEquals(expected, getParentTerms(ontology, id5, false)); }
@Test public void testGetParentsId2() { Set<TermId> expected = ImmutableSet.of(id2, id5); assertEquals(expected, getParentTerms(ontology, id2)); assertNotEquals(expected, getParentTerms(ontology, id5)); expected = ImmutableSet.of(id5); assertEquals(expected, getParentTerms(ontology, id5)); }
@Test public void testGetParentsId1() { Set<TermId> expected = ImmutableSet.of(id1, id2, id3, id4); assertEquals(expected, getParentTerms(ontology, id1)); }
@Test public void testGetParentsOfSet() { Set<TermId> queryTerms = ImmutableSet.of(id3, id4); Set<TermId> expected = ImmutableSet.of(id3, id4, id5); assertEquals(expected, getParentTerms(ontology, queryTerms)); }