On 09/07/16 10:18, François-Paul Servant wrote:
Andy,
thank you. It does work indeed with TDB. It was failing with me at first
because, for some obscure reason in old code, I was using it against a Dataset
created calling:
Dataset ds =
DatasetFactory.create(TDBFactory.createDataset(tdbDir.getAbsolutePath()));
(DatasetFactory.create is deprecated)
With just
Dataset ds = TDBFactory.createDataset(tdbDir.getAbsolutePath());
everything works as expected.
Best,
fps
And it should now work with TIM, general container (links to any graphs)
and the default in-memory dataset implementations.
https://issues.apache.org/jira/browse/JENA-1158
Andy
Le 7 juil. 2016 à 14:32, Andy Seaborne <[email protected]> a écrit :
Hi,
DatasetFactory.create();
Union graph doesn't yet work on general datasets consistently.
It works for TDB and for TxnMem (also known as TIM) - in the latter case the
warning from the OpExecutor comes out but it's wrong.
Andy
On 05/07/16 17:15, François-Paul Servant wrote:
Hi,
I'm trying to query the named graphs of a TDB dataset using <urn:x-arq:UnionGraph>,
but I must be missing something. Is there something special to do in order to use
<urn:x-arq:UnionGraph> as a graph name in a query?
Here is what I'm trying (this test uses a memory dataset: only works with
3.1.1-SNAPSHOT. Normally, I use TDB)
TIA,
fps
package sometests;
import static org.junit.Assert.*;
import org.apache.jena.query.Dataset;
import org.apache.jena.query.DatasetFactory;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.junit.Test;
public class UnionGraphTest {
@Test public final void test() {
Model m = ModelFactory.createDefaultModel();
m.add(
m.createResource("http://ex.com/s"),
m.createProperty("http://ex.com/p"),
m.createResource("http://ex.com/o"));
Dataset ds = DatasetFactory.create();
ds.addNamedModel("http://ex.com/g", m);
// query using the named graph: return some results
doIt(ds, "http://ex.com/g");
// same query, using urn:x-arq:UnionGraph, doens't return any result
doIt(ds, "urn:x-arq:UnionGraph");
}
private void doIt(Dataset ds, String graphName) {
String queryString = "SELECT * WHERE { GRAPH <" + graphName + "> {?s ?p ?o}
}";
Query q = QueryFactory.create(queryString) ;
QueryExecution qexec = QueryExecutionFactory.create(q, ds);
ResultSet rs = qexec.execSelect();
assertTrue(rs.hasNext());
for (;rs.hasNext();) {
QuerySolution sol = rs.next();
System.out.println(sol);
}
}
}