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" <todd.schil...@gmail.com> 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
>    }
>}




Reply via email to