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