Class TransformOptimizeSubQueries

java.lang.Object
org.apache.jena.sparql.algebra.TransformCopy
org.aksw.jena_sparql_api.algebra.transform.TransformOptimizeSubQueries
All Implemented Interfaces:
org.apache.jena.sparql.algebra.Transform

public class TransformOptimizeSubQueries extends org.apache.jena.sparql.algebra.TransformCopy
Note: TransformRedundantProjectionRemoval seems to be the better choice. Shifting OpSlice on Virtuoso may break queries... Attempted fix for the following query on Virtuoso version 07.20.3217:
 SELECT  (if(isBlank(?Graph_1), URI(concat("bnode://", str(?Graph_1))), ?Graph_1) AS ?Graph)
 WHERE
  { SELECT  ?Graph_1
    WHERE
      { SELECT DISTINCT  ?Graph_1
        WHERE
          { GRAPH ?Graph_1
              { ?__Graph_1_s  ?__Graph_1_p  ?__Graph_1_o }
          }
      }
    LIMIT   1
  }
 
Try to avoid sub-queries if possible by:
  • Remove needless OpProject. This is the case when only the visible variables projected.
  • Pull OpSlice over OpProject
  • Pull OpSlice over OpExtend
    • Note: This transform pulls up Slice and may thus conflicts with TransformPushSlice which attemps to push slice into SERVICE!
  • Field Summary

    Fields inherited from class org.apache.jena.sparql.algebra.TransformCopy

    COPY_ALWAYS, COPY_ONLY_ON_CHANGE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.jena.sparql.algebra.Op
    transform(org.apache.jena.sparql.algebra.op.OpExtend op, org.apache.jena.sparql.algebra.Op subOp)
     
    org.apache.jena.sparql.algebra.Op
    transform(org.apache.jena.sparql.algebra.op.OpProject op, org.apache.jena.sparql.algebra.Op subOp)
     

    Methods inherited from class org.apache.jena.sparql.algebra.TransformCopy

    transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • TransformOptimizeSubQueries

      public TransformOptimizeSubQueries()
  • Method Details

    • transform

      public org.apache.jena.sparql.algebra.Op transform(org.apache.jena.sparql.algebra.op.OpProject op, org.apache.jena.sparql.algebra.Op subOp)
      Specified by:
      transform in interface org.apache.jena.sparql.algebra.Transform
      Overrides:
      transform in class org.apache.jena.sparql.algebra.TransformCopy
    • transform

      public org.apache.jena.sparql.algebra.Op transform(org.apache.jena.sparql.algebra.op.OpExtend op, org.apache.jena.sparql.algebra.Op subOp)
      Specified by:
      transform in interface org.apache.jena.sparql.algebra.Transform
      Overrides:
      transform in class org.apache.jena.sparql.algebra.TransformCopy