Fix default graph projection for exeConstructTriples(); Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f27623dc Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f27623dc Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f27623dc
Branch: refs/heads/master Commit: f27623dcf073638a92c55a580a891bc6008e51bf Parents: e819ac3 Author: confidencesun <[email protected]> Authored: Wed Aug 12 15:11:00 2015 +0800 Committer: confidencesun <[email protected]> Committed: Wed Aug 12 15:11:00 2015 +0800 ---------------------------------------------------------------------- .../constructquads/ExampleConstructQuads.java | 241 ++++++++++--------- .../org/apache/jena/sparql/syntax/Template.java | 6 +- 2 files changed, 130 insertions(+), 117 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/f27623dc/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java ---------------------------------------------------------------------- diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java index ff54915..dab9007 100644 --- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java +++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java @@ -46,119 +46,132 @@ import org.apache.jena.util.PrintUtil; public class ExampleConstructQuads { public static void main(String[] args) throws FileNotFoundException, IOException { -// // create testing data : -// // 1) default graph data -// Model model = ModelFactory.createDefaultModel(); -// Resource s = model.createResource("http://eg.com/s"); -// Property p = model.createProperty("http://eg.com/p"); -// Resource o = model.createResource("http://eg.com/o"); -// model.add(s, p, o); -// Dataset dataset = DatasetFactory.create(model); -// // 2) named graph data -// Model model1 = ModelFactory.createDefaultModel(); -// Resource s1 = model.createResource("http://eg.com/s1"); -// Property p1 = model.createProperty("http://eg.com/p1"); -// Resource o1 = model.createResource("http://eg.com/o1"); -// model1.add(s1, p1, o1); -// dataset.addNamedModel("http://eg.com/g1", model1); -// -// // construct named graph -// System.out.println("construct named graph:"); -// String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; -// Query query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Quad> quads = qexec.execConstructQuads(); -// PrintUtil.printOut(quads); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // construct default graph 1 -// System.out.println("construct default graph 1:"); -// queryString = "CONSTRUCT { {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Quad> quads = qexec.execConstructQuads(); -// PrintUtil.printOut(quads); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // construct default graph 2 -// System.out.println("construct default graph 2:"); -// queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o} WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Quad> quads = qexec.execConstructQuads(); -// PrintUtil.printOut(quads); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // construct triples -// System.out.println("construct default graph 2:"); -// queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o} WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Triple> triples = qexec.execConstructTriples(); -// PrintUtil.printOut(triples); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // construct dataset -// System.out.println("construct dataset:"); -// queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Dataset d = qexec.execConstructDataset(); -// RDFDataMgr.write(System.out, d, Lang.TRIG); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // short form 1 -// System.out.println("short form 1:"); -// queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Quad> quads = qexec.execConstructQuads(); -// PrintUtil.printOut(quads); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // short form 2 -// System.out.println("short form 2:"); -// queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Quad> quads = qexec.execConstructQuads(); -// PrintUtil.printOut(quads); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // short form 3 -// System.out.println("short form 3:"); -// queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Triple> triples = qexec.execConstructTriples(); -// PrintUtil.printOut(triples); -// } -// arq.qparse.main("--in", "arq", queryString); -// -// // short form 4 -// System.out.println("short form 4:"); -// queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }"; -// query = QueryFactory.create(queryString, Syntax.syntaxARQ); -// try (QueryExecution qexec = QueryExecutionFactory -// .create(query, dataset)) { -// Iterator<Quad> quads = qexec.execConstructQuads(); -// PrintUtil.printOut(quads); -// } -// arq.qparse.main("--in", "arq", queryString); + // create testing data : + // 1) default graph data + Model model = ModelFactory.createDefaultModel(); + Resource s = model.createResource("http://eg.com/s"); + Property p = model.createProperty("http://eg.com/p"); + Resource o = model.createResource("http://eg.com/o"); + model.add(s, p, o); + Dataset dataset = DatasetFactory.create(model); + // 2) named graph data + Model model1 = ModelFactory.createDefaultModel(); + Resource s1 = model.createResource("http://eg.com/s1"); + Property p1 = model.createProperty("http://eg.com/p1"); + Resource o1 = model.createResource("http://eg.com/o1"); + model1.add(s1, p1, o1); + dataset.addNamedModel("http://eg.com/g1", model1); + + PrintUtil.printOut(dataset.asDatasetGraph().find()); + + // construct named graph + System.out.println("construct named graph:"); + String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + Query query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Quad> quads = qexec.execConstructQuads(); + PrintUtil.printOut(quads); + } + arq.qparse.main("--in", "arq", queryString); + + // construct default graph 1 + System.out.println("construct default graph 1:"); + queryString = "CONSTRUCT { {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Quad> quads = qexec.execConstructQuads(); + PrintUtil.printOut(quads); + } + arq.qparse.main("--in", "arq", queryString); + + // construct default graph 2 + System.out.println("construct default graph 2:"); + queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o} WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Quad> quads = qexec.execConstructQuads(); + PrintUtil.printOut(quads); + } + arq.qparse.main("--in", "arq", queryString); + + // construct triples + System.out.println("construct default graph 2:"); + queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o} WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Triple> triples = qexec.execConstructTriples(); + PrintUtil.printOut(triples); + } + arq.qparse.main("--in", "arq", queryString); + + // construct dataset + System.out.println("construct dataset:"); + queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Dataset d = qexec.execConstructDataset(); + RDFDataMgr.write(System.out, d, Lang.TRIG); + } + arq.qparse.main("--in", "arq", queryString); + + // short form 1 + System.out.println("short form 1:"); + queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Quad> quads = qexec.execConstructQuads(); + PrintUtil.printOut(quads); + } + arq.qparse.main("--in", "arq", queryString); + + // short form 2 + System.out.println("short form 2:"); + queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Quad> quads = qexec.execConstructQuads(); + PrintUtil.printOut(quads); + } + arq.qparse.main("--in", "arq", queryString); + + // short form 3 + System.out.println("short form 3:"); + queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Triple> triples = qexec.execConstructTriples(); + PrintUtil.printOut(triples); + } + arq.qparse.main("--in", "arq", queryString); + + // short form 4 + System.out.println("short form 4:"); + queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Quad> quads = qexec.execConstructQuads(); + PrintUtil.printOut(quads); + } + arq.qparse.main("--in", "arq", queryString); + + // short form 4 + System.out.println("default graph projection:"); + queryString = "CONSTRUCT { {<http://eg.com/s> <http://eg.com/p> ?o} GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }"; + query = QueryFactory.create(queryString, Syntax.syntaxARQ); + try (QueryExecution qexec = QueryExecutionFactory + .create(query, dataset)) { + Iterator<Triple> triples = qexec.execConstructTriples(); + PrintUtil.printOut(triples); + } + arq.qparse.main("--in", "arq", queryString); // run-construct-quad-test System.out.println("run-construct-quad-test:"); @@ -171,9 +184,7 @@ public class ExampleConstructQuads { return false; } }); - int i=0; for (File test : tests) { -// if (++i != 4) continue; System.out.println("======== File: "+test.getName()); try (BufferedReader br = new BufferedReader(new FileReader(test))) { String line = null; http://git-wip-us.apache.org/repos/asf/jena/blob/f27623dc/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java index a6e74d8..641ceb7 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java @@ -81,7 +81,8 @@ public class Template } BasicPattern bgp = new BasicPattern(); for(Quad q: qp.getQuads()){ - bgp.add(q.asTriple()); + if (Quad.defaultGraphNodeGenerated.equals(q.getGraph())) + bgp.add(q.asTriple()); } return bgp; } @@ -92,7 +93,8 @@ public class Template } List<Triple> triples = new ArrayList<Triple>(); for(Quad q: qp.getQuads()){ - triples.add(q.asTriple()); + if (Quad.defaultGraphNodeGenerated.equals(q.getGraph())) + triples.add(q.asTriple()); } return triples; }
