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/12/16 22:12:28 UTC

svn commit: r1422689 [2/3] - in /jena/trunk: jena-arq/ jena-arq/src-examples/arq/examples/riot/ jena-arq/src/main/java/arq/ jena-arq/src/main/java/arq/cmdline/ jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/ jena-arq/src/main/java/com/hp/...

Added: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/RDFParserOutputLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/RDFParserOutputLib.java?rev=1422689&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/RDFParserOutputLib.java (added)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/RDFParserOutputLib.java Sun Dec 16 21:11:51 2012
@@ -0,0 +1,240 @@
+/**
+ * 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 org.apache.jena.riot.lang;
+
+import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.atlas.lib.Tuple ;
+
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+
+/** Various Common RDFParserOutput set ups */
+public class RDFParserOutputLib
+{
+    /** Send everything to nowhere ... efficiently */
+    public static RDFParserOutput sinkNull()                       { return new ParserOutputSink() ; }
+
+    public static RDFParserOutput graph(Graph graph)               { return new ParserOutputGraph(graph) ; }
+    
+    public static RDFParserOutput dataset(DatasetGraph dataset)    { return new ParserOutputDataset(dataset) ; }
+
+    
+    /** 
+     * Outpout 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.  
+     */
+    public static RDFParserOutput sinkTriples(Sink<Triple> sink)   { return new ParserOutputSinkTriples(sink) ; }
+
+    /** 
+     * 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.  
+     */
+    public static RDFParserOutput sinkQuads(Sink<Quad> sink)       { return new ParserOutputSinkQuads(sink) ; }
+    
+    /** Convert any triples seen to a quads, adding a graph node of {@link Quad#tripleInQuad} */
+    public static RDFParserOutput extendTriplesToQuads(RDFParserOutput base)
+    { return extendTriplesToQuads(Quad.tripleInQuad, base) ; }
+    
+    /** Convert any triples seen to a quads, adding the specified graph node */
+    public static RDFParserOutput extendTriplesToQuads(Node graphNode, RDFParserOutput base)
+    { return new ParserOutputSinkTriplesToQuads(graphNode, base) ; }
+    
+    public static RDFParserOutputCounting count()
+    { return new ParserOutputCountingBase(sinkNull()) ; }
+
+    public static RDFParserOutputCounting count(RDFParserOutput other)
+    { return new ParserOutputCountingBase(other) ; }
+
+    
+    private static class ParserOutputSink implements RDFParserOutput
+    {
+        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 ParserOutputWrapper implements RDFParserOutput
+    {
+        protected final RDFParserOutput other ;
+        public ParserOutputWrapper (RDFParserOutput base)  { this.other = base ;}
+        @Override public void start()                   { other.start() ; }
+        @Override public void triple(Triple triple)     { other.triple(triple) ; }
+        @Override public void quad(Quad quad)           { other.quad(quad); } 
+        @Override public void tuple(Tuple<Node> tuple)  { other.tuple(tuple) ; }
+        @Override public void base(String base)         { other.base(base) ; }
+        @Override public void prefix(String prefix, String iri) { other.prefix(prefix, iri) ; }
+        @Override public void finish()                  { other.finish() ; }
+    }
+
+    private static class ParserOutputSinkTriplesToQuads extends ParserOutputWrapper
+    {
+        private final Node gn ;
+        ParserOutputSinkTriplesToQuads(Node gn, RDFParserOutput base)
+        { super(base) ; this.gn = gn ; }
+        
+        @Override public void triple(Triple triple)
+        { other.quad(new Quad(gn, triple)) ; }
+    }
+    
+
+    private static class ParserOutputSinkTriples extends ParserOutputSink
+    {
+        private final Sink<Triple> sink ;
+
+        public ParserOutputSinkTriples(Sink<Triple> sink)
+        { this.sink = sink ; }
+
+        @Override
+        public void triple(Triple triple)
+        { sink.send(triple) ; }
+
+        @Override
+        public void finish()
+        { sink.flush() ; }
+    }
+    
+    private static class ParserOutputSinkQuads extends ParserOutputSink
+    {
+        private final Sink<Quad> sink ;
+
+        public ParserOutputSinkQuads(Sink<Quad> sink)
+        { this.sink = sink ; }
+
+        @Override
+        public void quad(Quad quad)
+        { sink.send(quad) ; }
+
+        @Override
+        public void finish()
+        { sink.flush() ; }
+    }
+    
+    private static class ParserOutputGraph extends ParserOutputSink
+    {
+        protected final Graph graph ;
+        public ParserOutputGraph(Graph graph) { this.graph = graph ; }
+        
+        @Override public void triple(Triple triple)     { graph.add(triple) ; }
+        @Override public void quad(Quad quad)
+        {
+            throw new IllegalStateException("Quad passed to graph parsing") ;
+        }
+        
+        @Override public void base(String base)
+        { }
+
+        @Override public void prefix(String prefix, String uri)
+        {
+            graph.getPrefixMapping().setNsPrefix(prefix, uri) ;
+        }
+    }
+
+    private static class ParserOutputDataset extends ParserOutputSink
+    {
+        protected final DatasetGraph dsg ;
+        public ParserOutputDataset(DatasetGraph dsg) { this.dsg = dsg ; }
+        
+        @Override public void triple(Triple triple) 
+        {
+            throw new IllegalStateException("Triple passed to dataset parsing") ;
+        }
+        
+        @Override public void quad(Quad quad) 
+        { 
+            if ( quad.isTriple() )
+                dsg.add(Quad.defaultGraphNodeGenerated, quad.getSubject(), quad.getPredicate(), quad.getObject()) ;
+            else
+                dsg.add(quad) ;
+        }
+        
+        @Override public void base(String base)
+        { }
+
+        @Override public void prefix(String prefix, String uri)
+        {
+            //dsg.getPrefixMapping().setNsPrefix(prefix, uri) ;
+        }
+    }
+
+    private  static class ParserOutputCountingBase extends ParserOutputWrapper implements RDFParserOutput, RDFParserOutputCounting
+    {
+        private long countTriples = 0 ;
+        private long countQuads = 0 ;
+        private long countTuples = 0 ;
+        private long countBase = 0 ;
+        private long countPrefixes = 0 ;
+        
+        public ParserOutputCountingBase (RDFParserOutput other)     { super(other) ; }
+
+        @Override
+        public void triple(Triple triple)
+        {
+            countTriples++ ;
+            super.triple(triple) ;
+        }
+
+        @Override
+        public void quad(Quad quad)
+        {
+            countQuads++ ;
+            super.quad(quad) ;
+        }
+
+        @Override
+        public void tuple(Tuple<Node> tuple)
+        {
+            countTuples++ ;
+            super.tuple(tuple) ;
+        }
+        
+        @Override
+        public long count()
+        {
+            return countTriples + countQuads + countTuples ;
+        }
+
+        @Override
+        public long countTriples()
+        {
+            return countTriples ;
+        }
+
+        @Override
+        public long countQuads()
+        {
+            return countQuads ;
+        }
+
+        @Override
+        public long countTuples()
+        {
+            return countTuples ;
+        }
+    }
+}
\ No newline at end of file

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkQuadsToDataset.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkQuadsToDataset.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkQuadsToDataset.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkQuadsToDataset.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.lang;
+package org.apache.jena.riot.lang;
 
 import org.apache.jena.atlas.lib.Sink ;
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkTriplesToGraph.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkTriplesToGraph.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkTriplesToGraph.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/SinkTriplesToGraph.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.lang;
+package org.apache.jena.riot.lang;
 
 import org.apache.jena.atlas.event.Event ;
 import org.apache.jena.atlas.event.EventListener ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.openjena.riot.ErrorHandler ;
 import org.openjena.riot.ErrorHandlerFactory ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.lib.CacheFactory ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterBase.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterBase.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.io.BufferedWriter ;
 import java.io.OutputStream ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterNTriples2.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterNTriples2.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterNTriples2.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterNTriples2.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.io.Writer ;
 import java.util.Iterator ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterRdfJson.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterRdfJson.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterRdfJson.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/JenaWriterRdfJson.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.io.Writer ;
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/LangTag.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/LangTag.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/LangTag.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/LangTag.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.util.regex.Matcher ;
 import java.util.regex.Pattern ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/MapWithScope.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/MapWithScope.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/MapWithScope.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/MapWithScope.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.util.Map ;
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java Sun Dec 16 21:11:51 2012
@@ -16,24 +16,21 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.openjena.riot.ErrorHandler ;
-import org.openjena.riot.lang.LabelToNode ;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 import org.apache.jena.iri.IRI ;
+import org.apache.jena.riot.lang.LabelToNode ;
 import org.apache.jena.riot.tokens.Token ;
 
 import com.hp.hpl.jena.sparql.core.Quad ;
 
 public interface ParserProfile
 {
-//    public DatasetGraph createDatasetGraph(long line, long col) ;
-//    public Graph createGraph(long line, long col) ;
-    
     public String resolveIRI(String uriStr, long line, long col) ;
     public IRI makeIRI(String uriStr, long line, long col) ;
     

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java Sun Dec 16 21:11:51 2012
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.apache.jena.iri.IRI ;
+import org.apache.jena.riot.lang.LabelToNode ;
 import org.apache.jena.riot.tokens.Token ;
 import org.apache.jena.riot.tokens.TokenType ;
 import org.openjena.riot.ErrorHandler ;
 import org.openjena.riot.RiotException ;
 import org.openjena.riot.SysRIOT ;
-import org.openjena.riot.lang.LabelToNode ;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileChecker.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileChecker.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileChecker.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileChecker.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.openjena.riot.ErrorHandler ;
 import org.openjena.riot.RiotException ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.util.Collections ;
 import java.util.HashMap ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap2.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap2.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap2.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap2.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 
 import org.apache.jena.atlas.logging.Log ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/Prologue.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import java.util.Map ;
 import java.util.Map.Entry ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotChars.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotChars.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotChars.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotChars.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 public class RiotChars
 {

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.riot.tokens.Token ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SinkExtendTriplesToQuads.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SinkExtendTriplesToQuads.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SinkExtendTriplesToQuads.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SinkExtendTriplesToQuads.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
 import org.apache.jena.atlas.lib.Sink ;
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SyntaxLabels.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SyntaxLabels.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SyntaxLabels.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/SyntaxLabels.java Sun Dec 16 21:11:51 2012
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.system;
+package org.apache.jena.riot.system;
 
-import org.openjena.riot.lang.LabelToNode ;
+import org.apache.jena.riot.lang.LabelToNode ;
 import org.openjena.riot.out.NodeToLabel ;
 
 /** Factory for default policies for syntax labels to and from nodes */  

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java Sun Dec 16 21:11:51 2012
@@ -45,9 +45,9 @@ import java.util.List ;
 import org.apache.jena.atlas.io.PeekReader ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Pair ;
+import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.Prologue ;
 import org.openjena.riot.RiotException ;
-import org.openjena.riot.system.PrefixMap ;
-import org.openjena.riot.system.Prologue ;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.datatypes.TypeMapper ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/tokens/TokenizerText.java Sun Dec 16 21:11:51 2012
@@ -19,16 +19,16 @@
 package org.apache.jena.riot.tokens;
 
 import static org.apache.jena.atlas.lib.Chars.* ;
-import static org.openjena.riot.system.RiotChars.charInArray ;
-import static org.openjena.riot.system.RiotChars.isA2Z ;
-import static org.openjena.riot.system.RiotChars.isA2ZN ;
-import static org.openjena.riot.system.RiotChars.isAlphaNumeric ;
-import static org.openjena.riot.system.RiotChars.isHexChar ;
-import static org.openjena.riot.system.RiotChars.isNewlineChar ;
-import static org.openjena.riot.system.RiotChars.isPNChars ;
-import static org.openjena.riot.system.RiotChars.isWhitespace ;
-import static org.openjena.riot.system.RiotChars.range ;
-import static org.openjena.riot.system.RiotChars.valHexChar ;
+import static org.apache.jena.riot.system.RiotChars.charInArray ;
+import static org.apache.jena.riot.system.RiotChars.isA2Z ;
+import static org.apache.jena.riot.system.RiotChars.isA2ZN ;
+import static org.apache.jena.riot.system.RiotChars.isAlphaNumeric ;
+import static org.apache.jena.riot.system.RiotChars.isHexChar ;
+import static org.apache.jena.riot.system.RiotChars.isNewlineChar ;
+import static org.apache.jena.riot.system.RiotChars.isPNChars ;
+import static org.apache.jena.riot.system.RiotChars.isWhitespace ;
+import static org.apache.jena.riot.system.RiotChars.range ;
+import static org.apache.jena.riot.system.RiotChars.valHexChar ;
 
 import java.util.NoSuchElementException ;
 
@@ -37,8 +37,8 @@ import com.hp.hpl.jena.sparql.ARQInterna
 import org.apache.jena.atlas.AtlasException ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.io.PeekReader ;
+import org.apache.jena.riot.system.RiotChars ;
 import org.openjena.riot.RiotParseException ;
-import org.openjena.riot.system.RiotChars ;
 
 /** Tokenizer for all sorts of things RDF-ish */
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java Sun Dec 16 21:11:51 2012
@@ -26,15 +26,14 @@ import java.util.Map ;
 import org.apache.http.HttpEntity ;
 import org.apache.http.HttpResponse ;
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.atlas.web.MediaType ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.RDFParserOutput ;
+import org.apache.jena.riot.lang.RDFParserOutputLib ;
 import org.openjena.riot.RiotReader ;
 import org.openjena.riot.WebContent ;
-import org.openjena.riot.lang.LangRIOT ;
-import org.openjena.riot.lang.SinkTriplesToGraph ;
 
 import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.query.ResultSet ;
 import com.hp.hpl.jena.query.ResultSetFactory ;
 import com.hp.hpl.jena.sparql.graph.GraphFactory ;
@@ -58,9 +57,9 @@ public class HttpResponseLib
                 HttpEntity entity = response.getEntity() ;
                 MediaType mt = MediaType.create(response.getFirstHeader(HttpNames.hContentType).getValue()) ;
                 mt.getCharset() ;
-                Sink<Triple> sink = new SinkTriplesToGraph(g) ; 
+                RDFParserOutput dest = RDFParserOutputLib.graph(g) ; 
                 InputStream in = entity.getContent() ;
-                LangRIOT parser = createParser(in, baseIRI, sink) ;
+                LangRIOT parser = createParser(in, baseIRI, dest) ;
                 parser.parse() ;
                 in.close() ;
                 this.graph = g ; 
@@ -70,7 +69,7 @@ public class HttpResponseLib
         @Override
         public Graph get() { return graph ; }
         
-        abstract protected LangRIOT createParser(InputStream in, String baseIRI, Sink<Triple> sink) ;
+        abstract protected LangRIOT createParser(InputStream in, String baseIRI, RDFParserOutput dest) ;
     }
 
     public static HttpResponseHandler httpDumpResponse = new HttpResponseHandler()
@@ -106,25 +105,25 @@ public class HttpResponseLib
     public static HttpCaptureResponse<Graph> graphReaderTurtle = new AbstractGraphReader()
     {
         @Override
-        protected LangRIOT createParser(InputStream in, String baseIRI, Sink<Triple> sink)
+        protected LangRIOT createParser(InputStream in, String baseIRI, RDFParserOutput dest)
         {
-            return RiotReader.createParserTurtle(in, baseIRI, sink) ;
+            return RiotReader.createParserTurtle(in, baseIRI, dest) ;
         }
     } ;
     public static HttpCaptureResponse<Graph> graphReaderNTriples = new AbstractGraphReader()
     {
         @Override
-        protected LangRIOT createParser(InputStream in, String baseIRI, Sink<Triple> sink)
+        protected LangRIOT createParser(InputStream in, String baseIRI, RDFParserOutput dest)
         {
-            return RiotReader.createParserNTriples(in, sink) ;
+            return RiotReader.createParserNTriples(in, dest) ;
         }
     } ;
     public static HttpCaptureResponse<Graph> graphReaderRDFXML = new AbstractGraphReader()
     {
         @Override
-        protected LangRIOT createParser(InputStream in, String baseIRI, Sink<Triple> sink)
+        protected LangRIOT createParser(InputStream in, String baseIRI, RDFParserOutput dest)
         {
-            return RiotReader.createParserRDFXML(in, baseIRI, sink) ;
+            return RiotReader.createParserRDFXML(in, baseIRI, dest) ;
         }
     } ;
     

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/LangTag.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/LangTag.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/LangTag.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/LangTag.java Sun Dec 16 21:11:51 2012
@@ -22,7 +22,7 @@ import java.util.regex.Matcher ;
 import java.util.regex.Pattern ;
 
 import org.apache.jena.atlas.lib.Chars ;
-import org.openjena.riot.system.RiotChars ;
+import org.apache.jena.riot.system.RiotChars ;
 
 
 /**

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RIOT.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RIOT.java Sun Dec 16 21:11:51 2012
@@ -20,7 +20,6 @@ package org.openjena.riot;
 
 import org.apache.jena.riot.ParserRegistry ;
 import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.WebReader2 ;
 
 import com.hp.hpl.jena.query.ARQ ;
 import com.hp.hpl.jena.sparql.SystemARQ ;
@@ -72,6 +71,5 @@ public class RIOT
         ParserRegistry.init() ;
         
         SysRIOT.wireIntoJena() ;
-        WebReader2.wireIntoJena() ;
     }
 }

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotLoader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotLoader.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotLoader.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotLoader.java Sun Dec 16 21:11:51 2012
@@ -23,11 +23,9 @@ import java.io.InputStream ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.lang.* ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.openjena.riot.lang.LangRIOT ;
-import org.openjena.riot.lang.SinkQuadsToDataset ;
-import org.openjena.riot.lang.SinkTriplesToGraph ;
 
 import com.hp.hpl.jena.graph.Factory ;
 import com.hp.hpl.jena.graph.Graph ;
@@ -44,7 +42,8 @@ import com.hp.hpl.jena.sparql.lib.Datase
 
 public class RiotLoader
 {
-
+    // All to call WebReader2?
+    
     /** Parse a file and return the quads in a dataset (in-memory) */ 
     public static DatasetGraph load(String filename)
     {
@@ -60,24 +59,20 @@ public class RiotLoader
     /** Parse a file and return the quads in a dataset (in-memory) */ 
     public static DatasetGraph load(String filename, Lang lang, String baseURI)
     {
-        if ( lang == null )
-            lang = Lang.guess(filename, Lang.NQUADS) ;
         DatasetGraph dsg = DatasetLib.createDatasetGraphMem() ;
         read(filename, dsg, lang, baseURI) ;
         return dsg ;
     }
     
-    /** Parse a string and return the quads in a dataset (in-memory) (convenience operation)*/ 
+    /** Parse a string and return the quads in a dataset (in-memory) (convenience operation) */ 
     public static DatasetGraph datasetFromString(String string, Lang language, String baseURI)
     {
         DatasetGraph dsg = DatasetLib.createDatasetGraphMem() ;
-        Sink<Quad> sink = RiotLoader.datasetSink(dsg) ;
+        RDFParserOutput dest = RDFParserOutputLib.dataset(dsg) ;
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(string) ;
 
-        LangRIOT parser = RiotReader.createParserQuads(tokenizer, language, baseURI, sink) ;
-        try {  
-            parser.parse() ;
-        } finally { sink.close() ; }
+        LangRIOT parser = RiotReader.createParserQuads(tokenizer, language, baseURI, dest) ;
+        parser.parse() ;
         return dsg;
     }
 
@@ -107,12 +102,10 @@ public class RiotLoader
     public static Graph graphFromString(String string, Lang language, String baseURI)
     {
         Graph g = Factory.createDefaultGraph() ;
-        Sink<Triple> sink = graphSink(g) ;
+        RDFParserOutput dest = RDFParserOutputLib.graph(g) ;
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(string) ;
-        LangRIOT parser = RiotReader.createParserTriples(tokenizer, language, baseURI, sink) ;
-        try {
-            parser.parse() ;
-        } finally { sink.close() ; }
+        LangRIOT parser = RiotReader.createParserTriples(tokenizer, language, baseURI, dest) ;
+        parser.parse() ;
         return g ;
     }
     
@@ -202,7 +195,8 @@ public class RiotLoader
         //if ( language != Lang.NQUADS && language != Lang.TRIG )
             throw new RiotException("Language not supported for quads: "+language) ;
         
-        LangRIOT parser = RiotReader.createParserQuads(input, language, baseURI, sink) ;
+        RDFParserOutput dest = RDFParserOutputLib.sinkQuads(sink) ;
+        LangRIOT parser = RiotReader.createParserQuads(input, language, baseURI, dest) ;
         parser.parse() ;
         sink.flush() ;
     }
@@ -212,7 +206,8 @@ public class RiotLoader
     {
         if ( ! language.isTriples() )
             throw new RiotException("Language not supported for triples: "+language) ;
-        LangRIOT parser = RiotReader.createParserTriples(input, language, baseURI, sink) ;
+        RDFParserOutput dest = RDFParserOutputLib.sinkTriples(sink) ;
+        LangRIOT parser = RiotReader.createParserTriples(input, language, baseURI, dest) ;
         parser.parse() ;
         sink.flush();
     }

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotParsePuller.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotParsePuller.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotParsePuller.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotParsePuller.java Sun Dec 16 21:11:51 2012
@@ -31,8 +31,8 @@ import org.apache.jena.atlas.AtlasExcept
 import org.apache.jena.atlas.lib.Closeable ;
 import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.atlas.lib.SinkToQueue ;
-import org.openjena.riot.lang.LangRIOT ;
-import org.openjena.riot.system.ParserProfile ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.system.ParserProfile ;
 
 /**
  * A wrapper that converts the RIOT parsing API from push to pull.  It does this by starting up a

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotQuadParsePuller.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotQuadParsePuller.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotQuadParsePuller.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotQuadParsePuller.java Sun Dec 16 21:11:51 2012
@@ -21,7 +21,9 @@ package org.openjena.riot;
 import java.io.InputStream ;
 
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.RDFParserOutput ;
+import org.apache.jena.riot.lang.RDFParserOutputLib ;
 
 import com.hp.hpl.jena.sparql.core.Quad ;
 
@@ -40,7 +42,8 @@ public class RiotQuadParsePuller extends
     @Override
     protected LangRIOT createParser(Sink<Quad> sink)
     {
-        return RiotReader.createParserQuads(in, lang, baseIRI, sink) ;
+        RDFParserOutput dest = RDFParserOutputLib.sinkQuads(sink) ;
+        return RiotReader.createParserQuads(in, lang, baseIRI, dest) ;
     }
 }
 

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java Sun Dec 16 21:11:51 2012
@@ -24,7 +24,7 @@ import static org.openjena.riot.Lang.RDF
 import static org.openjena.riot.Lang.RDFXML ;
 
 import java.io.InputStream ;
-import java.util.Iterator;
+import java.util.Iterator ;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.io.PeekReader ;
@@ -32,18 +32,20 @@ import org.apache.jena.atlas.iterator.It
 import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
 import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.WebReader2 ;
+import org.apache.jena.riot.lang.* ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.RiotLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.openjena.riot.lang.* ;
-import org.openjena.riot.system.IRIResolver ;
-import org.openjena.riot.system.RiotLib ;
-import org.openjena.riot.system.SinkExtendTriplesToQuads ;
 
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 
 /** Operations to access RIOT parsers and send the output to 
- * a Sink (triples or quads as appropriate)
+ *  a ParserOutput (triples or quads as appropriate).
+ *  Operations to send to a sink (special case of a ParserOutput).
+ *  @see WebReader2 for reading from a location, including web access and content negotation.   
  */
 public class RiotReader
 {
@@ -51,6 +53,7 @@ public class RiotReader
      * Must be in a triples syntax.
      * @param filename 
      * @param sink  Where to send the triples from the parser.
+     * @see      WebReader2#readTriples
      */  
     public static void parseTriples(String filename, Sink<Triple> sink)
     { parseTriples(filename, null, null, sink) ; }
@@ -61,6 +64,7 @@ public class RiotReader
      * @param lang      Language, or null for "guess from URL" (e.g. file extension)
      * @param baseIRI   Base IRI, or null for based on input filename
      * @param sink      Where to send the triples from the parser.
+     * @see     WebReader2#readTriples
      */  
     public static void parseTriples(String filename, Lang lang, String baseIRI, Sink<Triple> sink)
     {
@@ -72,14 +76,6 @@ public class RiotReader
         if ( lang == null )
             lang = Lang.guess(filename, NTRIPLES) ;     // ** N-Triples
         
-        if ( lang == RDFXML )
-        {
-            // Fudge to make the bulk loader process RDF/XML files.
-            LangRDFXML.create(in, base, filename, ErrorHandlerFactory.getDefaultErrorHandler(), sink).parse() ;
-            IO.close(in) ;
-            return ;
-        }
-        
         parseTriples(in, lang, base, sink) ;
         IO.close(in) ;
     }
@@ -89,11 +85,12 @@ public class RiotReader
      * @param lang      Language.
      * @param baseIRI   Base IRI. 
      * @param sink      Where to send the triples from the parser.
-     */
-
+     * @see             WebReader2#readTriples
+     */  
     public static void parseTriples(InputStream in, Lang lang, String baseIRI, Sink<Triple> sink)
     {
-        LangRIOT parser = RiotReader.createParserTriples(in, lang, baseIRI, sink) ;
+        RDFParserOutput dest = RDFParserOutputLib.sinkTriples(sink) ;
+        LangRIOT parser = RiotReader.createParserTriples(in, lang, baseIRI, dest) ;
         parser.parse() ;
     }
     
@@ -102,6 +99,7 @@ public class RiotReader
     /** Parse a file, sending quads to a sink.
      * @param filename
      * @param sink  Where to send the quads from the parser.
+     * @see          WebReader2#readQuads
      */
     public static void parseQuads(String filename, Sink<Quad> sink)
     { parseQuads(filename, null, null, sink) ; }
@@ -111,6 +109,7 @@ public class RiotReader
      * @param lang      Language, or null for "guess from filename" (e.g. extension)
      * @param baseIRI   Base IRI, or null for base on input filename
      * @param sink      Where to send the quads from the parser.
+     * @see             WebReader2#readQuads
      */
     public static void parseQuads(String filename, Lang lang, String baseIRI, Sink<Quad> sink)
     {
@@ -127,43 +126,132 @@ public class RiotReader
      * @param lang      Language.
      * @param baseIRI   Base IRI. 
      * @param sink      Where to send the quads from the parser.
+     * @see              WebReader2#readQuads
      */
     public static void parseQuads(InputStream in, Lang lang, String baseIRI, Sink<Quad> sink)
     {
-        LangRIOT parser = RiotReader.createParserQuads(in, lang, baseIRI, sink) ;
+        RDFParserOutput dest = RDFParserOutputLib.sinkQuads(sink) ;
+        LangRIOT parser = RiotReader.createParserQuads(in, lang, baseIRI, dest) ;
+        parser.parse() ;
+    }
+
+    /** Parse a file, sending triples to a sink.
+     * Must be in a triples syntax.
+     * @param filename 
+     * @param dest  Where to send the triples from the parser.
+     */
+    public static void parseTriples(String filename, RDFParserOutput dest)
+    { parseTriples(filename, null, null, dest) ; }
+    
+    /** Parse a file, sending triples to a sink.
+     * Must be in a triples syntax.
+     * @param filename 
+     * @param lang      Language, or null for "guess from URL" (e.g. file extension)
+     * @param baseIRI   Base IRI, or null for based on input filename
+     * @param dest      Where to send the triples from the parser.
+     */  
+    public static void parseTriples(String filename, Lang lang, String baseIRI, RDFParserOutput dest)
+    {
+        checkTriplesLanguage(filename, lang) ;
+
+        InputStream in = IO.openFile(filename) ; 
+        String base = chooseBaseIRI(baseIRI, filename) ;
+
+        if ( lang == null )
+            lang = Lang.guess(filename, NTRIPLES) ;     // ** N-Triples
+        
+        if ( lang == RDFXML )
+        {
+            // Fudge to make the bulk loader process RDF/XML files.
+            LangRDFXML.create(in, base, filename, ErrorHandlerFactory.getDefaultErrorHandler(), dest).parse() ;
+            IO.close(in) ;
+            return ;
+        }
+        
+        parseTriples(in, lang, base, dest) ;
+        IO.close(in) ;
+    }
+
+    /** Parse an InputStream, sending triples to a sink.
+     * @param in        Source for bytes to parse.
+     * @param lang      Language.
+     * @param baseIRI   Base IRI. 
+     * @param dest      Where to send the triples from the parser.
+     */  
+    public static void parseTriples(InputStream in, Lang lang, String baseIRI, RDFParserOutput dest)
+    {
+        LangRIOT parser = RiotReader.createParserTriples(in, lang, baseIRI, dest) ;
+        parser.parse() ;
+        // Prefixes.
+    }
+    
+    // -------- Quads
+    
+    /** Parse a file, sending quads to a sink.
+     * @param filename
+     * @param dest  Where to send the quads from the parser.
+     */
+    public static void parseQuads(String filename, RDFParserOutput dest)
+    { parseQuads(filename, null, null, dest) ; }
+    
+    /** Parse a file, sending quads to a sink.
+     * @param filename 
+     * @param lang      Language, or null for "guess from filename" (e.g. extension)
+     * @param baseIRI   Base IRI, or null for base on input filename
+     * @param dest      Where to send the quads from the parser.
+     */
+    public static void parseQuads(String filename, Lang lang, String baseIRI, RDFParserOutput dest)
+    {
+        InputStream in = IO.openFile(filename) ; 
+        String base = chooseBaseIRI(baseIRI, filename) ;
+        if ( lang == null )
+            lang = Lang.guess(filename, NQUADS) ;     // ** N-Quads
+        parseQuads(in, lang, base, dest) ;
+        IO.close(in) ;
+    }
+
+    /** Parse an InputStream, sending quads to a sink.
+     * @param in        Source for bytes to parse.
+     * @param lang      Language.
+     * @param baseIRI   Base IRI. 
+     * @param dest      Where to send the quads from the parser.
+     */
+    public static void parseQuads(InputStream in, Lang lang, String baseIRI, RDFParserOutput dest)
+    {
+        LangRIOT parser = RiotReader.createParserQuads(in, lang, baseIRI, dest) ;
         parser.parse() ;
     }
 
     // -------- Parsers
     
     /** Create a parser for a triples language */  
-    public static LangRIOT createParserTriples(InputStream input, Lang lang, String baseIRI, Sink<Triple> sink)
+    public static LangRIOT createParserTriples(InputStream input, Lang lang, String baseIRI, RDFParserOutput dest)
     {
         if ( lang == RDFXML )
         {
             if ( baseIRI != null )
                 baseIRI = IRIResolver.resolveString(baseIRI) ;
-            return LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), sink) ;
+            return LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
         }
         Tokenizer tokenizer = ( lang == RDFJSON ) ?
             new TokenizerJSON(PeekReader.makeUTF8(input)) :
                 TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserTriples(tokenizer, lang, baseIRI ,sink) ;
+        return createParserTriples(tokenizer, lang, baseIRI, dest) ;
     }
     
     /** Create a parser for a triples language */  
-    public static LangRIOT createParserTriples(Tokenizer tokenizer, Lang lang, String baseIRI, Sink<Triple> sink)
+    public static LangRIOT createParserTriples(Tokenizer tokenizer, Lang lang, String baseIRI, RDFParserOutput dest)
     {
         switch (lang)
         {
             case N3 :
             case TURTLE :
-                return createParserTurtle(tokenizer, baseIRI, sink) ;
+                return createParserTurtle(tokenizer, baseIRI, dest) ;
             case NTRIPLES :
-                return createParserNTriples(tokenizer, sink) ;
+                return createParserNTriples(tokenizer, dest) ;
             case RDFJSON :
                 // But it must be a JSON tokenizer ...
-            	return createParserRdfJson(tokenizer, sink) ;
+            	return createParserRdfJson(tokenizer, dest) ;
             case RDFXML :
                 throw new RiotException("Not possible - can't parse RDF/XML from a RIOT token stream") ;
             case NQUADS :
@@ -191,19 +279,14 @@ public class RiotReader
     }
     
     /** Create a parser for a quads (or triples) language */  
-    public static LangRIOT createParserQuads(InputStream input, Lang lang, String baseIRI, Sink<Quad> sink)
+    public static LangRIOT createParserQuads(InputStream input, Lang lang, String baseIRI, RDFParserOutput dest)
     {
-        if ( lang.isTriples() )
-        {
-            SinkExtendTriplesToQuads converter = new SinkExtendTriplesToQuads(sink) ;
-            return createParserTriples(input, lang, baseIRI, converter) ;
-        }
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserQuads(tokenizer, lang, baseIRI, sink) ;
+        return createParserQuads(tokenizer, lang, baseIRI, dest) ;
     }
     
     /** Create a parser for a quads language */  
-    public static LangRIOT createParserQuads(Tokenizer tokenizer, Lang lang, String baseIRI, Sink<Quad> sink)
+    public static LangRIOT createParserQuads(Tokenizer tokenizer, Lang lang, String baseIRI, RDFParserOutput dest)
     {
         switch (lang)
         {
@@ -212,13 +295,12 @@ public class RiotReader
             case TURTLE :
             case RDFXML :
             case RDFJSON :
-                // Add a triples to quads wrapper.
-                SinkExtendTriplesToQuads converter = new SinkExtendTriplesToQuads(sink) ;
-                return createParserTriples(tokenizer, lang, baseIRI, converter) ;
+                dest = RDFParserOutputLib.extendTriplesToQuads(dest) ;
+                return createParserTriples(tokenizer, lang, baseIRI, dest) ;
             case NQUADS :
-                return createParserNQuads(tokenizer, sink) ;
+                return createParserNQuads(tokenizer, dest) ;
             case TRIG :
-                return createParserTriG(tokenizer, baseIRI, sink) ;
+                return createParserTriG(tokenizer, baseIRI, dest) ;
         }
         return null ;
     }
@@ -241,82 +323,82 @@ public class RiotReader
     }
     
     /** Create a parser for Turtle, with default behaviour */
-    public static LangTurtle createParserTurtle(InputStream input, String baseIRI, Sink<Triple> sink)
+    public static LangTurtle createParserTurtle(InputStream input, String baseIRI, RDFParserOutput dest)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserTurtle(tokenizer, baseIRI, sink) ;
+        return createParserTurtle(tokenizer, baseIRI, dest) ;
     }
     
     /** Create a parser for Turtle, with default behaviour */
-    public static LangTurtle createParserTurtle(Tokenizer tokenizer, String baseIRI, Sink<Triple> sink)
+    public static LangTurtle createParserTurtle(Tokenizer tokenizer, String baseIRI, RDFParserOutput dest)
     {
-        LangTurtle parser = new LangTurtle(tokenizer, RiotLib.profile(Lang.TURTLE, baseIRI), sink) ;
+        LangTurtle parser = new LangTurtle(tokenizer, RiotLib.profile(Lang.TURTLE, baseIRI), dest) ;
         return parser ;
     }
 
     /** Create a parser for RDF/XML */
-    public static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, Sink<Triple> sink)
+    public static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, RDFParserOutput dest)
     {
         if ( baseIRI == null )
             baseIRI = chooseBaseIRI() ;
-        LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), sink) ;
+        LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
         return parser ;
     }
 
     /** Create parsers for RDF/JSON */
-    public static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, Sink<Triple> sink)
+    public static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, RDFParserOutput dest)
     {
-    	LangRDFJSON parser = new LangRDFJSON(tokenizer, RiotLib.profile(Lang.RDFJSON, null), sink) ;
+    	LangRDFJSON parser = new LangRDFJSON(tokenizer, RiotLib.profile(Lang.RDFJSON, null), dest) ;
     	return parser;
     }
 
-    public static LangRDFJSON createParserRdfJson(InputStream input, Sink<Triple> sink)
+    public static LangRDFJSON createParserRdfJson(InputStream input, RDFParserOutput dest)
     {
     	TokenizerJSON tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input)) ;
-    	return createParserRdfJson(tokenizer, sink) ;
+    	return createParserRdfJson(tokenizer, dest) ;
     }
     
     /** Create a parser for TriG, with default behaviour */
-    public static LangTriG createParserTriG(InputStream input, String baseIRI, Sink<Quad> sink)
+    public static LangTriG createParserTriG(InputStream input, String baseIRI, RDFParserOutput dest)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserTriG(tokenizer, baseIRI, sink) ;
+        return createParserTriG(tokenizer, baseIRI, dest) ;
     }
     
     /** Create a parser for TriG, with default behaviour */
-    public static LangTriG createParserTriG(Tokenizer tokenizer, String baseIRI, Sink<Quad> sink)
+    public static LangTriG createParserTriG(Tokenizer tokenizer, String baseIRI, RDFParserOutput dest)
     {
         if ( baseIRI == null )
             baseIRI = chooseBaseIRI() ;
-        LangTriG parser = new LangTriG(tokenizer, RiotLib.profile(Lang.TRIG, baseIRI), sink) ;
+        LangTriG parser = new LangTriG(tokenizer, RiotLib.profile(Lang.TRIG, baseIRI), dest) ;
         return parser ;
     }
 
     /** Create a parser for N-Triples, with default behaviour */
-    public static LangNTriples createParserNTriples(InputStream input, Sink<Triple> sink)
+    public static LangNTriples createParserNTriples(InputStream input, RDFParserOutput dest)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerASCII(input) ;
-        return createParserNTriples(tokenizer, sink) ;
+        return createParserNTriples(tokenizer, dest) ;
     }
     
     /** Create a parser for N-Triples, with default behaviour */
-    public static LangNTriples createParserNTriples(Tokenizer tokenizer, Sink<Triple> sink)
+    public static LangNTriples createParserNTriples(Tokenizer tokenizer, RDFParserOutput dest)
     {
-        LangNTriples parser = new LangNTriples(tokenizer, RiotLib.profile(Lang.NTRIPLES, null), sink) ;
+        LangNTriples parser = new LangNTriples(tokenizer, RiotLib.profile(Lang.NTRIPLES, null), dest) ;
         return parser ;
     }
     
     /** Create a parser for NQuads, with default behaviour */
-    public static LangNQuads createParserNQuads(InputStream input, Sink<Quad> sink)
+    public static LangNQuads createParserNQuads(InputStream input, RDFParserOutput dest)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerASCII(input) ;
-        return createParserNQuads(tokenizer, sink) ;
+        return createParserNQuads(tokenizer, dest) ;
     }
     
     /** Create a parser for NQuads, with default behaviour */
-    public static LangNQuads createParserNQuads(Tokenizer tokenizer, Sink<Quad> sink)
+    public static LangNQuads createParserNQuads(Tokenizer tokenizer, RDFParserOutput dest)
     {
-        LangNQuads parser = new LangNQuads(tokenizer, RiotLib.profile(Lang.NQUADS, null), sink) ;
+        LangNQuads parser = new LangNQuads(tokenizer, RiotLib.profile(Lang.NQUADS, null), dest) ;
         return parser ;
     }
     

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotTripleParsePuller.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotTripleParsePuller.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotTripleParsePuller.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotTripleParsePuller.java Sun Dec 16 21:11:51 2012
@@ -21,7 +21,9 @@ package org.openjena.riot;
 import java.io.InputStream ;
 
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.RDFParserOutput ;
+import org.apache.jena.riot.lang.RDFParserOutputLib ;
 
 import com.hp.hpl.jena.graph.Triple ;
 
@@ -40,7 +42,8 @@ public class RiotTripleParsePuller exten
     @Override
     protected LangRIOT createParser(Sink<Triple> sink)
     {
-        return RiotReader.createParserTriples(in, lang, baseIRI, sink) ;
+        RDFParserOutput dest = RDFParserOutputLib.sinkTriples(sink) ;
+        return RiotReader.createParserTriples(in, lang, baseIRI, dest) ;
     }
 }
 

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/SerializationFactoryFinder.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/SerializationFactoryFinder.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/SerializationFactoryFinder.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/SerializationFactoryFinder.java Sun Dec 16 21:11:51 2012
@@ -24,17 +24,17 @@ import java.util.Iterator ;
 
 import org.apache.jena.atlas.data.SerializationFactory ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.lang.LabelToNode ;
+import org.apache.jena.riot.lang.LangNQuads ;
+import org.apache.jena.riot.lang.LangNTriples ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.ParserProfileBase ;
+import org.apache.jena.riot.system.Prologue ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.openjena.riot.lang.LabelToNode ;
-import org.openjena.riot.lang.LangNQuads ;
-import org.openjena.riot.lang.LangNTriples ;
 import org.openjena.riot.out.NodeToLabel ;
 import org.openjena.riot.out.SinkQuadOutput ;
 import org.openjena.riot.out.SinkTripleOutput ;
-import org.openjena.riot.system.IRIResolver ;
-import org.openjena.riot.system.ParserProfileBase ;
-import org.openjena.riot.system.Prologue ;
 
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.core.Quad ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/SysRIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/SysRIOT.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/SysRIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/SysRIOT.java Sun Dec 16 21:11:51 2012
@@ -18,23 +18,14 @@
 
 package org.openjena.riot;
 
-import org.apache.jena.atlas.event.EventType ;
-import org.openjena.riot.system.JenaReaderNTriples2 ;
-import org.openjena.riot.system.JenaReaderRdfJson ;
-import org.openjena.riot.system.JenaReaderTurtle2 ;
-import org.openjena.riot.system.JenaWriterRdfJson ;
+import org.apache.jena.riot.IO_Jena ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
-import com.hp.hpl.jena.rdf.model.impl.RDFReaderFImpl ;
-import com.hp.hpl.jena.rdf.model.impl.RDFWriterFImpl ;
-
 public class SysRIOT
 {
     public static final String riotLoggerName = "org.openjena.riot" ;
     private static Logger riotLogger = LoggerFactory.getLogger(riotLoggerName) ;
-    public static final EventType startRead = new EventType(SysRIOT.class, "StartRead") ;
-    public static final EventType finishRead = new EventType(SysRIOT.class, "FinishRead") ;
     
     public static boolean StrictXSDLexicialForms = false ;
     public static boolean strictMode             = false ;
@@ -58,54 +49,15 @@ public class SysRIOT
         return riotLogger ;
     }
     
-    static String jenaNTriplesReader = "com.hp.hpl.jena.rdf.model.impl.NTripleReader" ; 
-    static String jenaTurtleReader = "com.hp.hpl.jena.n3.turtle.TurtleReader" ; 
-    static String jenaN3Reader = jenaTurtleReader ; 
-    
     public static void wireIntoJena()
     {
         RIOT.init() ;
-        /* No getter (!!)
-         * Standard:
-            com.hp.hpl.jena.rdf.model.impl.NTripleReader
-            com.hp.hpl.jena.rdf.model.impl.NTripleReader
-            
-            com.hp.hpl.jena.n3.turtle.TurtleReader 
-            com.hp.hpl.jena.n3.turtle.TurtleReader 
-            com.hp.hpl.jena.n3.turtle.TurtleReader 
-            com.hp.hpl.jena.n3.turtle.TurtleReader 
-         */
-
-        // Override N-TRIPLES and Turtle with faster implementations.
-        String readerNT = JenaReaderNTriples2.class.getName() ;
-        RDFReaderFImpl.setBaseReaderClassName("N-TRIPLES", readerNT) ;
-        RDFReaderFImpl.setBaseReaderClassName("N-TRIPLE",   readerNT) ;
-        
-        String readerTTL = JenaReaderTurtle2.class.getName() ;
-        RDFReaderFImpl.setBaseReaderClassName("N3",     readerTTL) ;
-        RDFReaderFImpl.setBaseReaderClassName("TURTLE", readerTTL) ;
-        RDFReaderFImpl.setBaseReaderClassName("Turtle", readerTTL) ;
-        RDFReaderFImpl.setBaseReaderClassName("TTL",    readerTTL) ;
-
-        // Add in the RDF/JSON reader and writer
-        String readerRdfJson = JenaReaderRdfJson.class.getName() ;
-        RDFReaderFImpl.setBaseReaderClassName("RDF/JSON", readerRdfJson) ;
-        String writerRdfJson = JenaWriterRdfJson.class.getName() ;
-        RDFWriterFImpl.setBaseWriterClassName("RDF/JSON", writerRdfJson) ;
+        IO_Jena.wireIntoJena() ;
     }
     
     public static void resetJenaReaders()
     {
-        RDFReaderFImpl.setBaseReaderClassName("N-TRIPLES", jenaNTriplesReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("N-TRIPLE",  jenaNTriplesReader) ;
-        
-        RDFReaderFImpl.setBaseReaderClassName("N3",     jenaTurtleReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("TURTLE", jenaTurtleReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("Turtle", jenaTurtleReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("TTL",    jenaTurtleReader) ;
-
-        RDFReaderFImpl.setBaseReaderClassName("RDF/JSON", "") ;
-        RDFWriterFImpl.setBaseWriterClassName("RDF/JSON", "") ;
+        IO_Jena.resetJenaReaders() ;
     }
 
 }

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NQuadsWriter.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NQuadsWriter.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NQuadsWriter.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NQuadsWriter.java Sun Dec 16 21:11:51 2012
@@ -23,8 +23,8 @@ import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.query.Dataset ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NTriplesWriter.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NTriplesWriter.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NTriplesWriter.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NTriplesWriter.java Sun Dec 16 21:11:51 2012
@@ -23,8 +23,8 @@ import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFmtLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFmtLib.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFmtLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFmtLib.java Sun Dec 16 21:11:51 2012
@@ -23,9 +23,6 @@ import java.io.Writer ;
 import java.net.MalformedURLException ;
 import java.util.Map ;
 
-import org.openjena.riot.system.PrefixMap ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.RiotChars ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
@@ -35,6 +32,10 @@ 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.Prologue ;
+import org.apache.jena.riot.system.RiotChars ;
+
 import com.hp.hpl.jena.shared.PrefixMapping ;
 import com.hp.hpl.jena.sparql.ARQConstants ;
 import com.hp.hpl.jena.sparql.core.Quad ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFormatterTTL.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFormatterTTL.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFormatterTTL.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeFormatterTTL.java Sun Dec 16 21:11:51 2012
@@ -22,8 +22,6 @@ import java.io.IOException ;
 import java.io.Writer ;
 import java.net.MalformedURLException ;
 
-import org.openjena.riot.system.PrefixMap ;
-import org.openjena.riot.system.RiotChars ;
 
 import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
 
@@ -32,6 +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.RiotChars ;
 
 public class NodeFormatterTTL extends NodeFormatterNT
 {

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeToLabel.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeToLabel.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeToLabel.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/NodeToLabel.java Sun Dec 16 21:11:51 2012
@@ -21,8 +21,8 @@ package org.openjena.riot.out;
 import java.util.HashMap ;
 import java.util.Map ;
 
-import org.openjena.riot.system.MapWithScope ;
-import org.openjena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.MapWithScope ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Node_Literal ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputLangUtils.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputLangUtils.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputLangUtils.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputLangUtils.java Sun Dec 16 21:11:51 2012
@@ -22,9 +22,6 @@ import java.io.IOException ;
 import java.io.Writer ;
 import java.net.MalformedURLException ;
 
-import org.openjena.riot.system.PrefixMap ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
@@ -33,6 +30,10 @@ 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.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
+
 import com.hp.hpl.jena.sparql.core.Quad ;
 
 /** Utilites for formatter output */

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputPolicy.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputPolicy.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputPolicy.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputPolicy.java Sun Dec 16 21:11:51 2012
@@ -18,7 +18,7 @@
 
 package org.openjena.riot.out;
 
-import org.openjena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMap ;
 
 public class OutputPolicy
 {

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputProfile.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputProfile.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputProfile.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/OutputProfile.java Sun Dec 16 21:11:51 2012
@@ -18,8 +18,8 @@
 
 package org.openjena.riot.out;
 
-import org.openjena.riot.system.PrefixMap ;
-import org.openjena.riot.system.Prologue ;
+import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.Prologue ;
 
 public class OutputProfile
 {

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/RDFJSONWriter.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/RDFJSONWriter.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/RDFJSONWriter.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/RDFJSONWriter.java Sun Dec 16 21:11:51 2012
@@ -27,8 +27,8 @@ import java.util.Set ;
 
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.GraphUtil ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkEntityOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkEntityOutput.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkEntityOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkEntityOutput.java Sun Dec 16 21:11:51 2012
@@ -27,9 +27,9 @@ import org.apache.jena.atlas.io.Indented
 import org.apache.jena.atlas.json.io.JSWriter ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.system.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 import org.openjena.riot.RiotException ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Node;
 

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkQuadOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkQuadOutput.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkQuadOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkQuadOutput.java Sun Dec 16 21:11:51 2012
@@ -24,8 +24,8 @@ import java.io.Writer ;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.core.Quad ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkTripleOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkTripleOutput.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkTripleOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/out/SinkTripleOutput.java Sun Dec 16 21:11:51 2012
@@ -25,8 +25,8 @@ import java.nio.charset.CharsetEncoder ;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.Sink ;
-import org.openjena.riot.system.Prologue ;
-import org.openjena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.Prologue ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;

Modified: jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java (original)
+++ jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java Sun Dec 16 21:11:51 2012
@@ -31,20 +31,18 @@ import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.atlas.lib.SinkCounting ;
 import org.apache.jena.atlas.lib.SinkNull ;
 import org.apache.jena.atlas.lib.StrUtils ;
+import org.apache.jena.riot.lang.* ;
+import org.apache.jena.riot.system.RiotLib ;
+import org.apache.jena.riot.system.SyntaxLabels ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 import org.apache.log4j.PropertyConfigurator ;
 import org.openjena.riot.* ;
-import org.openjena.riot.lang.LabelToNode ;
-import org.openjena.riot.lang.LangRDFXML ;
-import org.openjena.riot.lang.LangRIOT ;
 import org.openjena.riot.out.NodeToLabel ;
 import org.openjena.riot.out.SinkQuadOutput ;
 import org.openjena.riot.out.SinkTripleOutput ;
 import org.openjena.riot.process.inf.InfFactory ;
 import org.openjena.riot.process.inf.InferenceSetupRDFS ;
-import org.openjena.riot.system.RiotLib ;
-import org.openjena.riot.system.SyntaxLabels ;
 import arq.cmd.CmdException ;
 import arq.cmdline.* ;
 
@@ -292,12 +290,8 @@ public abstract class CmdLangParse exten
                 s = InfFactory.infTriples(s, setup) ;
             
             SinkCounting<Triple> sink2 = new SinkCounting<Triple>(s) ;
-            
-            if ( lang.equals(Lang.RDFXML) )
-                // Adapter round ARP RDF/XML reader.
-                parser = LangRDFXML.create(in, baseURI, filename, errHandler, sink2) ;
-            else
-                parser = RiotReader.createParserTriples(in, lang, baseURI, sink2) ;
+            RDFParserOutput dest = RDFParserOutputLib.sinkTriples(sink2) ;
+            parser = RiotReader.createParserTriples(in, lang, baseURI, dest) ;
             
             sink = sink2 ;
         }
@@ -310,7 +304,8 @@ public abstract class CmdLangParse exten
                 s = InfFactory.infQuads(s, setup) ;
             
             SinkCounting<Quad> sink2 = new SinkCounting<Quad>(s) ;
-            parser = RiotReader.createParserQuads(in, lang, baseURI, sink2) ;
+            RDFParserOutput dest = RDFParserOutputLib.sinkQuads(sink2) ;
+            parser = RiotReader.createParserQuads(in, lang, baseURI, dest) ;
             sink = sink2 ;
         }
         

Modified: jena/trunk/jena-arq/src/main/java/riotcmd/infer.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/riotcmd/infer.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/riotcmd/infer.java (original)
+++ jena/trunk/jena-arq/src/main/java/riotcmd/infer.java Sun Dec 16 21:11:51 2012
@@ -24,17 +24,17 @@ import java.util.List ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.RDFParserOutput ;
+import org.apache.jena.riot.lang.RDFParserOutputLib ;
 import org.openjena.riot.Lang ;
 import org.openjena.riot.RiotReader ;
-import org.openjena.riot.lang.LangRIOT ;
 import org.openjena.riot.out.SinkQuadOutput ;
 import org.openjena.riot.process.inf.InfFactory ;
-import org.openjena.riot.system.SinkExtendTriplesToQuads ;
 import arq.cmd.CmdException ;
 import arq.cmdline.ArgDecl ;
 import arq.cmdline.CmdGeneral ;
 
-import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.util.FileManager ;
@@ -141,16 +141,17 @@ public class infer extends CmdGeneral
         IO.flush(System.out); 
     }
 
-    private void processFile(String filename, Sink<Quad> sink)
+    private void processFile(String filename, Sink<Quad> qsink)
     {
         Lang lang = filename.equals("-") ? Lang.NQUADS : Lang.guess(filename, Lang.NQUADS) ;
         String baseURI = IRILib.filenameToIRI(filename) ;
+        RDFParserOutput sink = RDFParserOutputLib.sinkQuads(qsink) ;
         
         if ( lang.isTriples() )
         {
             InputStream in = IO.openFile(filename) ;
-            Sink<Triple> sink2 = new SinkExtendTriplesToQuads(sink) ;
-            LangRIOT parser = RiotReader.createParserTriples(in, lang, baseURI, sink2) ;
+            sink = RDFParserOutputLib.extendTriplesToQuads(sink) ;
+            LangRIOT parser = RiotReader.createParserTriples(in, lang, baseURI, sink) ;
             parser.parse() ;
             return ;
         }

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/binding/TestBindingStreams.java Sun Dec 16 21:11:51 2012
@@ -25,13 +25,13 @@ import java.util.List ;
 
 import junit.framework.JUnit4TestAdapter ;
 import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 import org.junit.AfterClass ;
 import org.junit.BeforeClass ;
 import org.junit.Test ;
 import org.openjena.riot.RiotException ;
-import org.openjena.riot.system.PrefixMap ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.rdf.model.AnonId ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestJenaReaderRIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestJenaReaderRIOT.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestJenaReaderRIOT.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestJenaReaderRIOT.java Sun Dec 16 21:11:51 2012
@@ -44,7 +44,6 @@ public class TestJenaReaderRIOT extends 
     @BeforeClass static public void beforeClass()
     { 
         RIOT.init() ;
-        WebReader2.wireIntoJena() ;
     }
     
     @AfterClass static public void afterClass()

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestReadDataset.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestReadDataset.java?rev=1422689&r1=1422688&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestReadDataset.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestReadDataset.java Sun Dec 16 21:11:51 2012
@@ -25,6 +25,7 @@ import org.apache.jena.atlas.junit.BaseT
 import org.junit.AfterClass ;
 import org.junit.BeforeClass ;
 import org.junit.Test ;
+import org.openjena.riot.RIOT ;
 
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.query.DatasetFactory ;
@@ -38,7 +39,7 @@ public class TestReadDataset extends Bas
     
     @BeforeClass static public void beforeClass()
     { 
-        WebReader2.wireIntoJena() ;
+        RIOT.init() ;
     }
     
     @AfterClass static public void afterClass()

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.lang;
+package org.apache.jena.riot.lang;
 
 import com.hp.hpl.jena.graph.Node ;
 
@@ -24,12 +24,12 @@ import org.apache.jena.atlas.junit.BaseT
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIFactory ;
 import org.apache.jena.riot.checker.CheckerIRI ;
+import org.apache.jena.riot.system.Checker ;
+import org.apache.jena.riot.system.RiotLib ;
 import org.junit.Test ;
 import org.openjena.riot.ErrorHandler ;
 import org.openjena.riot.ErrorHandlerTestLib ;
 import org.openjena.riot.ErrorHandlerTestLib.ExWarning ;
-import org.openjena.riot.system.Checker ;
-import org.openjena.riot.system.RiotLib ;
 
 public class TestIRI extends BaseTest
 {

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLang.java Sun Dec 16 21:11:51 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.lang;
+package org.apache.jena.riot.lang;
 
 import java.util.ArrayList ;
 import java.util.Arrays ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java?rev=1422689&r1=1422302&r2=1422689&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java Sun Dec 16 21:11:51 2012
@@ -16,23 +16,19 @@
  * limitations under the License.
  */
 
-package org.openjena.riot.lang;
+package org.apache.jena.riot.lang;
 
-import org.apache.jena.atlas.lib.Sink ;
-import org.apache.jena.atlas.lib.SinkCounting ;
-import org.apache.jena.atlas.lib.SinkNull ;
-import org.apache.jena.atlas.lib.StrUtils ;
+import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.RDFParserOutput ;
+import org.apache.jena.riot.lang.RDFParserOutputCounting ;
+import org.apache.jena.riot.lang.RDFParserOutputLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.junit.Test ;
-import org.openjena.riot.RiotLoader ;
-import org.openjena.riot.RiotReader ;
-import org.openjena.riot.ErrorHandlerTestLib.ErrorHandlerEx ;
 import org.openjena.riot.ErrorHandlerTestLib.ExFatal ;
-import org.openjena.riot.system.RiotLib ;
+import org.openjena.riot.RiotReader ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.sparql.lib.DatasetLib ;
 
 /** Test of syntax by a quads parser (does not include node validitiy checking) */ 
@@ -79,39 +75,23 @@ public class TestLangNQuads extends Test
     @Override
     protected long parseCount(String... strings)
     {
-        SinkCounting<Quad> sink = new SinkCounting<Quad>() ;
+        RDFParserOutputCounting sink = RDFParserOutputLib.count() ;
         parse(sink, strings) ;
-        return sink.getCount() ;
+        return sink.count() ;
     }
     
-    private static DatasetGraph parseToDataset(String string)
+    private DatasetGraph parseToDataset(String string)
     {
         DatasetGraph dsg = DatasetLib.createDatasetGraphMem() ;
-        Sink<Quad> sink = RiotLoader.datasetSink(dsg) ;
-        try {
-            parse(sink, string) ;
-        } finally { sink.close() ; }
+        RDFParserOutput dest = RDFParserOutputLib.dataset(dsg) ;
+        parse(dest, string) ;
         return dsg ;
     }
-    
-    private static void parse(Sink<Quad> sink, String... strings ) 
-    {
-        String string = StrUtils.strjoin("\n", strings) ;
-        Tokenizer tokenizer = tokenizer(string) ;
-        LangRIOT parser = RiotReader.createParserNQuads(tokenizer, sink) ;
-        parser.getProfile().setHandler(new ErrorHandlerEx()) ;
-        parser.parse() ;
-        sink.flush();
-    }
-    
+
     @Override
-    protected void parseCheck(String... strings)
+    protected LangRIOT createParser(Tokenizer tokenizer, RDFParserOutput sink)
     {
-        String string = StrUtils.strjoin("\n", strings) ;
-        Tokenizer tokenizer = tokenizer(string) ;
-        Sink<Quad> sink = new SinkNull<Quad>() ;
-        LangRIOT parser = RiotReader.createParserNQuads(tokenizer, sink) ;
-        parser.setProfile(RiotLib.profile(null, false, true, new ErrorHandlerEx())) ;
-        parser.parse() ;
+        return RiotReader.createParserNQuads(tokenizer, sink) ;
     }
+    
 }