public boolean add(final ATermAppl concept, final ATermAppl definition, final Set<ATermAppl> explanation) { if (!ATermUtils.isPrimitive(concept) || contains(concept)) return false; final Set<ATermAppl> deps = ATermUtils.findPrimitives(definition); final Set<ATermAppl> seen = new HashSet<>(); for (final ATermAppl current : deps) { final boolean result = findTarget(current, concept, seen); if (result) return false; } addDefinition(concept, definition, explanation); addDefinition(not(concept), not(definition), explanation); _dependencies.put(concept, deps); return true; }
@Override public boolean absorb(final Set<ATermAppl> terms, final Set<ATermAppl> explanation) { for (final ATermAppl c : terms) { final Unfolding unf = _primitiveTbox.getDefinition(c); if (unf != null) { final ATermAppl def = unf.getResult(); terms.remove(c); terms.add(nnf(def)); absorbAxiom(terms, explanation); return true; } } return false; } }
public void print(final Appendable str) throws IOException { // generalTbox.print(str); _primitiveTbox.print(str); _unaryTbox.print(str); _binaryTbox.print(str); str.append("Explain: [\n"); for (final ATermAppl axiom : _tboxAxioms.keySet()) { str.append(ATermUtils.toString(axiom)); str.append(" -> "); str.append(_tboxAxioms.get(axiom).toString()); str.append("\n"); } str.append("]\nReverseExplain: [\n"); for (final ATermAppl axiom : _reverseExplain.keySet()) { str.append(ATermUtils.toString(axiom)); str.append(" -> "); str.append(_reverseExplain.get(axiom).toString()); str.append("\n"); } str.append("]\n"); }
@Override public boolean isPrimitive(final ATermAppl c) { return ATermUtils.isPrimitive(c) && !_primitiveTbox.contains(c); }
@Override public Iterator<Unfolding> unfold(final ATermAppl c) { if (ATermUtils.isPrimitive(c)) { final MultiIterator<Unfolding> result = new MultiIterator<>(_primitiveTbox.unfold(c)); result.append(_unaryTbox.unfold(c)); result.append(_binaryTbox.unfold(c)); return result; } else if (isNot(c)) return _primitiveTbox.unfold(c); else return IteratorUtils.emptyIterator(); }
private boolean addAxiom(final ATermAppl axiom, final Set<ATermAppl> explanation, final boolean forceAddition) { final boolean added = addAxiomExplanation(axiom, explanation); if (added || forceAddition) if (axiom.getAFun().equals(ATermUtils.EQCLASSFUN)) { final ATermAppl c1 = (ATermAppl) axiom.getArgument(0); final ATermAppl c2 = (ATermAppl) axiom.getArgument(1); boolean def = false; if (ATermUtils.isPrimitive(c1) && !_unaryTbox.unfold(c1).hasNext() && !_binaryTbox.unfold(c1).hasNext()) def = _primitiveTbox.add(c1, c2, explanation); if (!def && ATermUtils.isPrimitive(c2) && !_unaryTbox.unfold(c2).hasNext() && !_binaryTbox.unfold(c2).hasNext()) def = _primitiveTbox.add(c2, c1, explanation); if (!def) { absorbSubClass(c1, c2, explanation); absorbSubClass(c2, c1, explanation); } } else if (axiom.getAFun().equals(ATermUtils.SUBFUN)) { final ATermAppl sub = (ATermAppl) axiom.getArgument(0); final ATermAppl sup = (ATermAppl) axiom.getArgument(1); absorbSubClass(sub, sup, explanation); } return added; }
@Override public boolean isPrimitive(final ATermAppl c) { return ATermUtils.isPrimitive(c) && !_primitiveTbox.contains(c); }
@Override public Iterator<Unfolding> unfold(final ATermAppl c) { if (ATermUtils.isPrimitive(c)) { final MultiIterator<Unfolding> result = new MultiIterator<>(_primitiveTbox.unfold(c)); result.append(_unaryTbox.unfold(c)); result.append(_binaryTbox.unfold(c)); return result; } else if (isNot(c)) return _primitiveTbox.unfold(c); else return IteratorUtils.emptyIterator(); }
private boolean addAxiom(final ATermAppl axiom, final Set<ATermAppl> explanation, final boolean forceAddition) { final boolean added = addAxiomExplanation(axiom, explanation); if (added || forceAddition) if (axiom.getAFun().equals(ATermUtils.EQCLASSFUN)) { final ATermAppl c1 = (ATermAppl) axiom.getArgument(0); final ATermAppl c2 = (ATermAppl) axiom.getArgument(1); boolean def = false; if (ATermUtils.isPrimitive(c1) && !_unaryTbox.unfold(c1).hasNext() && !_binaryTbox.unfold(c1).hasNext()) def = _primitiveTbox.add(c1, c2, explanation); if (!def && ATermUtils.isPrimitive(c2) && !_unaryTbox.unfold(c2).hasNext() && !_binaryTbox.unfold(c2).hasNext()) def = _primitiveTbox.add(c2, c1, explanation); if (!def) { absorbSubClass(c1, c2, explanation); absorbSubClass(c2, c1, explanation); } } else if (axiom.getAFun().equals(ATermUtils.SUBFUN)) { final ATermAppl sub = (ATermAppl) axiom.getArgument(0); final ATermAppl sup = (ATermAppl) axiom.getArgument(1); absorbSubClass(sub, sup, explanation); } return added; }
public boolean add(final ATermAppl concept, final ATermAppl definition, final Set<ATermAppl> explanation) { if (!ATermUtils.isPrimitive(concept) || contains(concept)) return false; final Set<ATermAppl> deps = ATermUtils.findPrimitives(definition); final Set<ATermAppl> seen = new HashSet<>(); for (final ATermAppl current : deps) { final boolean result = findTarget(current, concept, seen); if (result) return false; } addDefinition(concept, definition, explanation); addDefinition(not(concept), not(definition), explanation); _dependencies.put(concept, deps); return true; }
protected boolean absorbIntoTerm(final ATermAppl term, final Set<ATermAppl> terms, final Set<ATermAppl> explanation) { if (isPrimitive(term) && !_primitiveTbox.contains(term)) { terms.remove(term); final ATermAppl disjunction = disjunction(terms); _unaryTbox.add(term, disjunction, explanation); return true; } return false; } }
@Override public boolean absorb(final Set<ATermAppl> terms, final Set<ATermAppl> explanation) { for (final ATermAppl c : terms) { final Unfolding unf = _primitiveTbox.getDefinition(c); if (unf != null) { final ATermAppl def = unf.getResult(); terms.remove(c); terms.add(nnf(def)); absorbAxiom(terms, explanation); return true; } } return false; } }
public void print(final Appendable str) throws IOException { // generalTbox.print(str); _primitiveTbox.print(str); _unaryTbox.print(str); _binaryTbox.print(str); str.append("Explain: [\n"); for (final ATermAppl axiom : _tboxAxioms.keySet()) { str.append(ATermUtils.toString(axiom)); str.append(" -> "); str.append(_tboxAxioms.get(axiom).toString()); str.append("\n"); } str.append("]\nReverseExplain: [\n"); for (final ATermAppl axiom : _reverseExplain.keySet()) { str.append(ATermUtils.toString(axiom)); str.append(" -> "); str.append(_reverseExplain.get(axiom).toString()); str.append("\n"); } str.append("]\n"); }
protected boolean absorbIntoTerm(final ATermAppl term, final Set<ATermAppl> terms, final Set<ATermAppl> explanation) { if (isPrimitive(term) && !_primitiveTbox.contains(term)) { terms.remove(term); final ATermAppl disjunction = disjunction(terms); _unaryTbox.add(term, disjunction, explanation); return true; } return false; } }
if (!_primitiveTbox.contains(term))
if (!_primitiveTbox.contains(term))
ATermAppl head = null; for (final ATermAppl term : terms) if (ATermUtils.isPrimitive(term) && !_primitiveTbox.contains(term)) primitiveClassAtoms++; else
ATermAppl head = null; for (final ATermAppl term : terms) if (ATermUtils.isPrimitive(term) && !_primitiveTbox.contains(term)) primitiveClassAtoms++; else