Search in sources :

Example 1 with Retrievable

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

the class PlannerTest method test_planner_multiple_dependencies.

@Test
public void test_planner_multiple_dependencies() {
    transaction.query().define(TypeQL.parseQuery("define employment sub relation, relates employee, relates employer;" + "person plays employment:employee;" + "company sub entity, plays employment:employer, owns name;"));
    transaction.commit();
    session.close();
    initialise(Arguments.Session.Type.DATA, Arguments.Transaction.Type.READ);
    EntityType person = conceptMgr.putEntityType("person");
    AttributeType name = conceptMgr.putAttributeType("name", AttributeType.ValueType.STRING);
    person.setOwns(name);
    EntityType company = conceptMgr.putEntityType("company");
    company.setOwns(name);
    conceptMgr.putRelationType("employment");
    Retrievable retrievable = new Retrievable(resolvedConjunction("{ $p isa person; }", logicMgr));
    Concludable concludable = Concludable.create(resolvedConjunction("{ $p has name $n; }", logicMgr)).iterator().next();
    Retrievable retrievable2 = new Retrievable(resolvedConjunction("{ $c isa company, has name $n; }", logicMgr));
    Concludable concludable2 = Concludable.create(resolvedConjunction("{ $e($c, $p2) isa employment; }", logicMgr)).iterator().next();
    Set<Resolvable<?>> resolvables = set(retrievable, retrievable2, concludable, concludable2);
    List<Resolvable<?>> plan = Planner.plan(resolvables, new HashMap<>(), set());
    assertEquals(list(retrievable, concludable, retrievable2, concludable2), plan);
}
Also used : EntityType(com.vaticle.typedb.core.concept.type.EntityType) Concludable(com.vaticle.typedb.core.logic.resolvable.Concludable) Retrievable(com.vaticle.typedb.core.logic.resolvable.Retrievable) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) Resolvable(com.vaticle.typedb.core.logic.resolvable.Resolvable) Test(org.junit.Test)

Example 2 with Retrievable

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

the class PlannerTest method test_planner_prioritises_retrievable_without_dependencies.

@Test
public void test_planner_prioritises_retrievable_without_dependencies() {
    Concludable concludable = Concludable.create(resolvedConjunction("{ $p has name $n; }", logicMgr)).iterator().next();
    Retrievable retrievable = new Retrievable(resolvedConjunction("{ $p isa person; }", logicMgr));
    Set<Resolvable<?>> resolvables = set(concludable, retrievable);
    List<Resolvable<?>> plan = Planner.plan(resolvables, new HashMap<>(), set());
    assertEquals(list(retrievable, concludable), plan);
}
Also used : Concludable(com.vaticle.typedb.core.logic.resolvable.Concludable) Retrievable(com.vaticle.typedb.core.logic.resolvable.Retrievable) Resolvable(com.vaticle.typedb.core.logic.resolvable.Resolvable) Test(org.junit.Test)

Example 3 with Retrievable

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

the class PlannerTest method test_planner_retrievable_dependent_upon_concludable.

@Test
public void test_planner_retrievable_dependent_upon_concludable() {
    Concludable concludable = Concludable.create(resolvedConjunction("{ $a has $b; }", logicMgr)).iterator().next();
    Retrievable retrievable = new Retrievable(resolvedConjunction("{ $c($b); }", logicMgr));
    Set<Resolvable<?>> resolvables = set(concludable, retrievable);
    List<Resolvable<?>> plan = Planner.plan(resolvables, new HashMap<>(), set());
    assertEquals(list(concludable, retrievable), plan);
}
Also used : Concludable(com.vaticle.typedb.core.logic.resolvable.Concludable) Retrievable(com.vaticle.typedb.core.logic.resolvable.Retrievable) Resolvable(com.vaticle.typedb.core.logic.resolvable.Resolvable) Test(org.junit.Test)

Example 4 with Retrievable

use of com.vaticle.typedb.core.logic.resolvable.Retrievable 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;
}
Also used : Concludable(com.vaticle.typedb.core.logic.resolvable.Concludable) Retrievable(com.vaticle.typedb.core.logic.resolvable.Retrievable) Negation(com.vaticle.typedb.core.pattern.Negation) Negated(com.vaticle.typedb.core.logic.resolvable.Negated) TypeDBException(com.vaticle.typedb.core.common.exception.TypeDBException)

Aggregations

Concludable (com.vaticle.typedb.core.logic.resolvable.Concludable)4 Retrievable (com.vaticle.typedb.core.logic.resolvable.Retrievable)4 Resolvable (com.vaticle.typedb.core.logic.resolvable.Resolvable)3 Test (org.junit.Test)3 TypeDBException (com.vaticle.typedb.core.common.exception.TypeDBException)1 AttributeType (com.vaticle.typedb.core.concept.type.AttributeType)1 EntityType (com.vaticle.typedb.core.concept.type.EntityType)1 Negated (com.vaticle.typedb.core.logic.resolvable.Negated)1 Negation (com.vaticle.typedb.core.pattern.Negation)1