Search in sources :

Example 1 with Plan

use of org.apache.jena.sparql.engine.Plan in project jena by apache.

the class QueryOutputUtils method printPlan.

// ModQueryOut
public static void printPlan(Query query, QueryExecution qe) {
    QueryEngineFactory f = QueryEngineRegistry.findFactory(query, qe.getDataset().asDatasetGraph(), ARQ.getContext());
    if (f == null)
        System.err.println("printPlan: Unknown engine type: " + Lib.className(qe));
    Plan plan = f.create(query, qe.getDataset().asDatasetGraph(), BindingRoot.create(), ARQ.getContext());
    SerializationContext sCxt = new SerializationContext(query);
    IndentedWriter out = IndentedWriter.stdout;
    plan.output(out, sCxt);
    out.flush();
}
Also used : SerializationContext(org.apache.jena.sparql.serializer.SerializationContext) IndentedWriter(org.apache.jena.atlas.io.IndentedWriter) QueryEngineFactory(org.apache.jena.sparql.engine.QueryEngineFactory) Plan(org.apache.jena.sparql.engine.Plan)

Example 2 with Plan

use of org.apache.jena.sparql.engine.Plan in project jena by apache.

the class sse_query method exec.

@Override
protected void exec() {
    Op op = modAlgebra.getOp();
    if (op == null) {
        System.err.println("No query expression to execute");
        throw new TerminationException(9);
    }
    Dataset dataset = modDataset.getDataset();
    // Check there is a dataset.
    if (dataset == null)
        dataset = DatasetFactory.createGeneral();
    modTime.startTimer();
    DatasetGraph dsg = dataset.asDatasetGraph();
    if (printOp || printPlan) {
        if (printOp) {
            divider();
            IndentedWriter out = new IndentedWriter(System.out, true);
            op.output(out);
            out.flush();
        }
        if (printPlan) {
            QueryIterator qIter = Algebra.exec(op, dsg);
            Plan plan = new PlanOp(op, null, qIter);
            divider();
            IndentedWriter out = new IndentedWriter(System.out, false);
            plan.output(out);
            out.flush();
        }
    //return ;
    }
    // Do not optimize.  Execute as-is.
    QueryExecUtils.execute(op, dsg, modResults.getResultsFormat());
    long time = modTime.endTimer();
    if (modTime.timingEnabled())
        System.out.println("Time: " + modTime.timeStr(time));
}
Also used : IndentedWriter(org.apache.jena.atlas.io.IndentedWriter) PlanOp(org.apache.jena.sparql.engine.PlanOp) Op(org.apache.jena.sparql.algebra.Op) TerminationException(jena.cmd.TerminationException) QueryIterator(org.apache.jena.sparql.engine.QueryIterator) ModDataset(arq.cmdline.ModDataset) Dataset(org.apache.jena.query.Dataset) PlanOp(org.apache.jena.sparql.engine.PlanOp) Plan(org.apache.jena.sparql.engine.Plan) DatasetGraph(org.apache.jena.sparql.core.DatasetGraph)

Example 3 with Plan

use of org.apache.jena.sparql.engine.Plan in project jena by apache.

the class UpdateEngineWorker method evalBindings.

protected static Iterator<Binding> evalBindings(Query query, DatasetGraph dsg, Binding inputBinding, Context context) {
    // The UpdateProcessorBase already copied the context and made it safe
    // ... but that's going to happen again :-(
    Iterator<Binding> toReturn;
    if (query != null) {
        Plan plan = QueryExecutionFactory.createPlan(query, dsg, inputBinding, context);
        toReturn = plan.iterator();
    } else {
        toReturn = Iter.singleton((null != inputBinding) ? inputBinding : BindingRoot.create());
    }
    return toReturn;
}
Also used : Binding(org.apache.jena.sparql.engine.binding.Binding) Plan(org.apache.jena.sparql.engine.Plan)

Example 4 with Plan

use of org.apache.jena.sparql.engine.Plan in project jena by apache.

the class LibSDB method findTriples.

/** Find triples, in the default graph or a named graph. */
public static Iterator<Triple> findTriples(DatasetGraph dsg, Node g, Node s, Node p, Node o) {
    if (Var.isVar(g))
        throw new InternalErrorException("Graph node is a variable : " + g);
    final Node vs = varOrConst(s, "s");
    final Node vp = varOrConst(p, "p");
    final Node vo = varOrConst(o, "o");
    // Evaluate as an algebra expression
    Triple triple = new Triple(vs, vp, vo);
    BasicPattern pattern = new BasicPattern();
    pattern.add(triple);
    Op op = (g != null) ? new OpQuadPattern(g, pattern) : new OpBGP(pattern);
    Plan plan = QueryEngineSDB.getFactory().create(op, dsg, BindingRoot.create(), null);
    QueryIterator qIter = plan.iterator();
    Iterator<Binding> iter;
    if (SDB.getContext().isTrue(SDB.streamGraphAPI)) {
        // Assumes iterator closed properly.
        iter = qIter;
    } else {
        // ---- Safe version: 
        List<Binding> x = Iter.toList(qIter);
        Iterator<Binding> qIter2 = x.iterator();
        qIter.close();
        iter = qIter2;
    }
    return Iter.map(iter, (b) -> bindingToTriple(vs, vp, vo, b));
}
Also used : Triple(org.apache.jena.graph.Triple) Binding(org.apache.jena.sparql.engine.binding.Binding) Op(org.apache.jena.sparql.algebra.Op) OpQuadPattern(org.apache.jena.sparql.algebra.op.OpQuadPattern) QueryIterator(org.apache.jena.sparql.engine.QueryIterator) Node(org.apache.jena.graph.Node) OpBGP(org.apache.jena.sparql.algebra.op.OpBGP) InternalErrorException(org.apache.jena.atlas.lib.InternalErrorException) BasicPattern(org.apache.jena.sparql.core.BasicPattern) Plan(org.apache.jena.sparql.engine.Plan)

Example 5 with Plan

use of org.apache.jena.sparql.engine.Plan in project jena by apache.

the class LibSDB method findInQuads.

/** Match a quad pattern (not triples in the default graph) */
public static Iterator<Quad> findInQuads(DatasetGraph dsg, Node g, Node s, Node p, Node o) {
    // If null, create and remember a variable, else use the node.
    final Node vg = varOrConst(g, "g");
    final Node vs = varOrConst(s, "s");
    final Node vp = varOrConst(p, "p");
    final Node vo = varOrConst(o, "o");
    Triple triple = new Triple(vs, vp, vo);
    // Evaluate as an algebra expression
    BasicPattern pattern = new BasicPattern();
    pattern.add(triple);
    Op op = new OpQuadPattern(vg, pattern);
    Plan plan = QueryEngineSDB.getFactory().create(op, dsg, BindingRoot.create(), null);
    QueryIterator qIter = plan.iterator();
    Iterator<Binding> iter;
    if (SDB.getContext().isTrue(SDB.streamGraphAPI)) {
        iter = qIter;
    } else {
        // ---- Safe version: 
        List<Binding> x = Iter.toList(qIter);
        Iterator<Binding> qIter2 = x.iterator();
        qIter.close();
        iter = qIter2;
    }
    return Iter.map(iter, (b) -> bindingToQuad(vg, vs, vp, vo, b));
}
Also used : Triple(org.apache.jena.graph.Triple) Binding(org.apache.jena.sparql.engine.binding.Binding) Op(org.apache.jena.sparql.algebra.Op) OpQuadPattern(org.apache.jena.sparql.algebra.op.OpQuadPattern) QueryIterator(org.apache.jena.sparql.engine.QueryIterator) Node(org.apache.jena.graph.Node) BasicPattern(org.apache.jena.sparql.core.BasicPattern) Plan(org.apache.jena.sparql.engine.Plan)

Aggregations

Plan (org.apache.jena.sparql.engine.Plan)6 Op (org.apache.jena.sparql.algebra.Op)3 QueryIterator (org.apache.jena.sparql.engine.QueryIterator)3 Binding (org.apache.jena.sparql.engine.binding.Binding)3 IndentedWriter (org.apache.jena.atlas.io.IndentedWriter)2 Node (org.apache.jena.graph.Node)2 Triple (org.apache.jena.graph.Triple)2 OpQuadPattern (org.apache.jena.sparql.algebra.op.OpQuadPattern)2 BasicPattern (org.apache.jena.sparql.core.BasicPattern)2 QueryEngineFactory (org.apache.jena.sparql.engine.QueryEngineFactory)2 ModDataset (arq.cmdline.ModDataset)1 TerminationException (jena.cmd.TerminationException)1 InternalErrorException (org.apache.jena.atlas.lib.InternalErrorException)1 Dataset (org.apache.jena.query.Dataset)1 OpBGP (org.apache.jena.sparql.algebra.op.OpBGP)1 DatasetGraph (org.apache.jena.sparql.core.DatasetGraph)1 PlanOp (org.apache.jena.sparql.engine.PlanOp)1 SerializationContext (org.apache.jena.sparql.serializer.SerializationContext)1