Search in sources :

Example 16 with ConceptMap

use of com.vaticle.typedb.core.concept.answer.ConceptMap in project grakn by graknlabs.

the class AnswerStateTest method test_root_partially_mapped_to_downstream_and_back.

@Test
public void test_root_partially_mapped_to_downstream_and_back() {
    Map<Identifier.Variable.Retrievable, Identifier.Variable.Retrievable> mapping = new HashMap<>();
    mapping.put(Identifier.Variable.name("a"), Identifier.Variable.name("x"));
    mapping.put(Identifier.Variable.name("b"), Identifier.Variable.name("y"));
    Map<Identifier.Variable.Retrievable, Concept> concepts = new HashMap<>();
    concepts.put(Identifier.Variable.name("a"), new MockConcept(0));
    Set<Identifier.Variable.Retrievable> filter = set(Identifier.Variable.name("a"), Identifier.Variable.name("b"));
    Concludable.Match<?> mapped = InitialImpl.create(filter, new ConceptMap(), null, false).toDownstream().with(new ConceptMap(concepts)).toDownstream(Mapping.of(mapping), null);
    Map<Identifier.Variable.Retrievable, Concept> expectedMapped = new HashMap<>();
    expectedMapped.put(Identifier.Variable.name("x"), new MockConcept(0));
    assertEquals(new ConceptMap(expectedMapped), mapped.conceptMap());
    Map<Identifier.Variable.Retrievable, Concept> downstreamConcepts = new HashMap<>();
    downstreamConcepts.put(Identifier.Variable.name("x"), new MockConcept(0));
    downstreamConcepts.put(Identifier.Variable.name("y"), new MockConcept(1));
    Partial.Compound<?, ?> partial = mapped.toUpstreamLookup(new ConceptMap(downstreamConcepts), false);
    Map<Identifier.Variable.Retrievable, Concept> expectedWithInitial = new HashMap<>();
    expectedWithInitial.put(Identifier.Variable.name("a"), new MockConcept(0));
    expectedWithInitial.put(Identifier.Variable.name("b"), new MockConcept(1));
    assertEquals(new ConceptMap(expectedWithInitial), partial.conceptMap());
}
Also used : Concept(com.vaticle.typedb.core.concept.Concept) HashMap(java.util.HashMap) Concludable(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial.Concludable) Identifier(com.vaticle.typedb.core.traversal.common.Identifier) Partial(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap) Test(org.junit.Test)

Example 17 with ConceptMap

use of com.vaticle.typedb.core.concept.answer.ConceptMap in project grakn by graknlabs.

the class Mapping method unTransform.

public ConceptMap unTransform(ConceptMap conceptMap) {
    assert reverseMapping.size() == conceptMap.concepts().size();
    Map<Retrievable, Concept> transformed = new HashMap<>();
    for (Map.Entry<Retrievable, ? extends Concept> entry : conceptMap.concepts().entrySet()) {
        Retrievable id = entry.getKey();
        assert reverseMapping.containsKey(id);
        Concept concept = entry.getValue();
        transformed.put(reverseMapping.get(id), concept);
    }
    // we ignore explainables because they can't be mapped here
    return new ConceptMap(transformed);
}
Also used : Concept(com.vaticle.typedb.core.concept.Concept) Retrievable(com.vaticle.typedb.core.traversal.common.Identifier.Variable.Retrievable) HashMap(java.util.HashMap) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap) Map(java.util.Map) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap) HashMap(java.util.HashMap)

Example 18 with ConceptMap

use of com.vaticle.typedb.core.concept.answer.ConceptMap in project grakn by graknlabs.

the class ConclusionResolver 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);
    ConclusionRequestState<? extends Partial.Concludable<?>> requestState = this.requestStates.get(fromUpstream);
    if (!requestState.isComplete()) {
        FunctionalIterator<Map<Identifier.Variable, Concept>> materialisations = conclusion.materialise(fromDownstream.answer().conceptMap(), traversalEngine, conceptMgr);
        if (!materialisations.hasNext())
            throw TypeDBException.of(ILLEGAL_STATE);
        requestState.newMaterialisedAnswers(fromDownstream.answer(), materialisations);
    }
    nextAnswer(fromUpstream, requestState, iteration);
}
Also used : Identifier(com.vaticle.typedb.core.traversal.common.Identifier) Partial(com.vaticle.typedb.core.reasoner.resolution.answer.AnswerState.Partial) Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request) HashMap(java.util.HashMap) Map(java.util.Map) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap)

Example 19 with ConceptMap

use of com.vaticle.typedb.core.concept.answer.ConceptMap in project grakn by graknlabs.

the class QueryService method insert.

private void insert(String queryStr, Options.Query options, UUID reqID) {
    TypeQLInsert query = TypeQL.parseQuery(queryStr).asInsert();
    Context.Query context = new Context.Query(transactionSvc.context(), options.query(query), query);
    FunctionalIterator<ConceptMap> answers = queryMgr.insert(query, context);
    transactionSvc.stream(answers, reqID, context.options(), a -> insertResPart(reqID, a));
}
Also used : Context(com.vaticle.typedb.core.common.parameters.Context) TypeQLInsert(com.vaticle.typeql.lang.query.TypeQLInsert) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap)

Example 20 with ConceptMap

use of com.vaticle.typedb.core.concept.answer.ConceptMap in project grakn by graknlabs.

the class ConcludableResolver method receiveFail.

@Override
protected void receiveFail(Response.Fail fromDownstream, int iteration) {
    LOG.trace("{}: received Fail: {}", name(), fromDownstream);
    if (isTerminated())
        return;
    Request toDownstream = fromDownstream.sourceRequest();
    Request fromUpstream = fromUpstream(toDownstream);
    if (iteration < iterationByRoot.get(fromUpstream.partialAnswer().root())) {
        // short circuit old iteration failed messages to upstream
        failToUpstream(fromUpstream, iteration);
    } else {
        CachingRequestState<?, ConceptMap> requestState = this.requestStates.get(fromUpstream);
        assert iteration == requestState.iteration();
        if (requestState.isExploration()) {
            requestState.asExploration().downstreamManager().removeDownstream(fromDownstream.sourceRequest());
        }
        nextAnswer(fromUpstream, requestState, iteration);
    }
}
Also used : Request(com.vaticle.typedb.core.reasoner.resolution.framework.Request) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap)

Aggregations

ConceptMap (com.vaticle.typedb.core.concept.answer.ConceptMap)68 Test (org.junit.Test)42 Concept (com.vaticle.typedb.core.concept.Concept)33 HashMap (java.util.HashMap)33 Set (java.util.Set)23 CoreSession (com.vaticle.typedb.core.database.CoreSession)20 Map (java.util.Map)20 CoreTransaction (com.vaticle.typedb.core.database.CoreTransaction)19 ConceptManager (com.vaticle.typedb.core.concept.ConceptManager)18 AttributeType (com.vaticle.typedb.core.concept.type.AttributeType)17 Rule (com.vaticle.typedb.core.logic.Rule)17 Util.createRule (com.vaticle.typedb.core.logic.resolvable.Util.createRule)17 EntityType (com.vaticle.typedb.core.concept.type.EntityType)16 LogicManager (com.vaticle.typedb.core.logic.LogicManager)13 RelationType (com.vaticle.typedb.core.concept.type.RelationType)12 Identifier (com.vaticle.typedb.core.traversal.common.Identifier)11 Variable (com.vaticle.typedb.core.traversal.common.Identifier.Variable)11 HashSet (java.util.HashSet)11 Options (com.vaticle.typedb.core.common.parameters.Options)10 CoreDatabaseManager (com.vaticle.typedb.core.database.CoreDatabaseManager)9