Search in sources :

Example 31 with NodeValue

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);
}
Also used : ExprVar(org.apache.jena.sparql.expr.ExprVar) NodeValue(org.apache.jena.sparql.expr.NodeValue) Expr(org.apache.jena.sparql.expr.Expr) ExprVar(org.apache.jena.sparql.expr.ExprVar) Var(org.apache.jena.sparql.core.Var) InternalErrorException(org.apache.jena.atlas.lib.InternalErrorException)

Example 32 with NodeValue

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;
}
Also used : Triple(org.apache.jena.graph.Triple) NodeValue(org.apache.jena.sparql.expr.NodeValue) Node(org.apache.jena.graph.Node) BigDecimal(java.math.BigDecimal)

Example 33 with NodeValue

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 ;
}
Also used : SortCondition(org.apache.jena.query.SortCondition) NodeValue(org.apache.jena.sparql.expr.NodeValue) VariableNotBoundException(org.apache.jena.sparql.expr.VariableNotBoundException) Node(org.apache.jena.graph.Node) QueryExecException(org.apache.jena.query.QueryExecException) ExprEvalException(org.apache.jena.sparql.expr.ExprEvalException)

Example 34 with NodeValue

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));
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) LibTestExpr(org.apache.jena.sparql.expr.LibTestExpr) Expr(org.apache.jena.sparql.expr.Expr)

Example 35 with NodeValue

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);
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) LibTestExpr(org.apache.jena.sparql.expr.LibTestExpr) Expr(org.apache.jena.sparql.expr.Expr)

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