public EdgeList(final EdgeList edges) { this(edges.size()); addEdgeList(edges); }
public EdgeList(final EdgeList edges) { this(edges.size()); addEdgeList(edges); }
/** * Remove an element by replacing it by the last element. Order isn't preserved. * * @param edge to remove * @return true if removing occured */ public boolean removeEdge(final Edge edge) { for (int i = 0, l = size(); i < l; i++) if (get(i).equals(edge)) { removeEdge(i); return true; } return false; }
/** * Remove an element by replacing it by the last element. Order isn't preserved. * * @param edge to remove * @return true if removing occured */ public boolean removeEdge(final Edge edge) { for (int i = 0, l = size(); i < l; i++) if (get(i).equals(edge)) { removeEdge(i); return true; } return false; }
final public Set<Node> getRSuccessors(final Role r, final ATermAppl c) { final Set<Node> result = new HashSet<>(); final EdgeList edges = _outEdges.getEdges(r); for (int i = 0, n = edges.size(); i < n; i++) { final Edge edge = edges.get(i); final Node other = edge.getNeighbor(this); if (other.hasType(c)) result.add(other); } return result; }
final public Set<Node> getRSuccessors(final Role r, final ATermAppl c) { final Set<Node> result = new HashSet<>(); final EdgeList edges = _outEdges.getEdges(r); for (int i = 0, n = edges.size(); i < n; i++) { final Edge edge = edges.get(i); final Node other = edge.getNeighbor(this); if (other.hasType(c)) result.add(other); } return result; }
protected Iterator<WME> toWMEs(final EdgeList edges, final EdgeDirection dir) { if (edges.isEmpty()) return IteratorUtils.emptyIterator(); else if (edges.size() == 1) { final Edge edge = edges.get(0); return IteratorUtils.<WME> singletonIterator(createEdge(edge, dir)); } else { final List<WME> wmes = new ArrayList<>(edges.size()); for (final Edge edge : edges) wmes.add(createEdge(edge, dir)); return wmes.iterator(); } }
protected Iterator<WME> toWMEs(final EdgeList edges, final EdgeDirection dir) { if (edges.isEmpty()) return IteratorUtils.emptyIterator(); else if (edges.size() == 1) { final Edge edge = edges.get(0); return IteratorUtils.<WME> singletonIterator(createEdge(edge, dir)); } else { final List<WME> wmes = new ArrayList<>(edges.size()); for (final Edge edge : edges) wmes.add(createEdge(edge, dir)); return wmes.iterator(); } }
private Individual(final Individual ind, final ABoxImpl abox) { super(ind, abox); _nominalLevel = ind._nominalLevel; _parent = ind._parent; for (int i = 0; i < TYPES; i++) { _types[i] = new ArrayList<>(ind._types[i]); _applyNext[i] = ind._applyNext[i]; } if (isPruned()) _outEdges = new EdgeList(ind._outEdges); else _outEdges = new EdgeList(ind._outEdges.size()); _depth = 0; }
private Individual(final Individual ind, final ABoxImpl abox) { super(ind, abox); _nominalLevel = ind._nominalLevel; _parent = ind._parent; for (int i = 0; i < TYPES; i++) { _types[i] = new ArrayList<>(ind._types[i]); _applyNext[i] = ind._applyNext[i]; } if (isPruned()) _outEdges = new EdgeList(ind._outEdges); else _outEdges = new EdgeList(ind._outEdges.size()); _depth = 0; }
protected void removeEdge(final int index) { final int l = size() - 1; if (index == l) remove(l); else set(index, remove(l)); // The last one is remove (no array copy require, then it replace the element to remove) }
protected void removeEdge(final int index) { final int l = size() - 1; if (index == l) remove(l); else set(index, remove(l)); // The last one is remove (no array copy require, then it replace the element to remove) }
/** * Resets the edges in this list to only asserted edges. */ public void reset() { for (int i = 0; i < size(); i++) { final Edge e = get(i); if (e.getDepends().getBranch() != DependencySet.NO_BRANCH) removeEdge(i--); } } }
/** * Resets the edges in this list to only asserted edges. */ public void reset() { for (int i = 0; i < size(); i++) { final Edge e = get(i); if (e.getDepends().getBranch() != DependencySet.NO_BRANCH) removeEdge(i--); } } }
public DependencySet check(final Individual node1, final Node node2) { final EdgeList list = node1.getRNeighborEdges(_role); for (int i = 0, n = list.size(); i < n; i++) { final Edge edge = list.get(i); if (edge.getNeighbor(node1).equals(node2)) return edge.getDepends(); } return null; }
public DependencySet check(final Individual node1, final Node node2) { final EdgeList list = node1.getRNeighborEdges(_role); for (int i = 0, n = list.size(); i < n; i++) { final Edge edge = list.get(i); if (edge.getNeighbor(node1).equals(node2)) return edge.getDepends(); } return null; }
@Override protected void updateNodeReferences() { super.updateNodeReferences(); if (_parent != null) _parent = _abox.getIndividual(_parent.getName()); if (isPruned()) { final EdgeList oldEdges = _outEdges; _outEdges = new EdgeList(oldEdges.size()); for (int i = 0; i < oldEdges.size(); i++) { final Edge edge = oldEdges.get(i); final Node to = _abox.getNode(edge.getTo().getName()); final Edge newEdge = new DefaultEdge(edge.getRole(), this, to, edge.getDepends()); _outEdges.add(newEdge); } } }
private void applyDisjointness(final Individual subj, final Role pred, final Node obj, final DependencySet dsParam) { DependencySet ds = dsParam; // TODO what about inv edges? // TODO improve this check final Set<Role> disjoints = pred.getDisjointRoles(); if (disjoints.isEmpty()) return; final EdgeList edges = subj.getEdgesTo(obj); for (int i = 0, n = edges.size(); i < n; i++) { final Edge otherEdge = edges.get(i); if (disjoints.contains(otherEdge.getRole())) { ds = ds.union(otherEdge.getDepends(), _abox.doExplanation()); ds = ds.union(pred.getExplainDisjointRole(otherEdge.getRole()), _abox.doExplanation()); _abox.setClash(Clash.disjointProps(subj, ds, pred.getName(), otherEdge.getRole().getName())); return; } } }
protected boolean applyAllValuesPropertyChain(final Individual x, final ATermList chain, final ATermAppl c, final DependencySet ds) { final Role r = _strategy.getABox().getRole(chain.getFirst()); final EdgeList edges = x.getRNeighborEdges(r); if (!edges.isEmpty()) { final ATermAppl allRC = ATermUtils.makeAllValues(chain.getNext(), c); for (int e = 0; e < edges.size(); e++) { final Edge edgeToY = edges.get(e); final Node y = edgeToY.getNeighbor(x); final DependencySet finalDS = ds.union(edgeToY.getDepends(), _strategy.getABox().doExplanation()); applyAllValues(x, r, y, allRC, finalDS); if (x.isMerged() || _strategy.getABox().isClosed()) return false; } } return true; }
protected boolean applyAllValuesPropertyChain(final Individual x, final ATermList chain, final ATermAppl c, final DependencySet ds) { final Role r = _strategy.getABox().getRole(chain.getFirst()); final EdgeList edges = x.getRNeighborEdges(r); if (!edges.isEmpty()) { final ATermAppl allRC = ATermUtils.makeAllValues(chain.getNext(), c); for (int e = 0; e < edges.size(); e++) { final Edge edgeToY = edges.get(e); final Node y = edgeToY.getNeighbor(x); final DependencySet finalDS = ds.union(edgeToY.getDepends(), _strategy.getABox().doExplanation()); applyAllValues(x, r, y, allRC, finalDS); if (x.isMerged() || _strategy.getABox().isClosed()) return false; } } return true; }