lookIn = match.getParents(); } else if (reference.getAncestors().contains(match)) { toFind = match; lookIn = reference.getParents(); } else { Set<OntologyTerm> next = new HashSet<OntologyTerm>(); for (OntologyTerm term : lookIn) { next.addAll(term.getParents());
private long processAncestorsAtDistance(int localDistance, Set<OntologyTerm> sourceUnprocessedAncestors, Map<String, Integer> sourceDistanceMap, Map<String, Integer> targetDistanceMap) { long minDistance = Integer.MAX_VALUE; Set<OntologyTerm> nextLevel = new HashSet<OntologyTerm>(); for (OntologyTerm term : sourceUnprocessedAncestors) { for (OntologyTerm parent : term.getParents()) { if (sourceDistanceMap.containsKey(parent.getId())) { continue; } if (targetDistanceMap.containsKey(parent.getId())) { minDistance = Math.min(minDistance, targetDistanceMap.get(parent.getId()) + localDistance); } nextLevel.add(parent); sourceDistanceMap.put(parent.getId(), localDistance); } } sourceUnprocessedAncestors.clear(); sourceUnprocessedAncestors.addAll(nextLevel); return minDistance; }