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 2012/02/16 22:21:40 UTC
svn commit: r1245179 - in /incubator/jena/Jena2/ARQ/trunk:
src/main/java/com/hp/hpl/jena/sparql/core/
src/main/java/com/hp/hpl/jena/sparql/engine/iterator/ testing/ARQ/Distinct/
Author: andy
Date: Thu Feb 16 21:21:39 2012
New Revision: 1245179
URL: http://svn.apache.org/viewvc?rev=1245179&view=rev
Log:
JENA-211 : DISTINCT * does not see hidden variables.
Added:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctMem.java
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/data-multipath.ttl
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.srj
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.rq
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.srj
Modified:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Var.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinct.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctReduced.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterReduced.java
incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/manifest.ttl
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Var.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Var.java?rev=1245179&r1=1245178&r2=1245179&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Var.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Var.java Thu Feb 16 21:21:39 2012
@@ -39,7 +39,7 @@ public class Var extends Node_Variable
// Legal SPARQL variable name but note it must be exactly this
// object, not just the same name, to be anonymous.
- public static Var ANON = new Var("_") ;
+ public static Var ANON = new Var("?_") ;
public static Var alloc(String varName)
{
@@ -144,6 +144,12 @@ public class Var extends Node_Variable
return false ;
}
+ public static boolean isRenamedVar(Node node)
+ { return node.isVariable() && isRenamedVar(node.getName()) ; }
+
+ public static boolean isRenamedVar(String x)
+ { return x.startsWith(ARQConstants.allocVarScopeHiding) ; }
+
public static boolean isNamedVar(Node node)
{ return node.isVariable() && isNamedVarName(node.getName()) ; }
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinct.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinct.java?rev=1245179&r1=1245178&r2=1245179&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinct.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinct.java Thu Feb 16 21:21:39 2012
@@ -20,14 +20,11 @@ package com.hp.hpl.jena.sparql.engine.it
import java.util.ArrayList ;
import java.util.Comparator ;
-import java.util.Iterator ;
-import java.util.NoSuchElementException ;
import org.openjena.atlas.data.BagFactory ;
import org.openjena.atlas.data.DistinctDataNet ;
import org.openjena.atlas.data.ThresholdPolicy ;
import org.openjena.atlas.data.ThresholdPolicyFactory ;
-import org.openjena.atlas.iterator.Iter ;
import org.openjena.riot.SerializationFactoryFinder ;
import com.hp.hpl.jena.query.SortCondition ;
@@ -35,7 +32,6 @@ import com.hp.hpl.jena.sparql.engine.Exe
import com.hp.hpl.jena.sparql.engine.QueryIterator ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.engine.binding.BindingComparator ;
-import com.hp.hpl.jena.util.iterator.NiceIterator ;
/**
* A QueryIterator that suppresses items already seen. This will stream results
@@ -44,97 +40,29 @@ import com.hp.hpl.jena.util.iterator.Nic
*
* @see DistinctDataNet
*/
-public class QueryIterDistinct extends QueryIter
+public class QueryIterDistinct extends QueryIterDistinctReduced
{
- private final QueryIterator inputIterator ;
final DistinctDataNet<Binding> db ;
- boolean initialized = false ;
- boolean finished = false ;
- Binding slot ;
- Iterator<Binding> dbIter ;
-
public QueryIterDistinct(QueryIterator qIter, ExecutionContext context)
{
- super(context) ;
- this.inputIterator = qIter ;
-
+ super(qIter, context) ;
ThresholdPolicy<Binding> policy = ThresholdPolicyFactory.policyFromContext(context.getContext()) ;
Comparator<Binding> comparator = new BindingComparator(new ArrayList<SortCondition>(), context) ;
this.db = BagFactory.newDistinctNet(policy, SerializationFactoryFinder.bindingSerializationFactory(), comparator) ;
}
-
- @Override
- public void requestCancel()
- {
- inputIterator.cancel() ;
- }
- private void init()
- {
- if ( !initialized )
- {
- fill() ;
- initialized = true ;
- }
- }
-
- private void fill()
- {
- while ( inputIterator.hasNext() )
- {
- slot = inputIterator.next() ;
- if ( db.netAdd(slot) )
- {
- return ;
- }
- }
- if ( null == dbIter )
- {
- dbIter = db.netIterator() ;
- }
- if ( dbIter.hasNext() )
- {
- slot = dbIter.next() ;
- return ;
- }
- close() ;
- }
-
@Override
- protected boolean hasNextBinding()
- {
- init() ;
- return !finished ;
- }
+ protected void closeSubIterator()
+ { db.close() ; }
@Override
- protected Binding moveToNextBinding()
- {
- if ( finished )
- throw new NoSuchElementException() ;
- init() ;
- Binding toReturn = slot ;
- fill() ;
- return toReturn ;
- }
+ protected void requestSubCancel()
+ { db.close() ; }
@Override
- protected void closeIterator()
+ protected boolean isFreshSighting(Binding binding)
{
- if ( inputIterator != null )
- {
- NiceIterator.close(inputIterator) ;
- // In case we wrapped, for example, another QueryIterator.
- Iter.close(inputIterator) ;
- }
- if ( dbIter != null )
- {
- Iter.close(dbIter) ;
- }
- finished = true ;
- slot = null ;
- dbIter = null ;
- db.close() ;
+ return db.netAdd(binding) ;
}
}
Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctMem.java?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctMem.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctMem.java Thu Feb 16 21:21:39 2012
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+package com.hp.hpl.jena.sparql.engine.iterator ;
+
+import java.util.HashSet ;
+import java.util.Set ;
+
+import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
+import com.hp.hpl.jena.sparql.engine.QueryIterator ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
+
+/** Memory limited QueryIterDistinct */
+public class QueryIterDistinctMem extends QueryIterDistinctReduced
+{
+ private Set<Binding> seen = new HashSet<Binding>() ;
+
+ public QueryIterDistinctMem(QueryIterator iter, ExecutionContext context)
+ {
+ super(iter, context) ;
+ }
+
+ @Override
+ protected void closeSubIterator()
+ {
+ seen = null ;
+ super.closeSubIterator() ;
+ }
+
+ @Override
+ protected boolean isFreshSighting(Binding binding)
+ {
+ return seen.contains(binding) ;
+ }
+}
\ No newline at end of file
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctReduced.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctReduced.java?rev=1245179&r1=1245178&r2=1245179&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctReduced.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterDistinctReduced.java Thu Feb 16 21:21:39 2012
@@ -21,12 +21,13 @@ package com.hp.hpl.jena.sparql.engine.it
import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
import com.hp.hpl.jena.sparql.engine.QueryIterator ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
+import com.hp.hpl.jena.sparql.engine.binding.BindingProjectNamed ;
/** Implementation skeleton for DISTINCT and REDUCED. */
public abstract class QueryIterDistinctReduced extends QueryIter1
{
- Binding slot = null ; // ready to go.
+ private Binding slot = null ; // ready to go.
public QueryIterDistinctReduced(QueryIterator iter, ExecutionContext context)
{ super(iter, context) ; }
@@ -36,10 +37,10 @@ public abstract class QueryIterDistinctR
protected void closeSubIterator()
{ slot = null ; }
- // Subclasses will want to implement this as well.
+ // Subclasses may want to implement this as well.
@Override
protected void requestSubCancel()
- { }
+ { closeSubIterator() ; }
@Override
final
@@ -53,10 +54,12 @@ public abstract class QueryIterDistinctR
for ( ; getInput().hasNext() ; )
{
Binding b = getInput().nextBinding() ;
- if ( ! isDuplicate(b) )
+ // Hide unnamed and internal variables.
+ // Don't need to worry about rename scope vars
+ // (they are projected away in sub-SELECT ?var { ... }
+ b = new BindingProjectNamed(b) ;
+ if ( isFreshSighting(b) )
{
- // new - remember and return
- remember(b) ;
slot = b ;
return true ;
}
@@ -73,7 +76,5 @@ public abstract class QueryIterDistinctR
return r ;
}
- protected abstract boolean isDuplicate(Binding binding) ;
-
- protected abstract void remember(Binding binding) ;
+ protected abstract boolean isFreshSighting(Binding binding) ;
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterReduced.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterReduced.java?rev=1245179&r1=1245178&r2=1245179&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterReduced.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIterReduced.java Thu Feb 16 21:21:39 2012
@@ -41,17 +41,13 @@ public class QueryIterReduced extends Qu
}
@Override
- protected boolean isDuplicate(Binding b)
- {
- return window.contains(b) ;
- }
-
- @Override
- protected void remember(Binding b)
+ protected boolean isFreshSighting(Binding b)
{
+ if ( window.contains(b) )
+ return false ;
if ( window.size() >= N )
window.remove(window.size()-1) ;
window.add(0, b) ;
+ return true ;
}
-
}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/data-multipath.ttl
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/data-multipath.ttl?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/data-multipath.ttl (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/data-multipath.ttl Thu Feb 16 21:21:39 2012
@@ -0,0 +1,9 @@
+@prefix : <http://example/> .
+
+:a :p :x1 .
+:a :p :x2 .
+:a :p :x3 .
+
+:x1 :p :b .
+:x2 :p :b .
+:x3 :p :b .
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT DISTINCT * { :a :p [ :p ?x ] }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-1.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,12 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT DISTINCT * { :a :p{2} ?x }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-2.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,12 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT DISTINCT * { :a :p/:p ?x }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/distinct-multi-3.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,12 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Modified: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/manifest.ttl
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/manifest.ttl?rev=1245179&r1=1245178&r2=1245179&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/manifest.ttl (original)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/manifest.ttl Thu Feb 16 21:21:39 2012
@@ -33,6 +33,16 @@
<#distinct-4>
<#no-distinct-9>
<#distinct-9>
+
+ <#no-distinct-multi-1>
+ <#no-distinct-multi-2>
+ <#no-distinct-multi-3>
+ <#distinct-multi-1>
+ <#distinct-multi-2>
+ <#distinct-multi-3>
+ <#reduced-multi-1>
+ <#reduced-multi-2>
+ <#reduced-multi-3>
) .
@@ -117,3 +127,84 @@
[ qt:query <distinct-1.rq> ;
qt:data <data-num.ttl> , <data-str.ttl> , <data-node.ttl> ] ;
mf:result <distinct-all.srx> .
+
+<#distinct-path-1>
+ mf:name "Multipath / bnode variables" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <distinct-all.srx> .
+
+<#no-distinct-multi-1>
+ mf:name "Multipath / bnode variables / not distinct" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <no-distinct-multi-1.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <no-distinct-multi-1.srj> .
+
+<#no-distinct-multi-2>
+ mf:name "Multipath / path{2} / not distinct" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <no-distinct-multi-2.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <no-distinct-multi-2.srj> .
+
+
+<#no-distinct-multi-3>
+ mf:name "Multipath / sequence / not distinct" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <no-distinct-multi-3.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <no-distinct-multi-3.srj> .
+
+<#distinct-multi-1>
+ mf:name "Multipath / bnode variables / distinct" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <distinct-multi-1.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <distinct-multi-1.srj> .
+
+<#distinct-multi-2>
+ mf:name "Multipath / path{2} / distinct" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <distinct-multi-2.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <distinct-multi-2.srj> .
+
+<#distinct-multi-3>
+ mf:name "Multipath / seq path / distinct" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <distinct-multi-3.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <distinct-multi-3.srj> .
+
+<#reduced-multi-1>
+ mf:name "Multipath / bnode variables / reduced" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <reduced-multi-1.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <reduced-multi-1.srj> .
+
+<#reduced-multi-2>
+ mf:name "Multipath / path{2} / reduced" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <reduced-multi-2.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <reduced-multi-2.srj> .
+
+<#reduced-multi-3>
+ mf:name "Multipath / seq path / reduced" ;
+ rdf:type mfx:TestQuery ;
+ mf:action
+ [ qt:query <reduced-multi-3.rq> ;
+ qt:data <data-multipath.ttl> ] ;
+ mf:result <reduced-multi-3.srj> .
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT * { :a :p [ :p ?x ] }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-1.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,18 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ } ,
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ } ,
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT * { :a :p{2} ?x }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-2.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,18 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ } ,
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ } ,
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT * { :a :p/:p ?x }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/no-distinct-multi-3.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,18 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ } ,
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ } ,
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT REDUCED * { :a :p [ :p ?x ] }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-1.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,12 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT REDUCED * { :a :p{2} ?x }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-2.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,12 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.rq
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.rq?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.rq (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.rq Thu Feb 16 21:21:39 2012
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+SELECT REDUCED * { :a :p/:p ?x }
Added: incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.srj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.srj?rev=1245179&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.srj (added)
+++ incubator/jena/Jena2/ARQ/trunk/testing/ARQ/Distinct/reduced-multi-3.srj Thu Feb 16 21:21:39 2012
@@ -0,0 +1,12 @@
+{
+ "head": {
+ "vars": [ "x" ]
+ } ,
+ "results": {
+ "bindings": [
+ {
+ "x": { "type": "uri" , "value": "http://example/b" }
+ }
+ ]
+ }
+}