private boolean subsumed(final TaxonomyNode<ATermAppl> node, final Role c, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final Boolean cached = marked.get(node); if (cached != null) return cached.booleanValue(); // check subsumption final boolean subsumed = subsumes(c, _rbox.getRole(node.getName())); // create an object based on result final Boolean value = subsumed ? Boolean.TRUE : Boolean.FALSE; // during bottom search only negative information is propagated down final Propagate propagate = subsumed ? Propagate.NONE : Propagate.UP; // mark the _node appropriately mark(node, marked, value, propagate); return subsumed; }
private boolean subsumes(final TaxonomyNode<ATermAppl> node, final Role c, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final Boolean cached = marked.get(node); if (cached != null) return cached.booleanValue(); // check subsumption final boolean subsumes = subsumes(_rbox.getRole(node.getName()), c); // create an object based on result final Boolean value = subsumes ? Boolean.TRUE : Boolean.FALSE; // during top search only negative information is propagated down final Propagate propagate = subsumes ? Propagate.NONE : Propagate.DOWN; // mark the _node appropriately mark(node, marked, value, propagate); return subsumes; }
private Collection<TaxonomyNode<ATermAppl>> search(final boolean topSearch, final Role c, final TaxonomyNode<ATermAppl> x, final Set<TaxonomyNode<ATermAppl>> visited, final List<TaxonomyNode<ATermAppl>> result, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final List<TaxonomyNode<ATermAppl>> posSucc = new ArrayList<>(); visited.add(x); final Collection<TaxonomyNode<ATermAppl>> list = topSearch ? x.getSubs() : x.getSupers(); for (final TaxonomyNode<ATermAppl> next : list) if (topSearch) { if (subsumes(next, c, marked)) posSucc.add(next); } else if (subsumed(next, c, marked)) posSucc.add(next); if (posSucc.isEmpty()) result.add(x); else for (final TaxonomyNode<ATermAppl> y : posSucc) if (!visited.contains(y)) search(topSearch, c, y, visited, result, marked); return result; }
private boolean subsumes(final TaxonomyNode<ATermAppl> node, final Role c, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final Boolean cached = marked.get(node); if (cached != null) return cached.booleanValue(); // check subsumption final boolean subsumes = subsumes(_rbox.getRole(node.getName()), c); // create an object based on result final Boolean value = subsumes ? Boolean.TRUE : Boolean.FALSE; // during top search only negative information is propagated down final Propagate propagate = subsumes ? Propagate.NONE : Propagate.DOWN; // mark the _node appropriately mark(node, marked, value, propagate); return subsumes; }
private boolean subsumed(final TaxonomyNode<ATermAppl> node, final Role c, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final Boolean cached = marked.get(node); if (cached != null) return cached.booleanValue(); // check subsumption final boolean subsumed = subsumes(c, _rbox.getRole(node.getName())); // create an object based on result final Boolean value = subsumed ? Boolean.TRUE : Boolean.FALSE; // during bottom search only negative information is propagated down final Propagate propagate = subsumed ? Propagate.NONE : Propagate.UP; // mark the _node appropriately mark(node, marked, value, propagate); return subsumed; }
private Collection<TaxonomyNode<ATermAppl>> search(final boolean topSearch, final Role c, final TaxonomyNode<ATermAppl> x, final Set<TaxonomyNode<ATermAppl>> visited, final List<TaxonomyNode<ATermAppl>> result, final Map<TaxonomyNode<ATermAppl>, Boolean> marked) { final List<TaxonomyNode<ATermAppl>> posSucc = new ArrayList<>(); visited.add(x); final Collection<TaxonomyNode<ATermAppl>> list = topSearch ? x.getSubs() : x.getSupers(); for (final TaxonomyNode<ATermAppl> next : list) if (topSearch) { if (subsumes(next, c, marked)) posSucc.add(next); } else if (subsumed(next, c, marked)) posSucc.add(next); if (posSucc.isEmpty()) result.add(x); else for (final TaxonomyNode<ATermAppl> y : posSucc) if (!visited.contains(y)) search(topSearch, c, y, visited, result, marked); return result; }