Search in sources :

Example 1 with Exploration

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

the class ConcludableResolver method nextAnswer.

private void nextAnswer(Request fromUpstream, CachingRequestState<?, ConceptMap> requestState, int iteration) {
    Optional<Partial.Compound<?, ?>> upstreamAnswer = requestState.nextAnswer().map(Partial::asCompound);
    if (upstreamAnswer.isPresent()) {
        answerFound(upstreamAnswer.get(), fromUpstream, iteration);
    } else {
        Exploration exploration;
        if (requestState.isExploration() && !requestState.answerCache().isComplete()) {
            if ((exploration = requestState.asExploration()).downstreamManager().hasDownstream()) {
                requestFromDownstream(exploration.downstreamManager().nextDownstream(), fromUpstream, iteration);
            } else {
                // TODO: The cache should not be set as complete during recursion
                requestState.answerCache().setComplete();
                failToUpstream(fromUpstream, iteration);
            }
        } else {
            failToUpstream(fromUpstream, iteration);
        }
    }
}
Also used : Partial(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial) Exploration(com.vaticle.typedb.core.reasoner.resolution.framework.RequestState.Exploration)

Aggregations

Partial (com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial)1 Exploration (com.vaticle.typedb.core.reasoner.resolution.framework.RequestState.Exploration)1