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/05/14 17:08:35 UTC
svn commit: r1338242 [1/7] - in /jena/trunk/jena-arq: ./ 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/com...
Author: andy
Date: Mon May 14 15:08:33 2012
New Revision: 1338242
URL: http://svn.apache.org/viewvc?rev=1338242&view=rev
Log:
Changes to align with upcoming SPARQL 1.1 change: BINDINGS -> VALUES and now allowed inline in patterns.
Added:
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bind-01.rq
- copied unchanged from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-01.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-values-01.rq
- copied, changed from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-01.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-values-02.rq
- copied, changed from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-02.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-values-03.rq
- copied, changed from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-03.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-values-04.rq
- copied, changed from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-04.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-values-05.rq
- copied, changed from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-05.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-values-09.rq
- copied, changed from r1336107, jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-09.rq
Removed:
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL/
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-01.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-02.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-03.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-04.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-05.rq
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/syntax-bindings-09.rq
Modified:
jena/trunk/jena-arq/ChangeLog.txt
jena/trunk/jena-arq/Grammar/arq.jj
jena/trunk/jena-arq/Grammar/master.jj
jena/trunk/jena-arq/Grammar/sparql_11.jj
jena/trunk/jena-arq/Grammar/tokens.txt
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserConstants.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserTokenManager.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/sparql_11/SPARQLParser11.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/sparql_11/SPARQLParser11TokenManager.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/serializer/QuerySerializer.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderNode.java
jena/trunk/jena-arq/testing/ARQ/Syntax/Syntax-SPARQL_11/manifest.ttl
Modified: jena/trunk/jena-arq/ChangeLog.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/ChangeLog.txt?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/ChangeLog.txt (original)
+++ jena/trunk/jena-arq/ChangeLog.txt Mon May 14 15:08:33 2012
@@ -4,6 +4,9 @@ ChangeLog for ARQ
==== ARQ 2.9.1
++ Changes for BINDINGS (SPARQL 1.1) - align with SPARQL-WG
+ Now called VALUES : slight synatx changes.
+ VALUES can be inline data as part of a query pattern.
+ Comprehensive support for date/time/durations operations (JENA-235)
+ Property path syntax revised to align with current SPARQL
No {...} forms in SPARQL query engine (available in ARQ language)
Modified: jena/trunk/jena-arq/Grammar/arq.jj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/Grammar/arq.jj?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/Grammar/arq.jj (original)
+++ jena/trunk/jena-arq/Grammar/arq.jj Mon May 14 15:08:33 2012
@@ -87,7 +87,7 @@ void Query() : { }
// | JsonTemplateQuery()
// #endif
)
- BindingsClause()
+ ValuesClause()
}
void UpdateUnit() : {}
{
@@ -124,6 +124,7 @@ void SubSelect() :{ }
SelectClause()
WhereClause()
SolutionModifier()
+ ValuesClause()
}
void SelectClause() : { Var v ; Expr expr ; Node n ; }
{
@@ -344,84 +345,15 @@ void OffsetClause() : { Token t ; }
<OFFSET> t = <INTEGER>
{ getQuery().setOffset(integerValue(t.image)) ; }
}
-void BindingsClause() : { Token t ; }
+void ValuesClause() : { Token t ; }
{
(
- t = <BINDINGS>
- { startBinding(t.beginLine, t.beginColumn) ; }
+ t = <VALUES>
+ { startValuesClause(t.beginLine, t.beginColumn) ; }
DataBlock()
- { finishBinding(t.beginLine, t.beginColumn) ; }
+ { finishValuesClause(t.beginLine, t.beginColumn) ; }
)?
}
-void DataBlock() : { Var v ; Node n ; Token t ; }
-{
- ( v = Var() { emitDataBlockVariable(v) ; }) *
- t = <LBRACE>
- (
- t = <LPAREN>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- (n = DataBlockValue() { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }) *
- t = <RPAREN>
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- |
- t = <NIL>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- )*
- t = <RBRACE>
-}
-Node DataBlockValue() : { Node n ; String iri ; }
-{
- iri = iri() { return createNode(iri) ; }
-| n = RDFLiteral() { return n ; }
-| n = NumericLiteral() { return n ; }
-| n = BooleanLiteral() { return n ; }
-| <UNDEF> { return null ; }
-}
-Element InlineData() : { ElementData el ; Token t ; }
-{
- t = <VALUES>
- { 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(ElementData el) : { Var v ; Node n ; Token t ; }
-{
- v = Var()
- { emitDataBlockVariable(v) ; }
- t = <LBRACE>
- (
- n = DataBlockValue()
- { startDataBlockValueRow(-1, -1) ;
- emitDataBlockValue(n, -1, -1) ;
- finishDataBlockValueRow(-1, -1) ;
- }
- )*
- t = <RBRACE>
-}
-void InlineDataFull(ElementData el) : { Var v ; Node n ; Token t ; }
-{
- t = <LPAREN>
- (v = Var() { emitDataBlockVariable(v) ; })*
- t = <RPAREN>
- t = <LBRACE>
- (
- t = <LPAREN>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- (n = DataBlockValue()
- { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
- ) *
- t = <RPAREN>
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- |
- t = <NIL>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- )*
- t = <RBRACE>
-}
// SPARQL Update + transitional extensions for SPARQL/Update (the W3C submission)
// Update only entry point
// Optional SEMICOLON
@@ -767,6 +699,66 @@ Element Bind() : { Var v ; Expr expr ; }
<RPAREN>
{ return new ElementBind(v, expr) ; }
}
+Element InlineData() : { ElementData el ; Token t ; }
+{
+ t = <VALUES>
+ { el = new ElementData() ;
+ startInlineData(el.getVars(), el.getRows(), t.beginLine, t.beginColumn) ; }
+ DataBlock()
+ { finishInlineData(t.beginLine, t.beginColumn) ;
+ return el ; }
+}
+void DataBlock() : { }
+{
+ ( InlineDataOneVar() | InlineDataFull() )
+}
+void InlineDataOneVar() : { Var v ; Node n ; Token t ; }
+{
+ v = Var()
+ { emitDataBlockVariable(v) ; }
+ t = <LBRACE>
+ (
+ n = DataBlockValue()
+ { startDataBlockValueRow(-1, -1) ;
+ emitDataBlockValue(n, -1, -1) ;
+ finishDataBlockValueRow(-1, -1) ;
+ }
+ )*
+ t = <RBRACE>
+}
+void InlineDataFull() : { Var v ; Node n ; Token t ; }
+{
+ (
+ <NIL>
+ |
+ t = <LPAREN>
+ (v = Var() { emitDataBlockVariable(v) ; })*
+ t = <RPAREN>
+ )
+ t = <LBRACE>
+ (
+ t = <LPAREN>
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ (n = DataBlockValue()
+ { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
+ ) *
+ t = <RPAREN>
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ |
+ t = <NIL>
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ )*
+ t = <RBRACE>
+}
+Node DataBlockValue() : { Node n ; String iri ; }
+{
+ iri = iri() { return createNode(iri) ; }
+| n = RDFLiteral() { return n ; }
+| n = NumericLiteral() { return n ; }
+| n = BooleanLiteral() { return n ; }
+| <UNDEF> { return null ; }
+}
Element Assignment() : { Var v ; Expr expr ; }
{
<LET>
@@ -1669,7 +1661,6 @@ TOKEN [IGNORE_CASE] :
| < OFFSET: "offset" >
| < ORDER: "order" >
| < BY: "by" >
-| < BINDINGS: "bindings" >
| < VALUES: "values" >
| < UNDEF: "undef" >
| < ASC: "asc" >
Modified: jena/trunk/jena-arq/Grammar/master.jj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/Grammar/master.jj?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/Grammar/master.jj (original)
+++ jena/trunk/jena-arq/Grammar/master.jj Mon May 14 15:08:33 2012
@@ -127,7 +127,7 @@ void Query() : { }
// | JsonTemplateQuery()
// #endif
)
- BindingsClause()
+ ValuesClause()
}
#ifdef UPDATE
@@ -174,6 +174,7 @@ void SubSelect() :{ }
SelectClause()
WhereClause()
SolutionModifier()
+ ValuesClause()
}
void SelectClause() : { Var v ; Expr expr ; Node n ; }
@@ -429,93 +430,16 @@ void OffsetClause() : { Token t ; }
{ getQuery().setOffset(integerValue(t.image)) ; }
}
-void BindingsClause() : { Token t ; }
+void ValuesClause() : { Token t ; }
{
(
- t = <BINDINGS>
- { startBinding(t.beginLine, t.beginColumn) ; }
+ t = <VALUES>
+ { startValuesClause(t.beginLine, t.beginColumn) ; }
DataBlock()
- { finishBinding(t.beginLine, t.beginColumn) ; }
+ { finishValuesClause(t.beginLine, t.beginColumn) ; }
)?
}
-void DataBlock() : { Var v ; Node n ; Token t ; }
-{
- ( v = Var() { emitDataBlockVariable(v) ; }) *
- t = <LBRACE>
- (
- t = <LPAREN>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- (n = DataBlockValue() { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }) *
- t = <RPAREN>
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- |
- t = <NIL>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- )*
- t = <RBRACE>
-}
-
-Node DataBlockValue() : { Node n ; String iri ; }
-{
- iri = iri() { return createNode(iri) ; }
-| n = RDFLiteral() { return n ; }
-| n = NumericLiteral() { return n ; }
-| n = BooleanLiteral() { return n ; }
-| <UNDEF> { return null ; }
-}
-
-#ifdef ARQ
-Element InlineData() : { ElementData el ; Token t ; }
-{
- t = <VALUES>
- { 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(ElementData el) : { Var v ; Node n ; Token t ; }
-{
- v = Var()
- { emitDataBlockVariable(v) ; }
- t = <LBRACE>
- (
- n = DataBlockValue()
- { startDataBlockValueRow(-1, -1) ;
- emitDataBlockValue(n, -1, -1) ;
- finishDataBlockValueRow(-1, -1) ;
- }
- )*
- t = <RBRACE>
-}
-
-void InlineDataFull(ElementData el) : { Var v ; Node n ; Token t ; }
-{
- t = <LPAREN>
- (v = Var() { emitDataBlockVariable(v) ; })*
- t = <RPAREN>
- t = <LBRACE>
- (
- t = <LPAREN>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- (n = DataBlockValue()
- { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
- ) *
- t = <RPAREN>
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- |
- t = <NIL>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- )*
- t = <RBRACE>
-}
-#endif
-
-
#ifdef UPDATE
// SPARQL Update + transitional extensions for SPARQL/Update (the W3C submission)
// Update only entry point
@@ -905,9 +829,9 @@ Element GraphPatternNotTriples() : { Ele
el = Filter()
|
el = Bind()
-#ifdef ARQ
|
el = InlineData()
+#ifdef ARQ
|
el = Assignment()
#ifdef ARQ_FETCH
@@ -959,6 +883,71 @@ Element Bind() : { Var v ; Expr expr ;
{ return new ElementBind(v, expr) ; }
}
+Element InlineData() : { ElementData el ; Token t ; }
+{
+ t = <VALUES>
+ { el = new ElementData() ;
+ startInlineData(el.getVars(), el.getRows(), t.beginLine, t.beginColumn) ; }
+ DataBlock()
+ { finishInlineData(t.beginLine, t.beginColumn) ;
+ return el ; }
+}
+
+void DataBlock() : { }
+{
+ ( InlineDataOneVar() | InlineDataFull() )
+}
+
+void InlineDataOneVar() : { Var v ; Node n ; Token t ; }
+{
+ v = Var()
+ { emitDataBlockVariable(v) ; }
+ t = <LBRACE>
+ (
+ n = DataBlockValue()
+ { startDataBlockValueRow(-1, -1) ;
+ emitDataBlockValue(n, -1, -1) ;
+ finishDataBlockValueRow(-1, -1) ;
+ }
+ )*
+ t = <RBRACE>
+}
+
+void InlineDataFull() : { Var v ; Node n ; Token t ; }
+{
+ (
+ <NIL>
+ |
+ t = <LPAREN>
+ (v = Var() { emitDataBlockVariable(v) ; })*
+ t = <RPAREN>
+ )
+ t = <LBRACE>
+ (
+ t = <LPAREN>
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ (n = DataBlockValue()
+ { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
+ ) *
+ t = <RPAREN>
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ |
+ t = <NIL>
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ )*
+ t = <RBRACE>
+}
+
+Node DataBlockValue() : { Node n ; String iri ; }
+{
+ iri = iri() { return createNode(iri) ; }
+| n = RDFLiteral() { return n ; }
+| n = NumericLiteral() { return n ; }
+| n = BooleanLiteral() { return n ; }
+| <UNDEF> { return null ; }
+}
+
#ifdef ARQ
Element Assignment() : { Var v ; Expr expr ; }
@@ -2140,7 +2129,6 @@ TOKEN [IGNORE_CASE] :
| < OFFSET: "offset" >
| < ORDER: "order" >
| < BY: "by" >
-| < BINDINGS: "bindings" >
| < VALUES: "values" >
| < UNDEF: "undef" >
Modified: jena/trunk/jena-arq/Grammar/sparql_11.jj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/Grammar/sparql_11.jj?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/Grammar/sparql_11.jj (original)
+++ jena/trunk/jena-arq/Grammar/sparql_11.jj Mon May 14 15:08:33 2012
@@ -87,7 +87,7 @@ void Query() : { }
// | JsonTemplateQuery()
// #endif
)
- BindingsClause()
+ ValuesClause()
}
void UpdateUnit() : {}
{
@@ -124,6 +124,7 @@ void SubSelect() :{ }
SelectClause()
WhereClause()
SolutionModifier()
+ ValuesClause()
}
void SelectClause() : { Var v ; Expr expr ; Node n ; }
{
@@ -331,40 +332,15 @@ void OffsetClause() : { Token t ; }
<OFFSET> t = <INTEGER>
{ getQuery().setOffset(integerValue(t.image)) ; }
}
-void BindingsClause() : { Token t ; }
+void ValuesClause() : { Token t ; }
{
(
- t = <BINDINGS>
- { startBinding(t.beginLine, t.beginColumn) ; }
+ t = <VALUES>
+ { startValuesClause(t.beginLine, t.beginColumn) ; }
DataBlock()
- { finishBinding(t.beginLine, t.beginColumn) ; }
+ { finishValuesClause(t.beginLine, t.beginColumn) ; }
)?
}
-void DataBlock() : { Var v ; Node n ; Token t ; }
-{
- ( v = Var() { emitDataBlockVariable(v) ; }) *
- t = <LBRACE>
- (
- t = <LPAREN>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- (n = DataBlockValue() { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }) *
- t = <RPAREN>
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- |
- t = <NIL>
- { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
- )*
- t = <RBRACE>
-}
-Node DataBlockValue() : { Node n ; String iri ; }
-{
- iri = iri() { return createNode(iri) ; }
-| n = RDFLiteral() { return n ; }
-| n = NumericLiteral() { return n ; }
-| n = BooleanLiteral() { return n ; }
-| <UNDEF> { return null ; }
-}
// SPARQL Update + transitional extensions for SPARQL/Update (the W3C submission)
// Update only entry point
// Strict SPARQL 1.1 : mandatory separator, optional terminator.
@@ -635,6 +611,8 @@ Element GraphPatternNotTriples() : { Ele
el = Filter()
|
el = Bind()
+ |
+ el = InlineData()
)
{ return el ; }
}
@@ -668,6 +646,66 @@ Element Bind() : { Var v ; Expr expr ; }
<RPAREN>
{ return new ElementBind(v, expr) ; }
}
+Element InlineData() : { ElementData el ; Token t ; }
+{
+ t = <VALUES>
+ { el = new ElementData() ;
+ startInlineData(el.getVars(), el.getRows(), t.beginLine, t.beginColumn) ; }
+ DataBlock()
+ { finishInlineData(t.beginLine, t.beginColumn) ;
+ return el ; }
+}
+void DataBlock() : { }
+{
+ ( InlineDataOneVar() | InlineDataFull() )
+}
+void InlineDataOneVar() : { Var v ; Node n ; Token t ; }
+{
+ v = Var()
+ { emitDataBlockVariable(v) ; }
+ t = <LBRACE>
+ (
+ n = DataBlockValue()
+ { startDataBlockValueRow(-1, -1) ;
+ emitDataBlockValue(n, -1, -1) ;
+ finishDataBlockValueRow(-1, -1) ;
+ }
+ )*
+ t = <RBRACE>
+}
+void InlineDataFull() : { Var v ; Node n ; Token t ; }
+{
+ (
+ <NIL>
+ |
+ t = <LPAREN>
+ (v = Var() { emitDataBlockVariable(v) ; })*
+ t = <RPAREN>
+ )
+ t = <LBRACE>
+ (
+ t = <LPAREN>
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ (n = DataBlockValue()
+ { emitDataBlockValue(n, t.beginLine, t.beginColumn) ; }
+ ) *
+ t = <RPAREN>
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ |
+ t = <NIL>
+ { startDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ { finishDataBlockValueRow(t.beginLine, t.beginColumn) ; }
+ )*
+ t = <RBRACE>
+}
+Node DataBlockValue() : { Node n ; String iri ; }
+{
+ iri = iri() { return createNode(iri) ; }
+| n = RDFLiteral() { return n ; }
+| n = NumericLiteral() { return n ; }
+| n = BooleanLiteral() { return n ; }
+| <UNDEF> { return null ; }
+}
Element MinusGraphPattern() : { Element el ; }
{
<MINUS_P>
@@ -1496,7 +1534,6 @@ TOKEN [IGNORE_CASE] :
| < OFFSET: "offset" >
| < ORDER: "order" >
| < BY: "by" >
-| < BINDINGS: "bindings" >
| < VALUES: "values" >
| < UNDEF: "undef" >
| < ASC: "asc" >
Modified: jena/trunk/jena-arq/Grammar/tokens.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/Grammar/tokens.txt?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/Grammar/tokens.txt (original)
+++ jena/trunk/jena-arq/Grammar/tokens.txt Mon May 14 15:08:33 2012
@@ -1,4 +1,4 @@
-// Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+fBINDI// Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
//Tokens in BNF
// [] means will be inlined.
@@ -56,7 +56,6 @@
[<OFFSET>] ::= 'OFFSET'
[<ORDER>] ::= 'ORDER'
[<BY>] ::= 'BY'
-[<BINDINGS>] ::= 'BINDINGS'
[<VALUES>] ::= 'VALUES'
[<UNDEF>] ::= 'UNDEF'
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/ARQ.java Mon May 14 15:08:33 2012
@@ -244,7 +244,7 @@ public class ARQ
*/
// Some possible additions to the list:
// Sort: DISTINCT, merge joins<br/>
- // Hash table: GROUP BY, MINUS, SERVICE, BINDINGS, and hash joins <br/>
+ // Hash table: GROUP BY, MINUS, SERVICE, VALUES, and hash joins <br/>
public static final Symbol spillToDiskThreshold = ARQConstants.allocSymbol("spillToDiskThreshold") ;
// Optimizer controls.
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java Mon May 14 15:08:33 2012
@@ -93,19 +93,9 @@ public class Query extends Prologue impl
public static final int ORDER_DEFAULT = -2 ; // Not explicitly given.
public static final int ORDER_UNKNOW = -3 ;
- // BINDINGS
- protected TableData bindingsDataBlock = null ;
-// // VALUES
-// protected TableData valuesDataBlock = null ;
-
-// // BINDINGS
-// protected List<Var> bindingVariables = null ;
-// protected List<Binding> bindingValues = null ;
-//
-// // VALUES
-// protected List<Var> dataVariables = null ;
-// protected List<Binding> dataValues = null ;
-
+ // VALUES trailing clause
+ protected TableData valuesDataBlock = null ;
+
protected boolean strictQuery = true ;
// SELECT * seen
@@ -581,20 +571,29 @@ public class Query extends Prologue impl
return aggExpr ;
}
- // ---- BINDINGS
- // TODO Make a DataBlock.
+ // ---- VALUES
- /** Does the query have any BINDINGS? */
- public boolean hasBindings() { return bindingsDataBlock != null ; }
+ /** Does the query have a VALUES trailing block? */
+ public boolean hasValues() { return valuesDataBlock != null ; }
+
+
+ /**
+ * @deprecated Use hasValues()
+ */
+ @Deprecated
+ public boolean hasBindings() { return hasValues() ; }
/** Binding variables
- * @deprecated Use getBindingsDataVariable()
+ * @deprecated Use getValuesVariables()
*/
@Deprecated
- public List<Var> getBindingVariables() { return getBindingsVariables() ; }
+ public List<Var> getBindingVariables() { return getValuesVariables() ; }
+
+ /** @deprecated Use getValuesVariables() */
+ @Deprecated
+ public List<Var> getBindingsVariables() { return getValuesVariables() ; }
- /** Binding variables */
- public List<Var> getBindingsVariables() { return bindingsDataBlock==null ? null : bindingsDataBlock.getVars() ; }
+ public List<Var> getValuesVariables() { return valuesDataBlock==null ? null : valuesDataBlock.getVars() ; }
/** Binding values - null for a Node means undef
* @deprecated Use getBindingsData()
@@ -602,41 +601,29 @@ public class Query extends Prologue impl
@Deprecated
public List<Binding> getBindingValues() { return getBindingsData() ; }
- /** Binding values - null for a Node means undef */
- public List<Binding> getBindingsData() { return bindingsDataBlock==null ? null : bindingsDataBlock.getRows() ; }
+ /** @deprecated Use getValuesData() */
+ @Deprecated
+ public List<Binding> getBindingsData() { return getValuesData() ; }
+
+ /** VALUES data - null for a Node means undef */
+ public List<Binding> getValuesData() { return valuesDataBlock==null ? null : valuesDataBlock.getRows() ; }
- /** @deprecated Use setBindingsDataBlock */
+ /** @deprecated Use setValuesDataBlock */
@Deprecated
public void setBindings(List<Var> variables, List<Binding> values)
{ setBindingsDataBlock(variables, values) ; }
- //public TableData getBindingsDataBlock() { return bindingsDataBlock ; }
-
+ /** @deprecated Use setValuesDataBlock */
+ @Deprecated
public void setBindingsDataBlock(List<Var> variables, List<Binding> values)
+ { setValuesDataBlock(variables, values) ; }
+
+ public void setValuesDataBlock(List<Var> variables, List<Binding> values)
{
checkDataBlock(variables, values) ;
- bindingsDataBlock = new TableData(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)
{
// Check.
@@ -741,8 +728,8 @@ public class Query extends Prologue impl
// Binding variables -- in patterns, not in filters and not in EXISTS
LinkedHashSet<Var> queryVars = new LinkedHashSet<Var>() ;
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() ;
@@ -780,7 +767,7 @@ public class Query extends Prologue impl
visitor.visitOrderBy(this) ;
visitor.visitOffset(this) ;
visitor.visitLimit(this) ;
- visitor.visitBindings(this) ;
+ visitor.visitValues(this) ;
visitor.finishVisit(this) ;
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/query/QueryVisitor.java Mon May 14 15:08:33 2012
@@ -41,7 +41,7 @@ public interface QueryVisitor
public void visitOrderBy(Query query) ;
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: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java Mon May 14 15:08:33 2012
@@ -589,11 +589,11 @@ public class AlgebraGenerator
op = OpFilter.filter(expr2 , op) ;
}
}
- // ---- BINDINGS
- if ( query.hasBindings() )
+ // ---- VALUES
+ if ( query.hasValues() )
{
- Table table = TableFactory.create(query.getBindingsVariables()) ;
- for ( Binding binding : query.getBindingsData() )
+ Table table = TableFactory.create(query.getValuesVariables()) ;
+ for ( Binding binding : query.getValuesData() )
table.addBinding(binding) ;
OpTable opTable = OpTable.create(table) ;
op = OpJoin.create(op, opTable) ;
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryCompare.java Mon May 14 15:08:33 2012
@@ -169,11 +169,11 @@ public class QueryCompare implements Que
}
@Override
- public void visitBindings(Query query1)
+ public void visitValues(Query query1)
{
// Must be same order for now.
- check("BINDINGS/variables", query1.getBindingsVariables(), query2.getBindingsVariables()) ;
- check("BINDINGS/values", query1.getBindingsData(), query2.getBindingsData()) ;
+ check("VALUES/variables", query1.getValuesVariables(), query2.getValuesVariables()) ;
+ check("VALUES/values", query1.getValuesData(), query2.getValuesData()) ;
}
@Override
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/QueryHashCode.java Mon May 14 15:08:33 2012
@@ -129,12 +129,12 @@ public class QueryHashCode
}
@Override
- public void visitBindings(Query query)
+ public void visitValues(Query query)
{
- if ( query.hasBindings() )
+ if ( query.hasValues() )
{
- x ^= query.getBindingsVariables().hashCode() ;
- x ^= query.getBindingsData().hashCode() ;
+ x ^= query.getValuesVariables().hashCode() ;
+ x ^= query.getValuesData().hashCode() ;
}
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/ParserQueryBase.java Mon May 14 15:08:33 2012
@@ -159,15 +159,15 @@ public class ParserQueryBase extends Par
private List<Binding> values = null ;
private int currentColumn = -1 ;
- protected void startBinding(int line, int col)
+ protected void startValuesClause(int line, int col)
{
variables = new ArrayList<Var>() ;
values = new ArrayList<Binding>() ;
}
- protected void finishBinding(int line, int col)
+ protected void finishValuesClause(int line, int col)
{
- getQuery().setBindingsDataBlock(variables, values) ;
+ getQuery().setValuesDataBlock(variables, values) ;
}
protected void startInlineData(List<Var> vars, List<Binding> rows, int line, int col)
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java?rev=1338242&r1=1338241&r2=1338242&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lang/SyntaxVarScope.java Mon May 14 15:08:33 2012
@@ -48,7 +48,8 @@ public class SyntaxVarScope
(expr AS v) for BIND, SELECT and GROUP BY v is in-scope
SELECT ..v .. { P } v is in-scope if v is mentioned as a project variable
SELECT * { P } v is in-scope in P
- BINDINGS varlist (values) v is in-scope if v is in varlist
+ VALUES var (values) v is in-scope if v is in varlist
+ VALUES varlist (values) v is in-scope if v is in varlist
*/
// Weakness : EXISTS inside FILTERs?
@@ -95,8 +96,8 @@ public class SyntaxVarScope
private static Collection<Var> varsOfQuery(Query query)
{
Collection<Var> vars = PatternVars.vars(query.getQueryPattern()) ;
- if ( query.hasBindings() )
- vars.addAll(query.getBindingsVariables()) ;
+ if ( query.hasValues() )
+ vars.addAll(query.getValuesVariables()) ;
return vars ;
}