public static Op apply(Transform transform, Op op) { Op op2 = Transformer.transformSkipService(transform, op) ; if ( op2 != op ) return op2 ; return 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 ; } }
/** 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) ; }
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 ; } }
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) ; }
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) ; }
@Override public Op apply(Transform transform, OpVisitor before, OpVisitor after) { Op opx = Transformer.transformSkipService(transform, null, op, before, after) ; return new OpExtTest(opx) ; }
public static Op eliminate(Op op, boolean aggressive) { AssignmentTracker tracker = new AssignmentTracker(); AssignmentPusher pusher = new AssignmentPusher(tracker); AssignmentPopper popper = new AssignmentPopper(tracker); Transform transform = new TransformEliminateAssignments(tracker, pusher, popper, aggressive); ExprTransform exprTransform = new ExprTransformEliminateAssignments(aggressive); return Transformer.transformSkipService(transform, exprTransform, op, pusher, popper); }
public static void main(String[] args) { //Query query = QueryFactory.create("SELECT * { { ?s ?p ?o } Union { Graph ?g { ?s ?p ?o } } }"); //Query query = QueryFactory.create("SELECT * { { { Select * { ?s ?p ?o . Filter(?p = <p>) } } } Union { Graph ?g { ?s ?p ?o } } }"); Query query = QueryFactory.create("SELECT * { { ?s ?p ?o . Graph ?x { ?a ?b ?c } } Union { Graph ?g { ?s ?p ?o } } }"); query.addGraphURI("dg1"); query.addGraphURI("dg2"); query.addNamedGraphURI("ng1"); query.addNamedGraphURI("ng2"); Query tmp = rewrite(query); Op op = Algebra.compile(tmp); Op op2 = Transformer.transformSkipService(new TransformFilterPlacement(), op) ; tmp = OpAsQuery.asQuery(op2); System.out.println(tmp); } }
/** Transform an algebra expression except skip (leave alone) any OpService nodes */ public static Op transformSkipService(Transform opTransform, ExprTransform exprTransform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor) { if ( true ) { // XXX XXX Better work with Walker. if ( opTransform == null ) opTransform = new TransformCopy() ; if ( exprTransform == null ) exprTransform = new ExprTransformCopy() ; Transform transform2 = new TransformSkipService(opTransform) ; transform2 = opTransform ; ApplyTransformVisitor atv = new ApplyTransformVisitor(transform2, exprTransform, false, beforeVisitor, afterVisitor) ; return Walker.transformSkipService(op, atv, beforeVisitor, afterVisitor) ; } Transform transform = new TransformSkipService(opTransform) ; return Transformer.transform(transform, exprTransform, op, beforeVisitor, afterVisitor) ; // // OLD // // Simplest way but still walks the OpService subtree (and throws away the // // transformation). // Transform transform = new TransformSkipService(opTransform) ; // return Transformer.transform(transform, exprTransform, op, beforeVisitor, afterVisitor) ; }
@Test public void testOpExtMinus() { String sse = StrUtils.strjoinNL ("(filter (= ?o 1)" ," (bgp (?s ?p ?o))" ,")" ) ; // Build Op op = SSE.parseOp(sse) ; // Transform op = Transformer.transformSkipService(new OpExtTransform(), op) ; // Check WalkerVisitorVisible Set<Var> vars = OpVars.visibleVars(op); assertEquals(3, vars.size()); } }