package org.aksw.sparqlify.core.rewrite.expr.transform;
import java.util.ArrayList;
import java.util.List;
import org.aksw.jena_sparql_api.views.E_RdfTerm;
import org.aksw.jena_sparql_api.views.ExprCopy;
import org.aksw.jena_sparql_api.views.SqlTranslationUtils;
import org.apache.jena.sparql.expr.Expr;
import org.apache.jena.sparql.expr.ExprFunction;
public class ExprTransformerRdfTermCtor
implements ExprTransformer
{
boolean hasRdfTermCtorArgument(ExprFunction fn) {
return hasRdfTermCtorArgument(fn.getArgs());
}
boolean hasRdfTermCtorArgument(Iterable<Expr> exprs) {
for(Expr expr : exprs) {
if(expr instanceof E_RdfTerm) {
return true;
}
}
return false;
}
@Override
public E_RdfTerm transform(Expr orig, List<E_RdfTerm> terms) {
List<Expr> args = new ArrayList<Expr>(terms.size());
for(E_RdfTerm term : terms) {
// TODO We need to do more checks and logic here
Expr tmp = term.getLexicalValue();
args.add(tmp);
}
Expr newExpr = ExprCopy.getInstance().copy(orig, args);
E_RdfTerm result = SqlTranslationUtils.expandRdfTerm(newExpr);
return result;
}
}