package org.aksw.sparqlify.core.interfaces;
import java.util.Map;
import org.aksw.sparqlify.core.TypeToken;
import org.aksw.sparqlify.core.algorithms.ExprSqlRewrite;
import org.apache.jena.sparql.core.Var;
import org.apache.jena.sparql.expr.Expr;
/**
* Interface for translating a SPARQL expression to as SQL expressions
* via a single binding.
*
* @author raven
*
*/
public interface SqlTranslator {
/**
* We use the same Expr object for translating expressions.
* The difference is, that variables are assumed to correspond
* to column names.
* This means, that the expr object has to be evaluated with different semantics.
*
* @param sparqlExpr
* @param binding A set of variable-expr mappings. May be null.
* @return
*/
// TODO Once the new method is known to work, remove this method, and clean up all things that break because of this.
//Expr translateSql(Expr sparqlExpr, Map<Var, Expr> binding);
ExprSqlRewrite translate(Expr sparqlExpr, Map<Var, Expr> binding, Map<String, TypeToken> typeMap);
//ExprSqlRewrite translate(Expr sparqlExpr, )
}