package org.aksw.sparqlify.core.rewrite.expr.transform;
import org.aksw.jena_sparql_api.views.E_RdfTerm;
import org.aksw.jena_sparql_api.views.ExprCopy;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.sparql.expr.Expr;
/**
* Expr transformer for rdfTerm expressions:
* the value field of such expressions is passed through
*
* Expects that the original expression is of type E_RdfTerm!
*
* @author Claus Stadler <cstadler@informatik.uni-leipzig.de>
*
*/
public class ExprTransformerPassAsTypedLiteral
extends ExprTransformerBase1
{
private Resource resultType;
public ExprTransformerPassAsTypedLiteral(Resource resultType) {
this.resultType = resultType;
}
@Override
public E_RdfTerm transform(Expr orig, E_RdfTerm expr) {
/*
List<Expr> args = fn.getArgs();
List<Expr> newArgs = new ArrayList<Expr>(args.size());
for(Expr arg : args) {
Expr newArg = SqlTranslationUtils.getLexicalValueOrExpr(arg);
newArgs.add(newArg);
}
*/
Expr arg = expr.getLexicalValue();
Expr tmp = ExprCopy.getInstance().copy(orig, arg);
E_RdfTerm result = E_RdfTerm.createTypedLiteral(tmp, resultType);
//E_RdfTerm result = SqlTranslationUtils.expandAnyToTerm(tmp);
//E_RdfTerm result = (E_RdfTerm)tmp;
return result;
}
}