package org.aksw.sparqlify.core.sparql.algebra.transform; /* * TODO Implemet this: * A separation between traversal and transformation application. * For the traversal we could actually use one of Jena's visitors. */ /* public class OpTransformer { private Object transformer; public static Op _transform(Op op, Object transformer, String methodName, Object ...args) { OpTransformer t = new OpTransformer(transformer); } public OpTransformer(Object transformer) { this.transformer = transformer; } public Op _apply(Op op, Object ...args) { return (Op)MultiMethod.invoke(op, "apply", args); } public static Op apply(Op op) { return MultiMethod.invokeStatic(ReplaceConstants.class, "_replace", op); } public void applyTransform() { } public static Op visit(OpExtend op) { return OpExtend.extend(replace(op.getSubOp()), op.getVarExprList()); } public static Op visit(OpSlice op) { return new OpSlice(replace(op.getSubOp()), op.getStart(), op.getLength()); } public static Op visit(OpOrder op) { // FIXME Might need to do deep-copy // Nothing to do return op; } public static Op visit(OpProject op) { return new OpProject(replace(op.getSubOp()), op.getVars()); } public static Op visit(OpDistinct op) { return new OpDistinct(replace(op.getSubOp())); } public static Op visit(OpLeftJoin op) { return OpLeftJoin.create(replace(op.getLeft()), replace(op.getRight()), op.getExprs()); } public static Op visit(OpJoin op) { return OpJoin.create(replace(op.getLeft()), replace(op.getRight())); } public static Op visit(OpUnion op) { return OpUnion.create(replace(op.getLeft()), replace(op.getRight())); } public static Op visit(OpFilter op) { return OpFilter.filter(op.getExprs(), replace(op.getSubOp())); } public static Op visit(OpQuadPattern op) { } } */