Search in sources :

Example 1 with QueryEngineFactory

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

the class QueryTestTDB method runTestForReal.

@Override
protected void runTestForReal() {
    if (skipThisTest) {
        log.info(this.getName() + " : Skipped");
        return;
    }
    Query query = QueryFactory.read(queryFile);
    Dataset ds = DatasetFactory.create(defaultGraphURIs, namedGraphURIs);
    // ---- First, get the expected results by executing in-memory or from a results file.
    ResultSetRewindable rs1 = null;
    String expectedLabel = "";
    if (results != null) {
        rs1 = ResultSetFactory.makeRewindable(results.getResultSet());
        expectedLabel = "Results file";
    } else {
        QueryEngineFactory f = QueryEngineRef.getFactory();
        try (QueryExecution qExec1 = new QueryExecutionBase(query, ds, null, f)) {
            rs1 = ResultSetFactory.makeRewindable(qExec1.execSelect());
        }
        expectedLabel = "Standard engine";
    }
    // ---- Second, execute in persistent graph
    //DatasetFactory.create(model) ;
    Dataset ds2 = dataset;
    QueryExecution qExec2 = QueryExecutionFactory.create(query, ds2);
    ResultSet rs = qExec2.execSelect();
    ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(rs);
    // See if the same.
    boolean b = ResultSetCompare.equalsByValue(rs1, rs2);
    if (!b) {
        rs1.reset();
        rs2.reset();
        System.out.println("------------------- " + this.getName());
        System.out.printf("**** Expected (%s)", expectedLabel);
        ResultSetFormatter.out(System.out, rs1);
        System.out.println("**** Got (TDB)");
        ResultSetFormatter.out(System.out, rs2);
    }
    assertTrue("Results sets not the same", b);
}
Also used : QueryEngineFactory(org.apache.jena.sparql.engine.QueryEngineFactory) QueryExecutionBase(org.apache.jena.sparql.engine.QueryExecutionBase)

Example 2 with QueryEngineFactory

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

the class QueryExecutionFactory method make.

protected static QueryExecution make(Query query, Dataset dataset, Context context) {
    query.setResultVars();
    if (context == null)
        // .copy done in QueryExecutionBase -> Context.setupContext.
        context = ARQ.getContext();
    DatasetGraph dsg = null;
    if (dataset != null)
        dsg = dataset.asDatasetGraph();
    QueryEngineFactory f = findFactory(query, dsg, context);
    if (f == null) {
        Log.warn(QueryExecutionFactory.class, "Failed to find a QueryEngineFactory");
        return null;
    }
    return new QueryExecutionBase(query, dataset, context, f);
}
Also used : QueryEngineFactory(org.apache.jena.sparql.engine.QueryEngineFactory) QueryExecutionBase(org.apache.jena.sparql.engine.QueryExecutionBase) DatasetGraph(org.apache.jena.sparql.core.DatasetGraph)

Example 3 with QueryEngineFactory

use of org.apache.jena.sparql.engine.QueryEngineFactory 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)
        Log.error(QueryOutputUtils.class, "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 4 with QueryEngineFactory

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

the class QueryTestSDB method runTestForReal.

@Override
public void runTestForReal() {
    if (skipThisTest) {
        log.info(this.getName() + " : Skipped");
        return;
    }
    if (store == null)
        fail("No store");
    //        if ( item.getDefaultGraphURIs().size() != 1 || item.getNamedGraphURIs().size() != 0 )
    //            fail("Only one data graph supported") ;
    Query query = QueryFactory.read(item.getQueryFile());
    // If null, then compare to running ARQ in-memory 
    if (VERBOSE) {
        System.out.println("Test: " + this.getName());
        System.out.println(query);
    }
    // Make sure a plain, no sameValueAs graph is used.
    SystemARQ.UsePlainGraph = true;
    Dataset ds = DatasetFactory.create(item.getDefaultGraphURIs(), item.getNamedGraphURIs());
    // ---- First, get the expected results by executing in-memory or from a results file.
    ResultSet rs = null;
    if (item.getResults() != null)
        rs = item.getResults().getResultSet();
    ResultSetRewindable rs1 = null;
    String expectedLabel = "";
    if (rs != null) {
        rs1 = ResultSetFactory.makeRewindable(rs);
        expectedLabel = "Results file";
    } else {
        QueryEngineFactory f = QueryEngineRef.getFactory();
        try (QueryExecution qExec1 = new QueryExecutionBase(query, ds, null, f)) {
            rs1 = ResultSetFactory.makeRewindable(qExec1.execSelect());
        }
        expectedLabel = "Standard engine";
    }
    // ---- Second, execute in DB
    QueryEngineFactory f2 = QueryEngineSDB.getFactory();
    ds = DatasetStore.create(store);
    try (QueryExecution qExec2 = new QueryExecutionBase(query, ds, null, f2)) {
        SDBConnection.logSQLExceptions = true;
        rs = qExec2.execSelect();
        ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(rs);
        boolean b = ResultSetCompare.equalsByTerm(rs1, rs2);
        if (!b) {
            rs1.reset();
            rs2.reset();
            System.out.println("------------------- " + this.getName());
            System.out.printf("**** Expected (%s)", expectedLabel);
            ResultSetFormatter.out(System.out, rs1);
            System.out.println("**** Got (SDB engine)");
            ResultSetFormatter.out(System.out, rs2);
        }
        assertTrue("Results sets not the same", b);
    } finally {
        SDBConnection.logSQLExceptions = false;
    }
}
Also used : QueryEngineFactory(org.apache.jena.sparql.engine.QueryEngineFactory) QueryExecutionBase(org.apache.jena.sparql.engine.QueryExecutionBase)

Example 5 with QueryEngineFactory

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

the class Algebra method exec.

public static QueryIterator exec(Op op, DatasetGraph ds) {
    QueryEngineFactory f = QueryEngineRegistry.findFactory(op, ds, null);
    Plan plan = f.create(op, ds, BindingRoot.create(), null);
    return plan.iterator();
}
Also used : QueryEngineFactory(org.apache.jena.sparql.engine.QueryEngineFactory) Plan(org.apache.jena.sparql.engine.Plan)

Aggregations

QueryEngineFactory (org.apache.jena.sparql.engine.QueryEngineFactory)6 QueryExecutionBase (org.apache.jena.sparql.engine.QueryExecutionBase)3 Plan (org.apache.jena.sparql.engine.Plan)2 IndentedWriter (org.apache.jena.atlas.io.IndentedWriter)1 DatasetGraph (org.apache.jena.sparql.core.DatasetGraph)1 SerializationContext (org.apache.jena.sparql.serializer.SerializationContext)1 Context (org.apache.jena.sparql.util.Context)1