Class RdfDataSourceWithLocalCache.OpRewriteInjectCacheOps

java.lang.Object
org.aksw.jenax.dataaccess.sparql.polyfill.datasource.RdfDataSourceWithLocalCache.OpRewriteInjectCacheOps
All Implemented Interfaces:
OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
Enclosing class:
RdfDataSourceWithLocalCache

public static class RdfDataSourceWithLocalCache.OpRewriteInjectCacheOps extends Object implements 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.
  • 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

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> handleOp1(org.apache.jena.sparql.algebra.Op op, Function<org.apache.jena.sparql.algebra.Op,org.apache.jena.sparql.algebra.Op> ctor)
    • handleProjectExtend

      public <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)
    • fallback

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> fallback(org.apache.jena.sparql.algebra.Op op)
      Specified by:
      fallback in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • rewrite

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpProject op)
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • rewrite

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpExtend op)
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • rewrite

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpSlice op)
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • rewrite

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpDistinct op)
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • 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)))))
             )
           )
         )
       )
       
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • rewrite

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> rewrite(org.apache.jena.sparql.algebra.op.OpUnion op)
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>
    • 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.
      Specified by:
      rewrite in interface OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>