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 2016/03/13 18:27:49 UTC

[03/16] jena git commit: Remove separate AccumulatorDistinctExpr.

Remove separate AccumulatorDistinctExpr.

Move functionality into AccumulatorExpr.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/375b38ef
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/375b38ef
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/375b38ef

Branch: refs/heads/master
Commit: 375b38efee3e78ca0508e500a051b8d57a465dd9
Parents: 085f2ef
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Mar 10 10:54:30 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Mar 13 17:17:30 2016 +0000

----------------------------------------------------------------------
 .../expr/aggregate/AccumulatorDistinctExpr.java | 75 --------------------
 .../sparql/expr/aggregate/AccumulatorExpr.java  | 22 +++++-
 .../jena/sparql/expr/aggregate/AggAvg.java      |  2 +-
 .../sparql/expr/aggregate/AggAvgDistinct.java   |  6 +-
 .../jena/sparql/expr/aggregate/AggCountVar.java |  2 +-
 .../expr/aggregate/AggCountVarDistinct.java     | 10 +--
 .../sparql/expr/aggregate/AggGroupConcat.java   |  2 +-
 .../expr/aggregate/AggGroupConcatDistinct.java  | 10 +--
 .../jena/sparql/expr/aggregate/AggMaxBase.java  |  2 +-
 .../jena/sparql/expr/aggregate/AggMinBase.java  |  2 +-
 .../jena/sparql/expr/aggregate/AggSample.java   |  3 +-
 .../expr/aggregate/AggSampleDistinct.java       |  6 +-
 .../jena/sparql/expr/aggregate/AggSum.java      |  2 +-
 .../sparql/expr/aggregate/AggSumDistinct.java   |  6 +-
 .../org/apache/jena/sparql/api/TestAPI.java     |  4 +-
 15 files changed, 48 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorDistinctExpr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorDistinctExpr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorDistinctExpr.java
deleted file mode 100644
index e5e10ba..0000000
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorDistinctExpr.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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 org.apache.jena.sparql.expr.aggregate;
-
-import java.util.HashSet ;
-import java.util.Set ;
-
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.expr.Expr ;
-import org.apache.jena.sparql.expr.ExprEvalException ;
-import org.apache.jena.sparql.expr.NodeValue ;
-import org.apache.jena.sparql.function.FunctionEnv ;
-
-/** Accumulator that only passes down unique values of an expression (the first encountered) */
-abstract class AccumulatorDistinctExpr implements Accumulator
-{
-    // Better?? record a large hash. 
-    private final Set<NodeValue> values = new HashSet<>() ;
-    private long errorCount = 0 ; 
-    private long count = 0 ;
-    private final Expr expr ;
-    
-    protected AccumulatorDistinctExpr(Expr expr)
-    {
-        this.expr = expr ;
-    }
-    
-    @Override
-    final public void accumulate(Binding binding, FunctionEnv functionEnv)
-    {
-        try { 
-            NodeValue nv = expr.eval(binding, functionEnv) ;
-            if ( values.contains(nv) )
-                return ;
-            values.add(nv) ;
-            accumulateDistinct(nv, binding, functionEnv) ;
-            count++ ;
-        } catch (ExprEvalException ex)
-        {
-            errorCount++ ;
-            accumulateError(binding, functionEnv) ;
-        }
-    }
-    
-    // Count(DISTINCT ?v) is different
-    @Override
-    public NodeValue getValue()
-    {
-        if ( errorCount == 0 )
-            return getAccValue() ;  
-        return null ;
-    }
-    
-    protected long getErrorCount() { return errorCount ; }
-     
-    protected abstract NodeValue getAccValue() ; 
-    protected abstract void accumulateDistinct(NodeValue nv, Binding binding, FunctionEnv functionEnv) ;
-    protected abstract void accumulateError(Binding binding, FunctionEnv functionEnv) ;
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorExpr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorExpr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorExpr.java
index 3c9d87a..43a6844 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorExpr.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AccumulatorExpr.java
@@ -18,6 +18,9 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
+import java.util.HashSet ;
+import java.util.Set ;
+
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprEvalException ;
@@ -28,18 +31,29 @@ import org.apache.jena.sparql.function.FunctionEnv ;
 /** Accumulator that passes down every value of an expression */
 public abstract class AccumulatorExpr implements Accumulator
 {
+    private final Set<NodeValue> values ;
     private long accCount = 0 ;
     protected long errorCount = 0 ; 
     private final Expr expr ;
+    private final boolean makeDistinct;
     
-    protected AccumulatorExpr(Expr expr) {
+    protected AccumulatorExpr(Expr expr, boolean makeDistinct) {
         this.expr = expr;
+        // Not all subclsses  use th wmachinary here to handled  DISTINCT.
+        // SAMPLE(DISTINCT) and COUNT(DISTINCT *) are different.
+        this.makeDistinct = makeDistinct ;
+        this.values  = makeDistinct ? new HashSet<>() : null ;
     }
     
     @Override
     final public void accumulate(Binding binding, FunctionEnv functionEnv) {
         NodeValue nv = ExprLib.evalOrNull(expr, binding, functionEnv);
         if ( nv != null ) {
+            if ( makeDistinct ) {
+                if ( values.contains(nv) )
+                    return ;
+                values.add(nv) ;
+            }
             try {
                 accumulate(nv, binding, functionEnv);
                 accCount++;
@@ -52,8 +66,10 @@ public abstract class AccumulatorExpr implements Accumulator
         errorCount++;
     }
     
-    // COUNT(?v) is different : errors of the expression/variable do not cause an aggregate eval error. 
-    // SAMPLE is different : it treats errors as "just another value" and tries to return a defined value if any have been seen. 
+    // COUNT(?v) and COUNT(DISTINCT ?v) are different
+    //     errors of the expression/variable do not cause an aggregate eval error. 
+    // SAMPLE, SAMPLE(DISTINCT) are different
+    //     treat errors as "just another value" and tries to return a defined value if any have been seen. 
 
     @Override
     public NodeValue getValue() {

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvg.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvg.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvg.java
index 57c32c7..8c5ff59 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvg.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvg.java
@@ -68,7 +68,7 @@ public class AggAvg extends AggregatorBase
         
         static final boolean DEBUG = false ;
         
-        public AccAvg(Expr expr) { super(expr) ; }
+        public AccAvg(Expr expr) { super(expr, false) ; }
 
         @Override
         protected void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvgDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvgDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvgDistinct.java
index 126f516..5e3c538 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvgDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggAvgDistinct.java
@@ -61,7 +61,7 @@ public class AggAvgDistinct extends AggregatorBase
 
     
     // ---- Accumulator
-    class AccAvgDistinct extends AccumulatorDistinctExpr
+    class AccAvgDistinct extends AccumulatorExpr
     {
         // Non-empty case but still can be nothing because the expression may be undefined.
         private NodeValue total = noValuesToAvg ;
@@ -69,10 +69,10 @@ public class AggAvgDistinct extends AggregatorBase
         
         static final boolean DEBUG = false ;
         
-        public AccAvgDistinct(Expr expr) { super(expr) ; }
+        public AccAvgDistinct(Expr expr) { super(expr, true) ; }
 
         @Override
-        protected void accumulateDistinct(NodeValue nv, Binding binding, FunctionEnv functionEnv)
+        protected void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)
         { 
             if ( nv.isNumber() )
             {

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVar.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVar.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVar.java
index 50b2eff..5652c71 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVar.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVar.java
@@ -59,7 +59,7 @@ public class AggCountVar extends AggregatorBase
     private static class AccCountVar extends AccumulatorExpr
     {
         private long count = 0 ;
-        public AccCountVar(Expr expr)   { super(expr) ; }
+        public AccCountVar(Expr expr)   { super(expr, false) ; }
 
         @Override
         public void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVarDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVarDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVarDistinct.java
index 57df9be..9035ae8 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVarDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCountVarDistinct.java
@@ -56,21 +56,21 @@ public class AggCountVarDistinct extends AggregatorBase
     }
 
     // ---- Accumulator
-    class AccCountVarDistinct extends AccumulatorDistinctExpr
+    class AccCountVarDistinct extends AccumulatorExpr
     {
         private long count = 0 ;
 
-        public AccCountVarDistinct() { super(getExpr()) ; } 
-        // The group key part of binding will be the same for all elements of the group.
+        public AccCountVarDistinct() { super(getExpr(), true) ; } 
+
         @Override
-        public void accumulateDistinct(NodeValue nv, Binding binding, FunctionEnv functionEnv)
+        public void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)
         { count++ ; } 
 
+        // Ignore errors.
         @Override
         protected void accumulateError(Binding binding, FunctionEnv functionEnv)
         {}
 
-        // Ignore errors.
         @Override
         public NodeValue getValue()
         { return getAccValue() ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
index c8fc4a2..b4391d5 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java
@@ -141,7 +141,7 @@ public class AggGroupConcat extends AggregatorBase
         private final String separator ;
 
         public AccGroupConcat(Expr expr, String sep)
-        { super(expr) ; this.separator = sep ; }
+        { super(expr, false) ; this.separator = sep ; }
 
         @Override
         protected void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
index 3e20fcd..249a0c0 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java
@@ -86,17 +86,19 @@ public class AggGroupConcatDistinct extends AggregatorBase
     }
     
     // ---- Accumulator
-    static class AccGroupConcatDistinct extends AccumulatorDistinctExpr
+    static class AccGroupConcatDistinct extends AccumulatorExpr
     {
         private StringBuilder stringSoFar = new StringBuilder() ;
         private boolean first = true ;
         private final String separator ;
 
-        public AccGroupConcatDistinct(Expr expr, String sep)
-        { super(expr) ; this.separator = sep ; }
+        public AccGroupConcatDistinct(Expr expr, String sep) {
+            super(expr, true);
+            this.separator = sep;
+        }
 
         @Override
-        public void accumulateDistinct(NodeValue nv, Binding binding, FunctionEnv functionEnv)
+        public void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)
         {
             String str = nv.asString() ;
             if ( ! first )

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxBase.java
index 7430590..c3d6ce6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxBase.java
@@ -45,7 +45,7 @@ abstract class AggMaxBase extends AggregatorBase
         // Non-empty case but still can be nothing because the expression may be undefined.
         private NodeValue maxSoFar = null ;
 
-        public AccMax(Expr expr) { super(expr) ; }
+        public AccMax(Expr expr) { super(expr, false) ; }
 
         static final boolean DEBUG = false ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinBase.java
index 71b6e4b..a7aefbe 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinBase.java
@@ -45,7 +45,7 @@ abstract class AggMinBase extends AggregatorBase
         // Non-empty case but still can be nothing because the expression may be undefined.
         private NodeValue minSoFar = null ;
 
-        public AccMin(Expr expr) { super(expr) ; }
+        public AccMin(Expr expr) { super(expr, false) ; }
 
         static final boolean DEBUG = false ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
index e889cab..5110836 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java
@@ -61,7 +61,8 @@ public class AggSample extends AggregatorBase
         // Sample: first evaluation of the expression that is not an error.
         private NodeValue sampleSoFar = null ;
 
-        public AccSample(Expr expr) { super(expr) ; }
+        // SAMPLE is different : it treats errors as "just another value" and tries to return a defined value if any have been seen.
+        public AccSample(Expr expr) { super(expr, false) ; }
 
         @Override
         public void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv) {

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSampleDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSampleDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSampleDistinct.java
index e2623ef..b5797b6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSampleDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSampleDistinct.java
@@ -55,11 +55,11 @@ public class AggSampleDistinct extends AggregatorBase
     // ---- Accumulator
     private static class AccSampleDistict extends AccumulatorExpr
     {
-        // NOT AccumulatorDistinctExpr - avoid "distinct" overheads. 
-        // For sample, DISTINCT is a no-op - this code is picks the last element. 
+        // For sample, DISTINCT is a no-op - this code is picks the last element.
+        // it does not need the group to made made distinct.
         private NodeValue sampleSoFar = null ;
 
-        public AccSampleDistict(Expr expr) { super(expr)  ; }
+        public AccSampleDistict(Expr expr) { super(expr, false)  ; }
 
         @Override
         public void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv) {

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSum.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSum.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSum.java
index deb3e61..8f71af8 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSum.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSum.java
@@ -64,7 +64,7 @@ public class AggSum  extends AggregatorBase
         // Non-empty case but still can be nothing because the expression may be undefined.
         private NodeValue total = null ;
 
-        public AccSum(Expr expr) { super(expr) ; }
+        public AccSum(Expr expr) { super(expr, false) ; }
 
         @Override
         protected void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSumDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSumDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSumDistinct.java
index ca28de3..dc5ba24 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSumDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSumDistinct.java
@@ -59,15 +59,15 @@ public class AggSumDistinct  extends AggregatorBase
     public Node getValueEmpty()     { return NodeValue.toNode(noValuesToSum) ; } 
 
     // ---- Accumulator
-    class AccSumDistinct extends AccumulatorDistinctExpr
+    class AccSumDistinct extends AccumulatorExpr
     {
         // Non-empty case but still can be nothing because the expression may be undefined.
         private NodeValue total = null ;
 
-        public AccSumDistinct(Expr expr) { super(expr) ; }
+        public AccSumDistinct(Expr expr) { super(expr, true) ; }
 
         @Override
-        public void accumulateDistinct(NodeValue nv, Binding binding, FunctionEnv functionEnv)
+        public void accumulate(NodeValue nv, Binding binding, FunctionEnv functionEnv)
         { 
             if ( nv.isNumber() )
             {

http://git-wip-us.apache.org/repos/asf/jena/blob/375b38ef/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
index d8b51ca..9d387fc 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
@@ -252,14 +252,12 @@ public class TestAPI extends BaseTest
         assertEquals(3, count) ;
     }
     
-    
     @Test public void testReuseQueryObject2()
     {
-        String queryString = "SELECT (count(?s) AS ?c) {?s ?p ?o} GROUP BY ?s";
+        String queryString = "SELECT (count(?o) AS ?c) {?s ?p ?o} GROUP BY ?s";
         Query q = QueryFactory.create(queryString) ;
         
         try(QueryExecution qExec = QueryExecutionFactory.create(q, m)) {
-            
             ResultSet rs = qExec.execSelect() ;
             QuerySolution qs = rs.nextSolution() ;
             assertEquals(3, qs.getLiteral("c").getInt()) ;