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);
}
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);
}
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);
}
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();
}
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());
}
Aggregations