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 2015/10/28 19:25:40 UTC

jena git commit: JENA-1056: Fix ElementUnion.

Repository: jena
Updated Branches:
  refs/heads/master ab1bfd23e -> fdeced983


JENA-1056: Fix ElementUnion.

Make ElementTransformCleanGroupOfOne generate syntax compatible output.

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

Branch: refs/heads/master
Commit: fdeced9837b199e37575108974f5a097b402239c
Parents: ab1bfd2
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Oct 28 18:25:26 2015 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Oct 28 18:25:26 2015 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/syntax/ElementUnion.java |  2 +-
 .../ElementTransformCleanGroupsOfOne.java       | 21 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/fdeced98/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementUnion.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementUnion.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementUnion.java
index a423682..f5a9c8f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementUnion.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementUnion.java
@@ -64,7 +64,7 @@ public class ElementUnion extends Element
             Element e1 = getElements().get(i) ;
             Element e2 = eu2.getElements().get(i) ;
             if ( ! e1.equalTo(e2, isoMap) )
-                return true ;
+                return false ;
         }
         return true ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/fdeced98/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformCleanGroupsOfOne.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformCleanGroupsOfOne.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformCleanGroupsOfOne.java
index 0757c22..bc14ee3 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformCleanGroupsOfOne.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformCleanGroupsOfOne.java
@@ -27,7 +27,7 @@ import org.apache.jena.sparql.syntax.* ;
  *  They do matter for <code>OPTIONAL { { ?s ?p ?o FILTER(?foo) } }</code>.
  */
 public class ElementTransformCleanGroupsOfOne extends ElementTransformCopyBase {
-    // Improvements: scan group elements to work out for non-reducable adjacents.
+    // Improvements: scan group elements to work out for non-reduceable adjacents.
     // These ones may clash with an adjeact one in the group above.
     // ElementTransformCleanGroupsOfOne -> ElementTransformCleanGroups
     
@@ -45,6 +45,25 @@ public class ElementTransformCleanGroupsOfOne extends ElementTransformCopyBase {
         return elt ;
     }
 
+    // The ElementGroup transformation can be too strong.
+    // Ensure unions have ElementGroup (for compatibility with parsing;
+    // it is safe to have non-ElementGroup in a ElementUnion but it is
+    // a different query syntax tree).
+    @Override
+    public Element transform(ElementUnion eltUnion, List<Element> elts) {
+        ElementUnion el2 = new ElementUnion() ;
+        for ( int i = 0 ; i < elts.size() ; i++ ) {
+            Element el = elts.get(i) ;
+            if ( ! ( el instanceof ElementGroup ) ) {
+                ElementGroup elg = new ElementGroup() ;
+                elg.addElement(el);
+                el = elg ;
+            }
+            el2.addElement(el); 
+        }
+        return el2 ;
+    }
+    
     // Special case: If Optional, and the original had a {{}} protected filter, keep {{}}
     // transform/ElementGroup has already run so undo if necessary.
     @Override