package org.aksw.sparqlify.core.cast; import java.util.List; import org.aksw.sparqlify.algebra.sql.exprs2.SqlExpr; /** * Substitutes expressions with their SQL equivalent. * * Substitutions are specified with expressions such as: * * ogc:intersects(?a, ?b) := * typedLiteral(ST_INTERSECTS(?a, ?b), xsd:boolean) * * or more abstract: * sparqlFunctionName(args) * termCtorExpr(SQLFunctionName(args)) * * * @author Claus Stadler <cstadler@informatik.uni-leipzig.de> * */ public class ExprSubstitutorSql implements ExprSubstitutor { private TypeSystem typeSystem; //private SqlFunctionCollection sqlFunctions = new SqlFunctionCollection(); // A set of expressions of how this method may be implemented // At most one expression may apply without a yielding a type error // TODO nail down the rules for type errors private ExprRewriteCollection exprRewrites; /* public ExprSubstitutorSql(TypeSystem typeSystem) { this(typeSystem, new ExprRewriteCollection(paramVars, varArgVar)) } */ public ExprSubstitutorSql(TypeSystem typeSystem, ExprRewriteCollection exprRewrites) { this.typeSystem = typeSystem; this.exprRewrites = exprRewrites; } /** * The result of this method depends on the given arguments and the * registered SQL functions. * */ public SqlExpr create(List<SqlExpr> expr) { System.err.println("work in progress"); return null; } // /** // * // * // * @return The set of SQL methods registered for this Sparql Function. Should be consistent with an evaluator. // */ // Collection<XMethod> getSqlFunctions() { // return sqlFunctions.getFunctions(); // } // // // /** // * // * // * @param argTypes // * @return The SQL function registered with this SPARQL function that matches the given arguments best. // */ // SqlMethodCandidate lookup(List<TypeToken> argTypes) { // SqlMethodCandidate result = sqlFunctions.lookupMethod(argTypes); // return result; // } // // // public ExprSubstitutorSql create(TypeSystem typeSystem) { // ExprSubstitutorSql result = new ExprSubstitutorSql(typeSystem); // return result; // } }