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;
     }

Reply via email to