You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/08/17 17:09:44 UTC
[05/50] [abbrv] jena git commit: reimplement Template,
that does not affect the SPARQL 1.0 parser
reimplement Template, that does not affect the SPARQL 1.0 parser
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2cb175d2
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2cb175d2
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2cb175d2
Branch: refs/heads/JENA-491-construct-quads
Commit: 2cb175d2305c02582eb24629d18d06bdc53ae4ba
Parents: 07c8b98
Author: confidencesun <co...@gmail.com>
Authored: Mon Jun 15 18:12:10 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Mon Jun 15 18:12:10 2015 +0800
----------------------------------------------------------------------
.../sparql/lang/sparql_10/SPARQLParser10.java | 80 ++++++--------------
.../org/apache/jena/sparql/syntax/Template.java | 32 ++++++--
2 files changed, 49 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/2cb175d2/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
index c26f58d..d3049f7 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
@@ -19,50 +19,12 @@
package org.apache.jena.sparql.lang.sparql_10 ;
-import org.apache.jena.graph.Node;
-import org.apache.jena.query.Query;
-import org.apache.jena.sparql.core.Var;
-import org.apache.jena.sparql.expr.E_Add;
-import org.apache.jena.sparql.expr.E_Bound;
-import org.apache.jena.sparql.expr.E_Datatype;
-import org.apache.jena.sparql.expr.E_Divide;
-import org.apache.jena.sparql.expr.E_Equals;
-import org.apache.jena.sparql.expr.E_Function;
-import org.apache.jena.sparql.expr.E_GreaterThan;
-import org.apache.jena.sparql.expr.E_GreaterThanOrEqual;
-import org.apache.jena.sparql.expr.E_IsBlank;
-import org.apache.jena.sparql.expr.E_IsIRI;
-import org.apache.jena.sparql.expr.E_IsLiteral;
-import org.apache.jena.sparql.expr.E_IsURI;
-import org.apache.jena.sparql.expr.E_Lang;
-import org.apache.jena.sparql.expr.E_LangMatches;
-import org.apache.jena.sparql.expr.E_LessThan;
-import org.apache.jena.sparql.expr.E_LessThanOrEqual;
-import org.apache.jena.sparql.expr.E_LogicalAnd;
-import org.apache.jena.sparql.expr.E_LogicalNot;
-import org.apache.jena.sparql.expr.E_LogicalOr;
-import org.apache.jena.sparql.expr.E_Multiply;
-import org.apache.jena.sparql.expr.E_NotEquals;
-import org.apache.jena.sparql.expr.E_Regex;
-import org.apache.jena.sparql.expr.E_SameTerm;
-import org.apache.jena.sparql.expr.E_Str;
-import org.apache.jena.sparql.expr.E_Subtract;
-import org.apache.jena.sparql.expr.E_UnaryMinus;
-import org.apache.jena.sparql.expr.E_UnaryPlus;
-import org.apache.jena.sparql.expr.Expr;
-import org.apache.jena.sparql.expr.ExprList;
-import org.apache.jena.sparql.expr.ExprVar;
-import org.apache.jena.sparql.modify.request.QuadAcc;
-import org.apache.jena.sparql.path.Path;
-import org.apache.jena.sparql.syntax.Element;
-import org.apache.jena.sparql.syntax.ElementFilter;
-import org.apache.jena.sparql.syntax.ElementGroup;
-import org.apache.jena.sparql.syntax.ElementNamedGraph;
-import org.apache.jena.sparql.syntax.ElementOptional;
-import org.apache.jena.sparql.syntax.ElementTriplesBlock;
-import org.apache.jena.sparql.syntax.ElementUnion;
-import org.apache.jena.sparql.syntax.Template;
-import org.apache.jena.sparql.syntax.TripleCollector;
+import org.apache.jena.graph.* ;
+import org.apache.jena.query.* ;
+import org.apache.jena.sparql.core.Var ;
+import org.apache.jena.sparql.expr.* ;
+import org.apache.jena.sparql.path.* ;
+import org.apache.jena.sparql.syntax.* ;
@@ -917,8 +879,8 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
// -------- Construct patterns
final public Template ConstructTemplate() throws ParseException {
- QuadAcc acc = new QuadAcc();
- Template t = new Template(acc) ;
+ TripleCollectorBGP acc = new TripleCollectorBGP();
+ Template t = new Template(acc.getBGP()) ;
setInConstructTemplate(true) ;
jj_consume_token(LBRACE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -959,7 +921,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
throw new Error("Missing return statement in function");
}
- final public void ConstructTriples(TripleCollector acc) throws ParseException {
+ final public void ConstructTriples(TripleCollectorMark acc) throws ParseException {
TriplesSameSubject(acc);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
@@ -1005,7 +967,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
// -------- Triple lists with property and object lists
// -------- Without paths: entry: TriplesSameSubject
- final public void TriplesSameSubject(TripleCollector acc) throws ParseException {
+ final public void TriplesSameSubject(TripleCollectorMark acc) throws ParseException {
Node s ;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IRIref:
@@ -1047,7 +1009,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
}
}
- final public void PropertyListNotEmpty(Node s, TripleCollector acc) throws ParseException {
+ final public void PropertyListNotEmpty(Node s, TripleCollectorMark acc) throws ParseException {
Node p = null ;
p = Verb();
ObjectList(s, p, null, acc);
@@ -1079,7 +1041,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
}
}
- final public void PropertyList(Node s, TripleCollector acc) throws ParseException {
+ final public void PropertyList(Node s, TripleCollectorMark acc) throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IRIref:
case PNAME_NS:
@@ -1095,7 +1057,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
}
}
- final public void ObjectList(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
+ final public void ObjectList(Node s, Node p, Path path, TripleCollectorMark acc) throws ParseException {
Node o ;
Object(s, p, path, acc);
label_14:
@@ -1113,10 +1075,11 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
}
}
- final public void Object(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
+ final public void Object(Node s, Node p, Path path, TripleCollectorMark acc) throws ParseException {
Node o ;
+ int mark = acc.mark() ;
o = GraphNode(acc);
- insert(acc, s, p, path, o) ;
+ insert(acc, mark, s, p, path, o) ;
}
final public Node Verb() throws ParseException {
@@ -1149,7 +1112,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
// Anything that can stand in a node slot and which is
// a number of triples
- final public Node TriplesNode(TripleCollector acc) throws ParseException {
+ final public Node TriplesNode(TripleCollectorMark acc) throws ParseException {
Node n ;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LPAREN:
@@ -1168,7 +1131,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
throw new Error("Missing return statement in function");
}
- final public Node BlankNodePropertyList(TripleCollector acc) throws ParseException {
+ final public Node BlankNodePropertyList(TripleCollectorMark acc) throws ParseException {
Token t ;
t = jj_consume_token(LBRACKET);
Node n = createBNode(t.beginLine, t.beginColumn) ;
@@ -1179,7 +1142,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
}
// ------- RDF collections
- final public Node Collection(TripleCollector acc) throws ParseException {
+ final public Node Collection(TripleCollectorMark acc) throws ParseException {
Node listHead = nRDFnil ; Node lastCell = null ; int mark ; Node n ; Token t ;
t = jj_consume_token(LPAREN);
label_15:
@@ -1189,8 +1152,9 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
listHead = cell ;
if ( lastCell != null )
insert(acc, lastCell, nRDFrest, cell) ;
+ mark = acc.mark() ;
n = GraphNode(acc);
- insert(acc, cell, nRDFfirst, n) ;
+ insert(acc, mark, cell, nRDFfirst, n) ;
lastCell = cell ;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IRIref:
@@ -1233,7 +1197,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
}
// -------- Nodes in a graph pattern or template
- final public Node GraphNode(TripleCollector acc) throws ParseException {
+ final public Node GraphNode(TripleCollectorMark acc) throws ParseException {
Node n ;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IRIref:
http://git-wip-us.apache.org/repos/asf/jena/blob/2cb175d2/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 24f6c66..c6a5b26 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
@@ -34,16 +34,24 @@ import org.apache.jena.sparql.serializer.FormatterTemplate;
import org.apache.jena.sparql.util.Iso;
import org.apache.jena.sparql.util.NodeIsomorphismMap;
-/** Triples template. */
+/** Quads/Triples template. */
public class Template
{
static final int HashTemplateGroup = 0xB1 ;
private final QuadAcc qp ;
+ private final BasicPattern bgp;
public Template(QuadAcc qp)
{
this.qp = qp ;
+ this.bgp = null;
+ }
+
+ public Template(BasicPattern bgp)
+ {
+ this.bgp = bgp;
+ this.qp = null;
}
// public void addTriple(Triple t) { quads.addTriple(t) ; }
@@ -55,10 +63,11 @@ public class Template
// public void addTriplePath(int index, TriplePath path)
// { throw new ARQException("Triples-only collector") ; }
-
-// public BasicPattern getBGP() { return bgp ; }
public BasicPattern getBGP()
{
+ if (this.bgp != null){
+ return this.bgp;
+ }
BasicPattern bgp = new BasicPattern();
for(Quad q: qp.getQuads()){
bgp.add(q.asTriple());
@@ -67,13 +76,25 @@ public class Template
}
public List<Triple> getTriples()
{
+ if(this.bgp != null){
+ return this.bgp.getList();
+ }
List<Triple> triples = new ArrayList<Triple>();
for(Quad q: qp.getQuads()){
triples.add(q.asTriple());
}
return triples;
}
- public List<Quad> getQuads() { return qp.getQuads() ; }
+ public List<Quad> getQuads() {
+ if( this.bgp != null){
+ List<Quad> quads = new ArrayList<Quad>();
+ for(Triple triple: this.bgp.getList()){
+ quads.add( new Quad( Quad.tripleInQuad, triple ) );
+ }
+ return quads;
+ }
+ return qp.getQuads() ;
+ }
// -------------------------
public void subst(Collection<Triple> acc, Map<Node, Node> bNodeMap, Binding b)
@@ -91,7 +112,7 @@ public class Template
{
// BNode invariant hashCode.
int calcHashCode = Template.HashTemplateGroup ;
- for ( Quad q : qp.getQuads() )
+ for ( Quad q : getQuads() )
calcHashCode ^= hash(q) ^ calcHashCode<<1 ;
return calcHashCode ;
}
@@ -108,6 +129,7 @@ public class Template
private static int hashNode(Node node)
{
+ if ( node == null ) return 37 ;
if ( node.isBlank() ) return 59 ;
return node.hashCode() ;
}