Search in sources :

Example 56 with Tuple

use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.

the class OpExecutorTDB1 method optimizeExecuteTriples.

/**
 * Execute, with optimization, a basic graph pattern on the default graph storage
 */
private static QueryIterator optimizeExecuteTriples(DatasetGraphTDB dsgtdb, QueryIterator input, BasicPattern pattern, ExprList exprs, ExecutionContext execCxt) {
    if (!input.hasNext())
        return input;
    // Must pass this iterator into the next stage.
    if (pattern.size() >= 2) {
        // Must be 2 or triples to reorder.
        ReorderTransformation transform = dsgtdb.getReorderTransform();
        if (transform != null) {
            QueryIterPeek peek = QueryIterPeek.create(input, execCxt);
            // Must pass on
            input = peek;
            pattern = reorder(pattern, peek, transform);
        }
    }
    if (exprs == null) {
        Explain.explain("Execute", pattern, execCxt.getContext());
        Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
        return PatternMatchTDB1.execute(dsgtdb, Quad.defaultGraphNodeGenerated, pattern, input, filter, execCxt);
    }
    // -- Filter placement
    Op op = TransformFilterPlacement.transform(exprs, pattern);
    return plainExecute(op, input, execCxt);
}
Also used : QueryIterPeek(org.apache.jena.sparql.engine.iterator.QueryIterPeek) Op(org.apache.jena.sparql.algebra.Op) ReorderTransformation(org.apache.jena.sparql.engine.optimizer.reorder.ReorderTransformation) Tuple(org.apache.jena.atlas.lib.tuple.Tuple)

Example 57 with Tuple

use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.

the class OpExecutorTDB1 method execute.

@Override
protected QueryIterator execute(OpDatasetNames dsNames, QueryIterator input) {
    DatasetGraphTDB ds = (DatasetGraphTDB) execCxt.getDataset();
    Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
    Node gn = dsNames.getGraphNode();
    if (Var.isVar(gn))
        return SolverLibTDB.graphNames(ds, dsNames.getGraphNode(), input, filter, execCxt);
    else
        return SolverLibTDB.testForGraphName(ds, dsNames.getGraphNode(), input, filter, execCxt);
}
Also used : Node(org.apache.jena.graph.Node) Tuple(org.apache.jena.atlas.lib.tuple.Tuple) DatasetGraphTDB(org.apache.jena.tdb.store.DatasetGraphTDB)

Example 58 with Tuple

use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.

the class DatasetPrefixesTDB method readByURI.

@Override
public synchronized String readByURI(String graphName, String uriStr) {
    Node g = NodeFactory.createURI(graphName);
    Node u = NodeFactory.createURI(uriStr);
    Iterator<Tuple<Node>> iter = nodeTupleTable.find(g, null, u);
    if (!iter.hasNext())
        return null;
    Node prefix = iter.next().get(1);
    Iter.close(iter);
    return prefix.getLiteralLexicalForm();
}
Also used : Node(org.apache.jena.graph.Node) Tuple(org.apache.jena.atlas.lib.tuple.Tuple)

Example 59 with Tuple

use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.

the class OpExecutorTDB2 method optimizeExecuteQuads.

/**
 * Execute, with optimization, a quad pattern
 */
private static QueryIterator optimizeExecuteQuads(DatasetGraphTDB dsgtdb, QueryIterator input, Node gn, BasicPattern bgp, ExprList exprs, ExecutionContext execCxt) {
    if (!input.hasNext())
        return input;
    // ---- Graph names with special meaning.
    gn = decideGraphNode(gn, execCxt);
    if (gn == null)
        return optimizeExecuteTriples(dsgtdb, input, bgp, exprs, execCxt);
    // ---- Execute quads+filters
    if (bgp.size() >= 2) {
        ReorderTransformation transform = dsgtdb.getReorderTransform();
        if (transform != null) {
            QueryIterPeek peek = QueryIterPeek.create(input, execCxt);
            // Original input now invalid.
            input = peek;
            bgp = reorder(bgp, peek, transform);
        }
    }
    if (exprs == null) {
        // Triple-backed (but may be named as explicit default graph).
        Explain.explain("Execute", bgp, execCxt.getContext());
        Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
        return PatternMatchTDB2.execute(dsgtdb, gn, bgp, input, filter, execCxt);
    }
    // -- Filter placement
    Op op = TransformFilterPlacement.transform(exprs, gn, bgp);
    return plainExecute(op, input, execCxt);
}
Also used : QueryIterPeek(org.apache.jena.sparql.engine.iterator.QueryIterPeek) Op(org.apache.jena.sparql.algebra.Op) ReorderTransformation(org.apache.jena.sparql.engine.optimizer.reorder.ReorderTransformation) Tuple(org.apache.jena.atlas.lib.tuple.Tuple)

Example 60 with Tuple

use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.

the class OpExecutorTDB2 method optimizeExecuteTriples.

/**
 * Execute, with optimization, a basic graph pattern on the default graph storage
 */
private static QueryIterator optimizeExecuteTriples(DatasetGraphTDB dsgtdb, QueryIterator input, BasicPattern pattern, ExprList exprs, ExecutionContext execCxt) {
    if (!input.hasNext())
        return input;
    // Must pass this iterator into the next stage.
    if (pattern.size() >= 2) {
        // Must be 2 or triples to reorder.
        ReorderTransformation transform = dsgtdb.getReorderTransform();
        if (transform != null) {
            QueryIterPeek peek = QueryIterPeek.create(input, execCxt);
            // Must pass on
            input = peek;
            pattern = reorder(pattern, peek, transform);
        }
    }
    if (exprs == null) {
        Explain.explain("Execute", pattern, execCxt.getContext());
        Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
        return PatternMatchTDB2.execute(dsgtdb, Quad.defaultGraphNodeGenerated, pattern, input, filter, execCxt);
    }
    // -- Filter placement
    Op op = TransformFilterPlacement.transform(exprs, pattern);
    return plainExecute(op, input, execCxt);
}
Also used : QueryIterPeek(org.apache.jena.sparql.engine.iterator.QueryIterPeek) Op(org.apache.jena.sparql.algebra.Op) ReorderTransformation(org.apache.jena.sparql.engine.optimizer.reorder.ReorderTransformation) Tuple(org.apache.jena.atlas.lib.tuple.Tuple)

Aggregations

Tuple (org.apache.jena.atlas.lib.tuple.Tuple)75 NodeId (org.apache.jena.tdb.store.NodeId)35 Node (org.apache.jena.graph.Node)22 TupleIndex (org.apache.jena.tdb.store.tupletable.TupleIndex)19 Test (org.junit.Test)19 BaseTest (org.apache.jena.atlas.junit.BaseTest)17 Quad (org.apache.jena.sparql.core.Quad)13 NodeId (org.apache.jena.tdb2.store.NodeId)10 Predicate (java.util.function.Predicate)8 Triple (org.apache.jena.graph.Triple)7 Iterator (java.util.Iterator)6 Binding (org.apache.jena.sparql.engine.binding.Binding)6 ArrayList (java.util.ArrayList)5 Iter (org.apache.jena.atlas.iterator.Iter)5 NodeTable (org.apache.jena.tdb.store.nodetable.NodeTable)5 NodeTupleTable (org.apache.jena.tdb.store.nodetupletable.NodeTupleTable)5 NodeTable (org.apache.jena.tdb2.store.nodetable.NodeTable)5 Function (java.util.function.Function)4 InternalErrorException (org.apache.jena.atlas.lib.InternalErrorException)4 TupleFactory (org.apache.jena.atlas.lib.tuple.TupleFactory)4