use of com.vaticle.typedb.core.pattern.Negation in project grakn by graknlabs.
the class Reasoner method mayReason.
private boolean mayReason(Disjunction disjunction) {
for (Conjunction conj : disjunction.conjunctions()) {
Set<Variable> vars = conj.variables();
List<Negation> negs = conj.negations();
if (iterate(vars).flatMap(v -> iterate(v.inferredTypes())).distinct().anyMatch(this::hasRule))
return true;
if (!negs.isEmpty() && iterate(negs).anyMatch(n -> mayReason(n.disjunction())))
return true;
}
return false;
}
use of com.vaticle.typedb.core.pattern.Negation in project grakn by graknlabs.
the class ConjunctionResolver method initialiseDownstreamResolvers.
@Override
protected void initialiseDownstreamResolvers() {
LOG.debug("{}: initialising downstream resolvers", name());
Set<Concludable> concludables = concludablesTriggeringRules();
Set<Retrievable> retrievables = Retrievable.extractFrom(conjunction(), concludables);
resolvables.addAll(concludables);
resolvables.addAll(retrievables);
iterate(resolvables).forEachRemaining(resolvable -> {
try {
downstreamResolvers.put(resolvable, registry.registerResolvable(resolvable));
} catch (TypeDBException e) {
terminate(e);
}
});
for (Negation negation : conjunction().negations()) {
Negated negated = new Negated(negation);
try {
downstreamResolvers.put(negated, registry.negated(negated, conjunction()));
negateds.add(negated);
} catch (TypeDBException e) {
terminate(e);
}
}
if (!isTerminated())
isInitialised = true;
}
Aggregations