use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.
the class TransformElementLib method apply.
public static Node apply(Node n, ExprTransform exprTransform) {
if (exprTransform == null)
return n;
Expr e = null;
if (Var.isVar(n)) {
Var v = Var.alloc(n);
ExprVar expr = new ExprVar(v);
e = exprTransform.transform(expr);
} else {
NodeValue nv = NodeValue.makeNode(n);
e = exprTransform.transform(nv);
}
if (e instanceof ExprVar)
return ((ExprVar) e).asVar();
if (e instanceof NodeValue)
return ((NodeValue) e).asNode();
throw new InternalErrorException("Managed to turn a node " + n + " into " + e);
}
use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.
the class TestProtobufTerm method testTerm.
// Encode a node, see if the RDF_Term is correct.
private RDF_Term testTerm(Node node, PrefixMap pmap, boolean asValue) {
RDF_Term rt = ProtobufConvert.convert(node, pmap, asValue);
if (node == null) {
assertTrue(rt.hasUndefined());
return rt;
}
switch(rt.getTermCase()) {
// }
case IRI:
{
RDF_IRI iri = rt.getIri();
assertEquals(node.getURI(), iri.getIri());
break;
}
case BNODE:
{
RDF_BNode bnode = rt.getBnode();
assertEquals(node.getBlankNodeLabel(), bnode.getLabel());
break;
}
case LITERAL:
{
RDF_Literal lit = rt.getLiteral();
assertEquals(node.getLiteralLexicalForm(), lit.getLex());
if (JenaRuntime.isRDF11) {
// RDF 1.1
if (Util.isSimpleString(node)) {
assertTrue(lit.getSimple());
// Protobug default is ""
assertNullPB(lit.getDatatype());
assertEquals(RDF_PrefixName.getDefaultInstance(), lit.getDtPrefix());
assertNullPB(lit.getLangtag());
} else if (Util.isLangString(node)) {
assertFalse(lit.getSimple());
assertNullPB(lit.getDatatype());
assertEquals(RDF_PrefixName.getDefaultInstance(), lit.getDtPrefix());
assertNotSame("", lit.getLangtag());
} else {
assertFalse(lit.getSimple());
// Regular typed literal.
assertTrue(lit.getDatatype() != null || lit.getDtPrefix() != null);
assertNullPB(lit.getLangtag());
}
} else {
// RDF 1.0
if (node.getLiteralDatatype() == null) {
if (Util.isLangString(node)) {
assertFalse(lit.getSimple());
assertNullPB(lit.getDatatype());
assertNull(lit.getDtPrefix());
assertNotSame("", lit.getLangtag());
} else {
assertTrue(lit.getSimple());
assertNullPB(lit.getDatatype());
assertEquals(RDF_PrefixName.getDefaultInstance(), lit.getDtPrefix());
assertNullPB(lit.getLangtag());
}
} else {
assertTrue(lit.getDatatype() != null || lit.getDtPrefix() != null);
}
}
break;
}
case PREFIXNAME:
{
assertNotNull(rt.getPrefixName().getPrefix());
assertNotNull(rt.getPrefixName().getLocalName());
String x = pmap.expand(rt.getPrefixName().getPrefix(), rt.getPrefixName().getLocalName());
assertEquals(node.getURI(), x);
break;
}
case VARIABLE:
assertEquals(node.getName(), rt.getVariable().getName());
break;
case TRIPLETERM:
{
RDF_Triple encTriple = rt.getTripleTerm();
Triple t = node.getTriple();
RDF_Term rt_s = testTerm(t.getSubject(), pmap, asValue);
RDF_Term rt_p = testTerm(t.getPredicate(), pmap, asValue);
RDF_Term rt_o = testTerm(t.getObject(), pmap, asValue);
assertEquals(encTriple.getS(), rt_s);
assertEquals(encTriple.getP(), rt_p);
assertEquals(encTriple.getO(), rt_o);
break;
}
case ANY:
assertEquals(Node.ANY, node);
case REPEAT:
break;
case UNDEFINED:
assertNull(node);
return rt;
case VALINTEGER:
{
long x = rt.getValInteger();
assertTrue(integerSubTypes.contains(node.getLiteralDatatype()));
// assertEquals(node.getLiteralDatatype(), XSDDatatype.XSDinteger);
long x2 = Long.parseLong(node.getLiteralLexicalForm());
assertEquals(x, x2);
break;
}
case VALDOUBLE:
{
double x = rt.getValDouble();
assertEquals(node.getLiteralDatatype(), XSDDatatype.XSDdouble);
double x2 = Double.parseDouble(node.getLiteralLexicalForm());
assertEquals(x, x2, 0.01);
break;
}
case VALDECIMAL:
{
assertEquals(node.getLiteralDatatype(), XSDDatatype.XSDdecimal);
NodeValue nv = NodeValue.makeNode(node);
assertTrue(nv.isDecimal());
long value = rt.getValDecimal().getValue();
int scale = rt.getValDecimal().getScale();
BigDecimal d = BigDecimal.valueOf(value, scale);
assertEquals(nv.getDecimal(), d);
break;
}
case TERM_NOT_SET:
break;
}
// And reverse
if (!asValue) {
// Value based does not preserve exact datatype or lexical form.
Node n2 = ProtobufConvert.convert(rt, pmap);
assertEquals(node, n2);
}
return rt;
}
use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.
the class BindingComparator method compare.
// Compare bindings by iterating.
// Node comparsion is:
// Compare by
@Override
public int compare(Binding bind1, Binding bind2) {
for (SortCondition sc : conditions) {
if (sc.expression == null) {
throw new QueryExecException("Broken sort condition");
}
NodeValue nv1 = null;
NodeValue nv2 = null;
try {
nv1 = sc.expression.eval(bind1, env);
} catch (VariableNotBoundException ex) {
} catch (ExprEvalException ex) {
Log.warn(this, ex.getMessage());
}
try {
nv2 = sc.expression.eval(bind2, env);
} catch (VariableNotBoundException ex) {
} catch (ExprEvalException ex) {
Log.warn(this, ex.getMessage());
}
Node n1 = NodeValue.toNode(nv1);
Node n2 = NodeValue.toNode(nv2);
int x = compareNodes(nv1, nv2, sc.direction);
if (x != Expr.CMP_EQUAL) {
return x;
}
}
// Same by the SortConditions - now do any extra tests to make sure they are unique.
return compareBindingsSyntactic(bind1, bind2);
// return 0 ;
}
use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.
the class LibTest method test.
static void test(String exprStr, Predicate<NodeValue> test) {
Expr expr = ExprUtils.parse(exprStr);
NodeValue r = expr.eval(null, LibTestExpr.createTest());
assertTrue(exprStr, test.test(r));
}
use of org.apache.jena.sparql.expr.NodeValue in project jena by apache.
the class LibTest method test.
static void test(String exprStr, NodeValue result) {
Expr expr = ExprUtils.parse(exprStr);
NodeValue r = expr.eval(null, LibTestExpr.createTest());
assertEquals(result, r);
}
Aggregations