Repository: marmotta Updated Branches: refs/heads/develop 4a33f414d -> 6d81ef534
cover the case of UNION with BIND (MARMOTTA-538) Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/6d81ef53 Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/6d81ef53 Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/6d81ef53 Branch: refs/heads/develop Commit: 6d81ef5345ff1f47e19d939868d8a5bfbc4d1329 Parents: 4a33f41 Author: Sebastian Schaffert <[email protected]> Authored: Wed Sep 17 18:24:38 2014 +0200 Committer: Sebastian Schaffert <[email protected]> Committed: Wed Sep 17 18:24:38 2014 +0200 ---------------------------------------------------------------------- .../sparql/builder/SQLAbstractSubquery.java | 8 ------ .../kiwi/sparql/builder/SQLBuilder.java | 2 +- .../kiwi/sparql/builder/SQLSubQuery.java | 11 --------- .../marmotta/kiwi/sparql/builder/SQLUnion.java | 15 ----------- .../kiwi/sparql/test/KiWiSparqlJoinTest.java | 9 ++++++- .../marmotta/kiwi/sparql/test/query28.sparql | 26 ++++++++++++++++++++ 6 files changed, 35 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/6d81ef53/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLAbstractSubquery.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLAbstractSubquery.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLAbstractSubquery.java index e0c6e49..f2dd814 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLAbstractSubquery.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLAbstractSubquery.java @@ -17,8 +17,6 @@ package org.apache.marmotta.kiwi.sparql.builder; -import org.openrdf.query.algebra.ValueExpr; - import java.util.Set; /** @@ -44,10 +42,4 @@ public abstract class SQLAbstractSubquery extends SQLClause { */ public abstract Set<SQLVariable> getQueryVariables(); - /** - * Return the projection type of an expression in this subquery. Needed for propagation up to the parent. - * @param expr - * @return - */ - protected abstract ProjectionType getProjectionType(ValueExpr expr); } http://git-wip-us.apache.org/repos/asf/marmotta/blob/6d81ef53/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java index 804fda9..c90b6da 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java @@ -281,7 +281,7 @@ public class SQLBuilder { // select those variables that are really projected and not only needed in a grouping construct if(new SQLProjectionFinder(query,sq_v.getSparqlName()).found) { - sv.setProjectionType(ProjectionType.NODE); // TODO: might need other types as well in case a value is created in children + sv.setProjectionType(sq_v.getProjectionType()); } addVariable(sv); http://git-wip-us.apache.org/repos/asf/marmotta/blob/6d81ef53/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java index 1881122..b6c7215 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java @@ -22,7 +22,6 @@ import org.apache.marmotta.kiwi.sparql.exception.UnsatisfiableQueryException; import org.openrdf.query.BindingSet; import org.openrdf.query.Dataset; import org.openrdf.query.algebra.SubQueryValueOperator; -import org.openrdf.query.algebra.ValueExpr; import java.util.HashSet; import java.util.Set; @@ -78,14 +77,4 @@ public class SQLSubQuery extends SQLAbstractSubquery { return fromClause.toString(); } - /** - * Return the projection type of an expression in this subquery. Needed for propagation up to the parent. - * - * @param expr - * @return - */ - @Override - protected ProjectionType getProjectionType(ValueExpr expr) { - return builder.getProjectionType(expr); - } } http://git-wip-us.apache.org/repos/asf/marmotta/blob/6d81ef53/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLUnion.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLUnion.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLUnion.java index c681216..bb93260 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLUnion.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLUnion.java @@ -22,7 +22,6 @@ import org.apache.marmotta.kiwi.sparql.exception.UnsatisfiableQueryException; import org.openrdf.query.BindingSet; import org.openrdf.query.Dataset; import org.openrdf.query.algebra.Union; -import org.openrdf.query.algebra.ValueExpr; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -126,20 +125,6 @@ public class SQLUnion extends SQLAbstractSubquery { } - /** - * Return the projection type of an expression in this subquery. Needed for propagation up to the parent. - * - * @param expr - * @return - */ - @Override - protected ProjectionType getProjectionType(ValueExpr expr) { - ProjectionType r = left.getProjectionType(expr); - if(r == ProjectionType.STRING) { - r = right.getProjectionType(expr); - } - return r; - } } http://git-wip-us.apache.org/repos/asf/marmotta/blob/6d81ef53/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java index 26291b8..1ac3343 100644 --- a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java +++ b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java @@ -290,6 +290,13 @@ public class KiWiSparqlJoinTest { testQuery("query26.sparql"); } + // union with bind + @Test + public void testQuery28() throws Exception { + testQuery("query28.sparql"); + } + + // INSERT/UPDATE @Test public void testUpdate01() throws Exception { @@ -382,7 +389,7 @@ public class KiWiSparqlJoinTest { Assert.assertTrue(result1.hasNext()); - compareResults(result1,result2); + compareResults(result1, result2); } catch(RepositoryException ex) { con1.rollback(); http://git-wip-us.apache.org/repos/asf/marmotta/blob/6d81ef53/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/query28.sparql ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/query28.sparql b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/query28.sparql new file mode 100644 index 0000000..6e68332 --- /dev/null +++ b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/query28.sparql @@ -0,0 +1,26 @@ +# +# 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. +# +PREFIX foaf: <http://xmlns.com/foaf/0.1/> + +SELECT ?p ?name ?likes ?fname ?isperson WHERE { + ?p foaf:name ?name . + { ?p foaf:knows ?likes . ?likes foaf:name ?fname bind(true as ?isperson) } + UNION + { ?p foaf:interest ?likes bind(false as ?isperson)} + +} \ No newline at end of file
