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
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    fallback(org.apache.jena.sparql.algebra.Op op)
     
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    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)
     
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    rewrite(org.apache.jena.sparql.algebra.op.OpDistinct op)
     
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    rewrite(org.apache.jena.sparql.algebra.op.OpExtend op)
     
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    rewrite(org.apache.jena.sparql.algebra.op.OpFilter op)
     
    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
    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 ?.
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    rewrite(org.apache.jena.sparql.algebra.op.OpProject op)
     
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    rewrite(org.apache.jena.sparql.algebra.op.OpSlice op)
     
    Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>
    rewrite(org.apache.jena.sparql.algebra.op.OpUnion op)
     
    static org.apache.jena.sparql.algebra.Op
    rewriteOpx(org.apache.jena.sparql.algebra.Op op)
     
    static org.apache.jena.query.Query
    rewriteQuery(org.apache.jena.query.Query query)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods 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

      public Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean> handleOp1(org.apache.jena.sparql.algebra.op.Op1 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 org.aksw.jenax.sparql.algebra.topdown.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.OpFilter op)
      Specified by:
      rewrite in interface org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.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 org.aksw.jenax.sparql.algebra.topdown.OpRewriter<Map.Entry<org.apache.jena.sparql.algebra.Op,Boolean>>