outHead.add(makeSubclassTriple(currentVar, _names.get(sup))); else if (fun.equals(ATermUtils.ANDFUN)) final ATermAppl anon = _names.getNextAnon(); outHead.add(makeSubOfSomeTriple(currentVar, prop, _names.get(q)));
@Override protected MultiValueMap<ATermAppl, ATermAppl> run(final Collection<ATermAppl> classes) { addClasses(classes); addClasses(_names.getAllAnons()); final Reasoner reasoner = new GenericRuleReasoner(new ArrayList<>(_rules)); final InfGraph inf = reasoner.bind(_facts); inf.prepare(); final MultiValueMap<ATermAppl, ATermAppl> subsumers = getSubsumptions(inf); for (final ATermAppl c : classes) subsumers.add(ATermUtils.BOTTOM, c); return subsumers; }
public Set<ATermAppl> getAllAnons() { final Set<ATermAppl> anons = new HashSet<>(); for (int i = FIRST_ANON; i < _nextAnon; i++) anons.add(makeAnon(i)); return anons; }
final ATermAppl nextAnon = _names.getNextAnon(); translateSuperSome(nextAnon, q); q = nextAnon;
outHead.add(makeSubclassTriple(currentVar, _names.get(sup))); else if (fun.equals(ATermUtils.ANDFUN)) final ATermAppl anon = _names.getNextAnon(); outHead.add(makeSubOfSomeTriple(currentVar, prop, _names.get(q)));
final ATermAppl nextAnon = _names.getNextAnon(); translateSuperSome(nextAnon, q); q = nextAnon;
final ATermAppl nextAnon = _names.getNextAnon(); translateSuperSome(nextAnon, q); q = nextAnon;
outHead.add(makeSubclassTriple(currentVar, _names.get(sup))); else if (fun.equals(ATermUtils.ANDFUN)) final ATermAppl anon = _names.getNextAnon(); outHead.add(makeSubOfSomeTriple(currentVar, prop, _names.get(q)));
private void translateSub(final List<ClauseEntry> outBody, final ATermAppl sub, final FreeVariableStore freeVar, final Node currentVar) { final AFun fun = sub.getAFun(); if (ATermUtils.isPrimitive(sub) || ATermUtils.isBottom(sub)) outBody.add(makeSubclassTriple(currentVar, _names.get(sub))); else if (fun.equals(ATermUtils.ANDFUN)) { ATermList list = (ATermList) sub.getArgument(0); while (!list.isEmpty()) { final ATermAppl conj = (ATermAppl) list.getFirst(); translateSub(outBody, conj, freeVar, currentVar); list = list.getNext(); } } else if (fun.equals(ATermUtils.SOMEFUN)) { final ATermAppl prop = (ATermAppl) sub.getArgument(0); final ATermAppl q = (ATermAppl) sub.getArgument(1); final Node nextVar = freeVar.next(); outBody.add(makeSubOfSomeTriple(currentVar, prop, nextVar)); translateSub(outBody, q, freeVar, nextVar); } else assert false; }
private void translateSub(final List<ClauseEntry> outBody, final ATermAppl sub, final FreeVariableStore freeVar, final Node currentVar) { final AFun fun = sub.getAFun(); if (ATermUtils.isPrimitive(sub) || ATermUtils.isBottom(sub)) outBody.add(makeSubclassTriple(currentVar, _names.get(sub))); else if (fun.equals(ATermUtils.ANDFUN)) { ATermList list = (ATermList) sub.getArgument(0); while (!list.isEmpty()) { final ATermAppl conj = (ATermAppl) list.getFirst(); translateSub(outBody, conj, freeVar, currentVar); list = list.getNext(); } } else if (fun.equals(ATermUtils.SOMEFUN)) { final ATermAppl prop = (ATermAppl) sub.getArgument(0); final ATermAppl q = (ATermAppl) sub.getArgument(1); final Node nextVar = freeVar.next(); outBody.add(makeSubOfSomeTriple(currentVar, prop, nextVar)); translateSub(outBody, q, freeVar, nextVar); } else assert false; }
private void translateSub(final List<ClauseEntry> outBody, final ATermAppl sub, final FreeVariableStore freeVar, final Node currentVar) { final AFun fun = sub.getAFun(); if (ATermUtils.isPrimitive(sub) || ATermUtils.isBottom(sub)) outBody.add(makeSubclassTriple(currentVar, _names.get(sub))); else if (fun.equals(ATermUtils.ANDFUN)) { ATermList list = (ATermList) sub.getArgument(0); while (!list.isEmpty()) { final ATermAppl conj = (ATermAppl) list.getFirst(); translateSub(outBody, conj, freeVar, currentVar); list = list.getNext(); } } else if (fun.equals(ATermUtils.SOMEFUN)) { final ATermAppl prop = (ATermAppl) sub.getArgument(0); final ATermAppl q = (ATermAppl) sub.getArgument(1); final Node nextVar = freeVar.next(); outBody.add(makeSubOfSomeTriple(currentVar, prop, nextVar)); translateSub(outBody, q, freeVar, nextVar); } else assert false; }
protected MultiValueMap<ATermAppl, ATermAppl> getSubsumptions(final Graph graph) { final MultiValueMap<ATermAppl, ATermAppl> subsumers = new MultiValueMap<>(); final ExtendedIterator<?> it = graph.find(Node.ANY, PRED_SUB, Node.ANY); while (it.hasNext()) { final Triple tri = (Triple) it.next(); final Node sub = tri.getSubject(); final Node sup = tri.getObject(); if (NameStore.isAnon(sub) || NameStore.isAnon(sup)) continue; subsumers.add(toATermAppl(sub), toATermAppl(sup)); } it.close(); return subsumers; }
protected MultiValueMap<ATermAppl, ATermAppl> getSubsumptions(final Graph graph) { final MultiValueMap<ATermAppl, ATermAppl> subsumers = new MultiValueMap<>(); final ExtendedIterator<?> it = graph.find(Node.ANY, PRED_SUB, Node.ANY); while (it.hasNext()) { final Triple tri = (Triple) it.next(); final Node sub = tri.getSubject(); final Node sup = tri.getObject(); if (NameStore.isAnon(sub) || NameStore.isAnon(sup)) continue; subsumers.add(toATermAppl(sub), toATermAppl(sup)); } it.close(); return subsumers; }
protected MultiValueMap<ATermAppl, ATermAppl> getSubsumptions(final Graph graph) { final MultiValueMap<ATermAppl, ATermAppl> subsumers = new MultiValueMap<>(); final ExtendedIterator<?> it = graph.find(Node.ANY, PRED_SUB, Node.ANY); while (it.hasNext()) { final Triple tri = (Triple) it.next(); final Node sub = tri.getSubject(); final Node sup = tri.getObject(); if (NameStore.isAnon(sub) || NameStore.isAnon(sup)) continue; subsumers.add(toATermAppl(sub), toATermAppl(sup)); } it.close(); return subsumers; }
public ATermAppl getNextAnon() { return makeAnon(_nextAnon++); }
public ATermAppl getNextAnon() { return makeAnon(_nextAnon++); }
private TriplePattern makeSubOfSomeTriple(final Node t1, final ATermAppl p, final Node t2) { return makeSubOfSomeTriple(t1, _names.get(p), t2); }
private TriplePattern makeSubOfSomeTriple(final Node t1, final ATermAppl p, final Node t2) { return makeSubOfSomeTriple(t1, _names.get(p), t2); }