Class RdfDataSourceWithLocalCacheRework.OpRewriteInjectCacheOps
java.lang.Object
org.aksw.jenax.dataaccess.sparql.polyfill.datasource.RdfDataSourceWithLocalCacheRework.OpRewriteInjectCacheOps
- All Implemented Interfaces:
org.aksw.jenax.sparql.algebra.topdown.OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
- Enclosing class:
RdfDataSourceWithLocalCacheRework
public static class RdfDataSourceWithLocalCacheRework.OpRewriteInjectCacheOps
extends Object
implements org.aksw.jenax.sparql.algebra.topdown.OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
Rewriter that injects cache ops as the parent of group by ops.
Note, that all group by results are pulled into the client.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.aksw.jenax.sparql.algebra.topdown.OpRewriter
org.aksw.jenax.sparql.algebra.topdown.OpRewriter.OpVisitorBridge<T> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfallback(org.apache.jena.sparql.algebra.Op op) handleOp1(org.apache.jena.sparql.algebra.op.Op1 op, Function<org.apache.jena.sparql.algebra.Op, org.apache.jena.sparql.algebra.Op> ctor) <T extends org.apache.jena.sparql.algebra.op.Op1>
Map.Entry<org.apache.jena.sparql.algebra.Op, Boolean> handleProjectExtend(T op, Function<org.apache.jena.sparql.algebra.Op, org.apache.jena.sparql.algebra.Op> ctor) rewrite(org.apache.jena.sparql.algebra.op.OpDistinct op) rewrite(org.apache.jena.sparql.algebra.op.OpExtend op) rewrite(org.apache.jena.sparql.algebra.op.OpFilter op) rewrite(org.apache.jena.sparql.algebra.op.OpGroup op) Issue: group may introduce internal variables which are referenced later, such asrewrite(org.apache.jena.sparql.algebra.op.OpOrder op) The complexity with order by is that we need to be careful about allocated variables (those that start with a dot such as ?.rewrite(org.apache.jena.sparql.algebra.op.OpProject op) rewrite(org.apache.jena.sparql.algebra.op.OpSlice op) rewrite(org.apache.jena.sparql.algebra.op.OpUnion op) static org.apache.jena.sparql.algebra.OprewriteOpx(org.apache.jena.sparql.algebra.Op op) static org.apache.jena.query.QueryrewriteQuery(org.apache.jena.query.Query query) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.aksw.jenax.sparql.algebra.topdown.OpRewriter
rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewrite, rewriteOp
-
Constructor Details
-
OpRewriteInjectCacheOps
public OpRewriteInjectCacheOps()
-
-
Method Details
-
rewriteQuery
public static org.apache.jena.query.Query rewriteQuery(org.apache.jena.query.Query query) -
rewriteOpx
public static org.apache.jena.sparql.algebra.Op rewriteOpx(org.apache.jena.sparql.algebra.Op op) -
handleOp1
-
handleProjectExtend
-
fallback
-
rewrite
-
rewrite
-
rewrite
-
rewrite
-
rewrite
-
rewrite
public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpOrder op) The complexity with order by is that we need to be careful about allocated variables (those that start with a dot such as ?.foo). In this method we: (1) inject project nodes and (2) substitute allocated variables in sort conditions(order ((asc ?.0)) (CACHE (extend ((?sortKey_1 ?.0)) (group (?s) ((?.0 (min (str ?o))))) ) ) )(order ((asc ?sortKey_1)) (CACHE (project (?sortKey_1)) (extend ((?sortKey_1 ?.0)) (group (?s) ((?.0 (min (str ?o))))) ) ) ) ) -
rewrite
-
rewrite
public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpGroup op) Issue: group may introduce internal variables which are referenced later, such as(order ((asc ?.0)) (extend ((?sortKey_1 ?.0)) (group (?s) ((?.0 (min (str ?o))))We need to isolate the group node such that it can by correctly converted back to syntax.
-