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 2011/08/13 21:44:29 UTC

svn commit: r1157414 - /incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java

Author: andy
Date: Sat Aug 13 19:44:29 2011
New Revision: 1157414

URL: http://svn.apache.org/viewvc?rev=1157414&view=rev
Log:
JENA-98

Modified:
    incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java

Modified: incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java?rev=1157414&r1=1157413&r2=1157414&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/com/hp/hpl/jena/query/BIOInput.java Sat Aug 13 19:44:29 2011
@@ -19,6 +19,7 @@
 package com.hp.hpl.jena.query;
 
 import java.io.InputStream ;
+import java.util.ArrayList ;
 import java.util.List ;
 
 import com.hp.hpl.jena.rdf.model.Model ;
@@ -26,6 +27,7 @@ import com.hp.hpl.jena.rdf.model.ModelFa
 import com.hp.hpl.jena.sparql.core.Var ;
 import com.hp.hpl.jena.sparql.engine.QueryIterator ;
 import com.hp.hpl.jena.sparql.engine.ResultSetStream ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
 import com.hp.hpl.jena.sparql.engine.binding.BindingInputStream ;
 import com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
 
@@ -35,9 +37,21 @@ public class BIOInput
     
     public static ResultSet fromBIO(InputStream input)
     {
+        // Scan the stream for VARS an accumulate the totol variables. 
         BindingInputStream bin = new BindingInputStream(input) ;
-        List<Var> vars = bin.vars() ;
-        QueryIterator qIter = new QueryIterPlainWrapper(bin) ;
+        List<Binding> bindings = new ArrayList<Binding>() ;
+        List<Var> vars = new ArrayList<Var>() ;
+        while(bin.hasNext())
+        {
+            Binding b = bin.next();
+            bindings.add(b) ;
+            for ( Var v : bin.vars() )
+            {
+                if ( ! vars.contains(v) )
+                    vars.add(v) ;
+            }
+        }
+        QueryIterator qIter = new QueryIterPlainWrapper(bindings.iterator()) ;
         return new ResultSetStream(Var.varNames(vars), m, qIter) ;
     }
 }