/** * Get the dependency if this node is merged to another node. This node may be merged to another node which is later merged to another node and so on. This * function may return the dependency for the first step or the union of all steps. * * @param all * @return the dependency set resulting of the merge */ public DependencySet getMergeDependency(final boolean all) { if (!isMerged() || !all) return _mergeDepends; DependencySet ds = _mergeDepends; Node node = _mergedTo; while (node.isMerged()) { ds = ds.union(node._mergeDepends, _abox.doExplanation()); node = node._mergedTo; } return ds; }
/** * Get the dependency if this node is merged to another node. This node may be merged to another node which is later merged to another node and so on. This * function may return the dependency for the first step or the union of all steps. * * @param all * @return the dependency set resulting of the merge */ public DependencySet getMergeDependency(final boolean all) { if (!isMerged() || !all) return _mergeDepends; DependencySet ds = _mergeDepends; Node node = _mergedTo; while (node.isMerged()) { ds = ds.union(node._mergeDepends, _abox.doExplanation()); node = node._mergedTo; } return ds; }
public void addType(final ATermAppl c, final DependencySet ds) { if (isPruned()) throw new InternalReasonerException("Adding type to a pruned node " + this + " " + c + "\t" + getPruned()); else if (isMerged()) return; forceAddType(c, ds); }
public void addType(final ATermAppl c, final DependencySet ds) { if (isPruned()) throw new InternalReasonerException("Adding type to a pruned node " + this + " " + c + "\t" + getPruned()); else if (isMerged()) return; forceAddType(c, ds); }
/** * Sets the _blocker to the specified child of the _current _blocker and returns if the new _blocker candidate is allowed to block. The child is not allowed * to block if it is a literal, or a root, or pruned/merged, or is _blocked itself. * * @param child child of the _current _blocker * @return <code>true</code> if the new _blocker candidate is allowed to block */ public boolean moveBlockerDown(final Node child) { if (child.isLiteral() || child.isRoot() || child.isPruned() || child.isMerged() || ((Individual) child).isBlocked() || child.equals(_blocker)) return false; _blocker = (Individual) child; _rolesToBlocked = null; return true; }
/** * Sets the _blocker to the specified child of the _current _blocker and returns if the new _blocker candidate is allowed to block. The child is not allowed * to block if it is a literal, or a root, or pruned/merged, or is _blocked itself. * * @param child child of the _current _blocker * @return <code>true</code> if the new _blocker candidate is allowed to block */ public boolean moveBlockerDown(final Node child) { if (child.isLiteral() || child.isRoot() || child.isPruned() || child.isMerged() || ((Individual) child).isBlocked() || child.equals(_blocker)) return false; _blocker = (Individual) child; _rolesToBlocked = null; return true; }
protected Node getNode(final NodeProvider provider, final Token token) { Node node = provider.getNode(null, token); if (node.isMerged()) { final boolean doExplanation = _strategy.getABox().doExplanation(); _ds = _ds.union(node.getMergeDependency(true), doExplanation); node = node.getSame(); } return node; }
protected Node getNode(final NodeProvider provider, final Token token) { Node node = provider.getNode(null, token); if (node.isMerged()) { final boolean doExplanation = _strategy.getABox().doExplanation(); _ds = _ds.union(node.getMergeDependency(true), doExplanation); node = node.getSame(); } return node; }
@Override public void getSames(final Individual ind, final Set<ATermAppl> knowns, final Set<ATermAppl> unknowns) { knowns.add(ind.getName()); final boolean thisMerged = ind.isMerged() && !ind.getMergeDependency(true).isIndependent(); for (final Node other : ind.getMerged()) { if (!other.isRootNominal()) continue; final boolean otherMerged = other.isMerged() && !other.getMergeDependency(true).isIndependent(); if (thisMerged || otherMerged) { unknowns.add(other.getName()); getSames((Individual) other, unknowns, unknowns); } else { knowns.add(other.getName()); getSames((Individual) other, knowns, unknowns); } } }
@Override public void getSames(final Individual ind, final Set<ATermAppl> knowns, final Set<ATermAppl> unknowns) { knowns.add(ind.getName()); final boolean thisMerged = ind.isMerged() && !ind.getMergeDependency(true).isIndependent(); for (final Node other : ind.getMerged()) { if (!other.isRootNominal()) continue; final boolean otherMerged = other.isMerged() && !other.getMergeDependency(true).isIndependent(); if (thisMerged || otherMerged) { unknowns.add(other.getName()); getSames((Individual) other, unknowns, unknowns); } else { knowns.add(other.getName()); getSames((Individual) other, knowns, unknowns); } } }
/** * Merge all _node pairs in the _queue. */ public void mergeAll() { if (_mergingAll) return; _mergingAll = true; while (!_merging && !_mergeList.isEmpty() && !_abox.isClosed()) { final NodeMerge merge = _mergeList.remove(0); Node y = _abox.getNode(merge.getSource()); Node z = _abox.getNode(merge.getTarget()); DependencySet ds = merge.getDepends(); if (y.isMerged()) { ds = ds.union(y.getMergeDependency(true), _abox.doExplanation()); y = y.getSame(); } if (z.isMerged()) { ds = ds.union(z.getMergeDependency(true), _abox.doExplanation()); z = z.getSame(); } if (y.isPruned() || z.isPruned()) continue; mergeTo(y, z, ds); } _mergingAll = false; }
/** * Merge all _node pairs in the _queue. */ public void mergeAll() { if (_mergingAll) return; _mergingAll = true; while (!_merging && !_mergeList.isEmpty() && !_abox.isClosed()) { final NodeMerge merge = _mergeList.remove(0); Node y = _abox.getNode(merge.getSource()); Node z = _abox.getNode(merge.getTarget()); DependencySet ds = merge.getDepends(); if (y.isMerged()) { ds = ds.union(y.getMergeDependency(true), _abox.doExplanation()); y = y.getSame(); } if (z.isMerged()) { ds = ds.union(z.getMergeDependency(true), _abox.doExplanation()); z = z.getSame(); } if (y.isPruned() || z.isPruned()) continue; mergeTo(y, z, ds); } _mergingAll = false; }
if (edge == null && obj.isMerged()) edge = obj.getInEdges().getExactEdge(subj, role, obj);
if (edge == null && obj.isMerged()) edge = obj.getInEdges().getExactEdge(subj, role, obj);
private void addEdge(final ATermAppl p, final ATermAppl s, final ATermAppl o) { DependencySet edgeDS = _ds; Individual node1 = _abox.getIndividual(s); if (node1.isMerged()) { edgeDS = node1.getMergeDependency(true); node1 = node1.getSame(); } if (_negated) { final ATermAppl cls = all(p, not(value(o))); _strategy.addType(node1, cls, _ds); } else { Node node2 = _abox.getNode(o); if (node2.isMerged()) { edgeDS = node2.getMergeDependency(true); node2 = node2.getSame(); } _strategy.addEdge(node1, _abox.getRole(p), node2, edgeDS); } }
private void addEdge(final ATermAppl p, final ATermAppl s, final ATermAppl o) { DependencySet edgeDS = _ds; Individual node1 = _abox.getIndividual(s); if (node1.isMerged()) { edgeDS = node1.getMergeDependency(true); node1 = node1.getSame(); } if (_negated) { final ATermAppl cls = all(p, not(value(o))); _strategy.addType(node1, cls, _ds); } else { Node node2 = _abox.getNode(o); if (node2.isMerged()) { edgeDS = node2.getMergeDependency(true); node2 = node2.getSame(); } _strategy.addEdge(node1, _abox.getRole(p), node2, edgeDS); } }
if (!succ.getInEdges().hasEdge(edge)) throw new InternalReasonerException("Invalid edge: " + edge); if (succ.isMerged()) throw new InternalReasonerException("Invalid edge to a removed node: " + edge + " " + succ.isMerged()); final DependencySet ds = edge.getDepends(); if (ds.max() > _branchIndex || ds.getBranch() > _branchIndex)
if (!succ.getInEdges().hasEdge(edge)) throw new InternalReasonerException("Invalid edge: " + edge); if (succ.isMerged()) throw new InternalReasonerException("Invalid edge to a removed node: " + edge + " " + succ.isMerged()); final DependencySet ds = edge.getDepends(); if (ds.max() > _branchIndex || ds.getBranch() > _branchIndex)