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 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 void mark(final TaxonomyNode<ATermAppl> node, final Map<TaxonomyNode<ATermAppl>, Boolean> marked, final Boolean value, final Propagate propagate) { final Boolean exists = marked.get(node); if (exists != null) if (!exists.equals(value)) throw new OpenError("Inconsistent classification result " + node.getName() + " " + exists + " " + value); else return; marked.put(node, value); if (propagate != Propagate.NONE) { final Collection<TaxonomyNode<ATermAppl>> others = propagate == Propagate.UP ? node.getSupers() : node.getSubs(); for (final TaxonomyNode<ATermAppl> next : others) mark(next, marked, value, propagate); } }
private void mark(final TaxonomyNode<ATermAppl> node, final Map<TaxonomyNode<ATermAppl>, Boolean> marked, final Boolean value, final Propagate propagate) { final Boolean exists = marked.get(node); if (exists != null) if (!exists.equals(value)) throw new OpenError("Inconsistent classification result " + node.getName() + " " + exists + " " + value); else return; marked.put(node, value); if (propagate != Propagate.NONE) { final Collection<TaxonomyNode<ATermAppl>> others = propagate == Propagate.UP ? node.getSupers() : node.getSubs(); for (final TaxonomyNode<ATermAppl> next : others) mark(next, marked, value, propagate); } }