You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by sa...@apache.org on 2013/01/29 21:27:39 UTC

svn commit: r1440101 [2/16] - in /jena/branches/streaming-update: ./ apache-jena-libs/ apache-jena/ apache-jena/bat/ apache-jena/bin/ jena-arq/ jena-arq/src-examples/arq/examples/riot/ jena-arq/src/main/java/arq/ jena-arq/src/main/java/arq/cmdline/ jen...

Propchange: jena/branches/streaming-update/
------------------------------------------------------------------------------
  Merged /jena/trunk:r1430447-1440093

Propchange: jena/branches/streaming-update/apache-jena-libs/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Jan 29 20:27:24 2013
@@ -0,0 +1,3 @@
+.project
+.settings
+target

Modified: jena/branches/streaming-update/apache-jena/cmd-maker
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/apache-jena/cmd-maker?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/apache-jena/cmd-maker (original)
+++ jena/branches/streaming-update/apache-jena/cmd-maker Tue Jan 29 20:27:24 2013
@@ -57,9 +57,7 @@ riotcmd.rdfxml
 tdb.tdbbackup
 tdb.tdbdump
 tdb.tdbloader
-tdb.tdbloader3
 tdb.tdbquery
-tdb.tdbrecovery
 tdb.tdbstats
 tdb.tdbupdate
 EOF

Modified: jena/branches/streaming-update/jena-arq/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/ReleaseNotes.txt?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/ReleaseNotes.txt (original)
+++ jena/branches/streaming-update/jena-arq/ReleaseNotes.txt Tue Jan 29 20:27:24 2013
@@ -6,8 +6,11 @@ ChangeLog for ARQ
 ==== Jena 2.10.0
 
 + Consolidation of versions numbers.
++ Command line SPARQL query reads all data formats (triples and quads) for --data 
 
+* JENA-379 : Incorrect results from a property paths with same subject and object variable.  
 + Introduce RDFParserOutput as output interface for parsers (was Sink<Triple> or Sink<Quad>)
+  Assorted implementations of this new interface
 + RIOT - internal reorganisation moving to org.apache.jena.riot.
 + Remove the partial migration support for old-style SPARQL submission update forms.
 + Update Turtle/Trig parsers for prefixed name details in RDF 1.1
@@ -25,10 +28,10 @@ ChangeLog for ARQ
 + Blank node labels can not be reused across different INSERT DATA operations in the same SPARQL Update Request
   (spec clarification) 
 + JENA-322 : Make jcl-over-slf4 a required dependency
-+ JENA-321 : Remove GraphStore.(start|finish)Request() (was previosuly deprecated)
++ JENA-321 : Remove GraphStore.(start|finish)Request() (was previously deprecated)
 + Remove deprecated QueryExecutionBase.cancelAllowDrain (see JENA-93)
 + Implement SPARQL-WG decision on BIND : use original semantics. 
-+ JENA-294 : improved optimization of sequeneces of OPTIONALs where the grouois only OPTIONAL and an equality filter
++ JENA-294 : improved optimization of sequeneces of OPTIONALs where the group is only OPTIONAL and an equality filter
 + JENA-298 ResultSetStAX.hasNext() can now be called again after it has returned false
 + JENA-302 Add URIs for all XQuery/Xpath F&O functions for duration accessors
 + JENA-303 Add URIs for all XQuery/Xpath F&O functions where there are SPARQL functions

Modified: jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/arq/cmdline/ModDatasetGeneral.java Tue Jan 29 20:27:24 2013
@@ -18,11 +18,8 @@
 
 package arq.cmdline;
 
-import java.util.ArrayList ;
 import java.util.List ;
 
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.riot.RDFDataMgr ;
 import arq.cmd.CmdException ;
 
@@ -44,26 +41,33 @@ import com.hp.hpl.jena.util.LocationMapp
 public class ModDatasetGeneral extends ModDataset
 {
     // See also ModDatasetAssembler
-    protected final ArgDecl graphDecl      = new ArgDecl(ArgDecl.HasValue, "graph", "data") ;
+    protected final ArgDecl graphDecl      = new ArgDecl(ArgDecl.HasValue, "graph") ;
+    protected final ArgDecl dataDecl      = new ArgDecl(ArgDecl.HasValue, "data") ;
     protected final ArgDecl namedGraphDecl = new ArgDecl(ArgDecl.HasValue, "named", "namedgraph", "namedGraph", "namedData", "nameddata") ;
     //protected final ArgDecl dataFmtDecl    = new ArgDecl(ArgDecl.HasValue, "fmt", "format") ;
     //protected final ArgDecl dirDecl        = new ArgDecl(ArgDecl.HasValue, "dir") ;
     protected final ArgDecl lmapDecl       = new ArgDecl(ArgDecl.HasValue, "lmap") ;
- 
+    
+    private List<String> dataURLs                = null ;
     private List<String> graphURLs               = null ;
     private List<String> namedGraphURLs          = null ;
     private DataFormat dataSyntax        = null ;
     private FileManager fileManager     = FileManager.get() ;    
 
+    protected ModDatasetGeneral() {}
+    
     @Override
     public void registerWith(CmdGeneral cl)
     {
         cl.getUsage().startCategory("Dataset") ;
+        cl.add(dataDecl,
+               "--data=FILE",
+               "Data for the datset - triple or quad formats") ;
         cl.add(graphDecl,
-               "--graph",
+               "--graph=FILE",
                "Graph for default graph of the datset") ;
         cl.add(namedGraphDecl,
-               "--namedGraph",
+               "--namedGraph=FILE",
                "Add a graph into the dataset as a named graph") ;
         //cl.add(dirDecl) ;
         //cl.add(dataFmtDecl) ;
@@ -75,6 +79,7 @@ public class ModDatasetGeneral extends M
     @Override
     public void processArgs(CmdArgModule cmdLine)
     {
+        dataURLs = cmdLine.getValues(dataDecl) ;
         graphURLs = cmdLine.getValues(graphDecl) ;
         namedGraphURLs = cmdLine.getValues(namedGraphDecl) ;
         
@@ -90,7 +95,8 @@ public class ModDatasetGeneral extends M
     public Dataset createDataset()
     {
         // If nothing specified to the module.  Leave alone and hope the query has FROM/FROM NAMED
-        if ( (graphURLs == null || graphURLs.size() == 0) &&
+        if (  ( dataURLs == null || dataURLs.size() == 0) &&
+              (graphURLs == null || graphURLs.size() == 0) &&
               (namedGraphURLs == null || namedGraphURLs.size() == 0 ) )
             return null ;
         
@@ -105,27 +111,14 @@ public class ModDatasetGeneral extends M
     protected void addGraphs(Dataset ds)
     {
         try {
-            if ( (graphURLs != null) || (namedGraphURLs != null) )
+            if ( dataURLs != null )
             {
-                // Do quads
-                List<String> triples = new ArrayList<String>() ;
-                List<String> quads = new ArrayList<String>() ;
-                
-                for ( String fn : graphURLs )
-                {
-                    Lang lang = RDFLanguages.filenameToLang(fn) ; 
-                    
-                    if ( RDFLanguages.isQuads(lang) )
-                        quads.add(fn) ;
-                    else
-                        triples.add(fn) ;
-                }
-                
-                for ( String fn : quads )
-                    RDFDataMgr.read(ds.asDatasetGraph(), fn) ;
-                dataset = 
-                    DatasetUtils.addInGraphs(ds, triples, namedGraphURLs, fileManager, null) ;
+                for ( String url : dataURLs )
+                    RDFDataMgr.read(ds, url) ;
             }
+            
+            if ( (graphURLs != null) || (namedGraphURLs != null) )
+                ds = DatasetUtils.addInGraphs(ds, graphURLs, namedGraphURLs, fileManager, null) ;
         } 
         catch (LabelExistsException ex)
         { throw new CmdException(ex.getMessage()) ; }

Modified: jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/arq/query.java Tue Jan 29 20:27:24 2013
@@ -76,9 +76,9 @@ public class query extends CmdARQ
         super.addModule(modTime) ;
 
         super.getUsage().startCategory("Control") ;
-        super.add(argExplain, "--explain", "Explain and log query execution") ;
-        super.add(argRepeat, "--repeat=N or N,M", "Do N times or N warmup and then M times (use for timing to overcome start up costs of Java)");
-        super.add(argOptimize, "--optimize=", "Turn the query optimizer on or off (default: on") ;
+        super.add(argExplain,  "--explain", "Explain and log query execution") ;
+        super.add(argRepeat,   "--repeat=N or N,M", "Do N times or N warmup and then M times (use for timing to overcome start up costs of Java)");
+        super.add(argOptimize, "--optimize=", "Turn the query optimizer on or off (default: on)") ;
     }
 
     @Override

Modified: jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/arq/rsparql.java Tue Jan 29 20:27:24 2013
@@ -20,7 +20,6 @@ package arq;
 
 import arq.cmd.CmdException ;
 import arq.cmdline.CmdARQ ;
-import arq.cmdline.ModDatasetGeneral ;
 import arq.cmdline.ModQueryIn ;
 import arq.cmdline.ModRemote ;
 import arq.cmdline.ModResultsOut ;
@@ -36,7 +35,6 @@ public class rsparql extends CmdARQ
 {
     protected ModQueryIn    modQuery =      new ModQueryIn() ;
     protected ModRemote     modRemote =     new ModRemote() ;
-    protected ModDatasetGeneral modDesc =   new ModDatasetGeneral() ;
     protected ModResultsOut modResults =    new ModResultsOut() ;
 
     public static void main (String... argv)
@@ -50,7 +48,6 @@ public class rsparql extends CmdARQ
         super(argv) ;
         super.addModule(modRemote) ;
         super.addModule(modQuery) ;
-        super.addModule(modDesc) ;
         super.addModule(modResults) ;
     }
     
@@ -70,10 +67,7 @@ public class rsparql extends CmdARQ
 
         try {
             String serviceURL = modRemote.getServiceURL() ;
-            QueryExecution qe = QueryExecutionFactory.sparqlService(serviceURL, query,
-                                                                    modDesc.getGraphURLs(),
-                                                                    modDesc.getNamedGraphURLs()) ;
-
+            QueryExecution qe = QueryExecutionFactory.sparqlService(serviceURL, query) ;
             if ( modRemote.usePost() )
                 HttpQuery.urlLimit = 0 ;
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/query/Query.java Tue Jan 29 20:27:24 2013
@@ -153,6 +153,9 @@ public class Query extends Prologue impl
 
     public boolean isUnknownType()              { return queryType == QueryTypeUnknown ; }
 
+    // It was a mistake to extend Prologue ... but what is done is done.
+    public Prologue getPrologue()               { return this ; }
+    
     public void setStrict(boolean isStrict)
     { 
         strictQuery = isStrict ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java Tue Jan 29 20:27:24 2013
@@ -56,10 +56,11 @@ public class TransformFilterPlacement ex
     {
         if ( ! doFilterPlacement )
             return OpFilter.filter(exprs, new OpBGP(bgp)) ;
-        
-        Op op = transformFilterBGP(exprs, new HashSet<Var>(), bgp) ;
+        // Mutated
+        ExprList exprs2 = new ExprList(exprs) ;
+        Op op = transformFilterBGP(exprs2, new HashSet<Var>(), bgp) ;
         // Remaining filters? e.g. ones mentioning var s not used anywhere. 
-        op = buildFilter(exprs, op) ;
+        op = buildFilter(exprs2, op) ;
         return op ;
     }
     
@@ -67,11 +68,12 @@ public class TransformFilterPlacement ex
     {
         if ( ! doFilterPlacement )
             return OpFilter.filter(exprs, new OpQuadPattern(graphNode, bgp)) ;
-        Op op =  transformFilterQuadPattern(exprs, new HashSet<Var>(), graphNode, bgp);
-        op = buildFilter(exprs, op) ;
+        // Mutated
+        ExprList exprs2 = new ExprList(exprs) ;
+        Op op =  transformFilterQuadPattern(exprs2, new HashSet<Var>(), graphNode, bgp);
+        op = buildFilter(exprs2, op) ;
         return op ;
     }
-    
 
     public TransformFilterPlacement()
     { }
@@ -127,6 +129,7 @@ public class TransformFilterPlacement ex
         return  transformFilterBGP(exprs, patternVarsScope, x.getPattern()) ;
     }
 
+    // Mutates exprs
     private static Op transformFilterBGP(ExprList exprs, Set<Var> patternVarsScope, BasicPattern pattern)
     {
         // Any filters that depend on no variables. 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/core/DatasetGraphCollection.java Tue Jan 29 20:27:24 2013
@@ -21,6 +21,7 @@ package com.hp.hpl.jena.sparql.core;
 import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.lib.Lib ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
@@ -87,7 +88,7 @@ public abstract class DatasetGraphCollec
 
     protected Graph fetchGraph(Node gn)
     {
-        if ( Quad.isDefaultGraph(gn) )
+        if ( Quad.isDefaultGraph(gn) || Lib.equal(gn,Quad.tripleInQuad)) // Not preferrred style
             return getDefaultGraph() ;
         else
             return getGraph(gn) ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingInputStream.java Tue Jan 29 20:27:24 2013
@@ -84,7 +84,7 @@ public class BindingInputStream extends 
     {
         // TODO
         // Don't do anything with IRIs.
-        Prologue prologue = new Prologue(new PrefixMap(), IRIResolver.createNoResolve()) ;
+        Prologue prologue = new Prologue(PrefixMapFactory.createForInput(), IRIResolver.createNoResolve()) ;
         ErrorHandler handler = ErrorHandlerFactory.getDefaultErrorHandler() ;
         ParserProfile profile = new ParserProfileBase(prologue, handler) ;
         profile.setLabelToNode(LabelToNode.createUseLabelAsGiven()) ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/BindingOutputStream.java Tue Jan 29 20:27:24 2013
@@ -32,7 +32,7 @@ import org.apache.jena.iri.IRI ;
 import org.apache.jena.riot.RiotException ;
 import org.apache.jena.riot.out.NodeFormatter ;
 import org.apache.jena.riot.out.NodeFormatterTTL ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
 
 import com.hp.hpl.jena.sparql.core.Var ;
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/HashIndexTable.java Tue Jan 29 20:27:24 2013
@@ -33,7 +33,7 @@ import com.hp.hpl.jena.sparql.engine.bin
  * Indexes bindings so that they can be search for quickly when a binding to all the
  * variables is provided. If a binding to only some of the known variables is provided
  * then the index still works, but will search linearly.
- * @author Paul Gearon
+ * Contribution from Paul Gearon (quoll)
  */
 public class HashIndexTable implements IndexTable {
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexFactory.java Tue Jan 29 20:27:24 2013
@@ -27,7 +27,8 @@ import com.hp.hpl.jena.sparql.engine.ind
 /**
  * Creates {@link com.hp.hpl.jena.sparql.engine.index.IndexTable}s for use by
  * {@link com.hp.hpl.jena.sparql.engine.iterator.QueryIterMinus}.
- * @author Paul Gearon
+ * <p>
+ * Contribution from Paul Gearon
  */
 public class IndexFactory {
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/IndexTable.java Tue Jan 29 20:27:24 2013
@@ -25,7 +25,8 @@ import com.hp.hpl.jena.sparql.engine.bin
  * {@link com.hp.hpl.jena.sparql.engine.binding.Binding}s when
  * {@link com.hp.hpl.jena.sparql.engine.iterator.QueryIterMinus} is trying to determine
  * which Bindings need to be removed.
- * @author Paul Gearon
+ * <p>
+ * Contribution from Paul Gearon
  */
 public interface IndexTable {
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/index/LinearIndex.java Tue Jan 29 20:27:24 2013
@@ -45,7 +45,7 @@ import com.hp.hpl.jena.sparql.engine.bin
  *       TreeMap is suggested here, since there would be commonVars.size() maps, which would take
  *       a lot of heap, particularly since performance of this class is only an issue when the
  *       data to search is significant.
- * @author Paul Gearon
+ * <p>Contribution from Paul Gearon
  */
 
 public class LinearIndex implements IndexTable {

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/iterator/QueryIter.java Tue Jan 29 20:27:24 2013
@@ -70,6 +70,15 @@ public abstract class QueryIter extends 
     public int getIteratorNumber() { return iteratorNumber ; }
     
     @Override
+    public void output(IndentedWriter out)
+    {
+        output(out, null) ;
+//        out.print(Plan.startMarker) ;
+//        out.print(Utils.className(this)) ;
+//        out.print(Plan.finishMarker) ;
+    }
+    
+    @Override
     public void output(IndentedWriter out, SerializationContext sCxt)
     { out.println(getIteratorNumber()+"/"+debug()) ; }
     

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/optimizer/reorder/ReorderLib.java Tue Jan 29 20:27:24 2013
@@ -35,7 +35,7 @@ public class ReorderLib
         {
             return "identity reorder" ;
         }
-    } ;
+    }
     private static ReorderProc _identityProc = new ReorderProcIdentity() ;
 
     private static class ReorderTransformationIdentity implements ReorderTransformation
@@ -51,7 +51,7 @@ public class ReorderLib
         {
             return _identityProc ;
         }
-    } ;
+    }
     private static ReorderTransformation _identity = new ReorderTransformationIdentity() ;
 
     /** Return a  ReorderProc that does no reordering  (leaving the query writer in-control)*/

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemote.java Tue Jan 29 20:27:24 2013
@@ -18,12 +18,14 @@
 
 package com.hp.hpl.jena.sparql.modify;
 
+import org.apache.http.protocol.HttpContext;
 import org.apache.jena.riot.WebContent ;
 import org.apache.jena.riot.web.HttpOp ;
 
 import com.hp.hpl.jena.query.QuerySolution ;
 import com.hp.hpl.jena.sparql.ARQException ;
 import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.Symbol;
 import com.hp.hpl.jena.update.GraphStore ;
 import com.hp.hpl.jena.update.UpdateProcessor ;
 import com.hp.hpl.jena.update.UpdateRequest ;
@@ -33,13 +35,17 @@ import com.hp.hpl.jena.update.UpdateRequ
  */
 public class UpdateProcessRemote implements UpdateProcessor
 {
+    public static final Symbol HTTP_CONTEXT = Symbol.create("httpContext") ;
+    
     private final UpdateRequest request ;
     private final String endpoint ;
+    private final Context context ;
     
-    public UpdateProcessRemote(UpdateRequest request , String endpoint )
+    public UpdateProcessRemote(UpdateRequest request , String endpoint , Context context )
     {
         this.request = request ;
         this.endpoint = endpoint ;
+        this.context = Context.setupContext(context, null) ;
     }
 
     @Override
@@ -60,14 +66,29 @@ public class UpdateProcessRemote impleme
         if ( endpoint == null )
             throw new ARQException("Null endpoint for remote update") ;
         String reqStr = request.toString() ;
-        HttpOp.execHttpPost(endpoint, WebContent.contentTypeSPARQLUpdate, reqStr) ;
+        HttpOp.execHttpPost(endpoint, WebContent.contentTypeSPARQLUpdate, reqStr, null, null, getHttpContext()) ;
     }
 
     @Override
     public Context getContext()
     {
-        return null ;
+        return context ;
     }
     
+    /**
+     * Convenience method to set the {@link HttpContext}
+     * @param httpContext
+     */
+    public void setHttpContext(HttpContext httpContext) {
+        getContext().put(HTTP_CONTEXT, httpContext) ;
+    }
+    
+    /**
+     * Convenience method to get the {@link HttpContext}
+     * @returns HttpContext
+     */
+    public HttpContext getHttpContext() {
+        return (HttpContext) getContext().get(HTTP_CONTEXT) ;
+    }
 }
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessRemoteForm.java Tue Jan 29 20:27:24 2013
@@ -23,6 +23,7 @@ import java.util.HashMap ;
 import java.util.List ;
 import java.util.Map ;
 
+import org.apache.http.protocol.HttpContext;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.riot.web.HttpOp ;
 import org.apache.jena.riot.web.HttpResponseHandler ;
@@ -31,6 +32,7 @@ import org.apache.jena.riot.web.HttpResp
 import com.hp.hpl.jena.query.QuerySolution ;
 import com.hp.hpl.jena.sparql.ARQException ;
 import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.Symbol;
 import com.hp.hpl.jena.update.GraphStore ;
 import com.hp.hpl.jena.update.UpdateProcessor ;
 import com.hp.hpl.jena.update.UpdateRequest ;
@@ -41,13 +43,17 @@ import com.hp.hpl.jena.update.UpdateRequ
  */
 public class UpdateProcessRemoteForm implements UpdateProcessor
 {
+    public static final Symbol HTTP_CONTEXT = Symbol.create("httpContext") ;
+    
     private final UpdateRequest request ;
     private final String endpoint ;
+    private final Context context ;
     
-    public UpdateProcessRemoteForm(UpdateRequest request , String endpoint )
+    public UpdateProcessRemoteForm(UpdateRequest request , String endpoint, Context context )
     {
         this.request = request ;
         this.endpoint = endpoint ;
+        this.context = Context.setupContext(context, null) ;
     }
 
     @Override
@@ -73,13 +79,29 @@ public class UpdateProcessRemoteForm imp
         Map<String, HttpResponseHandler> handlers = new HashMap<String, HttpResponseHandler>() ;
         //handlers.put("text/html", HttpResponseLib.nullResponse) ;
         handlers.put("*", HttpResponseLib.nullResponse) ;
-        HttpOp.execHttpPostForm(endpoint, params, handlers) ;
+        HttpOp.execHttpPostForm(endpoint, params, handlers, getHttpContext()) ;
     }
 
     @Override
     public Context getContext()
     {
-        return null ;
+        return context ;
+    }
+    
+    /**
+     * Convenience method to set the {@link HttpContext}
+     * @param httpContext
+     */
+    public void setHttpContext(HttpContext httpContext) {
+        getContext().put(HTTP_CONTEXT, httpContext) ;
+    }
+    
+    /**
+     * Convenience method to get the {@link HttpContext}
+     * @returns HttpContext
+     */
+    public HttpContext getHttpContext() {
+        return (HttpContext) getContext().get(HTTP_CONTEXT);
     }
 }
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/request/UpdateWriter.java Tue Jan 29 20:27:24 2013
@@ -30,6 +30,7 @@ import org.apache.jena.riot.out.SinkQuad
 import com.hp.hpl.jena.graph.Node;
 import com.hp.hpl.jena.graph.Triple;
 import com.hp.hpl.jena.sparql.ARQException;
+import com.hp.hpl.jena.sparql.core.Prologue ;
 import com.hp.hpl.jena.sparql.core.Quad;
 import com.hp.hpl.jena.sparql.modify.request.UpdateDataWriter.UpdateMode;
 import com.hp.hpl.jena.sparql.serializer.FormatterElement;
@@ -37,6 +38,7 @@ import com.hp.hpl.jena.sparql.serializer
 import com.hp.hpl.jena.sparql.serializer.SerializationContext;
 import com.hp.hpl.jena.sparql.syntax.Element;
 import com.hp.hpl.jena.sparql.util.FmtUtils;
+import com.hp.hpl.jena.sparql.util.NodeToLabelMapBNode ;
 import com.hp.hpl.jena.update.Update;
 import com.hp.hpl.jena.update.UpdateRequest;
 
@@ -52,14 +54,12 @@ public class UpdateWriter implements Clo
     public UpdateWriter(IndentedWriter out, SerializationContext sCxt)
     {
         if (out == null)
-        {
             throw new IllegalArgumentException("out may not be null") ;
-        }
         
+        // To get legal syntax out, the serialization context 
+        // has to be a bNode mapping that does ??N vars to bNodes
         if (sCxt == null)
-        {
-            sCxt = new SerializationContext();
-        }
+            sCxt = new SerializationContext((Prologue)null, new NodeToLabelMapBNode());
         
         this.out = out;
         this.sCxt = sCxt;
@@ -68,18 +68,14 @@ public class UpdateWriter implements Clo
     public void open()
     {
         if (null != sCxt)
-        {
             prologue();
-        }
         opened = true;
     }
     
     private void checkOpen()
     {
         if (!opened)
-        {
             throw new IllegalStateException("UpdateStreamWriter is not opened.  Call open() first.");
-        }
     }
     
     private void prologue()
@@ -241,9 +237,6 @@ public class UpdateWriter implements Clo
     
     public static void output(UpdateRequest request, IndentedWriter out, SerializationContext sCxt)
     {
-        if ( sCxt == null )
-            sCxt = new SerializationContext(request);
-        
         UpdateWriter uw = new UpdateWriter(out, sCxt);
         uw.open();
         uw.update(request);
@@ -252,9 +245,6 @@ public class UpdateWriter implements Clo
     
     public static void output(Update update, IndentedWriter out, SerializationContext sCxt)
     {
-        if ( sCxt == null )
-            sCxt = new SerializationContext();
-        
         UpdateWriter uw = new UpdateWriter(out, sCxt);
         uw.open();
         uw.update(update);

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/path/PathLib.java Tue Jan 29 20:27:24 2013
@@ -22,6 +22,10 @@ import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
 
+import org.apache.jena.atlas.iterator.Filter ;
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.lib.Lib ;
+
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
@@ -138,7 +142,12 @@ public class PathLib
         Graph graph = execCxt.getActiveGraph() ;
         
         if ( Var.isVar(s) && Var.isVar(o) )
-            return ungroundedPath(binding, graph, Var.alloc(s), path, Var.alloc(o), execCxt) ;
+        {
+            if ( s.equals(o) )
+                return ungroundedPathSameVar(binding, graph, Var.alloc(s), path, execCxt) ;
+            else
+                return ungroundedPath(binding, graph, Var.alloc(s), path, Var.alloc(o), execCxt) ;
+        }
 
         if ( ! Var.isVar(s) && ! Var.isVar(o) )
             return groundedPath(binding, graph, s, path, o, execCxt) ;
@@ -212,4 +221,37 @@ public class PathLib
         }
         return qIterCat ;
     }
+    
+    private static QueryIterator ungroundedPathSameVar(Binding binding, Graph graph, Var var, Path path, ExecutionContext execCxt)
+    {
+        // Try each end, grounded  
+        // Slightly more efficient would be to add a per-engine to do this.
+        Iterator<Node> iter = GraphUtils.allNodes(graph) ;
+        QueryIterConcat qIterCat = new QueryIterConcat(execCxt) ;
+        
+        for ( ; iter.hasNext() ; )
+        {
+            Node n = iter.next() ;
+            Binding b2 = BindingFactory.binding(binding, var, n) ;
+            int x = existsPath(graph, n, path, n) ;
+            if ( x > 0 )
+            {
+                QueryIterator qIter = new QueryIterYieldN(x, b2, execCxt) ;
+                qIterCat.add(qIter) ;
+            }
+        }
+        return qIterCat ; 
+    }
+    
+    private static int existsPath(Graph graph, Node subject, Path path, final Node object)
+    {
+        if ( ! subject.isConcrete() || !object.isConcrete() )
+            throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;
+        Iterator<Node> iter = PathEval.eval(graph, subject, path) ;
+        Filter<Node> filter = new Filter<Node>() { @Override public boolean accept(Node node) { return Lib.equal(node,  object) ; } } ; 
+        // See if we got to the node we're interested in finishing at.
+        iter = Iter.filter(iter, filter) ;
+        long x = Iter.count(iter) ; 
+        return (int)x ;
+    }
 }

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/MappingRegistry.java Tue Jan 29 20:27:24 2013
@@ -19,6 +19,7 @@
 package com.hp.hpl.jena.sparql.util;
 
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
 
 /** Assist with naming symbols by URI.
  *  This class keeps a prefix mapping so that subsystems can register their
@@ -26,7 +27,7 @@ import org.apache.jena.riot.system.Prefi
  */
 public class MappingRegistry
 {
-    private static PrefixMap mapping = new PrefixMap() ;
+    private static PrefixMap mapping = PrefixMapFactory.create() ;
     
     public static void addPrefixMapping(String prefix, String uri)
     {

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/NodeFactory.java Tue Jan 29 20:27:24 2013
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.sparql.util;
 
 import org.apache.jena.riot.RiotException ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
 import org.apache.jena.riot.tokens.Token ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
@@ -34,7 +35,7 @@ import com.hp.hpl.jena.sparql.sse.SSE ;
 
 public class NodeFactory
 {
-    private static final PrefixMap prefixMappingDefault = PrefixMap.fromPrefixMapping(SSE.getDefaultPrefixMapRead()) ; 
+    private static final PrefixMap prefixMappingDefault = PrefixMapFactory.createForInput(SSE.getDefaultPrefixMapRead()) ; 
     
     /** Parse a node - with convenience prefix mapping */ 
     public static Node parseNode(String nodeString)
@@ -42,7 +43,7 @@ public class NodeFactory
         return parseNode(nodeString, prefixMappingDefault) ;
     }
 
-    private static PrefixMap pmapEmpty = new PrefixMap() ; 
+    private static PrefixMap pmapEmpty = PrefixMapFactory.create() ; 
 
     /** Parse a string into a node. 
      * Pass null for the prefix mapping to indicate using no defined mappings

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/sparql/util/QueryUtils.java Tue Jan 29 20:27:24 2013
@@ -116,7 +116,7 @@ public class QueryUtils
         }
         
         if ( query.hashCode() != query2.hashCode() )
-            throw new QueryCheckException("reparsed query hashCode does not equal parsed input query") ;
+            throw new QueryCheckException("reparsed query hashCode does not equal parsed input query \nQuery (hashCode: " + query.hashCode() + ")=\n" + query + "\n\nQuery2 (hashCode: " + query2.hashCode() + ")=\n" + query2) ;
         
         if ( ! query.equals(query2) ) 
             throw new QueryCheckException("reparsed output does not equal parsed input") ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java Tue Jan 29 20:27:24 2013
@@ -183,16 +183,36 @@ public class UpdateExecutionFactory
      */
     public static UpdateProcessor createRemote(Update update, String remoteEndpoint)
     {
-        return createRemote(new UpdateRequest(update), remoteEndpoint) ;
+        return createRemote(update, remoteEndpoint, null) ;
     }
-
+    
+    /** Create an UpdateProcessor that send the update to a remote SPARQL Update service.
+     * @param update
+     * @param remoteEndpoint
+     * @param context
+     */
+    public static UpdateProcessor createRemote(Update update, String remoteEndpoint, Context context)
+    {
+        return createRemote(new UpdateRequest(update), remoteEndpoint, context) ;
+    }
+    
     /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service.
      * @param updateRequest
      * @param remoteEndpoint
      */
     public static UpdateProcessor createRemote(UpdateRequest updateRequest, String remoteEndpoint)
     {
-        return new UpdateProcessRemote(updateRequest, remoteEndpoint) ;
+        return new UpdateProcessRemote(updateRequest, remoteEndpoint, null) ;
+    }
+
+    /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service.
+     * @param updateRequest
+     * @param remoteEndpoint
+     * @param context
+     */
+    public static UpdateProcessor createRemote(UpdateRequest updateRequest, String remoteEndpoint, Context context)
+    {
+        return new UpdateProcessRemote(updateRequest, remoteEndpoint, context) ;
     }
     
     /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
@@ -201,7 +221,17 @@ public class UpdateExecutionFactory
      */
     public static UpdateProcessor createRemoteForm(Update update, String remoteEndpoint)
     {
-        return new UpdateProcessRemoteForm(new UpdateRequest(update), remoteEndpoint) ;
+        return createRemoteForm(update, remoteEndpoint, null) ;
+    }
+    
+    /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
+     * @param update
+     * @param remoteEndpoint
+     * @param context
+     */
+    public static UpdateProcessor createRemoteForm(Update update, String remoteEndpoint, Context context)
+    {
+        return new UpdateProcessRemoteForm(new UpdateRequest(update), remoteEndpoint, null) ;
     }
     
     /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
@@ -210,6 +240,16 @@ public class UpdateExecutionFactory
      */
     public static UpdateProcessor createRemoteForm(UpdateRequest updateRequest, String remoteEndpoint)
     {
-        return new UpdateProcessRemoteForm(updateRequest, remoteEndpoint) ;
+        return createRemoteForm(updateRequest, remoteEndpoint, null) ;
+    }
+    
+    /** Create an UpdateProcessor that send the update request to a remote SPARQL Update service using an HTML form
+     * @param updateRequest
+     * @param remoteEndpoint
+     * @param context
+     */
+    public static UpdateProcessor createRemoteForm(UpdateRequest updateRequest, String remoteEndpoint, Context context)
+    {
+        return new UpdateProcessRemoteForm(updateRequest, remoteEndpoint, context) ;
     }
 }

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/BufferingWriter.java Tue Jan 29 20:27:24 2013
@@ -57,7 +57,7 @@ public final class BufferingWriter exten
     // ***** Suspiciously slow.
     // ***** DO NOT USE
     // Better to buffer in character space the convert in larger blocks.
-    // Standard java I/O is preeety good for that.
+    // Standard java I/O is pretty good for that.
     // Split:
     // 1/ A buffering writer that wraps a writer  
     //   (Use BufferedWriter or maybe own version without the hidden synchronize's)  

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/io/IndentedWriter.java Tue Jan 29 20:27:24 2013
@@ -237,19 +237,23 @@ public class IndentedWriter
     
     public int getRow() { return row ; }
     public int getCol() { return column ; }
-    public int getIndent() { return currentIndent ; }
     
+    /** @deprecated Use getAbsoluteIndent() */ 
+    @Deprecated
+    public int getIndent() { return currentIndent ; }
+    public int getAbsoluteIndent() { return currentIndent ; }
+    public void setAbsoluteIndent(int x) { currentIndent = x ; }
+
     /** Position past current indent */ 
     public int getCurrentOffset()
     { 
-        int x = getCol() - getIndent() ;
+        int x = getCol() - getAbsoluteIndent() ;
         if ( x >= 0 )
             return x ;
         // At start of line somehow.
         return 0 ;
     }
     
-    
     public boolean hasLineNumbers()
     {
         return lineNumbers ;
@@ -292,8 +296,6 @@ public class IndentedWriter
     
     public void setUnitIndent(int x) { unitIndent = x ; }
     public int  getUnitIndent() { return unitIndent ; }
-    public void setAbsoluteIndent(int x) { currentIndent = x ; }
-    
     public boolean atLineStart() { return startingNewLine ; }
     
     private void lineStart()

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/iterator/Iter.java Tue Jan 29 20:27:24 2013
@@ -464,19 +464,24 @@ public class Iter<T> implements Iterable
     public static <T> Iterator<T> convert(Iterator<?> iterator) { return (Iterator<T>)iterator ; }
     
     /** Count the iterable - many iterable objects have a .size() operation which should be used in preference to this explicit counting operation  */ 
-    public static <T> long count(Iterable<T> iterator)
+    public static <T> long count(Iterable<T> iterable)
     {
-        ActionCount<T> action = new ActionCount<T>() ;
-        Iter.apply(iterator, action) ;
-        return action.getCount() ;
+        return count(iterable.iterator()) ; 
     }
 
     /** Count the iterator (this is destructive on the iterator) */ 
     public static <T> long count(Iterator<T> iterator)
     {
-        ActionCount<T> action = new ActionCount<T>() ;
-        Iter.apply(iterator, action) ;
-        return action.getCount() ;
+        long x = 0 ;
+        while ( iterator.hasNext() )
+        {
+            iterator.next();
+            x++ ;
+        }
+        return x ;
+//        ActionCount<T> action = new ActionCount<T>() ;
+//        Iter.apply(iterator, action) ;
+//        return action.getCount() ;
     }
 
     // --- Consume the iterator.

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/atlas/lib/Chars.java Tue Jan 29 20:27:24 2013
@@ -183,6 +183,7 @@ public class Chars
     public static final int  UNSET           =  -2 ;
     public static final char NL              = '\n' ;
     public static final char CR              = '\r' ;
+    public static final char BSPACE          = '\b' ;
     
     public static final char CH_ZERO         =  (char)0 ;
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java Tue Jan 29 20:27:24 2013
@@ -35,12 +35,23 @@ import org.apache.jena.atlas.io.PeekRead
 import org.apache.jena.atlas.iterator.IteratorResourceClosing ;
 import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
 import org.apache.jena.atlas.lib.Sink ;
-import org.apache.jena.riot.lang.* ;
-import org.apache.jena.riot.system.* ;
+import org.apache.jena.riot.lang.LangNQuads ;
+import org.apache.jena.riot.lang.LangNTriples ;
+import org.apache.jena.riot.lang.LangRDFJSON ;
+import org.apache.jena.riot.lang.LangRDFXML ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.LangTriG ;
+import org.apache.jena.riot.lang.LangTurtle ;
+import org.apache.jena.riot.lang.PipedQuadsStream ;
+import org.apache.jena.riot.lang.PipedRDFIterator ;
+import org.apache.jena.riot.lang.PipedTriplesStream ;
+import org.apache.jena.riot.system.ErrorHandlerFactory ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.RiotLib ;
+import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.openjena.riot.RiotQuadParsePuller ;
-import org.openjena.riot.RiotTripleParsePuller ;
 
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.core.Quad ;
@@ -225,8 +236,14 @@ public class RiotReader
         parse(in, lang, baseIRI, dest) ;
     }
 
-    // TODO create a Tokenizer version of this method
-    public static Iterator<Triple> createIteratorTriples(InputStream input, Lang lang, String baseIRI)
+    /**
+     * Create an iterator over the parsed triples
+     * @param input Input Stream
+     * @param lang Language
+     * @param baseIRI Base IRI
+     * @return Iterator over the triples
+     */
+    public static Iterator<Triple> createIteratorTriples(final InputStream input, final Lang lang, final String baseIRI)
     {
         // Special case N-Triples, because the RIOT reader has a pull interface
         if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
@@ -236,26 +253,54 @@ public class RiotReader
         else
         {
             // Otherwise, we have to spin up a thread to deal with it
-            RiotTripleParsePuller parsePuller = new RiotTripleParsePuller(input, lang, baseIRI);
-            parsePuller.parse();
-            return parsePuller;
+            final PipedRDFIterator<Triple> it = new PipedRDFIterator<Triple>();
+            final PipedTriplesStream out = new PipedTriplesStream(it);
+            
+            Thread t = new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    parse(input, lang, baseIRI, out);
+                }
+            });
+            t.start();
+            
+            return it;
         }
     }
-    
-    // TODO create a Tokenizer version of this method
-    public static Iterator<Quad> createIteratorQuads(InputStream input, Lang lang, String baseIRI)
+   
+    /**
+     * Creates an iterator over the parsed quads
+     * @param input Input Stream
+     * @param lang Language
+     * @param baseIRI Base IRI
+     * @return Iterator over the quads
+     */
+    public static Iterator<Quad> createIteratorQuads(final InputStream input, final Lang lang, final String baseIRI)
     {
         // Special case N-Quads, because the RIOT reader has a pull interface
-        if (  RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
+        if ( RDFLanguages.sameLang(RDFLanguages.NQUADS, lang) )
         {
             return new IteratorResourceClosing<Quad>(createParserNQuads(input, null), input);
         }
         else
         {
             // Otherwise, we have to spin up a thread to deal with it
-            RiotQuadParsePuller parsePuller = new RiotQuadParsePuller(input, lang, baseIRI);
-            parsePuller.parse();
-            return parsePuller;
+            final PipedRDFIterator<Quad> it = new PipedRDFIterator<Quad>();
+            final PipedQuadsStream out = new PipedQuadsStream(it);
+            
+            Thread t = new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    parse(input, lang, baseIRI, out);
+                }
+            });
+            t.start();
+            
+            return it;
         }
     }
     

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java Tue Jan 29 20:27:24 2013
@@ -32,7 +32,8 @@ import org.apache.jena.atlas.lib.Chars ;
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIFactory ;
 import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
+import org.apache.jena.riot.system.PrefixMapFactory;
 import org.apache.jena.riot.system.Prologue ;
 import org.apache.jena.riot.system.RiotChars ;
 
@@ -46,7 +47,7 @@ public class NodeFmtLib
     // See OutputLangUtils.
     // See and use EscapeStr
     
-    static PrefixMap dftPrefixMap = new PrefixMap() ;
+    static PrefixMap dftPrefixMap = PrefixMapFactory.createForOutput() ;
     static {
         PrefixMapping pm = ARQConstants.getGlobalPrefixMap() ;
         Map<String, String> map = pm.getNsPrefixMap() ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java Tue Jan 29 20:27:24 2013
@@ -30,7 +30,8 @@ import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIFactory ;
 import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
+import org.apache.jena.riot.system.PrefixMapFactory;
 import org.apache.jena.riot.system.RiotChars ;
 
 public class NodeFormatterTTL extends NodeFormatterNT
@@ -43,7 +44,7 @@ public class NodeFormatterTTL extends No
    {
        super(false) ;
        if ( prefixMap == null )
-           prefixMap = new PrefixMap() ;
+           prefixMap = PrefixMapFactory.createForOutput() ;
        this.prefixMap = prefixMap ;
        this.baseIRI = baseIRI ;
    }

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputLangUtils.java Tue Jan 29 20:27:24 2013
@@ -30,7 +30,7 @@ import org.apache.jena.atlas.io.OutputUt
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIFactory ;
 import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
 import org.apache.jena.riot.system.Prologue ;
 import org.apache.jena.riot.system.SyntaxLabels ;
 

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputPolicy.java Tue Jan 29 20:27:24 2013
@@ -18,7 +18,7 @@
 
 package org.apache.jena.riot.out;
 
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
 
 public class OutputPolicy
 {

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/out/OutputProfile.java Tue Jan 29 20:27:24 2013
@@ -18,7 +18,7 @@
 
 package org.apache.jena.riot.out;
 
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
 import org.apache.jena.riot.system.Prologue ;
 
 public class OutputProfile

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java Tue Jan 29 20:27:24 2013
@@ -18,9 +18,6 @@
 
 package org.apache.jena.riot.system;
 
-import java.util.Map ;
-import java.util.Map.Entry ;
-
 import org.apache.jena.iri.IRI ;
 import com.hp.hpl.jena.shared.PrefixMapping ;
 
@@ -38,10 +35,7 @@ public class Prologue
         PrefixMap pmap = null ;
         if ( pmapping != null )
         {
-            pmap = new PrefixMap() ;
-            Map<String, String> x =  pmapping.getNsPrefixMap() ;
-            for ( Entry<String, String> e : x.entrySet() )
-                pmap.add(e.getKey(), e.getValue()) ;
+            pmap = PrefixMapFactory.createForInput(pmapping) ;
         }
         IRIResolver resolver = null ;
         if ( base != null )
@@ -51,7 +45,7 @@ public class Prologue
     
     public Prologue()
     { 
-        this.prefixMap = new PrefixMap() ;
+        this.prefixMap = PrefixMapFactory.createForInput() ;
         this.resolver = null ;
     }
     
@@ -69,14 +63,14 @@ public class Prologue
 
     public Prologue copy()
     {
-        PrefixMap prefixMap = new PrefixMap(this.prefixMap) ;
+        PrefixMap prefixMap = PrefixMapFactory.createForInput(this.prefixMap) ;
         return new Prologue(prefixMap, resolver) ;
     }
     
     public void usePrologueFrom(Prologue other)
     {
         // Copy.
-        prefixMap = new PrefixMap(other.prefixMap) ;
+        prefixMap = PrefixMapFactory.createForInput(other.prefixMap) ;
         seenBaseURI = false ;
         if ( other.resolver != null )
             resolver = IRIResolver.create(other.resolver.getBaseIRIasString()) ;
@@ -90,7 +84,7 @@ public class Prologue
         // New prefix mappings
         PrefixMap ext = getPrefixMap() ;
         if ( newMappings != null )
-            ext = new PrefixMap2(ext) ;
+            ext = PrefixMapFactory.extend(ext) ;
         // New base.
         IRIResolver r = resolver ;
         if ( base != null )

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java Tue Jan 29 20:27:24 2013
@@ -106,9 +106,9 @@ public class RiotLib
     {
         Prologue prologue ;
         if ( resolveIRIs )
-            prologue = new Prologue(new PrefixMap(), IRIResolver.create(baseIRI)) ;
+            prologue = new Prologue(PrefixMapFactory.createForInput(), IRIResolver.create(baseIRI)) ;
         else
-            prologue = new Prologue(new PrefixMap(), IRIResolver.createNoResolve()) ;
+            prologue = new Prologue(PrefixMapFactory.createForInput(), IRIResolver.createNoResolve()) ;
     
         if ( checking )
             return new ParserProfileChecker(prologue, handler) ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java Tue Jan 29 20:27:24 2013
@@ -20,7 +20,6 @@ package org.apache.jena.riot.system;
 
 import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.atlas.lib.Tuple ;
-import org.apache.jena.riot.SysRIOT ;
 import org.apache.jena.riot.lang.RDFParserOutputCounting ;
 
 import com.hp.hpl.jena.graph.Graph ;
@@ -40,7 +39,7 @@ public class StreamRDFLib
     public static StreamRDF dataset(DatasetGraph dataset)    { return new ParserOutputDataset(dataset) ; }
     
     /** 
-     * Outpout to a sink; prefix and base handled only within the parser.
+     * Output to a sink; prefix and base handled only within the parser.
      * Unfortunately, Java needs different names for the triples and 
      * quads versions because of type erasure.  
      */
@@ -67,19 +66,7 @@ public class StreamRDFLib
     public static RDFParserOutputCounting count(StreamRDF other)
     { return new ParserOutputCountingBase(other) ; }
 
-//    private static class ParserOutputSink implements StreamRDF
-//    {
-//        public ParserOutputSink ()                      {}
-//        @Override public void start()                   {}
-//        @Override public void triple(Triple triple)     {}
-//        @Override public void quad(Quad quad)           {}
-//        @Override public void tuple(Tuple<Node> tuple)  {}
-//        @Override public void base(String base)         {}
-//        @Override public void prefix(String prefix, String iri) {}
-//        @Override public void finish()                  {}
-//    }
-
-    private static class ParserOutputSinkTriplesToQuads extends StreamRDFWarpper
+    private static class ParserOutputSinkTriplesToQuads extends StreamRDFWrapper
     {
         private final Node gn ;
         ParserOutputSinkTriplesToQuads(Node gn, StreamRDF base)
@@ -88,7 +75,6 @@ public class StreamRDFLib
         @Override public void triple(Triple triple)
         { sink.quad(new Quad(gn, triple)) ; }
     }
-    
 
     private static class ParserOutputSinkTriples extends StreamRDFBase
     {
@@ -136,7 +122,11 @@ public class StreamRDFLib
             else
             {
                 if ( ! warningIssued )
-                    SysRIOT.getLogger().warn("Only triples or default graph data expected : named graph data ignored") ;
+                {
+                    //SysRIOT.getLogger().warn("Only triples or default graph data expected : named graph data ignored") ;
+                    // Not ideal - assumes the global default.
+                    ErrorHandlerFactory.getDefaultErrorHandler().warning("Only triples or default graph data expected : named graph data ignored", -1, -1) ;
+                }
                 warningIssued = true ;
             }
             //throw new IllegalStateException("Quad passed to graph parsing") ;
@@ -158,7 +148,8 @@ public class StreamRDFLib
         
         @Override public void triple(Triple triple) 
         {
-            throw new IllegalStateException("Triple passed to dataset parsing") ;
+            dsg.add(Quad.defaultGraphNodeGenerated, triple.getSubject(), triple.getPredicate(), triple.getObject()) ;
+            //throw new IllegalStateException("Triple passed to dataset parsing") ;
         }
         
         @Override public void quad(Quad quad) 
@@ -178,7 +169,7 @@ public class StreamRDFLib
         }
     }
 
-    private  static class ParserOutputCountingBase extends StreamRDFWarpper implements StreamRDF, RDFParserOutputCounting
+    private  static class ParserOutputCountingBase extends StreamRDFWrapper implements StreamRDF, RDFParserOutputCounting
     {
         private long countTriples = 0 ;
         private long countQuads = 0 ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java Tue Jan 29 20:27:24 2013
@@ -46,7 +46,7 @@ import org.apache.jena.atlas.io.PeekRead
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
 import org.apache.jena.riot.system.Prologue ;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java Tue Jan 29 20:27:24 2013
@@ -539,11 +539,7 @@ public final class TokenizerText impleme
     PERCENT  ::=  '%' HEX HEX
     HEX  ::=  [0-9] | [A-F] | [a-f]
     PN_LOCAL_ESC  ::=  '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )
-    
     */
-        
-    
-    
     
     private String readPrefixPart()
     { return readSegment(false) ; }
@@ -1195,6 +1191,7 @@ public final class TokenizerText impleme
             case 'r':   return CR ;
             case 't':   return '\t' ;
             case 'f':   return '\f' ;
+            case 'b':   return BSPACE ;
             case '"':   return '"' ;
             case '\'':  return '\'' ;
             case '\\':  return '\\' ;

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java Tue Jan 29 20:27:24 2013
@@ -43,6 +43,7 @@ import org.apache.http.entity.InputStrea
 import org.apache.http.entity.StringEntity ;
 import org.apache.http.impl.client.SystemDefaultHttpClient ;
 import org.apache.http.message.BasicNameValuePair ;
+import org.apache.http.protocol.HttpContext;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.web.HttpException ;
@@ -173,7 +174,7 @@ public class HttpOp
     //TODO Use MediaType
     public static void execHttpPost(String url, String contentType, String content)
     {
-        execHttpPost(url, contentType, content, null, null) ;
+        execHttpPost(url, contentType, content, null, null, null) ;
     }
     
     /** POST without response body.
@@ -189,17 +190,21 @@ public class HttpOp
     }
     
 
-    /** POST a string, expect a response body.*/
-    public static void execHttpPost(String url, 
-                                    String contentType, String content,
-                                    String acceptType, Map<String, HttpResponseHandler> handlers)
+    /** POST a string, expect a response body.
+     * <p>Additional headers e.g. for authentication can be injected through an
+     *  {@link HttpContext}.
+     */
+    public static void execHttpPost(String url, String contentType,
+                                    String content, String acceptType,
+                                    Map<String, HttpResponseHandler> handlers,
+                                    HttpContext httpContext)
     {
         StringEntity e = null ;
         try
         {
             e = new StringEntity(content, "UTF-8") ;
             e.setContentType(contentType) ;
-            execHttpPost(url, e, acceptType, handlers) ;
+            execHttpPost(url, e, acceptType, handlers, httpContext) ;
         } catch (UnsupportedEncodingException e1)
         { throw new ARQInternalErrorException("Platform does not support required UTF-8") ; }
         finally { closeEntity(e) ; }
@@ -216,7 +221,7 @@ public class HttpOp
         InputStreamEntity e = new InputStreamEntity(input, length) ;
         e.setContentType(contentType) ;
         e.setContentEncoding("UTF-8") ;
-        execHttpPost(url, e, acceptType, handlers) ;
+        execHttpPost(url, e, acceptType, handlers, null) ;
     }
     
     /** POST with response body */
@@ -227,17 +232,17 @@ public class HttpOp
         EntityTemplate entity = new EntityTemplate(provider) ;
         entity.setContentType(contentType) ;
         try {
-            execHttpPost(url, entity, acceptType, handlers) ;
+            execHttpPost(url, entity, acceptType, handlers, null) ;
         } finally { closeEntity(entity) ; } 
     }
                              
     /** POST with response body.
      * <p>The content for the POST body comes from the HttpEntity.
      * <p>The response is handled bythe handler map, as per {@link #execHttpGet(String, String, Map)}
+     * <p>Additional headers e.g. for authentication can be injected through an {@link HttpContext}
      */
-    public static void execHttpPost(String url, 
-                                    HttpEntity provider,
-                                    String acceptType, Map<String, HttpResponseHandler> handlers)
+    public static void execHttpPost(String url, HttpEntity provider, String acceptType,
+                                    Map<String, HttpResponseHandler> handlers, HttpContext context)
     {
         try {
             long id = counter.incrementAndGet() ;
@@ -254,7 +259,7 @@ public class HttpOp
             // Execute
             HttpClient httpclient = new SystemDefaultHttpClient();
             httppost.setEntity(provider) ;
-            HttpResponse response = httpclient.execute(httppost) ;
+            HttpResponse response = httpclient.execute(httppost, context) ;
             httpResponse(id, response, baseIRI, handlers) ;
             
             httpclient.getConnectionManager().shutdown(); 
@@ -263,7 +268,15 @@ public class HttpOp
     }
     
     /** Execute an HTTP POST form operation */
-    public static void execHttpPostForm(String url, List<Pair<String, String>> params, Map<String, HttpResponseHandler> handlers)
+    public static void execHttpPostForm(String url, List<Pair<String, String>> params,
+                                        Map<String, HttpResponseHandler> handlers)
+    {
+        execHttpPostForm(url, params, handlers, null) ;
+    }
+    /** Execute an HTTP POST form operation */
+    public static void execHttpPostForm(String url, List<Pair<String, String>> params,
+                                        Map<String, HttpResponseHandler> handlers,
+                                        HttpContext httpContext)
     {
         try {
             long id = counter.incrementAndGet() ;
@@ -276,7 +289,7 @@ public class HttpOp
                 log.debug(format("[%d] %s %s",id ,httppost.getMethod(),httppost.getURI().toString())) ;
 
             HttpClient httpclient = new SystemDefaultHttpClient();
-            HttpResponse response = httpclient.execute(httppost) ;
+            HttpResponse response = httpclient.execute(httppost, httpContext) ;
             httpResponse(id, response, baseIRI, handlers) ;
             httpclient.getConnectionManager().shutdown(); 
         } catch (IOException ex) { IO.exception(ex) ; }

Modified: jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java (original)
+++ jena/branches/streaming-update/jena-arq/src/main/java/org/openjena/riot/RiotReader.java Tue Jan 29 20:27:24 2013
@@ -32,8 +32,21 @@ import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.lang.* ;
-import org.apache.jena.riot.system.* ;
+import org.apache.jena.riot.lang.LangNQuads ;
+import org.apache.jena.riot.lang.LangNTriples ;
+import org.apache.jena.riot.lang.LangRDFJSON ;
+import org.apache.jena.riot.lang.LangRDFXML ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.LangTriG ;
+import org.apache.jena.riot.lang.LangTurtle ;
+import org.apache.jena.riot.lang.PipedQuadsStream ;
+import org.apache.jena.riot.lang.PipedRDFIterator ;
+import org.apache.jena.riot.lang.PipedTriplesStream ;
+import org.apache.jena.riot.system.ErrorHandlerFactory ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.RiotLib ;
+import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 
@@ -198,8 +211,7 @@ public class RiotReader
         return org.apache.jena.riot.RiotReader.createParser(tokenizer, lang, baseIRI, dest) ;
     }
     
-    // TODO create a Tokenizer version of this method
-    public static Iterator<Triple> createIteratorTriples(InputStream input, Lang lang, String baseIRI)
+    public static Iterator<Triple> createIteratorTriples(final InputStream input, final Lang lang, final String baseIRI)
     {
         // Special case N-Triples, because the RIOT reader has a pull interface
         if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
@@ -209,9 +221,20 @@ public class RiotReader
         else
         {
             // Otherwise, we have to spin up a thread to deal with it
-            RiotTripleParsePuller parsePuller = new RiotTripleParsePuller(input, lang, baseIRI);
-            parsePuller.parse();
-            return parsePuller;
+            final PipedRDFIterator<Triple> it = new PipedRDFIterator<Triple>();
+            final PipedTriplesStream out = new PipedTriplesStream(it);
+            
+            Thread t = new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    parseTriples(input, lang, baseIRI, out);
+                }
+            });
+            t.start();
+            
+            return it;
         }
     }
     
@@ -235,8 +258,7 @@ public class RiotReader
         return createParserTriples(tokenizer, lang, baseIRI, dest) ;
     }
     
-    // TODO create a Tokenizer version of this method
-    public static Iterator<Quad> createIteratorQuads(InputStream input, Lang lang, String baseIRI)
+    public static Iterator<Quad> createIteratorQuads(final InputStream input, final Lang lang, final String baseIRI)
     {
         // Special case N-Quads, because the RIOT reader has a pull interface
         if (  RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
@@ -246,9 +268,20 @@ public class RiotReader
         else
         {
             // Otherwise, we have to spin up a thread to deal with it
-            RiotQuadParsePuller parsePuller = new RiotQuadParsePuller(input, lang, baseIRI);
-            parsePuller.parse();
-            return parsePuller;
+            final PipedRDFIterator<Quad> it = new PipedRDFIterator<Quad>();
+            final PipedQuadsStream out = new PipedQuadsStream(it);
+            
+            Thread t = new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    parseQuads(input, lang, baseIRI, out);
+                }
+            });
+            t.start();
+            
+            return it;
         }
     }
     

Modified: jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java (original)
+++ jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java Tue Jan 29 20:27:24 2013
@@ -26,7 +26,8 @@ import java.util.List ;
 import junit.framework.JUnit4TestAdapter ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap;
+import org.apache.jena.riot.system.PrefixMapFactory;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 import org.junit.AfterClass ;
@@ -70,7 +71,7 @@ public class TestBindingStreams extends 
     static Binding bb2 = build("(?a 'a\"b\"c') (?b 1)");
     static Binding bb3 = build("(?a 'aΩc') (?b 1)");
     
-    static PrefixMap pmap = new PrefixMap() ;
+    static PrefixMap pmap = PrefixMapFactory.create() ;
     static {
         pmap.add(":", "http://example/") ;
     }

Modified: jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java
URL: http://svn.apache.org/viewvc/jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java?rev=1440101&r1=1440100&r2=1440101&view=diff
==============================================================================
--- jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java (original)
+++ jena/branches/streaming-update/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/index/TestIndexTable.java Tue Jan 29 20:27:24 2013
@@ -48,7 +48,8 @@ import static com.hp.hpl.jena.reasoner.r
  * {@link com.hp.hpl.jena.sparql.engine.index.LinearIndex} classes. Also tests
  * that the {@link com.hp.hpl.jena.sparql.engine.index.IndexFactory} instantiates
  * the correct type of index depending on the data.
- * @author Paul Gearon
+ * 
+ * Contribution from Paul Gearon
  */
 public class TestIndexTable {