@Override public boolean activate(final Edge edge) { final Individual subject = initNode(); final Node object = initObjectNode(); final EdgeDirection dir = edgeMatches(edge); if (dir != null && (dir == EdgeDirection.FORWARD ? edge.getFrom() : edge.getTo()).isSame(subject) && (dir == EdgeDirection.BACKWARD ? edge.getFrom() : edge.getTo()).isSame(object)) { activate(WME.createEdge(edge, dir)); return true; } return false; }
@Override public boolean activate(final Edge edge) { final Individual subject = initNode(); final Node object = initObjectNode(); final EdgeDirection dir = edgeMatches(edge); if (dir != null && (dir == EdgeDirection.FORWARD ? edge.getFrom() : edge.getTo()).isSame(subject) && (dir == EdgeDirection.BACKWARD ? edge.getFrom() : edge.getTo()).isSame(object)) { activate(WME.createEdge(edge, dir)); return true; } return false; }
break; case NOMINAL: resolved = !node.isSame(getNode(term)); break; case INVALID_LITERAL:
break; case NOMINAL: resolved = !node.isSame(getNode(term)); break; case INVALID_LITERAL:
@Override public boolean activate(final Edge edge) { final Individual subject = initNode(); final EdgeDirection dir = edgeMatches(edge); if (dir != null && (dir == EdgeDirection.FORWARD ? edge.getFrom() : edge.getTo()).isSame(subject)) { activate(WME.createEdge(edge, dir)); return true; } return false; }
@Override public boolean activate(final Edge edge) { final Individual subject = initNode(); final EdgeDirection dir = edgeMatches(edge); if (dir != null && (dir == EdgeDirection.FORWARD ? edge.getFrom() : edge.getTo()).isSame(subject)) { activate(WME.createEdge(edge, dir)); return true; } return false; }
@Override public boolean activate(final Edge edge) { final EdgeDirection dir = edgeMatches(edge); final Node object = initNode(); if (dir != null && (dir == EdgeDirection.FORWARD ? edge.getTo() : edge.getFrom()).isSame(object)) { activate(WME.createEdge(edge, dir)); return true; } return false; }
@Override public boolean activate(final Edge edge) { final EdgeDirection dir = edgeMatches(edge); final Node object = initNode(); if (dir != null && (dir == EdgeDirection.FORWARD ? edge.getTo() : edge.getFrom()).isSame(object)) { activate(WME.createEdge(edge, dir)); return true; } return false; }
public boolean setSame(final Node node, final DependencySet ds) { if (isSame(node)) return false; if (isDifferent(node)) { //CHW - added for incremental reasoning support - this is needed as we will need to backjump if possible if (OpenlletOptions.USE_INCREMENTAL_CONSISTENCY) _abox.setClash(Clash.nominal(this, ds.union(_mergeDepends, _abox.doExplanation()).union(node._mergeDepends, _abox.doExplanation()), node.getName())); else _abox.setClash(Clash.nominal(this, ds, node.getName())); return false; } _mergedTo = node; _mergeDepends = ds.copy(_abox.getBranchIndex()); node.addMerged(this); return true; }
final Node mergedToInd = _kb.getABox().getNode(merge.getmergedIntoInd()); if (!ind.isSame(mergedToInd)) // check that they are actually the same - else throw error throw new InternalReasonerException(" Restore merge error: " + ind + " not same as " + mergedToInd);
public boolean setSame(final Node node, final DependencySet ds) { if (isSame(node)) return false; if (isDifferent(node)) { //CHW - added for incremental reasoning support - this is needed as we will need to backjump if possible if (OpenlletOptions.USE_INCREMENTAL_CONSISTENCY) _abox.setClash(Clash.nominal(this, ds.union(_mergeDepends, _abox.doExplanation()).union(node._mergeDepends, _abox.doExplanation()), node.getName())); else _abox.setClash(Clash.nominal(this, ds, node.getName())); return false; } _mergedTo = node; _mergeDepends = ds.copy(_abox.getBranchIndex()); node.addMerged(this); return true; }
public boolean setDifferent(final Node node, final DependencySet dsParam) { DependencySet ds = dsParam; // add to effected list if (_abox.getBranchIndex() >= 0 && OpenlletOptions.TRACK_BRANCH_EFFECTS) _abox.getBranchEffectTracker().add(_abox.getBranchIndex(), node.getName()); if (isDifferent(node)) return false; if (isSame(node)) { ds = ds.union(getMergeDependency(true), _abox.doExplanation()); ds = ds.union(node.getMergeDependency(true), _abox.doExplanation()); _abox.setClash(Clash.nominal(this, ds, node.getName())); if (!ds.isIndependent()) return false; } ds = ds.copy(_abox.getBranchIndex()); _differents.put(node, ds); node.setDifferent(this, ds); _abox.setChanged(true); return true; }
final Node mergedToInd = _kb.getABox().getNode(merge.getmergedIntoInd()); if (!ind.isSame(mergedToInd)) // check that they are actually the same - else throw error throw new InternalReasonerException(" Restore merge error: " + ind + " not same as " + mergedToInd);
public boolean setDifferent(final Node node, final DependencySet dsParam) { DependencySet ds = dsParam; // add to effected list if (_abox.getBranchIndex() >= 0 && OpenlletOptions.TRACK_BRANCH_EFFECTS) _abox.getBranchEffectTracker().add(_abox.getBranchIndex(), node.getName()); if (isDifferent(node)) return false; if (isSame(node)) { ds = ds.union(getMergeDependency(true), _abox.doExplanation()); ds = ds.union(node.getMergeDependency(true), _abox.doExplanation()); _abox.setClash(Clash.nominal(this, ds, node.getName())); if (!ds.isIndependent()) return false; } ds = ds.copy(_abox.getBranchIndex()); _differents.put(node, ds); node.setDifferent(this, ds); _abox.setChanged(true); return true; }
if (!y.isSame(z))
if (!y.isSame(z))
if (head == null || head.isSame(next)) continue;
@Test public void testMerge3() { classes(_person, _man, _dog); objectProperties(_sibling, _owns); individuals(_mary, _chris, _victor, _john, _bill); _kb.addPropertyValue(_sibling, _bill, _mary); _kb.addPropertyValue(_sibling, _bill, _john); _kb.addSubClass(_man, some(_owns, _dog)); assertTrue(_kb.isConsistent()); assertFalse(_kb.getABox().getNode(_mary).isSame(_kb.getABox().getNode(_john))); _kb.addType(_bill, max(_sibling, 1, TOP)); _kb.addType(_mary, or(_man, _dog)); _kb.addType(_chris, or(_man, _dog)); assertTrue(_kb.isConsistent()); assertTrue(_kb.getABox().getNode(_mary).isSame(_kb.getABox().getNode(_john))); _kb.removeType(_bill, max(_sibling, 1, TOP)); assertTrue(_kb.isConsistent()); assertFalse(_kb.getABox().getNode(_mary).isSame(_kb.getABox().getNode(_john))); assertFalse(_kb.getABox().getNode(_john).hasType(_man) || _kb.getABox().getNode(_john).hasType(_dog)); assertTrue(_kb.getABox().getNode(_mary).hasType(_man) || _kb.getABox().getNode(_mary).hasType(_dog)); }
if (head == null || head.isSame(next)) continue;
assertFalse(_kb.getABox().getNode(_mary).isSame(_kb.getABox().getNode(_john))); assertTrue(_kb.getABox().getNode(_mary).hasType(_dog)); assertFalse(_kb.getABox().getNode(_john).hasType(_dog)); assertTrue(_kb.getABox().getNode(_mary).isSame(_kb.getABox().getNode(_john))); assertTrue(_kb.getABox().getNode(_john).getSame().hasType(_dog)); assertFalse(_kb.getABox().getNode(_mary).isSame(_kb.getABox().getNode(_john))); assertFalse(_kb.getABox().getNode(_john).hasType(_dog)); assertTrue(_kb.getABox().getNode(_mary).hasType(_dog));