Search in sources :

Example 1 with Unifier

use of com.vaticle.typedb.core.logic.resolvable.Unifier in project grakn by graknlabs.

the class ConcludableResolver method registerRules.

private void registerRules(Request fromUpstream, Exploration exploration) {
    // loop termination: when receiving a new request, we check if we have seen it before from this root query
    // if we have, we do not allow rules to be registered as possible downstreams
    Partial.Concludable<?> partialAnswer = fromUpstream.partialAnswer().asConcludable();
    for (Map.Entry<Driver<ConclusionResolver>, Set<Unifier>> entry : applicableRules.entrySet()) {
        Driver<ConclusionResolver> conclusionResolver = entry.getKey();
        for (Unifier unifier : entry.getValue()) {
            Optional<? extends Partial.Conclusion<?, ?>> unified = partialAnswer.toDownstream(unifier, resolverRules.get(conclusionResolver));
            if (unified.isPresent()) {
                Request toDownstream = Request.create(driver(), conclusionResolver, unified.get());
                exploration.downstreamManager().addDownstream(toDownstream);
            }
        }
    }
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) Partial(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial) Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap) Unifier(com.vaticle.typedb.core.logic.resolvable.Unifier)

Aggregations

ConceptMap (com.vaticle.typedb.core.concept.answer.ConceptMap)1 Unifier (com.vaticle.typedb.core.logic.resolvable.Unifier)1 Partial (com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial)1 Request (com.vaticle.typedb.core.reasoner.resolution.framework.Request)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 Set (java.util.Set)1