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 2018/04/29 15:10:00 UTC
[1/5] jena git commit: JENA-1534: Test for filter-only variables in
EXISTS.
Repository: jena
Updated Branches:
refs/heads/master ad5b4455c -> 52377b8e1
JENA-1534: Test for filter-only variables in EXISTS.
Tighten the classifer, assumes proper use of (sequence)
Relates to JENA-1167, JENA-1280.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1bd5fdcf
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1bd5fdcf
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1bd5fdcf
Branch: refs/heads/master
Commit: 1bd5fdcf3ac0694e0bbabd2f8e63deb92d3c2bff
Parents: 4bf5e3c
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Apr 27 19:12:37 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Apr 27 19:15:04 2018 +0100
----------------------------------------------------------------------
.../jena/sparql/engine/main/JoinClassifier.java | 19 +++++++++----
.../jena/sparql/engine/main/VarFinder.java | 12 ++++-----
.../jena/sparql/algebra/TestClassify.java | 28 +++++++++++++++-----
.../jena/sparql/algebra/TestTransformQuads.java | 14 ++++++----
.../sparql/algebra/optimize/TestOptimizer.java | 2 +-
5 files changed, 51 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/1bd5fdcf/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
index 3f3416c..58b1773 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
@@ -111,11 +111,20 @@ public class JoinClassifier
// Step 1 : If there are any variables in the LHS that are filter-only or filter-before define,
// we can't do anything.
if ( ! vRightFilterOnly.isEmpty() ) {
- // A tigher condition is to see of any of the getFilterOnly are possible from the
- // left. If not, then we can still use a sequence.
- // But an outer sequence may push arbitrary here so play safe on the argument
- // this is a relative uncommon case.
- return false ;
+ if ( SetUtils.intersectionP(vLeftFixed, vRightFilterOnly) ||
+ SetUtils.intersectionP(vLeftOpt, vRightFilterOnly) ) {
+ if ( print )
+ System.err.println("vRightFilterOnly has variables used in the left");
+ return false;
+ }
+ // JENA-1534 fixes this.
+// // The above is the tigher condition to see of any of the getFilterOnly are
+// // possible from the left. If not, then we can still use a sequence.
+// // An outer sequence should not push arbitrary variables here but ... play
+// // safe on the argument this is a relative uncommon case.
+// if ( print )
+// System.err.println("vRightFilterOnly.not isEmpty");
+// return false;
}
// Step 2 : remove any variable definitely fixed from the floating sets
http://git-wip-us.apache.org/repos/asf/jena/blob/1bd5fdcf/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
index 8db255e..54533e0 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/VarFinder.java
@@ -89,11 +89,11 @@ public class VarFinder
}
public void print(PrintStream out) {
- out.printf(" Filter: %s\n", getFilter()) ;
- out.printf(" Filter2: %s\n", getFilterOnly()) ;
- out.printf(" Fixed : %s\n", getFixed()) ;
- out.printf(" Opt: %s\n", getOpt()) ;
- out.printf(" Assign: %s\n", getAssign()) ;
+ out.printf(" Filter: %s\n", getFilter()) ;
+ out.printf(" Filter only: %s\n", getFilterOnly()) ;
+ out.printf(" Fixed : %s\n", getFixed()) ;
+ out.printf(" Opt: %s\n", getOpt()) ;
+ out.printf(" Assign: %s\n", getAssign()) ;
}
private static class VarUsageVisitor
@@ -258,7 +258,7 @@ public class VarFinder
// additionalDefines - set of variables which are defined is the filter is executed.
private void processExpr(ExprList exprs, Set<Var> additionalDefines) {
- Set<Var> vars = ExprVars.getNonOpVarsMentioned(exprs);
+ Set<Var> vars = ExprVars.getVarsMentioned(exprs);
filterMentions.addAll(vars) ;
for ( Var v : vars ) {
if ( ! defines.contains(v) && (additionalDefines == null || ! additionalDefines.contains(v) ) )
http://git-wip-us.apache.org/repos/asf/jena/blob/1bd5fdcf/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
index ea20e92..05db391 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestClassify.java
@@ -40,11 +40,9 @@ public class TestClassify extends BaseTest
{ classifyJ("{?s :p :o . { ?s :p ?o FILTER(?o) } }", true) ; }
// JENA-1167
- // This actually safe in this case but as general component.
- // the JoinClassifier is not clever enough to know that ?o is completely
- // unbound. It may be bound by whatever feeds into the potential sequence.
+ // This safe; ?o is not an input to the filter block.
@Test public void testClassify_Join_04()
- { classifyJ("{?s :p :o . { ?s :p :o FILTER(?o) } }", false) ; }
+ { classifyJ("{?s :p :o . { ?s :p :o FILTER(?o) } }", true) ; }
@Test public void testClassify_Join_05()
{ classifyJ("{?s :p :o . { ?x :p :o FILTER(?s) } }", false) ; }
@@ -82,7 +80,7 @@ public class TestClassify extends BaseTest
// See testClassify_Join_04()
@Test public void testClassify_Join_14()
- { classifyJ("{?s :p :o . { OPTIONAL { :s :p :o FILTER(?o) } } }", false) ; }
+ { classifyJ("{?s :p :o . { OPTIONAL { :s :p :o FILTER(?o) } } }", true) ; }
@Test public void testClassify_Join_14a()
{ classifyJ("{?s :p :o . { OPTIONAL { :s :p ?o FILTER(?o) } } }", true) ; }
@@ -104,9 +102,8 @@ public class TestClassify extends BaseTest
{ classifyJ("{ ?x ?y ?z {SELECT ?s { ?s ?p ?o} } }", true) ; }
// JENA-1167 : Use of a filter variable not in the LHS
- // Could be safe but the optimizer is not spotting it.
@Test public void testClassify_Join_32()
- { classifyJ("{ GRAPH ?g { ?x ?y ?z } { FILTER (?a) } }", false) ; }
+ { classifyJ("{ GRAPH ?g { ?x ?y ?z } { FILTER (?a) } }", true) ; }
// Use of a filter variable from the LHS
@Test public void testClassify_Join_33()
@@ -150,6 +147,18 @@ public class TestClassify extends BaseTest
TestClassify.classifyJ(x1, true);
}
+ // JENA-1167, JENA-1280, JENA-1534
+ @Test public void testClassify_Join_52() {
+ String x1 = "{ ?s ?p ?V0 GRAPH ?g { ?s1 ?p ?o1 FILTER EXISTS { _:b0 ?p ?V1 } } }";
+ TestClassify.classifyJ(x1, true);
+ }
+
+ // JENA-1167, JENA-1280, JENA-1534
+ @Test public void testClassify_Join_53() {
+ String x1 = "{ ?s ?p ?V GRAPH ?g { ?s1 ?p ?o1 FILTER EXISTS { _:b0 ?p ?V } } }";
+ TestClassify.classifyJ(x1, false);
+ }
+
public static void classifyJ(String pattern, boolean expected)
{
String qs1 = "PREFIX : <http://example/>\n" ;
@@ -160,6 +169,11 @@ public class TestClassify extends BaseTest
fail("Not a join: "+pattern) ;
boolean nonLinear = JoinClassifier.isLinear((OpJoin)op) ;
+ if ( nonLinear != expected ) {
+ System.out.println(query);
+ System.out.println(op);
+ }
+
assertEquals("Join: "+pattern, expected, nonLinear) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1bd5fdcf/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTransformQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTransformQuads.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTransformQuads.java
index 019b800..403eec9 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTransformQuads.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTransformQuads.java
@@ -75,10 +75,15 @@ public class TestTransformQuads extends BaseTest
// ?g is unbound in the filter.
@Test public void quads20() { test ("{ GRAPH ?g { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 FILTER (str(?g) = 'graphURI') } } }",
"(assign ((?g ?*g0))" +
- " (join" +
- " (quadpattern (quad ?*g0 ?s ?p ?o))" +
- " (filter (= (str ?g) 'graphURI')" +
- " (quadpattern (quad ?g1 ?s1 ?p1 ?o1)))))"
+ " (sequence" +
+ " (quadpattern (quad ?*g0 ?s ?p ?o))" +
+ " (filter (= (str ?g) 'graphURI')" +
+ " (quadpattern (quad ?g1 ?s1 ?p1 ?o1)))))"
+// If untransformed.
+// " (join" +
+// " (quadpattern (quad ?*g0 ?s ?p ?o))" +
+// " (filter (= (str ?g) 'graphURI')" +
+// " (quadpattern (quad ?g1 ?s1 ?p1 ?o1)))))"
) ; }
@Test public void quads21() { test ("{ GRAPH ?g { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 FILTER (str(?g1) = 'graphURI') } } }",
@@ -196,7 +201,6 @@ public class TestTransformQuads extends BaseTest
if ( optimize )
op = Algebra.optimize(op) ;
op = Algebra.toQuadForm(op) ;
-
Op op2 = SSE.parseOp(StrUtils.strjoinNL(strExpected)) ;
assertEquals(op2, op) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1bd5fdcf/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
index 0f6d04f..75b98e1 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
@@ -450,7 +450,7 @@ public class TestOptimizer extends AbstractTestTransform
, " }"
, "}"
);
- // Fro reference, which is ...
+ // For reference, which is ...
String x = StrUtils.strjoinNL(
"(join"
," (bgp (triple ?s ?p ?o))"
[3/5] jena git commit: Fix javadoc
Posted by an...@apache.org.
Fix javadoc
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/dbb0bab6
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/dbb0bab6
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/dbb0bab6
Branch: refs/heads/master
Commit: dbb0bab66e34095e02ab03793153badbc2804317
Parents: 1bd5fdc
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Apr 28 10:09:01 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Apr 28 10:09:01 2018 +0100
----------------------------------------------------------------------
.../main/java/org/apache/jena/sparql/algebra/op/OpSequence.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/dbb0bab6/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpSequence.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpSequence.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpSequence.java
index 4dcc1f4..7046881 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpSequence.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpSequence.java
@@ -26,7 +26,7 @@ import org.apache.jena.sparql.algebra.Transform ;
import org.apache.jena.sparql.sse.Tags ;
import org.apache.jena.sparql.util.NodeIsomorphismMap ;
-/** A "sequence" is a join-like operation where it is know that the
+/** A "sequence" is a join-like operation where it is known that
* the output of one step can be fed into the input of the next
* (that is, no scoping issues arise). */
[5/5] jena git commit: JENA-1535: Merge commit 'refs/pull/410/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1535: Merge commit 'refs/pull/410/head' of https://github.com/apache/jena
This closes #410.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/52377b8e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/52377b8e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/52377b8e
Branch: refs/heads/master
Commit: 52377b8e1184c616b3fde00afe22c90d16238f7f
Parents: f5d7ffd 3632029
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Apr 29 16:04:08 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Apr 29 16:04:08 2018 +0100
----------------------------------------------------------------------
jena-cmds/src/main/java/riotcmd/CmdLangParse.java | 12 +++++++++---
jena-cmds/src/main/java/riotcmd/riot.java | 3 ---
2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
[2/5] jena git commit: JENA-1535: Parse a specified language if given
--syntax.
Posted by an...@apache.org.
JENA-1535: Parse a specified language if given --syntax.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/36320298
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/36320298
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/36320298
Branch: refs/heads/master
Commit: 36320298fdb38a9db6674ba8604f679009326b13
Parents: ad5b445
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Apr 27 23:27:38 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Apr 27 23:49:56 2018 +0100
----------------------------------------------------------------------
jena-cmds/src/main/java/riotcmd/CmdLangParse.java | 12 +++++++++---
jena-cmds/src/main/java/riotcmd/riot.java | 3 ---
2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/36320298/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java b/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
index 10d1d57..c14f220 100644
--- a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
+++ b/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
@@ -218,8 +218,14 @@ public abstract class CmdLangParse extends CmdGeneral
RDFParserBuilder builder = RDFParser.create();
if ( baseURI != null )
builder.base(baseURI);
- Lang lang = selectLang(null, null, RDFLanguages.NQUADS) ;
- builder.lang(lang);
+ if ( modLangParse.getLang() != null )
+ // Always use the command line specified syntax.
+ builder.forceLang(modLangParse.getLang());
+ else {
+ // Otherwise, use the command selected langauge, with N-Quads as the ultimate fallback.
+ Lang lang = selectLang(null, null, RDFLanguages.NQUADS) ;
+ builder.lang(RDFLanguages.NQUADS);
+ }
// Set the source.
if ( filename.equals("-") ) {
@@ -234,7 +240,7 @@ public abstract class CmdLangParse extends CmdGeneral
return parseRIOT(builder, filename);
}
- protected abstract Lang selectLang(String filename, ContentType contentType, Lang dftLang ) ;
+ protected abstract Lang selectLang(String filename, ContentType contentType, Lang dftLang) ;
protected ParseRecord parseRIOT(RDFParserBuilder builder, /*Info for the ProcessOutcome*/ String filename) {
boolean checking = true ;
http://git-wip-us.apache.org/repos/asf/jena/blob/36320298/jena-cmds/src/main/java/riotcmd/riot.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/riotcmd/riot.java b/jena-cmds/src/main/java/riotcmd/riot.java
index 4ef6df8..d332d17 100644
--- a/jena-cmds/src/main/java/riotcmd/riot.java
+++ b/jena-cmds/src/main/java/riotcmd/riot.java
@@ -42,9 +42,6 @@ public class riot extends CmdLangParse
@Override
protected Lang selectLang(String filename, ContentType contentType, Lang dftLang)
{
- if ( modLangParse.getLang() != null )
- return modLangParse.getLang() ;
-
if ( contentType != null && ! WebContent.matchContentType(WebContent.ctTextPlain, contentType) )
return RDFLanguages.contentTypeToLang(contentType) ;
[4/5] jena git commit: JENA-1543: Merge commit 'refs/pull/409/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1543: Merge commit 'refs/pull/409/head' of https://github.com/apache/jena
This closes #409.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f5d7ffd2
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f5d7ffd2
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f5d7ffd2
Branch: refs/heads/master
Commit: f5d7ffd27b9df66e8d14ae41afe5d65a8edee3fc
Parents: ad5b445 dbb0bab
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Apr 29 16:03:20 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Apr 29 16:03:20 2018 +0100
----------------------------------------------------------------------
.../jena/sparql/algebra/op/OpSequence.java | 2 +-
.../jena/sparql/engine/main/JoinClassifier.java | 19 +++++++++----
.../jena/sparql/engine/main/VarFinder.java | 12 ++++-----
.../jena/sparql/algebra/TestClassify.java | 28 +++++++++++++++-----
.../jena/sparql/algebra/TestTransformQuads.java | 14 ++++++----
.../sparql/algebra/optimize/TestOptimizer.java | 2 +-
6 files changed, 52 insertions(+), 25 deletions(-)
----------------------------------------------------------------------