Search in sources :

Example 46 with NodeValue

use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.

the class NodeValueOps method additionNV.

public static NodeValue additionNV(NodeValue nv1, NodeValue nv2) {
    ValueSpaceClassification vs1 = nv1.getValueSpace();
    ValueSpaceClassification vs2 = nv2.getValueSpace();
    if (vs1.equals(VSPACE_NUM) && vs2.equals(VSPACE_NUM))
        return XSDFuncOp.numAdd(nv1, nv2);
    if (vs1.equals(VSPACE_STRING) && vs2.equals(VSPACE_STRING))
        return NodeValue.makeString(nv1.asString() + nv2.asString());
    if (vs1.equals(VSPACE_DURATION) && vs2.equals(VSPACE_DURATION)) {
        // A lot of testing to keep it as derived types.
        boolean isDTDur = dtXSDdayTimeDuration.equals(nv1.getDatatypeURI()) && dtXSDdayTimeDuration.equals(nv2.getDatatypeURI());
        boolean isYMDur = dtXSDyearMonthDuration.equals(nv1.getDatatypeURI()) && dtXSDyearMonthDuration.equals(nv2.getDatatypeURI());
        Duration d3 = nv1.getDuration().add(nv2.getDuration());
        String lex = d3.toString();
        Node n;
        if (isDTDur)
            n = NodeFactoryExtra.createLiteralNode(lex, null, dtXSDdayTimeDuration);
        else if (isYMDur)
            n = NodeFactoryExtra.createLiteralNode(lex, null, dtXSDyearMonthDuration);
        else
            n = org.apache.jena.graph.NodeFactory.createLiteral(lex, XSDDatatype.XSDduration);
        return NodeValue.makeNodeDuration(d3, n);
    }
    // Loose style. Add any duration to any date or time value.
    if (vs1.equals(VSPACE_DATETIME) && vs2.equals(VSPACE_DURATION)) {
        XMLGregorianCalendar cal = nv1.getDateTime();
        XMLGregorianCalendar result = xsd_add(cal, nv2.getDuration());
        NodeValue r = NodeValue.makeDateTime(result);
        return r;
    }
    // Loose style. Add any duration to any date or time value.
    if (vs1.equals(VSPACE_DATE) && vs2.equals(VSPACE_DURATION)) {
        XMLGregorianCalendar cal = nv1.getDateTime();
        XMLGregorianCalendar result = xsd_add(cal, nv2.getDuration());
        NodeValue r = NodeValue.makeDate(result);
        return r;
    }
    // Loose style. Add any duration to any date or time value.
    if (vs1.equals(VSPACE_TIME) && vs2.equals(VSPACE_DURATION)) {
        // ONLY dayTime.
        XMLGregorianCalendar cal = nv1.getDateTime();
        XMLGregorianCalendar result = xsd_add(cal, nv2.getDuration());
        NodeValue r = NodeValue.makeNode(result.toXMLFormat(), XSDDatatype.XSDtime);
        return r;
    }
    if (isDT(vs2) && vs1.equals(VSPACE_DURATION))
        // Carefully ...
        return additionNV(nv2, nv1);
    throw new ExprEvalTypeException("Operator '+' : Undefined addition: " + nv1 + " and " + nv2);
}
Also used : XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) NodeValue(org.apache.jena.sparql.expr.NodeValue) ExprEvalTypeException(org.apache.jena.sparql.expr.ExprEvalTypeException) Node(org.apache.jena.graph.Node) Duration(javax.xml.datatype.Duration) ValueSpaceClassification(org.apache.jena.sparql.expr.ValueSpaceClassification)

Example 47 with NodeValue

use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.

the class FunctionBase3 method exec.

@Override
public final NodeValue exec(List<NodeValue> args) {
    if (args == null)
        // The contract on the function interface is that this should not happen.
        throw new ARQInternalErrorException(Lib.className(this) + ": Null args list");
    if (args.size() != 3)
        throw new ExprEvalException(Lib.className(this) + ": Wrong number of arguments: Wanted 3, got " + args.size());
    NodeValue v1 = args.get(0);
    NodeValue v2 = args.get(1);
    NodeValue v3 = args.get(2);
    return exec(v1, v2, v3);
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) ARQInternalErrorException(org.apache.jena.sparql.ARQInternalErrorException) ExprEvalException(org.apache.jena.sparql.expr.ExprEvalException)

Example 48 with NodeValue

use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.

the class FunctionBase5 method exec.

@Override
public final NodeValue exec(List<NodeValue> args) {
    if (// The contract on the function interface is that this should not happen.
    args == null) {
        throw new ARQInternalErrorException(Lib.className(this) + ": Null args list");
    }
    if (args.size() != 5) {
        throw new ExprEvalException(Lib.className(this) + ": Wrong number of arguments: Wanted 5, got " + args.size());
    }
    NodeValue v1 = args.get(0);
    NodeValue v2 = args.get(1);
    NodeValue v3 = args.get(2);
    NodeValue v4 = args.get(3);
    NodeValue v5 = args.get(4);
    return exec(v1, v2, v3, v4, v5);
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) ARQInternalErrorException(org.apache.jena.sparql.ARQInternalErrorException) ExprEvalException(org.apache.jena.sparql.expr.ExprEvalException)

Example 49 with NodeValue

use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.

the class BuilderNode method buildInteger.

private static BigInteger buildInteger(Item item, boolean allowDefault) {
    if (allowDefault && item.equals(Item.defaultItem))
        return null;
    if (!item.isNode())
        BuilderLib.broken(item, "Not an integer: " + item);
    Node node = item.getNode();
    if (!node.isLiteral())
        BuilderLib.broken(item, "Not an integer: " + item);
    NodeValue nv = NodeValue.makeNode(node);
    if (!nv.isInteger())
        BuilderLib.broken(item, "Not an integer: " + item);
    return nv.getInteger();
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) Node(org.apache.jena.graph.Node)

Example 50 with NodeValue

use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.

the class TestScriptFunction method script_2.

@Test
public void script_2() {
    NodeValue nv = eval("value", "<http://example/xyz>");
    assertNotNull(nv);
    assertTrue(nv.isString());
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) Test(org.junit.Test)

Aggregations

NodeValue (org.apache.jena.sparql.expr.NodeValue)255 Test (org.junit.Test)197 BaseTest (org.apache.jena.atlas.junit.BaseTest)42 Node (org.apache.jena.graph.Node)31 ExprEvalException (org.apache.jena.sparql.expr.ExprEvalException)26 GeometryWrapper (org.apache.jena.geosparql.implementation.GeometryWrapper)24 Expr (org.apache.jena.sparql.expr.Expr)12 NodeValueNode (org.apache.jena.sparql.expr.nodevalue.NodeValueNode)10 ARQInternalErrorException (org.apache.jena.sparql.ARQInternalErrorException)7 DatatypeFormatException (org.apache.jena.datatypes.DatatypeFormatException)6 ArrayList (java.util.ArrayList)5 SearchEnvelope (org.apache.jena.geosparql.spatial.SearchEnvelope)5 LibTestExpr (org.apache.jena.sparql.expr.LibTestExpr)5 Duration (javax.xml.datatype.Duration)4 SpatialArguments (org.apache.jena.geosparql.spatial.property_functions.SpatialArguments)4 BigDecimal (java.math.BigDecimal)3 AssemblerException (org.apache.jena.assembler.exceptions.AssemblerException)3 DatasetGraph (org.apache.jena.sparql.core.DatasetGraph)3 Var (org.apache.jena.sparql.core.Var)3 ValueSpaceClassification (org.apache.jena.sparql.expr.ValueSpaceClassification)3