@Override public final void apply(final Individual node) { for (final ATermAppl c : new ArrayList<>(node.getTypes(Node.ATOM))) // 'applyAllValues' can change the underlying types of individual; so we make a copy to iterate { if (!OpenlletOptions.MAINTAIN_COMPLETION_QUEUE && null == node.getDepends(c)) continue; if (ATermUtils.isSelf(c)) { final ATermAppl predicate = (ATermAppl) c.getArgument(0); final Role role = _strategy.getABox().getRole(predicate); _logger.fine(() -> "SELF: " + node + "\trole:" + role + "\tdepends:" + node.getDepends(c) + "\tRSuccessor:" + node.hasRSuccessor(role, node)); _strategy.addEdge(node, role, node, node.getDepends(c)); if (_strategy.getABox().isClosed()) return; } } } }
@Override public final void apply(final Individual node) { for (final ATermAppl c : new ArrayList<>(node.getTypes(Node.ATOM))) // 'applyAllValues' can change the underlying types of individual; so we make a copy to iterate { if (!OpenlletOptions.MAINTAIN_COMPLETION_QUEUE && null == node.getDepends(c)) continue; if (ATermUtils.isSelf(c)) { final ATermAppl predicate = (ATermAppl) c.getArgument(0); final Role role = _strategy.getABox().getRole(predicate); _logger.fine(() -> "SELF: " + node + "\trole:" + role + "\tdepends:" + node.getDepends(c) + "\tRSuccessor:" + node.hasRSuccessor(role, node)); _strategy.addEdge(node, role, node, node.getDepends(c)); if (_strategy.getABox().isClosed()) return; } } } }
if (_logger.isLoggable(Level.FINE) && !((Individual) node).hasRSuccessor(role, node)) _logger.fine("SELF: " + node + " " + role + " " + node.getDepends(c)); addEdge((Individual) node, role, node, ds);
if (_logger.isLoggable(Level.FINE) && !((Individual) node).hasRSuccessor(role, node)) _logger.fine("SELF: " + node + " " + role + " " + node.getDepends(c)); addEdge((Individual) node, role, node, ds);
if (hasRSuccessor(r, x) || r.isTop())
if (hasRSuccessor(r, x) || r.isTop())
public void checkReflexivitySymmetry(final Individual subj, final Role pred, final Individual obj, final DependencySet dsParam) { DependencySet ds = dsParam; if (pred.isAsymmetric() && obj.hasRSuccessor(pred, subj)) { final EdgeList edges = obj.getEdgesTo(subj, pred); ds = ds.union(edges.get(0).getDepends(), _abox.doExplanation()); if (OpenlletOptions.USE_TRACING) ds = ds.union(pred.getExplainAsymmetric(), _abox.doExplanation()); _abox.setClash(Clash.unexplained(subj, ds, "Antisymmetric property " + pred)); } else if (subj.equals(obj)) if (pred.isIrreflexive()) _abox.setClash(Clash.unexplained(subj, ds.union(pred.getExplainIrreflexive(), _abox.doExplanation()), "Irreflexive property " + pred)); else { final ATerm notSelfP = ATermUtils.makeNot(ATermUtils.makeSelf(pred.getName())); if (subj.hasType(notSelfP)) _abox.setClash(Clash.unexplained(subj, ds.union(subj.getDepends(notSelfP), _abox.doExplanation()), "Local irreflexive property " + pred)); } }
public void checkReflexivitySymmetry(final Individual subj, final Role pred, final Individual obj, final DependencySet dsParam) { DependencySet ds = dsParam; if (pred.isAsymmetric() && obj.hasRSuccessor(pred, subj)) { final EdgeList edges = obj.getEdgesTo(subj, pred); ds = ds.union(edges.get(0).getDepends(), _abox.doExplanation()); if (OpenlletOptions.USE_TRACING) ds = ds.union(pred.getExplainAsymmetric(), _abox.doExplanation()); _abox.setClash(Clash.unexplained(subj, ds, "Antisymmetric property " + pred)); } else if (subj.equals(obj)) if (pred.isIrreflexive()) _abox.setClash(Clash.unexplained(subj, ds.union(pred.getExplainIrreflexive(), _abox.doExplanation()), "Irreflexive property " + pred)); else { final ATerm notSelfP = ATermUtils.makeNot(ATermUtils.makeSelf(pred.getName())); if (subj.hasType(notSelfP)) _abox.setClash(Clash.unexplained(subj, ds.union(subj.getDepends(notSelfP), _abox.doExplanation()), "Local irreflexive property " + pred)); } }