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