public CachedOutEdge(final Edge edge) { super(edge.getRole(), edge.getToName(), edge.getDepends()); }
public CachedOutEdge(final Edge edge) { super(edge.getRole(), edge.getToName(), edge.getDepends()); }
@Override public boolean activate(final Edge edge) { assert edgeMatches(edge) != null; if (edge.getFromName().equals(edge.getToName())) { activate(WME.createEdge(edge)); return true; } return false; }
@Override public boolean activate(final Edge edge) { assert edgeMatches(edge) != null; if (edge.getFromName().equals(edge.getToName())) { activate(WME.createEdge(edge)); return true; } return false; }
private static Bool checkSelfClash(final KnowledgeBase kb, final ATermAppl self, final CachedNode root, final CachedNode otherRoot) { final Role r = kb.getRole(self.getArgument(0)); for (final Edge e : otherRoot.getOutEdges()) if (e.getRole().isSubRoleOf(r) && e.getToName().equals(otherRoot.getName())) { if (_logger.isLoggable(Level.FINE)) _logger.fine(root + " has not(" + self + ") " + otherRoot + " has self edge"); final boolean allIndependent = root.isIndependent() && otherRoot.isIndependent() && e.getDepends().isIndependent(); return allIndependent ? Bool.FALSE : Bool.UNKNOWN; } return null; }
private static Bool checkSelfClash(final KnowledgeBase kb, final ATermAppl self, final CachedNode root, final CachedNode otherRoot) { final Role r = kb.getRole(self.getArgument(0)); for (final Edge e : otherRoot.getOutEdges()) if (e.getRole().isSubRoleOf(r) && e.getToName().equals(otherRoot.getName())) { if (_logger.isLoggable(Level.FINE)) _logger.fine(root + " has not(" + self + ") " + otherRoot + " has self edge"); final boolean allIndependent = root.isIndependent() && otherRoot.isIndependent() && e.getDepends().isIndependent(); return allIndependent ? Bool.FALSE : Bool.UNKNOWN; } return null; }
private static boolean intersectsRNeighbors(final Set<ATermAppl> samesAndMaybes, final CachedNode node, final Role role) { if (samesAndMaybes.isEmpty()) return false; for (final Edge edge : node.getOutEdges()) if (samesAndMaybes.contains(edge.getToName()) && edge.getRole().isSubRoleOf(role)) return true; if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) if (samesAndMaybes.contains(edge.getFromName()) && edge.getRole().isSubRoleOf(invRole)) return true; } return false; } }
private static boolean intersectsRNeighbors(final Set<ATermAppl> samesAndMaybes, final CachedNode node, final Role role) { if (samesAndMaybes.isEmpty()) return false; for (final Edge edge : node.getOutEdges()) if (samesAndMaybes.contains(edge.getToName()) && edge.getRole().isSubRoleOf(role)) return true; if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) if (samesAndMaybes.contains(edge.getFromName()) && edge.getRole().isSubRoleOf(invRole)) return true; } return false; } }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static MultiValueMap<ATermAppl, Role> collectNeighbors(final CachedNode ind) { final MultiValueMap<ATermAppl, Role> neighbors = new MultiValueMap<>(); for (final Edge edge : ind.getInEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getFromName(); if (!ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role); } for (final Edge edge : ind.getOutEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getToName(); if (role.isObjectRole() && !ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role.getInverse()); } return neighbors; }
private static MultiValueMap<ATermAppl, Role> collectNeighbors(final CachedNode ind) { final MultiValueMap<ATermAppl, Role> neighbors = new MultiValueMap<>(); for (final Edge edge : ind.getInEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getFromName(); if (!ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role); } for (final Edge edge : ind.getOutEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getToName(); if (role.isObjectRole() && !ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role.getInverse()); } return neighbors; }
final ATermAppl val = checkInverses ? edge.getFromName() : edge.getToName();
final ATermAppl val = checkInverses ? edge.getFromName() : edge.getToName();
/** * Test case for #404 */ @Test public void addPropertyValueAfterConsistency() { objectProperties(_p); individuals(_a, _c, _d); // either p(a, c) or p(a, d) holds _kb.addType(_a, or(hasValue(_p, _c), hasValue(_p, _d))); assertTrue(_kb.isConsistent()); // check which non-deterministic choice was made final ATermAppl succ = _kb.getABox().getIndividual(_a).getOutEdges().edgeAt(0).getToName(); final ATermAppl nonSucc = succ.equals(_c) ? _d : _c; // no entailment can be made yet assertFalse(_kb.hasPropertyValue(_a, _p, nonSucc)); assertFalse(_kb.hasPropertyValue(_a, _p, succ)); // assert the property value in non-deterministic choice _kb.addPropertyValue(_p, _a, succ); assertTrue(_kb.isConsistent()); // this entailment still does not hold assertFalse(_kb.hasPropertyValue(_a, _p, nonSucc)); // this entailment should now hold assertTrue(_kb.hasPropertyValue(_a, _p, succ)); }
@Test public void addEdgeToMergedSubjectWithExistingEdge() { objectProperties(_p); individuals(_a, _b, _c, _d, _e); // a is either b or c _kb.addType(_a, oneOf(_b, _c)); _kb.addType(_b, some(_p, oneOf(_d, _e))); _kb.addType(_c, some(_p, oneOf(_d, _e))); assertTrue(_kb.isConsistent()); // no edges to d assertFalse(_kb.hasPropertyValue(_a, _p, _d)); assertFalse(_kb.hasPropertyValue(_b, _p, _d)); assertFalse(_kb.hasPropertyValue(_c, _p, _d)); assertFalse(_kb.hasPropertyValue(_a, _p, _e)); assertFalse(_kb.hasPropertyValue(_b, _p, _e)); assertFalse(_kb.hasPropertyValue(_c, _p, _e)); final ATermAppl aMergedTo = _kb.getABox().getIndividual(_a).getMergedTo().getName(); final ATermAppl aMergedToSucc = _kb.getABox().getIndividual(aMergedTo).getOutEdges().edgeAt(0).getToName(); final ATermAppl aMergedToNotSucc = aMergedToSucc.equals(_d) ? _e : _d; _kb.addPropertyValue(_p, _a, aMergedToSucc); assertTrue(_kb.isConsistent()); // there is only an edge from a to aMergedToSucc assertTrue(_kb.hasPropertyValue(_a, _p, aMergedToSucc)); assertFalse(_kb.hasPropertyValue(_a, _p, aMergedToNotSucc)); assertFalse(_kb.hasPropertyValue(_b, _p, _d)); assertFalse(_kb.hasPropertyValue(_c, _p, _d)); assertFalse(_kb.hasPropertyValue(_b, _p, _e)); assertFalse(_kb.hasPropertyValue(_c, _p, _e)); }