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);
}
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);
}
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);
}
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;
}
Aggregations