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 2012/04/27 17:36:07 UTC
svn commit: r1331471 - in /incubator/jena/Jena2/ARQ/trunk: Grammar/
src/main/java/com/hp/hpl/jena/query/
src/main/java/com/hp/hpl/jena/sparql/algebra/
src/main/java/com/hp/hpl/jena/sparql/core/
src/main/java/com/hp/hpl/jena/sparql/lang/ src/main/java/c...
Author: andy
Date: Fri Apr 27 15:36:06 2012
New Revision: 1331471
URL: http://svn.apache.org/viewvc?rev=1331471&view=rev
Log:
Implement inline data in queries (keyword DATA). ARQ language. Will track SPARQ-WG decisions.
Added:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementData.java
Modified:
incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj
incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/Query.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryFactory.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetCompare.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/QuerySerializer.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitor.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitorBase.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementWalker.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/PatternVarsVisitor.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/RecursiveElementVisitor.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/NodeIsomorphismMap.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/Utils.java
Modified: incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj (original)
+++ incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj Fri Apr 27 15:36:06 2012
@@ -378,37 +378,47 @@ Node DataBlockValue() : { Node n ; Strin
| n = BooleanLiteral() { return n ; }
| <UNDEF> { return null ; }
}
-Element InlineData() : {}
+Element InlineData() : { ElementData el ; Token t ; }
{
- <DATA>
- ( InlineDataOneVar() | InlineDataFull() )
- { return null ; }
+ t = <DATA>
+ { el = new ElementData() ;
+ startInlineData(el.getVars(), el.getRows(), t.beginLine, t.beginColumn) ; }
+ ( InlineDataOneVar(el) | InlineDataFull(el) )
+ { finishInlineData(t.beginLine, t.beginColumn) ;
+ return el ; }
}
-void InlineDataOneVar() : { Var v ; Node n ; Token t ; }
+void InlineDataOneVar(ElementData el) : { Var v ; Node n ; Token t ; }
{
v = Var()
+ { emitDataBlockVariable(v) ; }
t = <LBRACE>
- ( n = DataBlockValue() )*
+ (
+ n = DataBlockValue()
+ { startDataBlockValueRow(-1, -1) ;
+ emitDataBlockValue(n, -1, -1) ;
+ finishDataBlockValueRow(-1, -1) ;
+ }
+ )*
t = <RBRACE>
}
-void InlineDataFull() : { Var v ; Node n ; Token t ; }
+void InlineDataFull(ElementData el) : { Var v ; Node n ; Token t ; }
{
t = <LPAREN>
- (v = Var())*
+ (v = Var() { emitDataBlockVariable(v) ; })*
t = <RPAREN>
t = <LBRACE>
(
t = <LPAREN>
- //{ startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
(n = DataBlockValue()
- //{ emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
+ { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
) *
t = <RPAREN>
- //{ finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
|
t = <NIL>
- //{ startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- //{ finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
)*
t = <RBRACE>
}
Modified: incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj (original)
+++ incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj Fri Apr 27 15:36:06 2012
@@ -467,39 +467,49 @@ Node DataBlockValue() : { Node n ; Strin
}
#ifdef ARQ
-Element InlineData() : {}
+Element InlineData() : { ElementData el ; Token t ; }
{
- <DATA>
- ( InlineDataOneVar() | InlineDataFull() )
- { return null ; }
+ t = <DATA>
+ { el = new ElementData() ;
+ startInlineData(el.getVars(), el.getRows(), t.beginLine, t.beginColumn) ; }
+ ( InlineDataOneVar(el) | InlineDataFull(el) )
+ { finishInlineData(t.beginLine, t.beginColumn) ;
+ return el ; }
}
-void InlineDataOneVar() : { Var v ; Node n ; Token t ; }
+void InlineDataOneVar(ElementData el) : { Var v ; Node n ; Token t ; }
{
v = Var()
+ { emitDataBlockVariable(v) ; }
t = <LBRACE>
- ( n = DataBlockValue() )*
+ (
+ n = DataBlockValue()
+ { startDataBlockValueRow(-1, -1) ;
+ emitDataBlockValue(n, -1, -1) ;
+ finishDataBlockValueRow(-1, -1) ;
+ }
+ )*
t = <RBRACE>
}
-void InlineDataFull() : { Var v ; Node n ; Token t ; }
+void InlineDataFull(ElementData el) : { Var v ; Node n ; Token t ; }
{
t = <LPAREN>
- (v = Var())*
+ (v = Var() { emitDataBlockVariable(v) ; })*
t = <RPAREN>
t = <LBRACE>
(
t = <LPAREN>
- //{ startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
(n = DataBlockValue()
- //{ emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
+ { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
) *
t = <RPAREN>
- //{ finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
|
t = <NIL>
- //{ startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- //{ finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
)*
t = <RBRACE>
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/Query.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/Query.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/Query.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/Query.java Fri Apr 27 15:36:06 2012
@@ -75,9 +75,6 @@ public class Query extends Prologue impl
private List<String> graphURIs = new ArrayList<String>() ;
private List<String> namedGraphURIs = new ArrayList<String>() ;
- // The Original Raw Query as provided to the API
- private String rawQuery = null;
-
// The WHERE clause
private Element queryPattern = null ;
@@ -98,8 +95,8 @@ public class Query extends Prologue impl
// BINDINGS
protected TableData bindingsDataBlock = null ;
- // VALUES
- protected TableData valuesDataBlock = null ;
+// // VALUES
+// protected TableData valuesDataBlock = null ;
// // BINDINGS
// protected List<Var> bindingVariables = null ;
@@ -142,30 +139,6 @@ public class Query extends Prologue impl
usePrologueFrom(prologue) ;
}
- /**
- * Creates a new empty query with the given raw query string
- * <p>
- * <strong>Important:</strong> This constructor does not cause the query to be parsed, this only stores a reference to the original query string in the query which may be useful if you want to see the original unaltered syntax (including comments) at some later point.
- * </p>
- */
- public Query(String queryString)
- {
- this();
- rawQuery = queryString;
- }
-
- /**
- * Creates a new empty query with the given raw query string and prologue
- * <p>
- * <strong>Important:</strong> This constructor does not cause the query to be parsed, this only stores a reference to the original query string in the query which may be useful if you want to see the original unaltered syntax (including comments) at some later point.
- * </p>
- */
- public Query(String queryString, Prologue prologue)
- {
- this(prologue);
- rawQuery = queryString;
- }
-
// Allocate variables that are unique to this query.
private VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarMarker) ;
private Var allocInternVar() { return varAlloc.allocVar() ; }
@@ -223,22 +196,6 @@ public class Query extends Prologue impl
public void setReduced(boolean b) { reduced = b ; }
public boolean isReduced() { return reduced ; }
- /**
- * Sets the raw query string
- */
- protected void setRawQuery(String queryString)
- {
- rawQuery = queryString;
- }
-
- /**
- * Gets the original raw query string from which this instance was populated, may be null depending on how the query was created
- */
- public String getRawQuery()
- {
- return rawQuery;
- }
-
/** @return Returns the syntax. */
public Syntax getSyntax() { return syntax ; }
@@ -661,24 +618,24 @@ public class Query extends Prologue impl
bindingsDataBlock = new TableData(variables, values) ;
}
- // ---- Values
-
- /** Does the query have any BINDINGS? */
- public boolean hasValues() { return valuesDataBlock != null ; }
-
- /** VALUES variables */
- public List<Var> getValuesVariables() { return valuesDataBlock==null ? null : valuesDataBlock.getVars() ; }
-
- /** VALUES - null for a Node means undef */
- public List<Binding> getValuesData() { return valuesDataBlock==null ? null : valuesDataBlock.getRows() ; }
-
- //public TableData getValuesDataBlock() { return valuesDataBlock ; }
-
- public void setValuesDataBlock(List<Var> variables, List<Binding> values)
- {
- checkDataBlock(variables, values) ;
- valuesDataBlock = new TableData(variables, values) ;
- }
+// // ---- Values
+//
+// /** Does the query have any VALUES? */
+// public boolean hasValues() { return valuesDataBlock != null ; }
+//
+// /** VALUES variables */
+// public List<Var> getValuesVariables() { return valuesDataBlock==null ? null : valuesDataBlock.getVars() ; }
+//
+// /** VALUES - null for a Node means undef */
+// public List<Binding> getValuesData() { return valuesDataBlock==null ? null : valuesDataBlock.getRows() ; }
+//
+// //public TableData getValuesDataBlock() { return valuesDataBlock ; }
+//
+// public void setValuesDataBlock(List<Var> variables, List<Binding> values)
+// {
+// checkDataBlock(variables, values) ;
+// valuesDataBlock = new TableData(variables, values) ;
+// }
private static void checkDataBlock(List<Var> variables, List<Binding> values)
{
@@ -786,8 +743,8 @@ public class Query extends Prologue impl
PatternVars.vars(queryVars, this.getQueryPattern()) ;
if ( this.hasBindings() )
queryVars.addAll(getBindingsVariables()) ;
- if ( this.hasValues() )
- queryVars.addAll(getValuesVariables()) ;
+// if ( this.hasValues() )
+// queryVars.addAll(getValuesVariables()) ;
varIter = queryVars.iterator() ;
}
@@ -824,7 +781,6 @@ public class Query extends Prologue impl
visitor.visitOffset(this) ;
visitor.visitLimit(this) ;
visitor.visitBindings(this) ;
- visitor.visitValues(this) ;
visitor.finishVisit(this) ;
}
@@ -848,19 +804,10 @@ public class Query extends Prologue impl
*/
public Query cloneQuery(boolean useRawQuery)
{
- String qs;
- if (useRawQuery && this.rawQuery != null && !this.rawQuery.equals(""))
- {
- //If specified (and is present) clone from raw query rather than the serialized query
- qs = this.rawQuery;
- }
- else
- {
- // A little crude.
- IndentedLineBuffer buff = new IndentedLineBuffer() ;
- serialize(buff, getSyntax()) ;
- qs = buff.toString() ;
- }
+ // A little crude.
+ IndentedLineBuffer buff = new IndentedLineBuffer() ;
+ serialize(buff, getSyntax()) ;
+ String qs = buff.toString() ;
return QueryFactory.create(qs, getSyntax()) ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryFactory.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryFactory.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryFactory.java Fri Apr 27 15:36:06 2012
@@ -61,7 +61,7 @@ public class QueryFactory
static public Query create(String queryString, String baseURI)
{
- Query query = new Query(queryString) ;
+ Query query = new Query() ;
parse(query, queryString, baseURI, Syntax.defaultQuerySyntax) ;
return query ;
@@ -77,7 +77,7 @@ public class QueryFactory
static public Query create(String queryString, String baseURI, Syntax syntax)
{
- Query query = new Query(queryString) ;
+ Query query = new Query() ;
parse(query, queryString, baseURI, syntax) ;
return query ;
@@ -142,7 +142,6 @@ public class QueryFactory
else
query.setSyntax(syntaxURI) ;
- query.setRawQuery(queryString);
Parser parser = Parser.createParser(syntaxURI) ;
if ( parser == null )
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java Fri Apr 27 15:36:06 2012
@@ -42,7 +42,6 @@ public interface QueryVisitor
public void visitLimit(Query query) ;
public void visitOffset(Query query) ;
public void visitBindings(Query query) ;
- public void visitValues(Query query) ;
public void finishVisit(Query query) ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java Fri Apr 27 15:36:06 2012
@@ -22,7 +22,6 @@ import java.util.ArrayList ;
import java.util.Iterator ;
import java.util.List ;
-import org.openjena.atlas.lib.NotImplemented ;
import org.openjena.atlas.logging.Log ;
import com.hp.hpl.jena.graph.Node ;
@@ -286,6 +285,7 @@ public class AlgebraGenerator
groupElts.add(elt) ;
}
//End of group - put in any accumulated filters
+
if ( filters != null )
groupElts.addAll(filters) ;
return groupElts ;
@@ -370,8 +370,17 @@ public class AlgebraGenerator
Op op = compileElementMinus(current, elt2) ;
return op ;
}
+
+ if ( elt instanceof ElementData)
+ {
+ // Accumulate, like filters.
+ ElementData elt2 = (ElementData)elt ;
+ Op op = compileElementData(current, elt2) ;
+ return op ;
+ }
+
-// // SPARQL 1.1 UNION -- did no tmake SPARQL
+// // SPARQL 1.1 UNION -- did not make SPARQL
// if ( elt instanceof ElementUnion )
// {
// ElementUnion elt2 = (ElementUnion)elt ;
@@ -392,6 +401,8 @@ public class AlgebraGenerator
Op op = compileElement(elt) ;
return join(current, op) ;
}
+
+
broken("compile/Element not recognized: "+Utils.className(elt)) ;
return null ;
@@ -419,6 +430,12 @@ public class AlgebraGenerator
return opMinus ;
}
+ private Op compileElementData(Op current, ElementData elt2)
+ {
+ OpTable opTable = OpTable.create(elt2.getTable()) ;
+ return OpJoin.create(current, opTable) ;
+ }
+
private Op compileElementUnion(Op current, ElementUnion elt2)
{
// Special SPARQL 1.1 case.
@@ -582,17 +599,6 @@ public class AlgebraGenerator
op = OpJoin.create(op, opTable) ;
}
- // ---- VALUES
- if ( query.hasValues() )
- {
- if ( true ) throw new NotImplemented("VALUES Not implemented yet") ;
- Table table = TableFactory.create() ;
- for ( Binding binding : query.getValuesData() )
- table.addBinding(binding) ;
- OpTable opTable = OpTable.create(table) ;
- // NOT THIS op = OpJoin.create(op, opTable) ;
- }
-
// ---- ToList
if ( context.isTrue(ARQ.generateToList) )
// Listify it.
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java Fri Apr 27 15:36:06 2012
@@ -177,17 +177,6 @@ public class QueryCompare implements Que
}
@Override
- public void visitValues(Query query1)
- {
- // Must be same order for now.
- check("VALUES/variables", query1.getValuesVariables(), query2.getValuesVariables()) ;
- check("VALUES/values", query1.getValuesData(), query2.getValuesData()) ;
- }
-
-
-
-
- @Override
public void finishVisit(Query query1)
{}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java Fri Apr 27 15:36:06 2012
@@ -139,16 +139,6 @@ public class QueryHashCode
}
@Override
- public void visitValues(Query query)
- {
- if ( query.hasValues() )
- {
- x ^= query.getValuesVariables().hashCode() ;
- x ^= query.getValuesData().hashCode() ;
- }
- }
-
- @Override
public void finishVisit(Query query)
{}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java Fri Apr 27 15:36:06 2012
@@ -169,18 +169,16 @@ public class ParserQueryBase extends Par
{
getQuery().setBindingsDataBlock(variables, values) ;
}
-
- protected void startValuesBlock(int line, int col)
- {
- variables = new ArrayList<Var>() ;
- values = new ArrayList<Binding>() ;
- }
- protected void finishValuesBlock(int line, int col)
+ protected void startInlineData(List<Var> vars, List<Binding> rows, int line, int col)
{
- getQuery().setValuesDataBlock(variables, values) ;
+ variables = vars ;
+ values = rows ;
}
+ protected void finishInlineData(int line, int col)
+ {}
+
private BindingMap currentValueRow() { return (BindingMap)values.get(values.size()-1) ; }
protected void emitDataBlockVariable(Var v) { variables.add(v) ; }
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java Fri Apr 27 15:36:06 2012
@@ -97,8 +97,6 @@ public class SyntaxVarScope
Collection<Var> vars = PatternVars.vars(query.getQueryPattern()) ;
if ( query.hasBindings() )
vars.addAll(query.getBindingsVariables()) ;
- if ( query.hasValues() )
- vars.addAll(query.getValuesVariables()) ;
return vars ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java Fri Apr 27 15:36:06 2012
@@ -1498,27 +1498,32 @@ public class ARQParser extends ARQParser
}
final public Element InlineData() throws ParseException {
- jj_consume_token(DATA);
+ ElementData el ; Token t ;
+ t = jj_consume_token(DATA);
+ el = new ElementData() ;
+ startInlineData(el.getVars(), el.getRows(), t.beginLine, t.beginColumn) ;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case VAR1:
case VAR2:
- InlineDataOneVar();
+ InlineDataOneVar(el);
break;
case LPAREN:
- InlineDataFull();
+ InlineDataFull(el);
break;
default:
jj_la1[43] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
- {if (true) return null ;}
+ finishInlineData(t.beginLine, t.beginColumn) ;
+ {if (true) return el ;}
throw new Error("Missing return statement in function");
}
- final public void InlineDataOneVar() throws ParseException {
- Var v ; Node n ; Token t ;
+ final public void InlineDataOneVar(ElementData el) throws ParseException {
+ Var v ; Node n ; Token t ;
v = Var();
+ emitDataBlockVariable(v) ;
t = jj_consume_token(LBRACE);
label_15:
while (true) {
@@ -1549,12 +1554,15 @@ public class ARQParser extends ARQParser
break label_15;
}
n = DataBlockValue();
+ startDataBlockValueRow(-1, -1) ;
+ emitDataBlockValue(n, -1, -1) ;
+ finishDataBlockValueRow(-1, -1) ;
}
t = jj_consume_token(RBRACE);
}
- final public void InlineDataFull() throws ParseException {
- Var v ; Node n ; Token t ;
+ final public void InlineDataFull(ElementData el) throws ParseException {
+ Var v ; Node n ; Token t ;
t = jj_consume_token(LPAREN);
label_16:
while (true) {
@@ -1568,6 +1576,7 @@ public class ARQParser extends ARQParser
break label_16;
}
v = Var();
+ emitDataBlockVariable(v) ;
}
t = jj_consume_token(RPAREN);
t = jj_consume_token(LBRACE);
@@ -1585,6 +1594,7 @@ public class ARQParser extends ARQParser
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LPAREN:
t = jj_consume_token(LPAREN);
+ startDataBlockValueRow(t.beginLine, t.beginColumn) ;
label_18:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1614,11 +1624,15 @@ public class ARQParser extends ARQParser
break label_18;
}
n = DataBlockValue();
+ emitDataBlockValue(n, t.beginLine, t.beginColumn) ;
}
t = jj_consume_token(RPAREN);
+ finishDataBlockValueRow(t.beginLine, t.beginColumn) ;
break;
case NIL:
t = jj_consume_token(NIL);
+ startDataBlockValueRow(t.beginLine, t.beginColumn) ;
+ finishDataBlockValueRow(t.beginLine, t.beginColumn) ;
break;
default:
jj_la1[48] = jj_gen;
@@ -5427,189 +5441,6 @@ public class ARQParser extends ARQParser
finally { jj_save(3, xla); }
}
- private boolean jj_3R_43() {
- if (jj_scan_token(STR)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- private boolean jj_3R_42() {
- if (jj_3R_100()) return true;
- return false;
- }
-
- private boolean jj_3R_40() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_42()) {
- jj_scanpos = xsp;
- if (jj_3R_43()) {
- jj_scanpos = xsp;
- if (jj_3R_44()) {
- jj_scanpos = xsp;
- if (jj_3R_45()) {
- jj_scanpos = xsp;
- if (jj_3R_46()) {
- jj_scanpos = xsp;
- if (jj_3R_47()) {
- jj_scanpos = xsp;
- if (jj_3R_48()) {
- jj_scanpos = xsp;
- if (jj_3R_49()) {
- jj_scanpos = xsp;
- if (jj_3R_50()) {
- jj_scanpos = xsp;
- if (jj_3R_51()) {
- jj_scanpos = xsp;
- if (jj_3R_52()) {
- jj_scanpos = xsp;
- if (jj_3R_53()) {
- jj_scanpos = xsp;
- if (jj_3R_54()) {
- jj_scanpos = xsp;
- if (jj_3R_55()) {
- jj_scanpos = xsp;
- if (jj_3R_56()) {
- jj_scanpos = xsp;
- if (jj_3R_57()) {
- jj_scanpos = xsp;
- if (jj_3R_58()) {
- jj_scanpos = xsp;
- if (jj_3R_59()) {
- jj_scanpos = xsp;
- if (jj_3R_60()) {
- jj_scanpos = xsp;
- if (jj_3R_61()) {
- jj_scanpos = xsp;
- if (jj_3R_62()) {
- jj_scanpos = xsp;
- if (jj_3R_63()) {
- jj_scanpos = xsp;
- if (jj_3R_64()) {
- jj_scanpos = xsp;
- if (jj_3R_65()) {
- jj_scanpos = xsp;
- if (jj_3R_66()) {
- jj_scanpos = xsp;
- if (jj_3R_67()) {
- jj_scanpos = xsp;
- if (jj_3R_68()) {
- jj_scanpos = xsp;
- if (jj_3R_69()) {
- jj_scanpos = xsp;
- if (jj_3R_70()) {
- jj_scanpos = xsp;
- if (jj_3R_71()) {
- jj_scanpos = xsp;
- if (jj_3R_72()) {
- jj_scanpos = xsp;
- if (jj_3R_73()) {
- jj_scanpos = xsp;
- if (jj_3R_74()) {
- jj_scanpos = xsp;
- if (jj_3R_75()) {
- jj_scanpos = xsp;
- if (jj_3R_76()) {
- jj_scanpos = xsp;
- if (jj_3R_77()) {
- jj_scanpos = xsp;
- if (jj_3R_78()) {
- jj_scanpos = xsp;
- if (jj_3R_79()) {
- jj_scanpos = xsp;
- if (jj_3R_80()) {
- jj_scanpos = xsp;
- if (jj_3R_81()) {
- jj_scanpos = xsp;
- if (jj_3R_82()) {
- jj_scanpos = xsp;
- if (jj_3R_83()) {
- jj_scanpos = xsp;
- if (jj_3R_84()) {
- jj_scanpos = xsp;
- if (jj_3R_85()) {
- jj_scanpos = xsp;
- if (jj_3R_86()) {
- jj_scanpos = xsp;
- if (jj_3R_87()) {
- jj_scanpos = xsp;
- if (jj_3R_88()) {
- jj_scanpos = xsp;
- if (jj_3R_89()) {
- jj_scanpos = xsp;
- if (jj_3R_90()) {
- jj_scanpos = xsp;
- if (jj_3R_91()) {
- jj_scanpos = xsp;
- if (jj_3R_92()) {
- jj_scanpos = xsp;
- if (jj_3R_93()) {
- jj_scanpos = xsp;
- if (jj_3R_94()) {
- jj_scanpos = xsp;
- if (jj_3R_95()) {
- jj_scanpos = xsp;
- if (jj_3R_96()) {
- jj_scanpos = xsp;
- if (jj_3R_97()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
private boolean jj_3R_127() {
if (jj_scan_token(LBRACKET)) return true;
return false;
@@ -5677,11 +5508,6 @@ public class ARQParser extends ARQParser
return false;
}
- private boolean jj_3_1() {
- if (jj_3R_40()) return true;
- return false;
- }
-
private boolean jj_3R_111() {
if (jj_scan_token(COUNT)) return true;
if (jj_scan_token(LPAREN)) return true;
@@ -5713,6 +5539,11 @@ public class ARQParser extends ARQParser
return false;
}
+ private boolean jj_3_1() {
+ if (jj_3R_40()) return true;
+ return false;
+ }
+
private boolean jj_3R_99() {
if (jj_3R_110()) return true;
return false;
@@ -6454,6 +6285,189 @@ public class ARQParser extends ARQParser
return false;
}
+ private boolean jj_3R_43() {
+ if (jj_scan_token(STR)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_42() {
+ if (jj_3R_100()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_40() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_42()) {
+ jj_scanpos = xsp;
+ if (jj_3R_43()) {
+ jj_scanpos = xsp;
+ if (jj_3R_44()) {
+ jj_scanpos = xsp;
+ if (jj_3R_45()) {
+ jj_scanpos = xsp;
+ if (jj_3R_46()) {
+ jj_scanpos = xsp;
+ if (jj_3R_47()) {
+ jj_scanpos = xsp;
+ if (jj_3R_48()) {
+ jj_scanpos = xsp;
+ if (jj_3R_49()) {
+ jj_scanpos = xsp;
+ if (jj_3R_50()) {
+ jj_scanpos = xsp;
+ if (jj_3R_51()) {
+ jj_scanpos = xsp;
+ if (jj_3R_52()) {
+ jj_scanpos = xsp;
+ if (jj_3R_53()) {
+ jj_scanpos = xsp;
+ if (jj_3R_54()) {
+ jj_scanpos = xsp;
+ if (jj_3R_55()) {
+ jj_scanpos = xsp;
+ if (jj_3R_56()) {
+ jj_scanpos = xsp;
+ if (jj_3R_57()) {
+ jj_scanpos = xsp;
+ if (jj_3R_58()) {
+ jj_scanpos = xsp;
+ if (jj_3R_59()) {
+ jj_scanpos = xsp;
+ if (jj_3R_60()) {
+ jj_scanpos = xsp;
+ if (jj_3R_61()) {
+ jj_scanpos = xsp;
+ if (jj_3R_62()) {
+ jj_scanpos = xsp;
+ if (jj_3R_63()) {
+ jj_scanpos = xsp;
+ if (jj_3R_64()) {
+ jj_scanpos = xsp;
+ if (jj_3R_65()) {
+ jj_scanpos = xsp;
+ if (jj_3R_66()) {
+ jj_scanpos = xsp;
+ if (jj_3R_67()) {
+ jj_scanpos = xsp;
+ if (jj_3R_68()) {
+ jj_scanpos = xsp;
+ if (jj_3R_69()) {
+ jj_scanpos = xsp;
+ if (jj_3R_70()) {
+ jj_scanpos = xsp;
+ if (jj_3R_71()) {
+ jj_scanpos = xsp;
+ if (jj_3R_72()) {
+ jj_scanpos = xsp;
+ if (jj_3R_73()) {
+ jj_scanpos = xsp;
+ if (jj_3R_74()) {
+ jj_scanpos = xsp;
+ if (jj_3R_75()) {
+ jj_scanpos = xsp;
+ if (jj_3R_76()) {
+ jj_scanpos = xsp;
+ if (jj_3R_77()) {
+ jj_scanpos = xsp;
+ if (jj_3R_78()) {
+ jj_scanpos = xsp;
+ if (jj_3R_79()) {
+ jj_scanpos = xsp;
+ if (jj_3R_80()) {
+ jj_scanpos = xsp;
+ if (jj_3R_81()) {
+ jj_scanpos = xsp;
+ if (jj_3R_82()) {
+ jj_scanpos = xsp;
+ if (jj_3R_83()) {
+ jj_scanpos = xsp;
+ if (jj_3R_84()) {
+ jj_scanpos = xsp;
+ if (jj_3R_85()) {
+ jj_scanpos = xsp;
+ if (jj_3R_86()) {
+ jj_scanpos = xsp;
+ if (jj_3R_87()) {
+ jj_scanpos = xsp;
+ if (jj_3R_88()) {
+ jj_scanpos = xsp;
+ if (jj_3R_89()) {
+ jj_scanpos = xsp;
+ if (jj_3R_90()) {
+ jj_scanpos = xsp;
+ if (jj_3R_91()) {
+ jj_scanpos = xsp;
+ if (jj_3R_92()) {
+ jj_scanpos = xsp;
+ if (jj_3R_93()) {
+ jj_scanpos = xsp;
+ if (jj_3R_94()) {
+ jj_scanpos = xsp;
+ if (jj_3R_95()) {
+ jj_scanpos = xsp;
+ if (jj_3R_96()) {
+ jj_scanpos = xsp;
+ if (jj_3R_97()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
/** Generated Token Manager. */
public ARQParserTokenManager token_source;
JavaCharStream jj_input_stream;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetCompare.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetCompare.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetCompare.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetCompare.java Fri Apr 27 15:36:06 2012
@@ -20,7 +20,6 @@ package com.hp.hpl.jena.sparql.resultset
import java.util.ArrayList ;
import java.util.Collection ;
-import java.util.HashMap ;
import java.util.Iterator ;
import java.util.List ;
@@ -36,6 +35,7 @@ import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.engine.binding.BindingUtils ;
+import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
import com.hp.hpl.jena.sparql.util.NodeUtils ;
import com.hp.hpl.jena.sparql.util.NodeUtils.EqualityTest ;
@@ -148,8 +148,6 @@ public class ResultSetCompare
rs1a.reset() ;
rs2a.reset() ;
return isomorphic(rs1, rs2) ;
-
-
}
@@ -296,12 +294,12 @@ public class ResultSetCompare
public static class BNodeIso implements EqualityTest
{
- private HashMap<Node, Node> mapping ;
+ private NodeIsomorphismMap mapping ;
private EqualityTest literalTest ;
public BNodeIso(EqualityTest literalTest)
{
- this.mapping = new HashMap<Node, Node>() ;
+ this.mapping = new NodeIsomorphismMap() ;
this.literalTest = literalTest ;
}
@@ -319,16 +317,7 @@ public class ResultSetCompare
return literalTest.equal(n1, n2) ;
if ( n1.isBlank() && n2.isBlank() )
- {
- Node x = mapping.get(n1) ;
- if ( x == null )
- {
- // Not present: map n1 to n2.
- mapping.put(n1, n2) ;
- return true ;
- }
- return x.equals(n2) ;
- }
+ return mapping.makeIsomorphic(n1, n2) ;
return false ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java Fri Apr 27 15:36:06 2012
@@ -30,9 +30,12 @@ import com.hp.hpl.jena.graph.Triple ;
import com.hp.hpl.jena.sparql.core.BasicPattern ;
import com.hp.hpl.jena.sparql.core.PathBlock ;
import com.hp.hpl.jena.sparql.core.TriplePath ;
+import com.hp.hpl.jena.sparql.core.Var ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.expr.Expr ;
import com.hp.hpl.jena.sparql.path.PathWriter ;
import com.hp.hpl.jena.sparql.syntax.* ;
+import com.hp.hpl.jena.sparql.util.FmtUtils ;
public class FormatterElement extends FormatterBase
@@ -226,6 +229,69 @@ public class FormatterElement extends Fo
}
@Override
+ public void visit(ElementData el)
+ {
+ // QuerySrializer.outputDataBlock.
+
+ List<Var> variables = el.getVars() ;
+ out.print("DATA ") ;
+ if ( variables.size() == 1 )
+ {
+ // Short form.
+ out.print("?") ;
+ out.print(variables.get(0).getVarName()) ;
+ out.print(" {") ;
+ out.incIndent() ;
+ for ( Binding valueRow : el.getRows() )
+ {
+ // A value may be null for UNDEF
+ for ( Var var : variables )
+ {
+ out.print(" ") ;
+ Node value = valueRow.get(var) ;
+ if ( value == null )
+ out.print("UNDEF") ;
+ else
+ out.print(FmtUtils.stringForNode(value, context)) ;
+ }
+ }
+ out.decIndent() ;
+ out.print("}") ;
+ return ;
+ }
+ // Long form.
+ out.print("(") ;
+ for ( Var v : variables )
+ {
+ out.print(" ") ;
+ out.print(v) ;
+ }
+ out.print(" )") ;
+ out.print(" {") ;
+ out.incIndent() ;
+ for ( Binding valueRow : el.getRows() )
+ {
+ out.println() ;
+ // A value may be null for UNDEF
+ out.print("(") ;
+ for ( Var var : variables )
+ {
+ out.print(" ") ;
+ Node value = valueRow.get(var) ;
+ if ( value == null )
+ out.print("UNDEF") ;
+ else
+ out.print(FmtUtils.stringForNode(value, context)) ;
+ }
+ out.print(" )") ;
+ }
+ out.decIndent() ;
+ out.ensureStartOfLine() ;
+ out.print("}") ;
+
+ }
+
+ @Override
public void visit(ElementUnion el)
{
if ( el.getElements().size() == 1 )
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/QuerySerializer.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/QuerySerializer.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/QuerySerializer.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/serializer/QuerySerializer.java Fri Apr 27 15:36:06 2012
@@ -266,16 +266,6 @@ public class QuerySerializer implements
}
}
- @Override
- public void visitValues(Query query)
- {
- if ( query.hasValues() )
- {
- out.print("VALUES") ;
- outputDataBlock(out, query.getValuesVariables(), query.getValuesData(),query) ;
- }
- }
-
private static void outputDataBlock(IndentedWriter out, List<Var> variables, List<Binding> values, Query query)
{
for ( Var v : variables )
Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementData.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementData.java?rev=1331471&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementData.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementData.java Fri Apr 27 15:36:06 2012
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.syntax;
+
+import java.util.ArrayList ;
+import java.util.Iterator ;
+import java.util.List ;
+
+import com.hp.hpl.jena.sparql.ARQException ;
+import com.hp.hpl.jena.sparql.algebra.Table ;
+import com.hp.hpl.jena.sparql.algebra.table.TableData ;
+import com.hp.hpl.jena.sparql.core.Var ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
+import com.hp.hpl.jena.sparql.resultset.ResultSetCompare ;
+import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
+import com.hp.hpl.jena.sparql.util.NodeUtils ;
+
+public class ElementData extends Element
+{
+ private List<Var> vars = new ArrayList<Var>() ;
+ private List<Binding> rows = new ArrayList<Binding>() ;
+
+ public ElementData()
+ {
+ }
+
+ public Table getTable()
+ {
+ return new TableData(vars, rows) ;
+ }
+
+ public List<Var> getVars() { return vars ; }
+ public List<Binding> getRows() { return rows ; }
+
+ public void add(Var var)
+ {
+ if ( ! vars.contains(var) )
+ vars.add(var) ;
+ }
+
+ public void add(Binding binding)
+ {
+ Iterator<Var> iter = binding.vars() ;
+ while(iter.hasNext())
+ {
+ Var v = iter.next() ;
+ if ( ! vars.contains(v) )
+ throw new ARQException("Variable "+v+" not already declared for ElementData") ;
+ }
+ rows.add(binding) ;
+ }
+
+ @Override
+ public boolean equalTo(Element el2, NodeIsomorphismMap isoMap)
+ {
+ if ( ! ( el2 instanceof ElementData ) )
+ return false ;
+ ElementData f2 = (ElementData)el2 ;
+ if ( ! vars.equals(f2.vars) )
+ return false ;
+ if ( ! ResultSetCompare.equalsByTest(rows, f2.rows, new ResultSetCompare.BNodeIso(NodeUtils.sameTerm)) )
+ return false ;
+ return true ;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return vars.hashCode()^rows.hashCode() ;
+ }
+
+ @Override
+ public void visit(ElementVisitor v)
+ {
+ v.visit(this) ;
+ }
+}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitor.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitor.java Fri Apr 27 15:36:06 2012
@@ -25,6 +25,7 @@ public interface ElementVisitor
public void visit(ElementFilter el) ;
public void visit(ElementAssign el) ;
public void visit(ElementBind el) ;
+ public void visit(ElementData el) ;
public void visit(ElementUnion el) ;
public void visit(ElementOptional el) ;
public void visit(ElementGroup el) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitorBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitorBase.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitorBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementVisitorBase.java Fri Apr 27 15:36:06 2012
@@ -37,6 +37,9 @@ public class ElementVisitorBase implemen
public void visit(ElementBind el) { }
@Override
+ public void visit(ElementData el) { }
+
+ @Override
public void visit(ElementUnion el) { }
@Override
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementWalker.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementWalker.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementWalker.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/ElementWalker.java Fri Apr 27 15:36:06 2012
@@ -79,6 +79,12 @@ public class ElementWalker
}
@Override
+ public void visit(ElementData el)
+ {
+ proc.visit(el) ;
+ }
+
+ @Override
public void visit(ElementUnion el)
{
for ( Element e : el.getElements() )
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/PatternVarsVisitor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/PatternVarsVisitor.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/PatternVarsVisitor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/PatternVarsVisitor.java Fri Apr 27 15:36:06 2012
@@ -91,7 +91,14 @@ public class PatternVarsVisitor extends
{
acc.add(el.getVar()) ;
}
-
+
+ @Override
+ public void visit(ElementData el)
+ {
+ acc.addAll(el.getVars()) ;
+ }
+
+
// @Override
// public void visit(ElementService el)
// {
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/RecursiveElementVisitor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/RecursiveElementVisitor.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/RecursiveElementVisitor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/syntax/RecursiveElementVisitor.java Fri Apr 27 15:36:06 2012
@@ -60,6 +60,9 @@ public class RecursiveElementVisitor imp
public void startElement(ElementBind el) {}
public void endElement (ElementBind el) {}
+ public void startElement(ElementData el) {}
+ public void endElement (ElementData el) {}
+
public void startElement(ElementUnion el) {}
public void endElement (ElementUnion el) {}
public void startSubElement(ElementUnion el, Element subElt) {}
@@ -144,6 +147,13 @@ public class RecursiveElementVisitor imp
}
@Override
+ public void visit(ElementData el)
+ {
+ startElement(el) ;
+ endElement(el) ;
+ }
+
+ @Override
public final void visit(ElementUnion el)
{
startElement(el) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/NodeIsomorphismMap.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/NodeIsomorphismMap.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/NodeIsomorphismMap.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/NodeIsomorphismMap.java Fri Apr 27 15:36:06 2012
@@ -34,7 +34,7 @@ public class NodeIsomorphismMap //extend
private Node get(Node key) { return map.get(key) ; }
private void put(Node key, Node value) { map.put(key, value) ; }
- public boolean makeIsomorhpic(Node n1, Node n2)
+ public boolean makeIsomorphic(Node n1, Node n2)
{
if ( n1.isBlank() && n2.isBlank() )
{
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/Utils.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/Utils.java?rev=1331471&r1=1331470&r2=1331471&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/Utils.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/util/Utils.java Fri Apr 27 15:36:06 2012
@@ -243,7 +243,7 @@ public class Utils
public static boolean nodeIso(Node n1, Node n2, NodeIsomorphismMap isoMap)
{
if ( isoMap != null && Var.isBlankNodeVar(n1) && Var.isBlankNodeVar(n2) )
- return isoMap.makeIsomorhpic(n1, n2) ;
+ return isoMap.makeIsomorphic(n1, n2) ;
return n1.equals(n2) ;
}
}