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