Search in sources :

Example 1 with FunctionEnv

use of org.apache.jena.sparql.function.FunctionEnv in project jena by apache.

the class ExprUtils method eval.

public static NodeValue eval(Expr expr, Binding binding) {
    Context context = ARQ.getContext().copy();
    context.set(ARQConstants.sysCurrentTime, NodeFactoryExtra.nowAsDateTime());
    FunctionEnv env = new ExecutionContext(context, null, null, null);
    NodeValue r = expr.eval(binding, env);
    return r;
}
Also used : SerializationContext(org.apache.jena.sparql.serializer.SerializationContext) ExecutionContext(org.apache.jena.sparql.engine.ExecutionContext) FunctionEnv(org.apache.jena.sparql.function.FunctionEnv) ExecutionContext(org.apache.jena.sparql.engine.ExecutionContext)

Example 2 with FunctionEnv

use of org.apache.jena.sparql.function.FunctionEnv in project jena by apache.

the class qexpr method main2.

public static void main2(String... argv) {
    CmdLineArgs cl = new CmdLineArgs(argv);
    ArgDecl helpDecl = new ArgDecl(ArgDecl.NoValue, "h", "help");
    cl.add(helpDecl);
    ArgDecl verboseDecl = new ArgDecl(ArgDecl.NoValue, "v", "verbose");
    cl.add(verboseDecl);
    ArgDecl versionDecl = new ArgDecl(ArgDecl.NoValue, "ver", "version", "V");
    cl.add(versionDecl);
    ArgDecl quietDecl = new ArgDecl(ArgDecl.NoValue, "q", "quiet");
    cl.add(quietDecl);
    ArgDecl reduceDecl = new ArgDecl(ArgDecl.NoValue, "reduce", "fold", "simplify");
    cl.add(reduceDecl);
    ArgDecl strictDecl = new ArgDecl(ArgDecl.NoValue, "strict");
    cl.add(strictDecl);
    ArgDecl printDecl = new ArgDecl(ArgDecl.HasValue, "print");
    cl.add(printDecl);
    try {
        cl.process();
    } catch (IllegalArgumentException ex) {
        System.err.println(ex.getMessage());
        usage(System.err);
        throw new CmdException();
    }
    if (cl.contains(helpDecl)) {
        usage();
        throw new TerminationException(0);
    }
    if (cl.contains(versionDecl)) {
        System.out.println("ARQ Version: " + ARQ.VERSION + " (Jena: " + Jena.VERSION + ")");
        throw new TerminationException(0);
    }
    // ==== General things
    boolean verbose = cl.contains(verboseDecl);
    boolean quiet = cl.contains(quietDecl);
    if (cl.contains(strictDecl))
        ARQ.setStrictMode();
    boolean actionCopySubstitute = cl.contains(reduceDecl);
    boolean actionPrintPrefix = false;
    boolean actionPrintSPARQL = false;
    boolean actionPrint = cl.contains(printDecl);
    for (String v : cl.getValues(printDecl)) {
        if (v.equalsIgnoreCase("prefix") || v.equalsIgnoreCase("op")) {
            actionPrintPrefix = true;
        } else if (v.equalsIgnoreCase("expr")) {
            actionPrintSPARQL = true;
        } else {
            System.err.println("Unknown print form: " + v);
            throw new TerminationException(0);
        }
    }
    for (int i = 0; i < cl.getNumPositional(); i++) {
        String exprStr = cl.getPositionalArg(i);
        exprStr = cl.indirect(exprStr);
        try {
            PrefixMapping pmap = PrefixMapping.Factory.create();
            pmap.setNsPrefixes(ARQConstants.getGlobalPrefixMap());
            pmap.setNsPrefix("", "http://example/");
            pmap.setNsPrefix("ex", "http://example/ns#");
            Expr expr = ExprUtils.parse(exprStr, pmap);
            if (actionPrint) {
                IndentedWriter iOut = IndentedWriter.stdout;
                if (actionPrintSPARQL) {
                    ExprUtils.fmtSPARQL(iOut, expr);
                    iOut.ensureStartOfLine();
                }
                if (actionPrintPrefix) {
                    WriterSSE.out(iOut, expr, new Prologue(pmap));
                    iOut.ensureStartOfLine();
                }
                iOut.flush();
                continue;
            }
            if (verbose)
                System.out.print(expr.toString() + " => ");
            try {
                if (actionCopySubstitute) {
                    Expr e = ExprLib.foldConstants(expr);
                    System.out.println(e);
                } else {
                    // Default action
                    ARQ.getContext().set(ARQConstants.sysCurrentTime, NodeFactoryExtra.nowAsDateTime());
                    FunctionEnv env = new ExecutionContext(ARQ.getContext(), null, null, null);
                    NodeValue r = expr.eval(null, env);
                    // System.out.println(r.asQuotedString()) ;
                    Node n = r.asNode();
                    String s = NodeFmtLib.displayStr(n);
                    System.out.println(s);
                }
            } catch (ExprEvalException ex) {
                System.out.println("Exception: " + ex.getMessage());
                throw new TerminationException(2);
            }
        } catch (QueryParseException ex) {
            System.err.println("Parse error: " + ex.getMessage());
            throw new TerminationException(2);
        }
    }
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) CmdException(org.apache.jena.cmd.CmdException) Node(org.apache.jena.graph.Node) ArgDecl(org.apache.jena.cmd.ArgDecl) CmdLineArgs(org.apache.jena.cmd.CmdLineArgs) QueryParseException(org.apache.jena.query.QueryParseException) IndentedWriter(org.apache.jena.atlas.io.IndentedWriter) FunctionEnv(org.apache.jena.sparql.function.FunctionEnv) PrefixMapping(org.apache.jena.shared.PrefixMapping) TerminationException(org.apache.jena.cmd.TerminationException) Prologue(org.apache.jena.sparql.core.Prologue) ExecutionContext(org.apache.jena.sparql.engine.ExecutionContext) Expr(org.apache.jena.sparql.expr.Expr) ExprEvalException(org.apache.jena.sparql.expr.ExprEvalException)

Example 3 with FunctionEnv

use of org.apache.jena.sparql.function.FunctionEnv in project jena by apache.

the class TestCastXSD method cast.

private NodeValue cast(String input$) {
    Expr input = ExprUtils.parse(input$);
    ARQ.getContext().set(ARQConstants.sysCurrentTime, NodeFactoryExtra.nowAsDateTime());
    FunctionEnv env = new ExecutionContext(ARQ.getContext(), null, null, null);
    return input.eval(null, env);
}
Also used : FunctionEnv(org.apache.jena.sparql.function.FunctionEnv) ExecutionContext(org.apache.jena.sparql.engine.ExecutionContext)

Aggregations

ExecutionContext (org.apache.jena.sparql.engine.ExecutionContext)3 FunctionEnv (org.apache.jena.sparql.function.FunctionEnv)3 IndentedWriter (org.apache.jena.atlas.io.IndentedWriter)1 ArgDecl (org.apache.jena.cmd.ArgDecl)1 CmdException (org.apache.jena.cmd.CmdException)1 CmdLineArgs (org.apache.jena.cmd.CmdLineArgs)1 TerminationException (org.apache.jena.cmd.TerminationException)1 Node (org.apache.jena.graph.Node)1 QueryParseException (org.apache.jena.query.QueryParseException)1 PrefixMapping (org.apache.jena.shared.PrefixMapping)1 Prologue (org.apache.jena.sparql.core.Prologue)1 Expr (org.apache.jena.sparql.expr.Expr)1 ExprEvalException (org.apache.jena.sparql.expr.ExprEvalException)1 NodeValue (org.apache.jena.sparql.expr.NodeValue)1 SerializationContext (org.apache.jena.sparql.serializer.SerializationContext)1