package org.aksw.sparqlify.core.rewrite.expr.transform;
import org.aksw.jena_sparql_api.views.E_RdfTerm;
import org.aksw.sparqlify.type_system.TypeModel;
import org.apache.jena.sparql.expr.Expr;
import org.apache.jena.vocabulary.XSD;
/**
* This function does not exist in SPARQL.
* Its just there for experiments. Use isNumeric instead.
*
*
* @author raven
*
*/
public class ET_IsDecimal
extends ExprTransformerBase1
{
private TypeModel<String> typeModel;
public ET_IsDecimal(TypeModel<String> typeModel) {
this.typeModel = typeModel;
}
/**
* TODO: IsNumeric implies not null
*
*/
@Override
public E_RdfTerm transform(Expr orig, E_RdfTerm a) {
String subType = a.getDatatype().getConstant().asUnquotedString();
boolean isDecimal = typeModel.isSuperTypeOf(XSD.decimal.toString(), subType);
E_RdfTerm result;
if(isDecimal) {
result = E_RdfTerm.TRUE;
}
else {
result = E_RdfTerm.FALSE;
}
return result;
}
}