Package org.aksw.jenax.arq.dataset.cache
Class DatasetGraphCache
java.lang.Object
org.apache.jena.sparql.core.DatasetGraphWrapper
org.aksw.jenax.arq.util.dataset.DatasetGraphWrapperFindBase
org.aksw.jenax.arq.dataset.cache.DatasetGraphCache
- All Implemented Interfaces:
org.apache.jena.atlas.lib.Closeable,org.apache.jena.atlas.lib.Sync,org.apache.jena.sparql.core.DatasetGraph,org.apache.jena.sparql.core.Transactional
A wrapper that caches the result of
DatasetGraphWrapperFindBase.find(Node, Node, Node, Node) calls
for a configurable set of CachePatterns.
This implementation does not perform any subsumption checks.
A cache for (IN IN owl:sameAs ANY) is presently not applicable for a lookup
with e.g. (foo bar owl:sameAs baz) because baz is more specific than ANY.
Upon caching, the full result set will be immediately consumed and put into the cache.
Hence, this cache should only be used with patterns that lead to small result sets.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.jena.sparql.core.Transactional
org.apache.jena.sparql.core.Transactional.Promote -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected com.google.common.cache.Cache<Map.Entry<org.apache.jena.sparql.core.Quad,org.apache.jena.atlas.lib.tuple.Tuple<org.apache.jena.graph.Node>>, Set<org.apache.jena.sparql.core.Quad>> protected Supplier<com.google.common.cache.Cache<Map.Entry<org.apache.jena.sparql.core.Quad,org.apache.jena.atlas.lib.tuple.Tuple<org.apache.jena.graph.Node>>, Set<org.apache.jena.sparql.core.Quad>>> (CachePattern, In-Tuple) -> Quadprotected longprotected Collection<CachePattern>protected AtomicLongstatic final intprotected longprotected booleanIn tabling mode all data matching the configured patterns is prefetched.static boolean -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDatasetGraphCache(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns, Supplier<com.google.common.cache.Cache<Map.Entry<org.apache.jena.sparql.core.Quad, org.apache.jena.atlas.lib.tuple.Tuple<org.apache.jena.graph.Node>>, Set<org.apache.jena.sparql.core.Quad>>> cacheFactory, boolean isTablingMode) -
Method Summary
Modifier and TypeMethodDescriptionvoidabort()protected Iterator<org.apache.jena.sparql.core.Quad>actionFind(boolean ng, org.apache.jena.graph.Node mg, org.apache.jena.graph.Node ms, org.apache.jena.graph.Node mp, org.apache.jena.graph.Node mo) voidadd(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) voidadd(org.apache.jena.sparql.core.Quad quad) voidaddAll(org.apache.jena.sparql.core.DatasetGraph src) static DatasetGraphCachecache(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns) static DatasetGraphCachecache(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns, int maxCacheSize) static DatasetGraphCachecreate(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns, long maxCacheSize, boolean isTablingMode) voiddelete(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) voiddelete(org.apache.jena.sparql.core.Quad quad) voiddeleteAny(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) com.google.common.cache.Cache<Map.Entry<org.apache.jena.sparql.core.Quad,org.apache.jena.atlas.lib.tuple.Tuple<org.apache.jena.graph.Node>>, Set<org.apache.jena.sparql.core.Quad>> protected Stream<CachePattern>getMatchingCachePatterns(org.apache.jena.graph.Node mg, org.apache.jena.graph.Node ms, org.apache.jena.graph.Node mp, org.apache.jena.graph.Node mo) protected Stream<CachePattern>getSuperPatterns(org.apache.jena.graph.Node mg, org.apache.jena.graph.Node ms, org.apache.jena.graph.Node mp, org.apache.jena.graph.Node mo) booleanbooleanmayContainQuad(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) booleanmayContainQuad(org.apache.jena.sparql.core.Quad rawQuad) This method always returns true unless in tabeling mode.protected voidstatic DatasetGraphCachetable(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns) static DatasetGraphCachetable(org.apache.jena.sparql.core.DatasetGraph base, CachePattern cachePatterns) Methods inherited from class org.aksw.jenax.arq.util.dataset.DatasetGraphWrapperFindBase
contains, contains, delegateFind, find, find, find, find, findNG, getDefaultGraph, getGraph, getUnionGraphMethods inherited from class org.apache.jena.sparql.core.DatasetGraphWrapper
addGraph, begin, begin, begin, clear, close, commit, containsGraph, end, get, getBase, getBaseForQuery, getContext, getCxt, getG, getLock, getR, getT, getW, getWrapped, isEmpty, isInTransaction, listGraphNodes, prefixes, promote, promote, removeGraph, size, supportsTransactionAbort, supportsTransactions, sync, toString, transactionMode, transactionType, unwrapMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.jena.sparql.core.DatasetGraph
stream, streamMethods inherited from interface org.apache.jena.sparql.core.Transactional
calc, calculate, calculateRead, calculateWrite, exec, execute, executeRead, executeWrite
-
Field Details
-
logCacheStats
public static boolean logCacheStats -
findCounter
protected long findCounter -
cacheFactory
protected Supplier<com.google.common.cache.Cache<Map.Entry<org.apache.jena.sparql.core.Quad,org.apache.jena.atlas.lib.tuple.Tuple<org.apache.jena.graph.Node>>, cacheFactorySet<org.apache.jena.sparql.core.Quad>>> (CachePattern, In-Tuple) -> Quad -
cache
-
cacheVersion
-
cacheGeneration
protected volatile long cacheGeneration -
isTablingMode
protected boolean isTablingModeIn tabling mode all data matching the configured patterns is prefetched. This way, lookups that match the cache patterns can always be answered from the cache alone; especially, if for such a lookup there is no cache entry then no request to the backend needs to be made. If tabling is enabled then the cache should have unlimited size. -
cachePatterns
-
DFT_MAX_CACHE_SIZE
public static final int DFT_MAX_CACHE_SIZE- See Also:
-
-
Constructor Details
-
DatasetGraphCache
protected DatasetGraphCache(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns, Supplier<com.google.common.cache.Cache<Map.Entry<org.apache.jena.sparql.core.Quad, org.apache.jena.atlas.lib.tuple.Tuple<org.apache.jena.graph.Node>>, Set<org.apache.jena.sparql.core.Quad>>> cacheFactory, boolean isTablingMode)
-
-
Method Details
-
cache
public static DatasetGraphCache cache(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns) -
cache
public static DatasetGraphCache cache(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns, int maxCacheSize) -
table
public static DatasetGraphCache table(org.apache.jena.sparql.core.DatasetGraph base, CachePattern cachePatterns) -
table
public static DatasetGraphCache table(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns) -
create
public static DatasetGraphCache create(org.apache.jena.sparql.core.DatasetGraph base, Collection<CachePattern> cachePatterns, long maxCacheSize, boolean isTablingMode) -
isTablingMode
public boolean isTablingMode() -
mayContainQuad
public boolean mayContainQuad(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) -
nextGeneration
protected void nextGeneration() -
add
public void add(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) - Specified by:
addin interfaceorg.apache.jena.sparql.core.DatasetGraph- Overrides:
addin classorg.apache.jena.sparql.core.DatasetGraphWrapper
-
delete
public void delete(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) - Specified by:
deletein interfaceorg.apache.jena.sparql.core.DatasetGraph- Overrides:
deletein classorg.apache.jena.sparql.core.DatasetGraphWrapper
-
addAll
public void addAll(org.apache.jena.sparql.core.DatasetGraph src) -
deleteAny
public void deleteAny(org.apache.jena.graph.Node g, org.apache.jena.graph.Node s, org.apache.jena.graph.Node p, org.apache.jena.graph.Node o) - Specified by:
deleteAnyin interfaceorg.apache.jena.sparql.core.DatasetGraph- Overrides:
deleteAnyin classorg.apache.jena.sparql.core.DatasetGraphWrapper
-
add
public void add(org.apache.jena.sparql.core.Quad quad) - Specified by:
addin interfaceorg.apache.jena.sparql.core.DatasetGraph- Overrides:
addin classorg.apache.jena.sparql.core.DatasetGraphWrapper
-
delete
public void delete(org.apache.jena.sparql.core.Quad quad) - Specified by:
deletein interfaceorg.apache.jena.sparql.core.DatasetGraph- Overrides:
deletein classorg.apache.jena.sparql.core.DatasetGraphWrapper
-
abort
public void abort()- Specified by:
abortin interfaceorg.apache.jena.sparql.core.Transactional- Overrides:
abortin classorg.apache.jena.sparql.core.DatasetGraphWrapper
-
mayContainQuad
public boolean mayContainQuad(org.apache.jena.sparql.core.Quad rawQuad) This method always returns true unless in tabeling mode. If false then the wrapped dataset does not contain this quad. If the argument quad contains placeholders only a check is made for whether the partition key exists in the cache. The set of cached entries is NOT iterated. -
getMatchingCachePatterns
protected Stream<CachePattern> getMatchingCachePatterns(org.apache.jena.graph.Node mg, org.apache.jena.graph.Node ms, org.apache.jena.graph.Node mp, org.apache.jena.graph.Node mo) -
getSuperPatterns
protected Stream<CachePattern> getSuperPatterns(org.apache.jena.graph.Node mg, org.apache.jena.graph.Node ms, org.apache.jena.graph.Node mp, org.apache.jena.graph.Node mo) -
actionFind
protected Iterator<org.apache.jena.sparql.core.Quad> actionFind(boolean ng, org.apache.jena.graph.Node mg, org.apache.jena.graph.Node ms, org.apache.jena.graph.Node mp, org.apache.jena.graph.Node mo) - Specified by:
actionFindin classDatasetGraphWrapperFindBase- Parameters:
ng- Controls the meaning of Node.ANY for g: If false then it matches all graphs including the default graph. When true it only matches within named graphs (and not the default graph).
-
ensureFilledTables
-