package org.aksw.sparqlify.core.rewrite.expr.transform;
import org.aksw.jena_sparql_api.views.E_RdfTerm;
import org.apache.jena.sparql.expr.Expr;
/**
* Checks whether xsd:numeric is a super class of the given expression
*
*
* @author raven
*
*/
public class ExprTransformerHasRdfTermType
extends ExprTransformerBase1
{
//private static final Logger logger = LoggerFactory.getLogger(ExprTransformerSparqlFunctionModel.class);
int expectedRdfTermType;
public ExprTransformerHasRdfTermType(int expectedRdfTermType) {
this.expectedRdfTermType = expectedRdfTermType;
}
/**
* TODO: IsNumeric implies not null
*
*/
@Override
public E_RdfTerm transform(Expr orig, E_RdfTerm a) {
Expr type = a.getType();
if(!type.isConstant()) {
throw new RuntimeException("Dynamic RDF Term type not supported");
}
String actualRdfTermType = type.getConstant().getNode().getLiteralLexicalForm();
//NodeValue nv = type.getConstant();
//int actualRdfTermType = nv.getInteger().intValue();
boolean isEqual = actualRdfTermType.equals("" + expectedRdfTermType);
E_RdfTerm result = isEqual ? E_RdfTerm.TRUE : E_RdfTerm.FALSE;
return result;
}
}