Search in sources :

Example 71 with Answer

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

the class GeoInferenceTest method testTransitiveQuery_Closure.

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

Example 72 with Answer

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

the class InsertQueryTest method whenExecutingAnInsertQuery_ResultContainsAllInsertedVars.

@Test
public void whenExecutingAnInsertQuery_ResultContainsAllInsertedVars() {
    Var x = var("x");
    Var type = var("type");
    // Note that two variables refer to the same type. They should both be in the result
    InsertQuery query = qb.insert(x.isa(type), type.label("movie"));
    Answer result = Iterables.getOnlyElement(query);
    assertThat(result.vars(), containsInAnyOrder(x, type));
    assertEquals(result.get(type), result.get(x).asEntity().type());
    assertEquals(result.get(type).asType().getLabel(), Label.of("movie"));
}
Also used : InsertQuery(ai.grakn.graql.InsertQuery) Answer(ai.grakn.graql.admin.Answer) Var(ai.grakn.graql.Var) Test(org.junit.Test)

Example 73 with Answer

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

the class InsertQueryTest method whenAddingAnAttributeRelationshipWithProvenance_TheAttributeAndProvenanceAreAdded.

@Test
public void whenAddingAnAttributeRelationshipWithProvenance_TheAttributeAndProvenanceAreAdded() {
    InsertQuery query = qb.insert(y.has("provenance", z.val("Someone told me")), w.isa("movie").has(title, x.val("My Movie"), y));
    Answer answer = Iterables.getOnlyElement(query.execute());
    Entity movie = answer.get(w).asEntity();
    Attribute<String> theTitle = answer.get(x).asAttribute();
    Relationship hasTitle = answer.get(y).asRelationship();
    Attribute<String> provenance = answer.get(z).asAttribute();
    assertThat(hasTitle.rolePlayers().toArray(), arrayContainingInAnyOrder(movie, theTitle));
    assertThat(hasTitle.attributes().toArray(), arrayContaining(provenance));
}
Also used : InsertQuery(ai.grakn.graql.InsertQuery) Answer(ai.grakn.graql.admin.Answer) Entity(ai.grakn.concept.Entity) Relationship(ai.grakn.concept.Relationship) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Test(org.junit.Test)

Example 74 with Answer

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

the class InsertQueryTest method testIterateMatchInsertResults.

@Test
public void testIterateMatchInsertResults() {
    VarPattern language1 = var().isa("language").has("name", "123");
    VarPattern language2 = var().isa("language").has("name", "456");
    qb.insert(language1, language2).execute();
    assertExists(qb, language1);
    assertExists(qb, language2);
    InsertQuery query = qb.match(var("x").isa("language")).insert(var("x").has("name", "HELLO"));
    Iterator<Answer> results = query.iterator();
    assertNotExists(qb, var().isa("language").has("name", "123").has("name", "HELLO"));
    assertNotExists(qb, var().isa("language").has("name", "456").has("name", "HELLO"));
    Answer result1 = results.next();
    assertEquals(ImmutableSet.of(var("x")), result1.vars());
    boolean query123 = qb.match(var().isa("language").has("name", "123").has("name", "HELLO")).iterator().hasNext();
    boolean query456 = qb.match(var().isa("language").has("name", "456").has("name", "HELLO")).iterator().hasNext();
    // Check if one of the matches have had the insert executed correctly
    boolean oneExists = query123 != query456;
    assertTrue("A match insert was not executed correctly for only one match", oneExists);
    // Check that both are inserted correctly
    Answer result2 = results.next();
    assertEquals(ImmutableSet.of(var("x")), result1.vars());
    assertExists(qb, var().isa("language").has("name", "123").has("name", "HELLO"));
    assertExists(qb, var().isa("language").has("name", "456").has("name", "HELLO"));
    assertFalse(results.hasNext());
    assertNotEquals(result1.get("x"), result2.get("x"));
}
Also used : InsertQuery(ai.grakn.graql.InsertQuery) Answer(ai.grakn.graql.admin.Answer) VarPattern(ai.grakn.graql.VarPattern) Test(org.junit.Test)

Example 75 with Answer

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

the class InsertQueryTest method whenInsertingWithAMatch_ProjectMatchResultsOnVariablesInTheInsert.

@Test
public void whenInsertingWithAMatch_ProjectMatchResultsOnVariablesInTheInsert() {
    qb.define(label("maybe-friends").relates("friend").sub("relationship"), label("person").plays("friend")).execute();
    InsertQuery query = qb.match(var().rel("actor", x).rel("production-with-cast", z), var().rel("actor", y).rel("production-with-cast", z)).insert(w.rel("friend", x).rel("friend", y).isa("maybe-friends"));
    List<Answer> answers = query.execute();
    for (Answer answer : answers) {
        assertThat("Should contain only variables mentioned in the insert (so excludes `$z`)", answer.vars(), containsInAnyOrder(x, y, w));
    }
    assertEquals("Should contain only distinct results", answers.size(), Sets.newHashSet(answers).size());
}
Also used : InsertQuery(ai.grakn.graql.InsertQuery) Answer(ai.grakn.graql.admin.Answer) 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