fix bugs for qparse of JENA-491 Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/68254a2b Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/68254a2b Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/68254a2b
Branch: refs/heads/master Commit: 68254a2be094342aec75ff6e7028af5ab36e3b61 Parents: 9920b52 Author: confidencesun <[email protected]> Authored: Wed Jul 29 11:29:51 2015 +0800 Committer: confidencesun <[email protected]> Committed: Wed Jul 29 11:29:51 2015 +0800 ---------------------------------------------------------------------- .../constructquads/ExampleConstructQuads.java | 10 +++++++- .../jena/sparql/lang/arq/ARQParserBase.java | 6 +++-- .../jena/sparql/serializer/FmtTemplate.java | 26 +++++++++++++++++--- .../org/apache/jena/sparql/syntax/Template.java | 19 +++++++++++++- 4 files changed, 54 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/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 ae724ec..4ef097e 100644 --- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java +++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java @@ -65,6 +65,7 @@ public class ExampleConstructQuads { Iterator<Quad> quads = qexec.execConstructQuads(); PrintUtil.printOut(quads); qexec.close(); + arq.qparse.main("--in", "arq", queryString); // construct default graph 1 System.out.println("construct default graph 1:"); @@ -74,6 +75,7 @@ public class ExampleConstructQuads { quads = qexec.execConstructQuads(); PrintUtil.printOut(quads); qexec.close(); + arq.qparse.main("--in", "arq", queryString); // construct default graph 2 System.out.println("construct default graph 2:"); @@ -83,6 +85,7 @@ public class ExampleConstructQuads { quads = qexec.execConstructQuads(); PrintUtil.printOut(quads); qexec.close(); + arq.qparse.main("--in", "arq", queryString); // construct triples System.out.println("construct default graph 2:"); @@ -92,6 +95,7 @@ public class ExampleConstructQuads { Iterator<Triple> triples = qexec.execConstructTriples(); PrintUtil.printOut(triples); qexec.close(); + arq.qparse.main("--in", "arq", queryString); //construct dataset System.out.println("construct dataset:"); @@ -101,6 +105,7 @@ public class ExampleConstructQuads { Dataset d = qexec.execConstructDataset(); RDFDataMgr.write(System.out, d, Lang.TRIG) ; qexec.close(); + arq.qparse.main("--in", "arq", queryString); //short form 1 System.out.println("short form 1:"); @@ -110,6 +115,7 @@ public class ExampleConstructQuads { quads = qexec.execConstructQuads(); PrintUtil.printOut(quads); qexec.close(); + arq.qparse.main("--in", "arq", queryString); //short form 2 System.out.println("short form 2:"); @@ -119,6 +125,7 @@ public class ExampleConstructQuads { quads = qexec.execConstructQuads(); PrintUtil.printOut(quads); qexec.close(); + arq.qparse.main("--in", "arq", queryString); //short form 3 System.out.println("short form 3:"); @@ -128,6 +135,7 @@ public class ExampleConstructQuads { triples = qexec.execConstructTriples(); PrintUtil.printOut(triples); qexec.close(); + arq.qparse.main("--in", "arq", queryString); //short form 4 System.out.println("short form 4:"); @@ -137,7 +145,7 @@ public class ExampleConstructQuads { quads = qexec.execConstructQuads(); PrintUtil.printOut(quads); qexec.close(); - + arq.qparse.main("--in", "arq", queryString); } } http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java index 3a11805..eac508e 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java @@ -93,8 +93,10 @@ class ARQParserBase } for(Node n: graphs.keySet()){ Element el = new ElementPathBlock(graphs.get(n)); - if(! Quad.defaultGraphIRI.equals(n) ){ - el = new ElementNamedGraph(n, el); + if(! Quad.defaultGraphNodeGenerated.equals(n) ){ + ElementGroup e = new ElementGroup(); + e.addElement(el); + el = new ElementNamedGraph(n, e); } elg.addElement(el); } http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java index a1b65fd..d422d1c 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java @@ -18,9 +18,10 @@ package org.apache.jena.sparql.serializer; -import org.apache.jena.atlas.io.IndentedLineBuffer ; -import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.sparql.syntax.Template ; +import org.apache.jena.atlas.io.IndentedLineBuffer; +import org.apache.jena.atlas.io.IndentedWriter; +import org.apache.jena.sparql.syntax.Template; +import org.apache.jena.sparql.util.FmtUtils; public class FmtTemplate extends FormatterBase implements FormatterTemplate @@ -51,6 +52,19 @@ public class FmtTemplate extends FormatterBase @Override public void format(Template template) { + + if (template.isConstructQuadTemplate()){ + out.print("{") ; + out.incIndent(INDENT) ; + out.pad() ; + + out.print("GRAPH"); + out.print(" "); + out.print(FmtUtils.stringForNode(template.getGraphNode())); + out.print(" "); + } + + out.print("{") ; out.incIndent(INDENT) ; out.pad() ; @@ -60,6 +74,12 @@ public class FmtTemplate extends FormatterBase out.decIndent(INDENT) ; out.print("}") ; out.newline() ; + + if (template.isConstructQuadTemplate()){ + out.decIndent(INDENT) ; + out.print("}") ; + out.newline() ; + } } http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/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 248ce7e..eb970c1 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 @@ -53,6 +53,17 @@ public class Template this.bgp = bgp; this.qp = null; } + + public boolean isConstructQuadTemplate(){ + return this.qp != null && ! this.getQuads().isEmpty(); + } + + public Node getGraphNode() { + if (!this.isConstructQuadTemplate()){ + return null; + } + return this.getQuads().get(0).getGraph(); + } // public void addTriple(Triple t) { quads.addTriple(t) ; } // public int mark() { return quads.mark() ; } @@ -123,9 +134,15 @@ public class Template hash = hashNode(quad.getSubject()) ^ hash<<1 ; hash = hashNode(quad.getPredicate()) ^ hash<<1 ; hash = hashNode(quad.getObject()) ^ hash<<1 ; - hash = hashNode(quad.getGraph()) ^ hash<<1 ; + hash = hashGraph(quad.getGraph()) ^ hash<<1 ; return hash ; } + + private static int hashGraph(Node node){ + if ( node == null ) return Quad.defaultGraphNodeGenerated.hashCode() ; + if ( node.isBlank() ) return 59 ; + return node.hashCode() ; + } private static int hashNode(Node node) {
