diff --git a/jena-arq/src/main/java/org/apache/jena/query/Query.java b/jena-arq/src/main/java/org/apache/jena/query/Query.java
index 933b85b..d9b4029 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/Query.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/Query.java
@@ -127,7 +127,10 @@
     public Query(Prologue prologue)
     {
         this() ;
-        usePrologueFrom(prologue) ;
+        Prologue p2 = prologue.copy();
+        prefixMap = p2.getPrefixMapping();
+        seenBaseURI = false ;
+        resolver = p2.getResolver();
     }
 
     // Allocate variables that are unique to this query.
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java
index 7f80b76..2f405e4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java
@@ -34,7 +34,7 @@
     
     @Override
     public NodeValue evalSpecial(Binding binding, FunctionEnv env) { 
-        // See alse ExprLib.evalOrNull.
+        // See also ExprLib.evalOrNull.
         // This code predates that; it handles exceptions 
         // slightly differently (VariableNotBoundException not
         // a general ExprEvalException).
@@ -50,7 +50,7 @@
             return NodeValue.booleanReturn(binding.contains(expr.asVar())) ; 
         
         // General expression. This case can't be written in SPARQL
-        // but we keep the code general in case some optimziation rewrite
+        // but we keep the code general in case some optimization rewrite
         // or algebra expression uses the generalized feature.
 		try {
 			expr.eval(binding, env) ;
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/SPARQLParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/SPARQLParserBase.java
index 47ef0ad..13f62fb 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/SPARQLParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/SPARQLParserBase.java
@@ -226,9 +226,11 @@
     
     protected Query newSubQuery(Prologue progloue)
     {
-        return new Query(getPrologue());
+        // The parser uses the same prologue throughout the parsing process.
+        // For printing purposes, the subquery must not have a prologue of its own.
+        return new Query();
     }
-    
+
     protected void popQuery()
     {
         query = stack.pop();
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterElement.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterElement.java
index ac68e43..4715d73 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterElement.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterElement.java
@@ -433,7 +433,7 @@
         out.incIndent(INDENT);
         Query q = el.getQuery();
 
-        // Serialize with respect to the existing context
+        // Serialize with respect to the existing context.
         QuerySerializerFactory factory = SerializerRegistry.get().getQuerySerializerFactory(Syntax.syntaxARQ);
         QueryVisitor serializer = factory.create(Syntax.syntaxARQ, context, out);
         q.visit(serializer);
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
index 6afb894..bc97ac6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
@@ -79,7 +79,7 @@
         if (q2.getOrderBy() != null) {
             mutateSortConditions(q2.getOrderBy(), exprTransform);
         }
-        
+
         Element el = q2.getQueryPattern();
 
         // Explicit null check to prevent warning in ElementTransformer
@@ -184,7 +184,6 @@
         return varExprList2;
     }
 
-
     static class QueryShallowCopy implements QueryVisitor {
         final Query newQuery = new Query();
 
@@ -334,5 +333,4 @@
         Query q2 = copy.newQuery;
         return q2;
     }
-
 }
diff --git a/jena-arq/src/test/java/org/apache/jena/query/TestQueryCloningEssentials.java b/jena-arq/src/test/java/org/apache/jena/query/TestQueryCloningEssentials.java
index 07d6bb5..b028613 100644
--- a/jena-arq/src/test/java/org/apache/jena/query/TestQueryCloningEssentials.java
+++ b/jena-arq/src/test/java/org/apache/jena/query/TestQueryCloningEssentials.java
@@ -46,15 +46,20 @@
     /**
      * Assert whether cloning using the old print-parse approach
      * yields the same result as the one using the syntax transform
-     * machinery
+     * machinery.
      *
      * @param query
      */
     public static Query checkedClone(Query query) {
         Query expected = slowClone(query);
         Query actual = query.cloneQuery();
-
+        Assert.assertEquals(query, actual);
         Assert.assertEquals(expected, actual);
+
+        // Check that the cloned query is OK. 
+        Query again = slowClone(actual);
+        Assert.assertEquals(query, again);
+        
         return actual;
     }
 
