protected Iterator<WME> getMatches(final Individual s, @SuppressWarnings("unused") final Role r, final Node o) { Iterator<WME> i1 = IteratorUtils.emptyIterator(); Iterator<WME> i2 = IteratorUtils.emptyIterator(); final Role invRole = _role.getInverse(); if (s != null) { i1 = toWMEs(getEdges(s.getOutEdges(), _role, o), EdgeDirection.FORWARD); if (invRole != null) i2 = toWMEs(getEdges(s.getInEdges(), invRole, o), EdgeDirection.BACKWARD); } else { assert s == null; i1 = toWMEs(getEdges(o.getInEdges(), _role, null), EdgeDirection.FORWARD); if (invRole != null) i2 = toWMEs(getEdges(((Individual) o).getOutEdges(), invRole, null), EdgeDirection.BACKWARD); } return !i1.hasNext() ? i2 : !i2.hasNext() ? i1 : IteratorUtils.concat(i1, i2); }
protected Iterator<WME> getMatches(final Individual s, @SuppressWarnings("unused") final Role r, final Node o) { Iterator<WME> i1 = IteratorUtils.emptyIterator(); Iterator<WME> i2 = IteratorUtils.emptyIterator(); final Role invRole = _role.getInverse(); if (s != null) { i1 = toWMEs(getEdges(s.getOutEdges(), _role, o), EdgeDirection.FORWARD); if (invRole != null) i2 = toWMEs(getEdges(s.getInEdges(), invRole, o), EdgeDirection.BACKWARD); } else { assert s == null; i1 = toWMEs(getEdges(o.getInEdges(), _role, null), EdgeDirection.FORWARD); if (invRole != null) i2 = toWMEs(getEdges(((Individual) o).getOutEdges(), invRole, null), EdgeDirection.BACKWARD); } return !i1.hasNext() ? i2 : !i2.hasNext() ? i1 : IteratorUtils.concat(i1, i2); }