Reiterating my comments from the issue report for completeness of this
thread
The in-memory dataset does not honour FROM clauses by design (though I
don't know the reasons for that design decision)
Using the GRAPH keyword is a more reliable and portable way to write such
queries e.g.
SELECT ?s ?p ?o
WHERE
{
GRAPH <urn:graph> { ?s ?p ?o }
}
Rob
On 09/02/2016 19:25, "Todd Schiller" <[email protected]> wrote:
>I'm trying to query a named graph in an in-memory dataset using SPARQL.
>What is the correct way to refer to the named graph in the FROM clause?
>Enclosing the graph's name (a URN) in braces isn't working for me (see
>reproduction below).
>
>I suspect it has something to do with how the in-memory dataset resolves
>the FROM clause (cf.
>https://jena.apache.org/tutorials/sparql_datasets.html)?
>I don't have problems when using a TDB-backed dataset.
>
>Tracking as: https://issues.apache.org/jira/browse/JENA-1135
>
>Thanks,
>Todd
>
>======= Jena 3.0.1
>
>import org.apache.jena.query.*;
>import org.apache.jena.rdf.model.*;
>import org.apache.jena.vocabulary.RDFS;
>
>public class GraphTest {
> public static void main(String [] args) {
> Dataset data = DatasetFactory.create();
>
> Model model = ModelFactory.createDefaultModel();
> model.getResource("urn:foo").addLiteral(RDFS.label, "foobar");
> data.addNamedModel("urn:graph", model);
>
> String sparql = "SELECT ?s ?p ?o FROM <urn:graph> WHERE { ?s ?p ?o
>}";
> ResultSet results = QueryExecutionFactory.create(sparql,
>data).execSelect();
> int cnt = 0;
> while (results.hasNext()) {
> cnt++;
> results.next();
> }
>
> // should both print 1
> System.out.println("# results: " + cnt); // prints 0
> System.out.println("Model size: " +
>data.getNamedModel("urn:graph").size()); // prints 1
> }
>}