Q - the type of query that is being cachedT - the type of answer being cachedpublic abstract class Cache<Q extends ReasonerQueryImpl,T extends Iterable<Answer>> extends Object
Generic container class for storing performed query resolutions. A one-to-one mapping is ensured between queries and entries. On retrieval, a relevant entry is identified by means of a query alpha-equivalence check. Defines two basic operations: - GET(Query) - retrieve an entry corresponding to a provided query, if entry doesn't exist return db lookup result of the query. - RECORD(Query) - if the query entry exists, update the entry, otherwise create a new entry. In each case return an up-to-date entry.
| Modifier and Type | Method and Description |
|---|---|
void |
add(Cache<Q,T> c2)
Perform cache union
|
void |
clear()
Clear the cache
|
boolean |
contains(Q query)
Query cache containment check
|
Collection<ai.grakn.graql.internal.reasoner.cache.CacheEntry<Q,T>> |
entries() |
abstract T |
getAnswers(Q query)
retrieve (possibly) cached answers for provided query
|
abstract java.util.stream.Stream<Answer> |
getAnswerStream(Q query) |
abstract Pair<java.util.stream.Stream<Answer>,MultiUnifier> |
getAnswerStreamWithUnifier(Q query) |
abstract Pair<T,MultiUnifier> |
getAnswersWithUnifier(Q query) |
Map<Pair<Var,Concept>,Set<Answer>> |
getInverseAnswerMap(Q query)
returns an inverse answer map with all query variables
|
Map<Pair<Var,Concept>,Set<Answer>> |
getInverseAnswerMap(Q query,
Set<Var> vars)
return an inverse answer map which is more suitable for operations involving concept comparison (joins, filtering, etc.)
NB: consumes the underlying stream for the specified query
|
Set<Q> |
getQueries() |
abstract java.util.stream.Stream<Answer> |
record(Q query,
java.util.stream.Stream<Answer> answers)
record answer stream for a specific query and retrieve the updated stream
|
abstract T |
record(Q query,
T answers)
record answer iterable for a specific query and retrieve the updated answers
|
void |
remove(Cache<Q,T> c2)
Perform cache difference
|
abstract void |
remove(Cache<Q,T> c2,
Set<Q> queries)
cache subtraction of specified queries
|
public boolean contains(Q query)
query - to be checked for containmentpublic Collection<ai.grakn.graql.internal.reasoner.cache.CacheEntry<Q,T>> entries()
public void remove(Cache<Q,T> c2)
c2 - cache which mappings should be removed from this cachepublic void clear()
public abstract T record(Q query, T answers)
query - to be recordedanswers - to this querypublic abstract java.util.stream.Stream<Answer> record(Q query, java.util.stream.Stream<Answer> answers)
query - to be recordedanswers - answer stream of the querypublic abstract T getAnswers(Q query)
query - for which to retrieve answerspublic abstract Pair<T,MultiUnifier> getAnswersWithUnifier(Q query)
public abstract java.util.stream.Stream<Answer> getAnswerStream(Q query)
public abstract Pair<java.util.stream.Stream<Answer>,MultiUnifier> getAnswerStreamWithUnifier(Q query)
public Map<Pair<Var,Concept>,Set<Answer>> getInverseAnswerMap(Q query, Set<Var> vars)
query - for answer are to be retrievedvars - variable names of interestpublic Map<Pair<Var,Concept>,Set<Answer>> getInverseAnswerMap(Q query)
query - for answer are to be retrievedCopyright © 2018 Grakn Labs Ltd. All rights reserved.