use of ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery in project grakn by graknlabs.
the class QueryCacheTest method getUpdateRetrieveAnswerStream.
@Test
public void getUpdateRetrieveAnswerStream() {
QueryCache<ReasonerAtomicQuery> cache = new QueryCache<>();
Answer answer = recordQuery.getQuery().stream().findFirst().orElse(null);
Answer retrieveAnswer = answer.unify(recordToRetrieveUnifier);
Answer retrieveSingleAnswer = singleAnswer.unify(recordToRetrieveUnifier);
Stream<Answer> recordStream = cache.getAnswerStream(recordQuery);
Stream<Answer> retrieveStream = cache.getAnswerStream(retrieveQuery);
cache.recordAnswer(recordQuery, singleAnswer);
QueryAnswers recordAnswers = new QueryAnswers(recordStream.collect(Collectors.toSet()));
QueryAnswers retrieveAnswers = new QueryAnswers(retrieveStream.collect(Collectors.toSet()));
// NB: not expecting the update in the stream
assertTrue(recordAnswers.contains(answer));
assertTrue(retrieveAnswers.contains(retrieveAnswer));
assertFalse(recordAnswers.contains(singleAnswer));
assertFalse(retrieveAnswers.contains(retrieveSingleAnswer));
assertTrue(cache.getAnswers(recordQuery).contains(singleAnswer));
assertTrue(cache.getAnswers(retrieveQuery).contains(retrieveSingleAnswer));
}
use of ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery in project grakn by graknlabs.
the class QueryCacheTest method recordRetrieveSingleAnswer.
@Test
public void recordRetrieveSingleAnswer() {
QueryCache<ReasonerAtomicQuery> cache = new QueryCache<>();
Answer answer = recordQuery.getQuery().stream().findFirst().orElse(null);
Answer retrieveAnswer = answer.unify(recordToRetrieveUnifier);
cache.recordAnswer(recordQuery, answer);
assertEquals(cache.getAnswer(recordQuery, new QueryAnswer()), new QueryAnswer());
assertEquals(cache.getAnswer(recordQuery, answer), answer);
assertEquals(cache.getAnswer(recordQuery, retrieveAnswer), answer);
assertEquals(cache.getAnswer(retrieveQuery, new QueryAnswer()), new QueryAnswer());
assertEquals(cache.getAnswer(retrieveQuery, retrieveAnswer), retrieveAnswer);
assertEquals(cache.getAnswer(retrieveQuery, answer), retrieveAnswer);
}
use of ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery in project grakn by graknlabs.
the class QueryCacheTest method recordUpdateRetrieveAnswers.
@Test
public void recordUpdateRetrieveAnswers() {
QueryCache<ReasonerAtomicQuery> cache = new QueryCache<>();
cache.record(recordQuery, new QueryAnswers(recordQuery.getQuery().execute()));
cache.recordAnswer(recordQuery, singleAnswer);
assertTrue(cache.getAnswers(recordQuery).contains(singleAnswer));
assertTrue(cache.getAnswers(retrieveQuery).contains(singleAnswer.unify(recordToRetrieveUnifier)));
}
use of ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery in project grakn by graknlabs.
the class AtomicTest method testAtomsAreCorrectlyIdentifiedAsRecursive.
@Test
public void testAtomsAreCorrectlyIdentifiedAsRecursive() {
EmbeddedGraknTx<?> graph = ruleApplicabilitySet.tx();
String recRelString = "{($x, $y) isa binary;}";
String nrecRelString = "{($x, $y) isa ternary;}";
ReasonerAtomicQuery recQuery = ReasonerQueries.atomic(conjunction(recRelString, graph), graph);
ReasonerAtomicQuery nrecQuery = ReasonerQueries.atomic(conjunction(nrecRelString, graph), graph);
assertTrue(recQuery.getAtom().isRecursive());
assertTrue(!nrecQuery.getAtom().isRecursive());
}
use of ai.grakn.graql.internal.reasoner.query.ReasonerAtomicQuery in project grakn by graknlabs.
the class TypeInferenceQueryTest method typeInference.
private void typeInference(List<RelationshipType> possibleTypes, String pattern, String subbedPattern, EmbeddedGraknTx<?> graph) {
ReasonerAtomicQuery query = ReasonerQueries.atomic(conjunction(pattern, graph), graph);
ReasonerAtomicQuery subbedQuery = ReasonerQueries.atomic(conjunction(subbedPattern, graph), graph);
RelationshipAtom atom = (RelationshipAtom) query.getAtom();
RelationshipAtom subbedAtom = (RelationshipAtom) subbedQuery.getAtom();
List<Type> relationshipTypes = atom.inferPossibleTypes(new QueryAnswer());
List<Type> subbedRelationshipTypes = subbedAtom.inferPossibleTypes(new QueryAnswer());
if (possibleTypes.size() == 1) {
assertEquals(possibleTypes, relationshipTypes);
assertEquals(relationshipTypes, subbedRelationshipTypes);
assertEquals(atom.getSchemaConcept(), Iterables.getOnlyElement(possibleTypes));
assertEquals(subbedAtom.getSchemaConcept(), Iterables.getOnlyElement(possibleTypes));
} else {
assertTrue(CollectionUtils.isEqualCollection(possibleTypes, relationshipTypes));
assertTrue(CollectionUtils.isEqualCollection(relationshipTypes, subbedRelationshipTypes));
assertEquals(atom.getSchemaConcept(), null);
assertEquals(subbedAtom.getSchemaConcept(), null);
}
typeInferenceQueries(possibleTypes, pattern, graph);
typeInferenceQueries(possibleTypes, subbedPattern, graph);
}
Aggregations