protected static Op simplify(Op op) { return Transformer.transform(simplify, op) ; }
public static Op apply(Transform transform, Op op) { Op op2 = Transformer.transformSkipService(transform, op) ; if ( op2 != op ) return op2 ; return op ; }
/** * Transformation with specific Transform and default ExprTransform (apply transform * inside pattern expressions like NOT EXISTS) */ public static Op transform(Transform transform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor) { return get().transformation(transform, op, beforeVisitor, afterVisitor) ; }
protected Op transformation(Transform transform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor) { return transformation(transform, null, op, beforeVisitor, afterVisitor) ; }
protected Op transformation(Transform transform, ExprTransform exprTransform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor) { return transformation$(transform, exprTransform, op, beforeVisitor, afterVisitor) ; }
protected static Op rewriteDistinct(Op op, SDBRequest request) { Transform t = new DistinctOptimizer(request) ; return Transformer.transform(t, op) ; }
/** Apply a {@link Transform} to an {@link Op} */ public static Op apply(Transform transform, Op op) { Op op2 = Transformer.transformSkipService(transform, op) ; if ( op2 != op ) return op2 ; return op ; } }
/** Transformation with specific Transform and ExprTransform applied */ public static Op transform(Transform transform, ExprTransform exprTransform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor) { return get().transformation(transform, exprTransform, op, beforeVisitor, afterVisitor) ; }
protected static Op rewriteLimitOffset(Op op, SDBRequest request) { Transform t = new LimitOffsetOptimizer(request) ; return Transformer.transform(t, op) ; }
/** Transform an algebra expression except skip (leave alone) any OpService nodes */ public static Op transformSkipService(Transform transform, Op op) { return transformSkipService(transform, null, op, null, null) ; }
/** Transform an algebra expression and the expressions */ public static Op transform(Transform transform, ExprTransform exprTransform, Op op) { return get().transformation(transform, exprTransform, op, null, null) ; }
@Override protected Op modifyOp(Op op) { // Just property functions Transform t = new TransformPropertyFunction(context) ; op = Transformer.transform(t, op) ; return op ; }
public static Op apply(String label, Transform transform, Op op) { Op op2 = Transformer.transformSkipService(transform, op) ; final boolean debug = false ; if ( debug ) { if ( label != null && log.isInfoEnabled() ) log.info("Transform: " + label) ; if ( op == op2 ) { if ( log.isInfoEnabled() ) log.info("No change (==)") ; return op2 ; } if ( op.equals(op2) ) { if ( log.isInfoEnabled() ) log.info("No change (equals)") ; return op2 ; } if ( log.isInfoEnabled() ) { log.info("\n" + op.toString()) ; log.info("\n" + op2.toString()) ; } } if ( op2 != op ) return op2 ; return op ; } }
/** Transform an algebra expression */ public static Op transform(Transform transform, Op op) { return get().transformation(transform, op, null, null) ; }
/** Convert a pattern, assumed to be quad form, * so that the default graph is the union of named graphs. */ public static Op unionDefaultGraphQuads(Op op) { // Rewrite so that any explicitly named "default graph" is union graph. Transform t = new TransformGraphRename(Quad.defaultGraphNodeGenerated, Quad.unionGraph) ; op = Transformer.transform(t, op) ; return op ; } }
public static Op quadize(Op op) { final Deque<QuadSlot> stack = new ArrayDeque<>() ; QuadSlot qSlot = new QuadSlot(Quad.defaultGraphNodeGenerated, Quad.defaultGraphNodeGenerated) ; stack.push(qSlot) ; // Starting condition OpVisitor before = new Pusher(stack) ; OpVisitor after = new Popper(stack) ; TransformQuadGraph qg = new TransformQuadGraph(stack, before, after) ; return Transformer.transformSkipService(qg, null, op, before, after) ; }
protected static Op rewriteFilters(Op op, SDBRequest request) { Transform t = new FilterOptimizer(request) ; return Transformer.transform(t, op) ; }
public static Op quadizeBlock(Op op) { final Deque<QuadSlot> stack = new ArrayDeque<>() ; QuadSlot qSlot = new QuadSlot(Quad.defaultGraphNodeGenerated, Quad.defaultGraphNodeGenerated) ; stack.push(qSlot) ; // Starting condition OpVisitor before = new Pusher(stack) ; OpVisitor after = new Popper(stack) ; TransformQuadBlockGraph qg = new TransformQuadBlockGraph(stack, before, after) ; return Transformer.transformSkipService(qg, null, op, before, after) ; }
/** Convert a pattern, assumed to be quad form, * so that the default graph is the union of named graphs. */ public static Op unionDefaultGraphQuads(Op op) { // Rewrite so that any explicitly named "default graph" is union graph. Transform t = new TransformGraphRename(Quad.defaultGraphNodeGenerated, Quad.unionGraph) ; op = Transformer.transform(t, op) ; return op ; } }
@Override public Op apply(Transform transform, OpVisitor before, OpVisitor after) { Op opx = Transformer.transformSkipService(transform, null, op, before, after) ; return new OpExtTest(opx) ; }