Search in sources :

Example 36 with Answer

use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.

the class ReasoningTests method reusingResources_usingExistingResourceToDefineSubResource.

// TODO potentially a graql bug when executing match insert on shared resources
@Ignore
// Expected result: When the head of a rule contains resource assertions, the respective unique resources should be generated or reused.
@Test
public void reusingResources_usingExistingResourceToDefineSubResource() {
    QueryBuilder qb = testSet14.tx().graql().infer(true);
    String queryString = "match $x isa entity1, has subResource $y;";
    List<Answer> answers = qb.<GetQuery>parse(queryString).execute();
    assertEquals(answers.size(), 1);
    String queryString2 = "match $x isa subResource;";
    List<Answer> answers2 = qb.<GetQuery>parse(queryString2).execute();
    assertEquals(answers2.size(), 1);
    assertTrue(answers2.iterator().next().get(var("x")).isAttribute());
    String queryString3 = "match $x isa resource; $y isa subResource;";
    List<Answer> answers3 = qb.<GetQuery>parse(queryString3).execute();
    assertEquals(answers3.size(), 1);
    assertTrue(answers3.iterator().next().get(var("x")).isAttribute());
    assertTrue(answers3.iterator().next().get(var("y")).isAttribute());
}
Also used : Answer(ai.grakn.graql.admin.Answer) QueryBuilder(ai.grakn.graql.QueryBuilder) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 37 with Answer

use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.

the class TypeInferenceQueryTest method typedAnswers.

private List<Answer> typedAnswers(List<RelationshipType> possibleTypes, String pattern, EmbeddedGraknTx<?> graph) {
    List<Answer> answers = new ArrayList<>();
    ReasonerAtomicQuery query = ReasonerQueries.atomic(conjunction(pattern, graph), graph);
    for (Type type : possibleTypes) {
        GetQuery typedQuery = graph.graql().match(ReasonerQueries.atomic(query.getAtom().addType(type)).getPattern()).get();
        typedQuery.stream().filter(ans -> !answers.contains(ans)).forEach(answers::add);
    }
    return answers;
}
Also used : Iterables(com.google.common.collect.Iterables) Concept(ai.grakn.concept.Concept) Type(ai.grakn.concept.Type) Answer(ai.grakn.graql.admin.Answer) ArrayList(java.util.ArrayList) Lists(com.google.common.collect.Lists) Label(ai.grakn.concept.Label) RelationshipType(ai.grakn.concept.RelationshipType) CollectionUtils(org.apache.commons.collections.CollectionUtils) ConceptId(ai.grakn.concept.ConceptId) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) GraqlTestUtil(ai.grakn.util.GraqlTestUtil) ExpectedException(org.junit.rules.ExpectedException) RelationshipAtom(ai.grakn.graql.internal.reasoner.atom.binary.RelationshipAtom) Collectors.toSet(java.util.stream.Collectors.toSet) QueryBuilder(ai.grakn.graql.QueryBuilder) Patterns(ai.grakn.graql.internal.pattern.Patterns) Conjunction(ai.grakn.graql.admin.Conjunction) Set(java.util.Set) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) Collectors(java.util.stream.Collectors) GetQuery(ai.grakn.graql.GetQuery) List(java.util.List) Rule(org.junit.Rule) ReasonerQueries(ai.grakn.graql.internal.reasoner.query.ReasonerQueries) EmbeddedGraknTx(ai.grakn.kb.internal.EmbeddedGraknTx) VarPatternAdmin(ai.grakn.graql.admin.VarPatternAdmin) SampleKBContext(ai.grakn.test.rule.SampleKBContext) ReasonerAtomicQuery(ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery) Schema(ai.grakn.util.Schema) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) Answer(ai.grakn.graql.admin.Answer) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) Type(ai.grakn.concept.Type) RelationshipType(ai.grakn.concept.RelationshipType) GetQuery(ai.grakn.graql.GetQuery) ArrayList(java.util.ArrayList) ReasonerAtomicQuery(ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery)

Example 38 with Answer

use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.

the class TypeInferenceQueryTest method typeInferenceQueries.

private void typeInferenceQueries(List<RelationshipType> possibleTypes, String pattern, EmbeddedGraknTx<?> graph) {
    QueryBuilder qb = graph.graql();
    List<Answer> typedAnswers = typedAnswers(possibleTypes, pattern, graph);
    List<Answer> unTypedAnswers = qb.match(qb.parser().parsePattern(pattern)).get().execute();
    assertEquals(typedAnswers.size(), unTypedAnswers.size());
    GraqlTestUtil.assertCollectionsEqual(typedAnswers, unTypedAnswers);
}
Also used : Answer(ai.grakn.graql.admin.Answer) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) QueryBuilder(ai.grakn.graql.QueryBuilder)

Example 39 with Answer

use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.

the class GeoInferenceTest method testRelationVarQuery_Closure_withAndWithoutRelationPlayers.

@Test
public void testRelationVarQuery_Closure_withAndWithoutRelationPlayers() {
    QueryBuilder iqb = geoKB.tx().graql().infer(true);
    String queryString = "match $x isa is-located-in; get;";
    String queryString2 = "match $x ($x1, $x2) isa is-located-in;get $x;";
    List<Answer> answers = iqb.materialise(false).<GetQuery>parse(queryString).execute();
    List<Answer> answers2 = iqb.materialise(true).<GetQuery>parse(queryString).execute();
    List<Answer> answers3 = iqb.materialise(false).<GetQuery>parse(queryString2).execute();
    List<Answer> answers4 = iqb.materialise(true).<GetQuery>parse(queryString2).execute();
    assertCollectionsEqual(answers, answers2);
    assertCollectionsEqual(answers3, answers4);
    assertEquals(answers.size(), 51);
    assertEquals(answers3.size(), 51);
}
Also used : Answer(ai.grakn.graql.admin.Answer) QueryBuilder(ai.grakn.graql.QueryBuilder) Test(org.junit.Test)

Example 40 with Answer

use of ai.grakn.graql.admin.Answer in project grakn by graknlabs.

the class GeoInferenceTest method testTransitiveQuery_Closure_NoRoles.

@Test
public void testTransitiveQuery_Closure_NoRoles() {
    QueryBuilder iqb = geoKB.tx().graql().infer(true);
    String queryString = "match ($x, $y) isa is-located-in; get;";
    List<Answer> answers = iqb.materialise(false).<GetQuery>parse(queryString).execute();
    List<Answer> answers2 = iqb.materialise(true).<GetQuery>parse(queryString).execute();
    assertEquals(answers.size(), 102);
    assertCollectionsEqual(answers, answers2);
}
Also used : Answer(ai.grakn.graql.admin.Answer) QueryBuilder(ai.grakn.graql.QueryBuilder) Test(org.junit.Test)

Aggregations

Answer (ai.grakn.graql.admin.Answer)193 Test (org.junit.Test)164 QueryBuilder (ai.grakn.graql.QueryBuilder)104 GetQuery (ai.grakn.graql.GetQuery)69 GraknTx (ai.grakn.GraknTx)47 QueryAnswer (ai.grakn.graql.internal.query.QueryAnswer)37 Concept (ai.grakn.concept.Concept)32 Var (ai.grakn.graql.Var)21 Set (java.util.Set)21 Unifier (ai.grakn.graql.admin.Unifier)19 MultiUnifier (ai.grakn.graql.admin.MultiUnifier)18 Collectors (java.util.stream.Collectors)18 ReasonerAtomicQuery (ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery)17 Sets (com.google.common.collect.Sets)16 List (java.util.List)16 EmbeddedGraknTx (ai.grakn.kb.internal.EmbeddedGraknTx)15 Stream (java.util.stream.Stream)15 VarPatternAdmin (ai.grakn.graql.admin.VarPatternAdmin)14 SampleKBContext (ai.grakn.test.rule.SampleKBContext)14 Pair (ai.grakn.graql.internal.reasoner.utils.Pair)12