protected boolean findTarget(final ATermAppl term, final ATermAppl target, final Set<ATermAppl> seen) { final List<ATermAppl> queue = new ArrayList<>(); queue.add(term); while (!queue.isEmpty()) { _kb.getTimers().checkTimer("preprocessing"); final ATermAppl current = queue.remove(queue.size() - 1); if (!seen.add(current)) continue; if (current.equals(target)) return true; final TermDefinition td = getTD(current); if (td != null) { // Shortcut if (td.getDependencies().contains(target)) return true; queue.addAll(td.getDependencies()); } } return false; }
protected boolean findTarget(final ATermAppl term, final ATermAppl target, final Set<ATermAppl> seen) { final List<ATermAppl> queue = new ArrayList<>(); queue.add(term); while (!queue.isEmpty()) { _kb.getTimers().checkTimer("preprocessing"); final ATermAppl current = queue.remove(queue.size() - 1); if (!seen.add(current)) continue; if (current.equals(target)) return true; final TermDefinition td = getTD(current); if (td != null) { // Shortcut if (td.getDependencies().contains(target)) return true; queue.addAll(td.getDependencies()); } } return false; }
public void absorb() { _subLogger.fine("Absorption started"); _subLogger.fine(() -> "Tg.size was " + _termhash.size() + " _Tu.size was " + _tbox._Tu.size()); final Collection<TermDefinition> terms = _termhash.values(); // _termhash.clear(); FIXME : why is this doesn't work ? // _termhash = new HashMap<>(); _termhash = CollectionUtils.makeIdentityMap(); for (final TermDefinition def : terms) { _kb.getTimers().checkTimer("preprocessing"); for (final ATermAppl subClassAxiom : def.getSubClassAxioms()) { final ATermAppl c1 = (ATermAppl) subClassAxiom.getArgument(0); final ATermAppl c2 = (ATermAppl) subClassAxiom.getArgument(1); absorbSubClass(c1, c2, _tbox.getAxiomExplanation(subClassAxiom)); } for (final ATermAppl eqClassAxiom : def.getEqClassAxioms()) { final ATermAppl c1 = (ATermAppl) eqClassAxiom.getArgument(0); final ATermAppl c2 = (ATermAppl) eqClassAxiom.getArgument(1); absorbSubClass(c1, c2, _tbox.getAxiomExplanation(eqClassAxiom)); absorbSubClass(c2, c1, _tbox.getAxiomExplanation(eqClassAxiom)); } } _subLogger.fine(() -> "Tg.size is " + _termhash.size() + " _Tu.size is " + _tbox._Tu.size()); _subLogger.fine("Absorption finished"); }
public void absorb() { _subLogger.fine("Absorption started"); _subLogger.fine(() -> "Tg.size was " + _termhash.size() + " _Tu.size was " + _tbox._Tu.size()); final Collection<TermDefinition> terms = _termhash.values(); // _termhash.clear(); FIXME : why is this doesn't work ? // _termhash = new HashMap<>(); _termhash = CollectionUtils.makeIdentityMap(); for (final TermDefinition def : terms) { _kb.getTimers().checkTimer("preprocessing"); for (final ATermAppl subClassAxiom : def.getSubClassAxioms()) { final ATermAppl c1 = (ATermAppl) subClassAxiom.getArgument(0); final ATermAppl c2 = (ATermAppl) subClassAxiom.getArgument(1); absorbSubClass(c1, c2, _tbox.getAxiomExplanation(subClassAxiom)); } for (final ATermAppl eqClassAxiom : def.getEqClassAxioms()) { final ATermAppl c1 = (ATermAppl) eqClassAxiom.getArgument(0); final ATermAppl c2 = (ATermAppl) eqClassAxiom.getArgument(1); absorbSubClass(c1, c2, _tbox.getAxiomExplanation(eqClassAxiom)); absorbSubClass(c2, c1, _tbox.getAxiomExplanation(eqClassAxiom)); } } _subLogger.fine(() -> "Tg.size is " + _termhash.size() + " _Tu.size is " + _tbox._Tu.size()); _subLogger.fine("Absorption finished"); }