Search in sources :

Example 11 with Request

use of com.vaticle.typedb.core.reasoner.resolution.framework.Request in project grakn by graknlabs.

the class ConjunctionResolver method initialiseRequestState.

private void initialiseRequestState(RequestState requestState, Partial.Compound<?, ?> partialAnswer, Plans.Plan plan) {
    ResolverRegistry.ResolverView childResolver = downstreamResolvers.get(plan.get(0));
    Partial<?> downstream = toDownstream(partialAnswer, childResolver, plan.get(0));
    Request toDownstream = Request.create(driver(), childResolver.resolver(), downstream, 0);
    requestState.downstreamManager().addDownstream(toDownstream);
}
Also used : ResolverRegistry(com.vaticle.typedb.core.reasoner.resolution.ResolverRegistry) Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request)

Example 12 with Request

use of com.vaticle.typedb.core.reasoner.resolution.framework.Request in project grakn by graknlabs.

the class ConcludableResolver method receiveAnswer.

@Override
protected void receiveAnswer(Answer fromDownstream, int iteration) {
    LOG.trace("{}: received Answer: {}", name(), fromDownstream);
    if (isTerminated())
        return;
    Request toDownstream = fromDownstream.sourceRequest();
    Request fromUpstream = fromUpstream(toDownstream);
    Driver<? extends Resolver<?>> root = fromUpstream.partialAnswer().root();
    if (iteration < iterationByRoot.get(root)) {
        // short circuit if the request came from a prior iteration
        failToUpstream(fromUpstream, iteration);
    } else {
        CachingRequestState<?, ConceptMap> requestState = this.requestStates.get(fromUpstream);
        assert requestState.isExploration();
        requestState.asExploration().newAnswer(fromDownstream.answer());
        assert iteration == requestState.iteration();
        assert cacheRegistersByRoot.get(root).containsKey(fromUpstream.partialAnswer().conceptMap());
        nextAnswer(fromUpstream, requestState, iteration);
    }
}
Also used : Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap)

Example 13 with Request

use of com.vaticle.typedb.core.reasoner.resolution.framework.Request 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)

Example 14 with Request

use of com.vaticle.typedb.core.reasoner.resolution.framework.Request in project grakn by graknlabs.

the class DisjunctionResolver method receiveAnswer.

@Override
protected void receiveAnswer(Response.Answer fromDownstream, int iteration) {
    LOG.trace("{}: received answer: {}", name(), fromDownstream);
    if (isTerminated())
        return;
    Request toDownstream = fromDownstream.sourceRequest();
    Request fromUpstream = fromUpstream(toDownstream);
    RequestState requestState = requestStates.get(fromUpstream);
    assert fromDownstream.answer().isCompound();
    AnswerState answer = toUpstreamAnswer(fromDownstream.answer().asCompound(), fromDownstream);
    boolean acceptedAnswer = tryAcceptUpstreamAnswer(answer, fromUpstream, iteration);
    if (!acceptedAnswer)
        nextAnswer(fromUpstream, requestState, iteration);
}
Also used : Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request) AnswerState(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState)

Example 15 with Request

use of com.vaticle.typedb.core.reasoner.resolution.framework.Request in project grakn by graknlabs.

the class DisjunctionResolver method requestStateCreate.

@Override
protected RequestState requestStateCreate(Request fromUpstream, int iteration) {
    LOG.debug("{}: Creating a new RequestState for request: {}", name(), fromUpstream);
    assert fromUpstream.partialAnswer().isCompound();
    RequestState requestState = new RequestState(iteration);
    for (Driver<ConjunctionResolver.Nested> conjunctionResolver : downstreamResolvers.keySet()) {
        Compound.Nestable downstream = fromUpstream.partialAnswer().asCompound().filterToNestable(conjunctionRetrievedIds(conjunctionResolver));
        Request request = Request.create(driver(), conjunctionResolver, downstream);
        requestState.downstreamManager().addDownstream(request);
    }
    return requestState;
}
Also used : Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request) Compound(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial.Compound)

Aggregations

Request (com.vaticle.typedb.core.reasoner.resolution.framework.Request)16 ConceptMap (com.vaticle.typedb.core.concept.answer.ConceptMap)4 Partial (com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial)3 Compound (com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial.Compound)3 ResolverRegistry (com.vaticle.typedb.core.reasoner.resolution.ResolverRegistry)2 AnswerState (com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Unifier (com.vaticle.typedb.core.logic.resolvable.Unifier)1 Identifier (com.vaticle.typedb.core.traversal.common.Identifier)1 HashSet (java.util.HashSet)1 LinkedHashMap (java.util.LinkedHashMap)1 Set (java.util.Set)1