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 2013/02/09 21:01:45 UTC

svn commit: r1444417 [1/2] - in /jena/Experimental/riot-output: src/main/java/dev/ src/main/java/riot/ src/main/java/riot/adpaters/ src/main/java/riot/system/ src/main/java/riot/writer/ src/test/java/riot/writer/ testing/RIOT/Writer/

Author: andy
Date: Sat Feb  9 20:01:44 2013
New Revision: 1444417

URL: http://svn.apache.org/r1444417
Log:
Wiring up the API

Added:
    jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java
    jena/Experimental/riot-output/src/main/java/riot/RDFFormat.java
      - copied, changed from r1443653, jena/Experimental/riot-output/src/main/java/riot/RDFSerialization.java
    jena/Experimental/riot-output/src/main/java/riot/RDFFormatVariant.java
      - copied, changed from r1443653, jena/Experimental/riot-output/src/main/java/riot/WriterVariant.java
    jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java
      - copied, changed from r1443261, jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java
    jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOT.java
    jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTBase.java
    jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTFactory.java
    jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOT.java
      - copied, changed from r1443261, jena/Experimental/riot-output/src/main/java/riot/RiotSerializer.java
    jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTBase.java
    jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTFactory.java
      - copied, changed from r1443261, jena/Experimental/riot-output/src/main/java/riot/WriterRIOTFactory.java
    jena/Experimental/riot-output/src/main/java/riot/adpaters/
    jena/Experimental/riot-output/src/main/java/riot/adpaters/RDFWriterRIOT.java
    jena/Experimental/riot-output/src/main/java/riot/system/
    jena/Experimental/riot-output/src/main/java/riot/system/IO_Jena2.java
    jena/Experimental/riot-output/src/main/java/riot/system/IndentedWriterWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/RDFXMLAbbrevWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/RDFXMLPlainWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterBase.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterBase.java
    jena/Experimental/riot-output/src/test/java/riot/writer/TestRiotWriterDataset.java
    jena/Experimental/riot-output/src/test/java/riot/writer/TestRiotWriterGraph.java
      - copied, changed from r1444211, jena/Experimental/riot-output/src/test/java/riot/writer/TestRiotWriter.java
    jena/Experimental/riot-output/testing/RIOT/Writer/writer-rt-20.trig
    jena/Experimental/riot-output/testing/RIOT/Writer/writer-rt-21.trig
    jena/Experimental/riot-output/testing/RIOT/Writer/writer-rt-22.trig
    jena/Experimental/riot-output/testing/RIOT/Writer/writer-rt-23.trig
Removed:
    jena/Experimental/riot-output/src/main/java/riot/RDFSerialization.java
    jena/Experimental/riot-output/src/main/java/riot/RiotSerializer.java
    jena/Experimental/riot-output/src/main/java/riot/WriterRIOTFactory.java
    jena/Experimental/riot-output/src/main/java/riot/WriterVariant.java
    jena/Experimental/riot-output/src/main/java/riot/writer/RDFXMLWriter.java
    jena/Experimental/riot-output/src/test/java/riot/writer/TestRiotWriter.java
Modified:
    jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java
    jena/Experimental/riot-output/src/main/java/dev/MainWriter.java
    jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java
    jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java
    jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/NQuadsWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/NTriplesWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/RDFJSONWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterBlocks.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterFlat.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TurtleShell.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriter.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterBlocks.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterFlat.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterConst.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDF.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBlocks.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFFlat.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFTuples.java
    jena/Experimental/riot-output/src/test/java/riot/writer/TS_RiotWriter.java

Modified: jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java Sat Feb  9 20:01:44 2013
@@ -18,11 +18,25 @@
 
 package dev;
 
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
+import riot.RDFFormat ;
+import riot.RDFWriterMgr ;
+
+import com.hp.hpl.jena.rdf.model.Model ;
+
 /** Example writing a model with RIOT */
 public class ExRIOT_out1
 {
     public static void main(String[] args)
     {
+        Model model = RDFDataMgr.loadModel("D.ttl") ;
+        
+        RDFWriterMgr.write(System.out, model, Lang.TURTLE) ;
+        System.out.println() ;
+        System.out.println("#### ---- ####") ;
+        System.out.println() ;
+        RDFWriterMgr.write(System.out, model, RDFFormat.TurtleBlocks) ;
         
     }
 

Added: jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java (added)
+++ jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,30 @@
+/**
+ * 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 dev;
+
+/** Example of registering a new writer with RIOT */
+public class ExRIOT_out2
+{
+    public static void main(String[] args)
+    {
+        // All ways to write.
+    }
+
+}
+

Modified: jena/Experimental/riot-output/src/main/java/dev/MainWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/MainWriter.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/MainWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/MainWriter.java Sat Feb  9 20:01:44 2013
@@ -30,11 +30,8 @@ import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.PrefixMapFactory ;
 import org.apache.jena.riot.system.StreamRDF ;
-import riot.RiotWriter ;
-import riot.writer.TriGWriterBlocks ;
-import riot.writer.TurtleWriter ;
-import riot.writer.TurtleWriterBlocks ;
-import riot.writer.TurtleWriterFlat ;
+import riot.RDFFormat ;
+import riot.RDFWriterMgr ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
@@ -50,6 +47,22 @@ public class MainWriter
 {
     public static void main(String ...args)
     {
+//        
+//        String fn = "D.ttl" ;
+//        
+//        Model m = RDFDataMgr.loadModel(fn) ;
+//        Writer out = new OutputStreamWriter(System.out) ;
+//        System.out.println("## -- 1");
+//        m.write(out, "TTL") ;
+//        IO_Jena2.wireIntoJenaW() ;
+//        System.out.println("## -- 2");
+//        m.write(out, "TTL") ;
+//        
+//        IO_Jena2.resetJenaW() ;
+//        System.out.println("## -- 3");
+//        m.write(out, "TTL") ;
+        
+        
         //writeTTL() ;
         writeTriG() ;
     }
@@ -57,9 +70,12 @@ public class MainWriter
     public static void writeTriG()
     {
         Dataset ds = RDFDataMgr.loadDataset("W.trig") ;
-        TriGWriterBlocks.write(System.out, ds) ;
-        
-        
+        System.out.println("# Write TriG") ;
+        RDFWriterMgr.write(System.out, ds, RDFFormat.Trig) ;
+        System.out.println("# Write TriG (Blocks)") ;
+        RDFWriterMgr.write(System.out, ds, RDFFormat.TrigBlocks) ;
+        System.out.println("# Write TriG (Flat)") ;
+        RDFWriterMgr.write(System.out, ds, RDFFormat.TrigFlat) ;
     }
     
     public static void writeTTL()
@@ -69,27 +85,27 @@ public class MainWriter
         Model m = RDFDataMgr.loadModel(fn) ;
         //RDFDataMgr.read(m, "W.ttl") ;
         
-        boolean ALL = false ; 
+        boolean ALL = true ; 
         int written = 0 ;
         
         if ( ALL || false )
         {
             System.out.println("# Write new (flat)") ;
-            TurtleWriterFlat.write(System.out, m) ;
+            RDFWriterMgr.write(System.out, m, RDFFormat.TurtleFlat) ;
             System.out.println("----------------------------------") ;
             written++ ;
         }
         if ( ALL || false )
         {
             System.out.println("# Write new (Pretty)") ;
-            TurtleWriter.write(System.out, m) ;
+            RDFWriterMgr.write(System.out, m, RDFFormat.Turtle) ;
             System.out.println("----------------------------------") ;
             written++ ;
         }
         if ( ALL || false )
         {
             System.out.println("# Write new (blocks)") ;
-            TurtleWriterBlocks.write(System.out, m) ;
+            RDFWriterMgr.write(System.out, m, RDFFormat.TurtleBlocks) ;
             System.out.println("----------------------------------") ;
             written++ ;
         }
@@ -105,12 +121,12 @@ public class MainWriter
 
 
         System.out.println("# Write (Pretty)") ;
-        RiotWriter.write(System.out, m.getGraph(), Lang.TRIG) ;
+        RDFWriterMgr.write(System.out, m.getGraph(), Lang.TRIG) ;
         System.out.println("----------------------------------") ;
         if ( true ) return ;
         // check.
         ByteArrayOutputStream out = new ByteArrayOutputStream() ;
-        RiotWriter.write(out, m.getGraph(), Lang.TURTLE) ;
+        RDFWriterMgr.write(out, m.getGraph(), Lang.TURTLE) ;
         ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ;
         String s = StrUtils.fromUTF8bytes(out.toByteArray()) ;
 

Modified: jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java Sat Feb  9 20:01:44 2013
@@ -21,22 +21,10 @@ package dev;
 
 public class PROJECT_RiotWriter
 {
-    // Prologue
     // JSON-LD
-    // Remove prefixes options on statics
-
-    // Where do the constants go?
-    
-    // TriG & empty graphs.
     
-    // Test RT
-    // baseURI.
-    
-    // ExRIOT_out1 :: write  model
     // ExRIOT_out2 :: register language and writer 
     
-    // NT and NQ writers? Or are RIOT current OK?
-    
     // TODO - check for TODO
 
     // Options.

Copied: jena/Experimental/riot-output/src/main/java/riot/RDFFormat.java (from r1443653, jena/Experimental/riot-output/src/main/java/riot/RDFSerialization.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RDFFormat.java?p2=jena/Experimental/riot-output/src/main/java/riot/RDFFormat.java&p1=jena/Experimental/riot-output/src/main/java/riot/RDFSerialization.java&r1=1443653&r2=1444417&rev=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RDFSerialization.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RDFFormat.java Sat Feb  9 20:01:44 2013
@@ -20,16 +20,46 @@ package riot;
 
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RIOT ;
 
 /** Constants for writable formats */  
-public class RDFSerialization
+public class RDFFormat
 {
+    static {  RIOT.init(); }
+    
+    public static RDFFormatVariant wvPretty = new RDFFormatVariant("pretty" ) ;
+    public static RDFFormatVariant wvBlocks = new RDFFormatVariant("blocks" ) ;
+    public static RDFFormatVariant wvFlat   = new RDFFormatVariant("flat" ) ;
+    
+    public static RDFFormat TurtlePretty = new RDFFormat(Lang.TURTLE, wvPretty) ;
+    public static RDFFormat Turtle       = TurtlePretty ;
+    public static RDFFormat TurtleBlocks = new RDFFormat(Lang.TURTLE, wvBlocks) ;
+    public static RDFFormat TurtleFlat   = new RDFFormat(Lang.TURTLE, wvFlat) ;
+    
+    public static RDFFormat NTriples     = new RDFFormat(Lang.NTRIPLES) ;
+    
+    public static RDFFormat NQuads       = new RDFFormat(Lang.NQUADS) ;
+    
+    public static RDFFormat TrigPretty   = new RDFFormat(Lang.TRIG, wvPretty) ;
+    public static RDFFormat Trig         = TrigPretty ;
+    public static RDFFormat TrigBlocks   = new RDFFormat(Lang.TRIG, wvBlocks) ;
+    public static RDFFormat TrigFlat     = new RDFFormat(Lang.TRIG, wvFlat) ;
+    
+    public static RDFFormatVariant wvPlain         = new RDFFormatVariant("plain" ) ;
+    public static RDFFormatVariant wvAbbrev        = new RDFFormatVariant("flat" ) ;
+    public static RDFFormat RDFXMLPretty = new RDFFormat(Lang.RDFXML, wvAbbrev) ;
+    public static RDFFormat RDFXMLAbbrev = RDFXMLPretty ;
+    public static RDFFormat RDFXML       = RDFXMLPretty ;
+    public static RDFFormat RDFXMLPlain  = new RDFFormat(Lang.RDFXML, wvPlain) ;
+    
+    public static RDFFormat RDFJSON      = new RDFFormat(Lang.RDFJSON) ;
+
     private final Lang lang ;
-    private final WriterVariant variant ;
+    private final RDFFormatVariant variant ;
 
-    public RDFSerialization(Lang lang) { this(lang, null) ; }
+    public RDFFormat(Lang lang) { this(lang, null) ; }
     
-    public RDFSerialization(Lang lang, WriterVariant variant)
+    public RDFFormat(Lang lang, RDFFormatVariant variant)
     {
         this.lang = lang ;
         this.variant = variant ;
@@ -40,7 +70,7 @@ public class RDFSerialization
         return lang ;
     }
 
-    public WriterVariant getVariant()
+    public RDFFormatVariant getVariant()
     {
         return variant ;
     }
@@ -61,7 +91,7 @@ public class RDFSerialization
         if (this == obj) return true ;
         if (obj == null) return false ;
         if (getClass() != obj.getClass()) return false ;
-        RDFSerialization other = (RDFSerialization)obj ;
+        RDFFormat other = (RDFFormat)obj ;
         if ( ! Lib.equal(lang, other.lang) )
             return false ;
         if ( ! Lib.equal(variant, other.variant) )

Copied: jena/Experimental/riot-output/src/main/java/riot/RDFFormatVariant.java (from r1443653, jena/Experimental/riot-output/src/main/java/riot/WriterVariant.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RDFFormatVariant.java?p2=jena/Experimental/riot-output/src/main/java/riot/RDFFormatVariant.java&p1=jena/Experimental/riot-output/src/main/java/riot/WriterVariant.java&r1=1443653&r2=1444417&rev=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/WriterVariant.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RDFFormatVariant.java Sat Feb  9 20:01:44 2013
@@ -22,11 +22,11 @@ import org.apache.jena.atlas.lib.Lib ;
 
 import com.hp.hpl.jena.sparql.util.Symbol ;
 
-public class WriterVariant
+public class RDFFormatVariant
 {
     private final Symbol symbol ;
     
-    public WriterVariant(String name)
+    public RDFFormatVariant(String name)
     {
         symbol = Symbol.create(name) ;
     }
@@ -46,7 +46,7 @@ public class WriterVariant
         if (this == obj) return true ;
         if (obj == null) return false ;
         if (getClass() != obj.getClass()) return false ;
-        WriterVariant other = (WriterVariant)obj ;
+        RDFFormatVariant other = (RDFFormatVariant)obj ;
         if ( ! Lib.equal(symbol, other.symbol) ) return false ;
         return true ;
     }

Copied: jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java (from r1443261, jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java?p2=jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java&p1=jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java&r1=1443261&r2=1444417&rev=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java Sat Feb  9 20:01:44 2013
@@ -20,16 +20,18 @@ one
 package riot;
 
 import java.io.OutputStream ;
+import java.io.StringWriter ;
+import java.io.Writer ;
 
-import org.apache.jena.atlas.lib.NotImplemented ;
 import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RiotException ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 
-public class RiotWriter
+public class RDFWriterMgr
 {
     /** Write the model to the output stream in the default serialization for the language.
      * @param out       OutputStream
@@ -47,7 +49,7 @@ public class RiotWriter
      * @param lang      Language for the seralization.
      * @param variant   Language seralization variant
      */
-    public static void write(OutputStream out, Model model, Lang lang, WriterVariant variant) 
+    public static void write(OutputStream out, Model model, Lang lang, RDFFormatVariant variant) 
     {
         write(out, model.getGraph(), lang, variant) ;
     }
@@ -57,19 +59,51 @@ public class RiotWriter
      * @param model         Model to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, Model model, RDFSerialization serialization)
+    public static void write(OutputStream out, Model model, RDFFormat serialization)
     {
         write(out, model.getGraph(), serialization) ;
     }
     
     /** Write the graph to the output stream in the default serialization for the language.
+     * @param out           OutputStream
+     * @param model         Model to write
+     * @param serialization Serialization format
+     * @deprecated Use of writers is deprecated - use an OutputStream
+     */
+    @Deprecated
+    public static void write(Writer out, Model model, RDFFormat serialization)
+    {
+        write(out, model.getGraph(), serialization) ;
+    }
+
+    /** Write the graph to the output stream in the default serialization for the language.
+     * @param out           OutputStream
+     * @param model         Model to write
+     * @param lang          Serialization format
+     */
+    public static void write(StringWriter out, Model model, Lang lang)
+    {
+        write(out, model.getGraph(), lang) ;
+    }
+    
+    /** Write the graph to the output stream in the default serialization for the language.
+     * @param out           OutputStream
+     * @param model         Model to write
+     * @param serialization Serialization format
+     */
+    public static void write(StringWriter out, Model model, RDFFormat serialization)
+    {
+        write(out, model.getGraph(), serialization) ;
+    }
+
+    /** Write the graph to the output stream in the default serialization for the language.
      * @param out       OutputStream
      * @param graph     Graph to write
      * @param lang      Language for the seralization.
      */
     public static void write(OutputStream out, Graph graph, Lang lang)
     {
-        RDFSerialization serialization = RDFWriterRegistry.defaultSerialization(lang) ;
+        RDFFormat serialization = RDFWriterRegistry.defaultGraphSerialization(lang) ;
         write(out, graph, serialization) ;
     }
 
@@ -79,9 +113,43 @@ public class RiotWriter
      * @param lang      Language for the seralization.
      * @param variant   Language seralization variant
      */
-    public static void write(OutputStream out, Graph graph, Lang lang, WriterVariant variant) 
+    public static void write(OutputStream out, Graph graph, Lang lang, RDFFormatVariant variant) 
+    {
+        RDFFormat serialization = new RDFFormat(lang, variant) ;
+        write(out, graph, serialization) ;
+    }
+
+    /** Write the graph to the output stream in the default serialization for the language.
+     * @param out           OutputStream
+     * @param graph         Graph to write
+     * @param serialization Serialization format
+     */
+    public static void write(OutputStream out, Graph graph, RDFFormat serialization)
+    {
+        WriterGraphRIOTFactory wf = RDFWriterRegistry.getWriterGraphFactory(serialization) ;
+        WriterGraphRIOT w = wf.create(serialization) ;
+        w.write(out, graph) ;
+    }
+
+    /** Write the graph to the output stream in the default serialization for the language.
+     * @param out           OutputStream
+     * @param graph         Graph to write
+     * @param lang          Serialization format
+     */
+    public static void write(StringWriter out, Graph graph, Lang lang)
+    {
+        // Only known reasonable use of a Writer
+        write(out, graph, RDFWriterRegistry.defaultGraphSerialization(lang)) ;
+    }
+
+    /** Write the graph to the output stream in the default serialization for the language.
+     * @param out           OutputStream
+     * @param graph         Graph to write
+     * @param serialization Serialization format
+     */
+    public static void write(StringWriter out, Graph graph, RDFFormat serialization)
     {
-        RDFSerialization serialization = new RDFSerialization(lang, variant) ;
+        // Only known reasonable use of a Writer
         write(out, graph, serialization) ;
     }
 
@@ -89,12 +157,16 @@ public class RiotWriter
      * @param out           OutputStream
      * @param graph         Graph to write
      * @param serialization Serialization format
+     * @deprecated Use of writers is deprecated - use an OutputStream
      */
-    public static void write(OutputStream out, Graph graph, RDFSerialization serialization)
+    @Deprecated
+    public static void write(Writer out, Graph graph, RDFFormat serialization)
     {
-        WriterRIOTFactory wf = RDFWriterRegistry.getWriterFactory(serialization) ;
-        RiotSerializer w = wf.create(out, graph, serialization) ;
-        w.write() ;
+        WriterGraphRIOTFactory wf = RDFWriterRegistry.getWriterGraphFactory(serialization) ;
+        if ( wf == null )
+            throw new RiotException("No graph writer for "+serialization) ; 
+        WriterGraphRIOT w = wf.create(serialization) ;
+        w.write(out, graph) ;
     }
 
     /** Write the Dataset to the output stream in the default serialization for the language.
@@ -113,7 +185,7 @@ public class RiotWriter
      * @param lang      Language for the seralization.
      * @param variant   Language seralization variant
      */
-    public static void write(OutputStream out, Dataset dataset, Lang lang, WriterVariant variant) 
+    public static void write(OutputStream out, Dataset dataset, Lang lang, RDFFormatVariant variant) 
     {
         write(out, dataset.asDatasetGraph(), lang, variant) ;
     }
@@ -123,7 +195,7 @@ public class RiotWriter
      * @param dataset       Dataset to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, Dataset dataset, RDFSerialization serialization)
+    public static void write(OutputStream out, Dataset dataset, RDFFormat serialization)
     {
         write(out, dataset.asDatasetGraph(), serialization) ;
     }
@@ -135,7 +207,7 @@ public class RiotWriter
      */
     public static void write(OutputStream out, DatasetGraph dataset, Lang lang)
     {
-        RDFSerialization serialization = RDFWriterRegistry.defaultSerialization(lang) ;
+        RDFFormat serialization = RDFWriterRegistry.defaultDatasetSerialization(lang) ;
         write(out, dataset, serialization) ;
     }
 
@@ -145,9 +217,9 @@ public class RiotWriter
      * @param lang      Language for the seralization.
      * @param variant   Language seralization variant
      */
-    public static void write(OutputStream out, DatasetGraph dataset, Lang lang, WriterVariant variant) 
+    public static void write(OutputStream out, DatasetGraph dataset, Lang lang, RDFFormatVariant variant) 
     {
-        RDFSerialization serialization = new RDFSerialization(lang, variant) ;
+        RDFFormat serialization = new RDFFormat(lang, variant) ;
         write(out, dataset, serialization) ;
     }
 
@@ -156,12 +228,13 @@ public class RiotWriter
      * @param dataset       DatasetGraph to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, DatasetGraph dataset, RDFSerialization serialization)
+    public static void write(OutputStream out, DatasetGraph dataset, RDFFormat serialization)
     {
-        WriterRIOTFactory wf = RDFWriterRegistry.getWriterFactory(serialization) ;
-        throw new NotImplemented() ;
-//        RiotSerializer w = null ; //??
-//        w.write() ;
+        WriterDatasetRIOTFactory wf = RDFWriterRegistry.getWriterDatasetFactory(serialization) ;
+        if ( wf == null )
+            throw new RiotException("No dataset writer for "+serialization) ; 
+        WriterDatasetRIOT w = wf.create(serialization) ;
+        w.write(out, dataset) ;
     }
     
 }

Modified: jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java Sat Feb  9 20:01:44 2013
@@ -18,9 +18,8 @@
 
 package riot;
 
-import static org.apache.jena.riot.RDFLanguages.* ;
-
 import java.io.OutputStream ;
+import java.io.Writer ;
 import java.util.HashMap ;
 import java.util.Map ;
 
@@ -29,239 +28,197 @@ import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.riot.RIOT ;
 import org.apache.jena.riot.RiotException ;
-import riot.writer.* ;
+import org.apache.jena.riot.system.PrefixMap ;
+import riot.system.RiotLib ;
 
 import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 
 public class RDFWriterRegistry
 {
+    // All mention and use of Writers is purely for compatibility.
+    // They are not a good idea (StringWriter is an exception).
+    // Let the serializer deal with the character issues.
+    // UTF-8 is universal - but UTF-8 is not the default in Java ("platform encoding" is).
+    
     static { RIOT.init() ; }
-    // Registry with the pretty write 
-    static Map<RDFSerialization, WriterRIOTFactory> registry = new HashMap<RDFSerialization, WriterRIOTFactory>() ;
 
-    public static WriterVariant wvPretty = new WriterVariant("pretty" ) ; 
-    public static WriterVariant wvBlocks = new WriterVariant("blocks" ) ; 
-    public static WriterVariant wvFlat   = new WriterVariant("flat" ) ;
-    
-    public static RDFSerialization TurtlePretty = new RDFSerialization(Lang.TURTLE, wvPretty) ;
-    public static RDFSerialization Turtle       = TurtlePretty ; 
-    public static RDFSerialization TurtleBlocks = new RDFSerialization(Lang.TURTLE, wvBlocks) ;
-    public static RDFSerialization TurtleFlat   = new RDFSerialization(Lang.TURTLE, wvFlat) ;
-
-    public static RDFSerialization NTriples     = new RDFSerialization(Lang.NTRIPLES) ;
-    public static RDFSerialization NQuads       = new RDFSerialization(Lang.NQUADS) ;
-
-    public static RDFSerialization TrigPretty   = new RDFSerialization(Lang.TRIG, wvPretty) ;
-    public static RDFSerialization Trig         = TrigPretty ; 
-    public static RDFSerialization TrigBlocks   = new RDFSerialization(Lang.TRIG, wvBlocks) ;
-    public static RDFSerialization TrigFlat     = new RDFSerialization(Lang.TRIG, wvFlat) ;
-
-    // RDF/JSON
-    // 
-    public static WriterVariant wvPlain         = new WriterVariant("plain" ) ; 
-    public static WriterVariant wvAbbrev        = new WriterVariant("flat" ) ;
-    
-    public static RDFSerialization RDFXMLPretty = new RDFSerialization(Lang.RDFXML, wvAbbrev) ;
-    public static RDFSerialization RDFXMLAbbrev = RDFXMLPretty ;
-    public static RDFSerialization RDFXML       = RDFXMLPretty ;
-    public static RDFSerialization RDFXMLPlain  = new RDFSerialization(Lang.RDFXML, wvPlain) ;
-    
-    public static RDFSerialization RDFJSON      = new RDFSerialization(Lang.RDFJSON) ;
-    
+    static Map<RDFFormat, WriterGraphRIOTFactory> registryGraph     = new HashMap<RDFFormat, WriterGraphRIOTFactory>() ;
+    static Map<RDFFormat, WriterDatasetRIOTFactory> registryDataset = new HashMap<RDFFormat, WriterDatasetRIOTFactory>() ;
+
     // Writing a graph
-    static WriterRIOTFactory wfactory = new WriterRIOTFactory() {
+    static WriterGraphRIOTFactory wgfactory = new WriterGraphRIOTFactory() {
         @Override
-        public RiotSerializer create(OutputStream out, Graph graph, RDFSerialization serialization)
+        public WriterGraphRIOT create(RDFFormat serialization)
         {
             // Built-ins
-            if ( Lib.equal(TurtlePretty, serialization) )
-                return createTurtle(out, graph) ;
-            if ( Lib.equal(TurtleBlocks, serialization) )
-                return createTurtleStreaming(out, graph) ;
-            if ( Lib.equal(TurtleFlat, serialization) )
-                return createTurtleFlat(out, graph) ;
-            
-            if ( Lib.equal(NTriples, serialization) )
-                return createNTriples(out, graph) ;
-            if ( Lib.equal(RDFJSON, serialization) )
-                return createRDFJSON(out, graph) ;
-            if ( Lib.equal(RDFXMLPretty, serialization) )
-                return createRDFXMLAbbrev(out, graph) ;
-            if ( Lib.equal(RDFXMLPlain, serialization) )
-                return createRDFXMLPlain(out, graph) ;
+            if ( Lib.equal(RDFFormat.TurtlePretty, serialization) )
+                return RiotWriter.createTurtle() ;
+            if ( Lib.equal(RDFFormat.TurtleBlocks, serialization) )
+                return RiotWriter.createTurtleStreaming() ;
+            if ( Lib.equal(RDFFormat.TurtleFlat, serialization) )
+                return RiotWriter.createTurtleFlat() ;
+            if ( Lib.equal(RDFFormat.NTriples, serialization) )
+                return RiotWriter.createNTriples() ;
+            if ( Lib.equal(RDFFormat.RDFJSON, serialization) )
+                return RiotWriter.createRDFJSON() ;
+            if ( Lib.equal(RDFFormat.RDFXMLPretty, serialization) )
+                return RiotWriter.createRDFXMLAbbrev() ;
+            if ( Lib.equal(RDFFormat.RDFXMLPlain, serialization) )
+                return RiotWriter.createRDFXMLPlain() ;
             
             // graphs in quad format.
-            if ( Lib.equal(TrigPretty, serialization) )
-                return createTrig(out, graph) ;
-            if ( Lib.equal(TrigBlocks, serialization) )
-                return createTrigStreaming(out, graph) ;
-            if ( Lib.equal(TrigFlat, serialization) )
-                return createTrigFlat(out,graph) ;
-            
-            if ( Lib.equal(NQuads, serialization) )
-                return createNQuads(out, graph) ;
+            if ( Lib.equal(RDFFormat.TrigPretty, serialization) )
+                return adapter(RiotWriter.createTrig()) ;
+            if ( Lib.equal(RDFFormat.TrigBlocks, serialization) )
+                return adapter(RiotWriter.createTrigStreaming()) ;
+            if ( Lib.equal(RDFFormat.TrigFlat, serialization) )
+                return adapter(RiotWriter.createTrigFlat()) ;
+            if ( Lib.equal(RDFFormat.NQuads, serialization) )
+                return adapter(RiotWriter.createNQuads()) ;
             return null ;
-        }} ;
+    }} ;
+        
+    
+    private static WriterGraphRIOTBase adapter(WriterDatasetRIOT writer)
+    { return new WriterAdapter(writer) ; }
+    
+    private static class WriterAdapter extends WriterGraphRIOTBase
+    {
+        private WriterDatasetRIOT writer ;
 
-    public static void init() {}
+        WriterAdapter(WriterDatasetRIOT writer) { this.writer = writer ; }
+        @Override
+        public Lang getLang()
+        { return writer.getLang() ; }
+
+        @Override
+        public void write(OutputStream out, Graph graph, PrefixMap prefixMap, String baseURI)
+        { writer.write(out, RiotLib.dataset(graph), prefixMap, baseURI) ; }
+        
+        @Override
+        public void write(Writer out, Graph graph, PrefixMap prefixMap, String baseURI)
+        { writer.write(out, RiotLib.dataset(graph), prefixMap, baseURI) ; }
+    }
     
-    static { init$() ; }
+    // Writing a dataset
+    static WriterDatasetRIOTFactory wdsfactory = new WriterDatasetRIOTFactory() {
+        @Override
+        public WriterDatasetRIOT create(RDFFormat serialization)
+        {
+            if ( Lib.equal(RDFFormat.TrigPretty, serialization) )
+                return RiotWriter.createTrig() ;
+            if ( Lib.equal(RDFFormat.TrigBlocks, serialization) )
+                return RiotWriter.createTrigStreaming() ;
+            if ( Lib.equal(RDFFormat.TrigFlat, serialization) )
+                return RiotWriter.createTrigFlat() ;
+            if ( Lib.equal(RDFFormat.NQuads, serialization) )
+                return RiotWriter.createNQuads() ;
+            return null ;
+    }} ;
+
+     public static void init() {}
+    
+     static { init$() ; }
     private static void init$()
     {
-        register(TurtlePretty,  wfactory) ;
-        register(TurtleBlocks,  wfactory) ;
-        register(TurtleFlat,    wfactory) ;
+        register(RDFFormat.TurtlePretty,  wgfactory) ;
+        register(RDFFormat.TurtleBlocks,  wgfactory) ;
+        register(RDFFormat.TurtleFlat,    wgfactory) ;
         
-        register(NTriples,      wfactory) ;
-        register(RDFJSON,       wfactory) ;
+        register(RDFFormat.NTriples,      wgfactory) ;
+        register(RDFFormat.RDFJSON,       wgfactory) ;
 
-        register(RDFXMLPretty,  wfactory) ;
-        register(RDFXMLPlain,   wfactory) ;
+        register(RDFFormat.RDFXMLPretty,  wgfactory) ;
+        register(RDFFormat.RDFXMLPlain,   wgfactory) ;
 
-        register(TrigPretty,    wfactory) ;
-        register(TrigBlocks,    wfactory) ;
-        register(TrigFlat,      wfactory) ;
+        register(RDFFormat.TrigPretty,    wgfactory) ;
+        register(RDFFormat.TrigBlocks,    wgfactory) ;
+        register(RDFFormat.TrigFlat,      wgfactory) ;
+        
+        register(RDFFormat.NQuads,        wgfactory) ;
         
-        register(NQuads,        wfactory) ;
+        register(RDFFormat.TrigPretty,    wdsfactory) ;
+        register(RDFFormat.TrigBlocks,    wdsfactory) ;
+        register(RDFFormat.TrigFlat,      wdsfactory) ;
         
+        register(RDFFormat.NQuads,        wdsfactory) ;
+
     }
     
-    private static void register(RDFSerialization serialization, WriterRIOTFactory wfactory)
+    public static void register(RDFFormat serialization, WriterGraphRIOTFactory wfactory)
+    {
+        registryGraph.put(serialization, wfactory) ;
+    }
+
+    public static void register(RDFFormat serialization, WriterDatasetRIOTFactory wfactory)
     {
-        registry.put(serialization, wfactory) ;
+        registryDataset.put(serialization, wfactory) ;
     }
 
     // Map Lang to default output format.
-    public static WriterRIOTFactory getWriterFactory(Lang lang)
+    public static WriterGraphRIOTFactory getWriterGraphFactory(Lang lang)
     {
-        RDFSerialization serialization = defaultSerialization(lang) ;
+        RDFFormat serialization = defaultGraphSerialization(lang) ;
         if ( serialization == null )
             throw new RiotException("No default serialization for language "+lang) ;
-        return getWriterFactory(serialization) ;  
+        return getWriterGraphFactory(serialization) ;  
     }
 
-    public static RDFSerialization defaultSerialization(Lang lang)
+    public static WriterGraphRIOTFactory getWriterGraphFactory(Lang lang, RDFFormatVariant variant)
     {
-        if ( RDFLanguages.TURTLE.equals(lang) )     return Turtle ;
-        if ( RDFLanguages.N3.equals(lang) )         return Turtle ;
-        if ( RDFLanguages.NTRIPLES.equals(lang) )   return NTriples ;
-        
-        if ( RDFLanguages.TRIG.equals(lang) )       return Trig ;
-        if ( RDFLanguages.NQUADS.equals(lang) )     return NQuads ;
-        
-        if ( RDFLanguages.RDFXML.equals(lang) )     return RDFXML ;
-        if ( RDFLanguages.RDFJSON.equals(lang) )    return RDFJSON ;
-        
-        return null ;
+        return getWriterGraphFactory(new RDFFormat(lang, variant)) ;
+    }
+
+    public static WriterGraphRIOTFactory getWriterGraphFactory(RDFFormat serialization)
+    {
+        if ( serialization == null )
+            return null ; 
+        return registryGraph.get(serialization) ;
     }
     
-    
-    public static WriterRIOTFactory getWriterFactory(Lang lang, WriterVariant variant)
+    public static WriterDatasetRIOTFactory getWriterDatasetFactory(Lang lang)
+    {
+        RDFFormat serialization = defaultDatasetSerialization(lang) ;
+        if ( serialization == null )
+            throw new RiotException("No default serialization for language "+lang) ;
+        return getWriterDatasetFactory(serialization) ;  
+    }
+
+    public static WriterDatasetRIOTFactory getWriterDatasetFactory(Lang lang, RDFFormatVariant variant)
     {
-        return getWriterFactory(new RDFSerialization(lang, variant)) ;
+        return getWriterDatasetFactory(new RDFFormat(lang, variant)) ;
     }
     
-    public static WriterRIOTFactory getWriterFactory(RDFSerialization serialization)
+    public static WriterDatasetRIOTFactory getWriterDatasetFactory(RDFFormat serialization)
     {
-        return registry.get(serialization) ;
+        if ( serialization == null )
+            return null ; 
+        return registryDataset.get(serialization) ;
+    }
+
+    public static RDFFormat defaultGraphSerialization(Lang lang)
+    {
+        if ( RDFLanguages.TURTLE.equals(lang) )     return RDFFormat.Turtle ;
+        if ( RDFLanguages.N3.equals(lang) )         return RDFFormat.Turtle ;
+        if ( RDFLanguages.NTRIPLES.equals(lang) )   return RDFFormat.NTriples ;
+        
+        // We write as the default graph of a dataset
+        if ( RDFLanguages.TRIG.equals(lang) )       return RDFFormat.Trig ;
+        if ( RDFLanguages.NQUADS.equals(lang) )     return RDFFormat.NQuads ;
+        
+        if ( RDFLanguages.RDFXML.equals(lang) )     return RDFFormat.RDFXML ;
+        if ( RDFLanguages.RDFJSON.equals(lang) )    return RDFFormat.RDFJSON ;
+        
+        return null ;
     }
     
-    // builtins.
-    
-    private static RiotSerializer createTurtle(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { TurtleWriter.write(out, graph) ; }
-        @Override public Lang getLang() { return TURTLE ; }
-    } ; }
-
-    private static RiotSerializer createTurtleStreaming(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { TurtleWriterBlocks.write(out, graph) ; }
-        @Override public Lang getLang() { return TURTLE ; }
-    } ; }
-
-    private static RiotSerializer createTurtleFlat(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { TurtleWriterFlat.write(out, graph) ; }
-        @Override public Lang getLang() { return TURTLE ; }
-    } ; }
-
-
-    private static RiotSerializer createNTriples(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { NTriplesWriter.write(out, graph) ; }
-        @Override public Lang getLang() { return NTRIPLES ; }
-    } ; }
-
-    private static RiotSerializer createRDFXMLAbbrev(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { RDFXMLWriter.writeAbbrev(out, graph) ; }
-        @Override public Lang getLang() { return Lang.RDFXML ; }
-    } ; }
-
-    private static RiotSerializer createRDFXMLPlain(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { RDFXMLWriter.writePlain(out, graph) ; }
-        @Override public Lang getLang() { return Lang.RDFXML ; }
-    } ; }
-
-    private static RiotSerializer createRDFJSON(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { RDFJSONWriter.write(out, graph) ; }
-        @Override public Lang getLang() { return Lang.RDFJSON ; }
-    } ; }
-
-    private static RiotSerializer createN3(OutputStream out, Graph graph)
-    { return createTurtle(out, graph) ; }
-
-    private static RiotSerializer createTrig(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { TriGWriter.write(out, graph) ; }
-        @Override public Lang getLang() { return TRIG ; }
-    } ; }
-
-    private static RiotSerializer createTrig(final OutputStream out, final DatasetGraph dsg)
-    { return new RiotSerializer() {
-        @Override public void write() { TriGWriter.write(out, dsg) ; }
-        @Override public Lang getLang() { return TRIG ; }
-    } ; }
-
-    private static RiotSerializer createTrigStreaming(final OutputStream out, final DatasetGraph dsg)
-    { return new RiotSerializer() {
-        @Override public void write() { TriGWriterBlocks.write(out, dsg) ; }
-        @Override public Lang getLang() { return TRIG ; }
-    } ; }
-
-    private static RiotSerializer createTrigStreaming(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { TriGWriterBlocks.write(out, graph) ; }
-        @Override public Lang getLang() { return TRIG ; }
-    } ; }
-
-    private static RiotSerializer createTrigFlat(final OutputStream out, final DatasetGraph dsg)
-    { return new RiotSerializer() {
-        @Override public void write() { TriGWriterFlat.write(out, dsg) ; }
-        @Override public Lang getLang() { return TRIG ; }
-    } ; }
-
-    private static RiotSerializer createTrigFlat(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { TriGWriterFlat.write(out, graph) ; }
-        @Override public Lang getLang() { return TRIG ; }
-    } ; }
-
-
-    private static RiotSerializer createNQuads(final OutputStream out, final Graph graph)
-    { return new RiotSerializer() {
-        @Override public void write() { NTriplesWriter.write(out, graph) ; }
-        @Override public Lang getLang() { return NQUADS ; }
-    } ; }
-
-    private static RiotSerializer createNQuads(final OutputStream out, final DatasetGraph dsg)
-    { return new RiotSerializer() {
-        @Override public void write() { NQuadsWriter.write(out, dsg) ; }
-        @Override public Lang getLang() { return NQUADS ; }
-    } ; }
+    public static RDFFormat defaultDatasetSerialization(Lang lang)
+    {
+        if ( RDFLanguages.TRIG.equals(lang) )       return RDFFormat.Trig ;
+        if ( RDFLanguages.NQUADS.equals(lang) )     return RDFFormat.NQuads ;
+        
+        return null ;
+    }
+
 }
 

Modified: jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RiotWriter.java Sat Feb  9 20:01:44 2013
@@ -1,6 +1,5 @@
-/** ;
- * Licensed to the Apache Software Foundation (ASF) under 
-one
+/**
+ * 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
@@ -21,148 +20,178 @@ package riot;
 
 import java.io.OutputStream ;
 
-import org.apache.jena.atlas.lib.NotImplemented ;
-import org.apache.jena.riot.Lang ;
+import riot.writer.* ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 
+/** Direct call to create writers for specific formats.
+ * The normal way to write is {@code RDFWriterMgr.write(...)} 
+ */
 public class RiotWriter
 {
-    /** Write the model to the output stream in the default serialization for the language.
+    /** Write as Turtle
+     * @param out   OutputStream
+     * @param model Model to write 
+     */
+    public static void writeTurtle(OutputStream out, Model model)
+    { writeTurtle(out, model.getGraph()) ; }
+    
+    /** Write as Turtle
+     * @param out   OutputStream
+     * @param graph Graph to write 
+     */
+    public static void writeTurtle(OutputStream out, Graph graph)
+    { createTurtle().write(out, graph) ; }
+
+    /** Write as Turtle, using a streaming writer
+     * @param out   OutputStream
+     * @param model Model to write 
+     */
+    public static void writeTurtleStreaming(OutputStream out,  Model model)
+    { writeTurtleStreaming(out, model.getGraph()) ; }
+    
+    /** Write as Turtle, using a streaming writer
+     * @param out   OutputStream
+     * @param graph Graph to write 
+     */
+    public static void writeTurtleStreaming(OutputStream out, Graph graph)
+    { createTurtleStreaming().write(out, graph) ; }
+
+    /** Write a model as NTriples
+     * @param out       OutputStream
+     * @param model     Model to write 
+     */
+    public static void writeNTriples(OutputStream out, Model model)
+    { writeNTriples(out, model.getGraph()) ; }
+    
+    /** Write a graph as NTriples
+     * @param out       OutputStream
+     * @param graph     Graph to write 
+     */
+    public static void writeNTriples(OutputStream out, Graph graph)
+    { createNTriples().write(out, graph) ; }
+
+    /** Write a model as RDF/XML
+     * @param out       OutputStream
+     * @param model     Model to write 
+     */
+    public static void writeRDFXML(OutputStream out, Model model)
+    { writeRDFXML(out, model.getGraph()) ; }
+    
+    /** Write a graph as RDF/XML
+     * @param out       OutputStream
+     * @param graph     Graph to write 
+     */
+    public static void writeRDFXML(OutputStream out, Graph graph)
+    { createRDFXMLAbbrev().write(out, graph) ; }
+    
+    /** Write a model as RDF/XML
+     * @param out       OutputStream
+     * @param model     Model to write 
+     */
+    public static void writeRDFXMLStreaming(OutputStream out, Model model)
+    { writeRDFXMLStreaming(out, model.getGraph()) ; }
+    
+    /** Write a graph as RDF/XML
+     * @param out       OutputStream
+     * @param graph     Graph to write 
+     */
+    public static void writeRDFXMLStreaming(OutputStream out, Graph graph)
+    { createRDFXMLPlain().write(out, graph) ; }
+    
+    /** Write a model as RDF/JSON (this is not JSON-LD)
+     * @param out       OutputStream
+     * @param model     Model to write 
+     */
+    public static void writeRDFJSON(OutputStream out, Model model)
+    { writeRDFJSON(out, model.getGraph()) ; }
+    
+    /** Write a graph as RDF/JSON (this is not JSON-LD)
+     * @param out       OutputStream
+     * @param graph     Graph to write 
+     */
+    public static void writeRDFJSON(OutputStream out, Graph graph)
+    { createRDFJSON().write(out, graph) ; }
+    
+    /** Write a dataset as TriG
+     * @param out       OutputStream
+     * @param dataset   Dataset to write 
+     */
+    public static void writeTrig(OutputStream out, Dataset dataset)
+    { writeTrig(out, dataset.asDatasetGraph()) ; }
+
+    /** Write a dataset as TriG
      * @param out       OutputStream
-     * @param model     Graph to write
-     * @param lang      Language for the seralization.
+     * @param dataset   Dataset to write 
      */
-    public static void write(OutputStream out, Model model, Lang lang)
-    {
-        write(out, model.getGraph(), lang) ;
-    }
-
-    /** Write the model to the output stream for the language and variant of serialization. 
-     * @param out       OutputStream
-     * @param model     Model to write
-     * @param lang      Language for the seralization.
-     * @param variant   Language seralization variant
-     */
-    public static void write(OutputStream out, Model model, Lang lang, WriterVariant variant) 
-    {
-        write(out, model.getGraph(), lang, variant) ;
-    }
-
-    /** Write the model to the output stream in the default serialization for the language.
-     * @param out           OutputStream
-     * @param model         Model to write
-     * @param serialization Serialization format
-     */
-    public static void write(OutputStream out, Model model, RDFSerialization serialization)
-    {
-        write(out, model.getGraph(), serialization) ;
-    }
-    
-    /** Write the graph to the output stream in the default serialization for the language.
-     * @param out       OutputStream
-     * @param graph     Graph to write
-     * @param lang      Language for the seralization.
-     */
-    public static void write(OutputStream out, Graph graph, Lang lang)
-    {
-        RDFSerialization serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        write(out, graph, serialization) ;
-    }
-
-    /** Write the graph to the output stream for the language and variant of serialization. 
-     * @param out       OutputStream
-     * @param graph     Graph to write
-     * @param lang      Language for the seralization.
-     * @param variant   Language seralization variant
-     */
-    public static void write(OutputStream out, Graph graph, Lang lang, WriterVariant variant) 
-    {
-        RDFSerialization serialization = new RDFSerialization(lang, variant) ;
-        write(out, graph, serialization) ;
-    }
-
-    /** Write the graph to the output stream in the default serialization for the language.
-     * @param out           OutputStream
-     * @param graph         Graph to write
-     * @param serialization Serialization format
-     */
-    public static void write(OutputStream out, Graph graph, RDFSerialization serialization)
-    {
-        WriterRIOTFactory wf = RDFWriterRegistry.getWriterFactory(serialization) ;
-        RiotSerializer w = wf.create(out, graph, serialization) ;
-        w.write() ;
-    }
-
-    /** Write the Dataset to the output stream in the default serialization for the language.
-     * @param out       OutputStream
-     * @param dataset   Dataset to write
-     * @param lang      Language for the seralization.
-     */
-    public static void write(OutputStream out, Dataset dataset, Lang lang)
-    {
-        write(out, dataset.asDatasetGraph(), lang) ;
-    }
-
-    /** Write the graph to the output stream for the language and variant of serialization. 
-     * @param out       OutputStream
-     * @param dataset   Dataset to write
-     * @param lang      Language for the seralization.
-     * @param variant   Language seralization variant
-     */
-    public static void write(OutputStream out, Dataset dataset, Lang lang, WriterVariant variant) 
-    {
-        write(out, dataset.asDatasetGraph(), lang, variant) ;
-    }
-
-    /** Write the graph to the output stream in the default serialization for the language.
-     * @param out           OutputStream
-     * @param dataset       Dataset to write
-     * @param serialization Serialization format
-     */
-    public static void write(OutputStream out, Dataset dataset, RDFSerialization serialization)
-    {
-        write(out, dataset.asDatasetGraph(), serialization) ;
-    }
-
-    /** Write the DatasetGraph to the output stream in the default serialization for the language.
-     * @param out       OutputStream
-     * @param dataset   DatasetGraph to write
-     * @param lang      Language for the seralization.
-     */
-    public static void write(OutputStream out, DatasetGraph dataset, Lang lang)
-    {
-        RDFSerialization serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        write(out, dataset, serialization) ;
-    }
-
-    /** Write the graph to the output stream for the language and variant of serialization. 
-     * @param out       OutputStream
-     * @param dataset   DatasetGraph to write
-     * @param lang      Language for the seralization.
-     * @param variant   Language seralization variant
-     */
-    public static void write(OutputStream out, DatasetGraph dataset, Lang lang, WriterVariant variant) 
-    {
-        RDFSerialization serialization = new RDFSerialization(lang, variant) ;
-        write(out, dataset, serialization) ;
-    }
-
-    /** Write the graph to the output stream in the default serialization for the language.
-     * @param out           OutputStream
-     * @param dataset       DatasetGraph to write
-     * @param serialization Serialization format
-     */
-    public static void write(OutputStream out, DatasetGraph dataset, RDFSerialization serialization)
-    {
-        WriterRIOTFactory wf = RDFWriterRegistry.getWriterFactory(serialization) ;
-        throw new NotImplemented() ;
-//        RiotSerializer w = null ; //??
-//        w.write() ;
-    }
+    public static void writeTrig(OutputStream out, DatasetGraph dataset)
+    { createTrig().write(out, dataset) ; }
     
+    /** Write a dataset as TriG, using a streaming writer
+     * @param out       OutputStream
+     * @param dataset   Dataset to write 
+     */
+    public static void writeTrigStreaming(OutputStream out, Dataset dataset)
+    { writeTrigStreaming(out, dataset.asDatasetGraph()) ; }
+
+    /** Write a dataset as TriG, using a streaming writer
+     * @param out       OutputStream
+     * @param dataset   Dataset to write 
+     */
+    public static void writeTrigStreaming(OutputStream out, DatasetGraph dataset)
+    { createTrigStreaming().write(out, dataset) ; }
+    
+    /** Write a dataset as NQuads
+     * @param out       OutputStream
+     * @param dataset   Dataset to write 
+     */
+    public static void writeNQuads(OutputStream out, Dataset dataset)
+    { writeNQuads(out, dataset.asDatasetGraph()) ; }
+    
+    /** Write a dataset as NQuads
+     * @param out       OutputStream
+     * @param dataset   Dataset to write 
+     */
+    public static void writeNQuads(OutputStream out, DatasetGraph dataset)
+    { createNQuads().write(out, dataset) ; }
+    
+    // ---- Create writers
+
+    /** Create a Turtle writer */
+    public static WriterGraphRIOT createTurtle()            { return new TurtleWriter() ; }
+
+    /** Create a streaming Turtle writer */
+    public static WriterGraphRIOT createTurtleStreaming()   { return new TurtleWriterBlocks() ; }
+
+    /** Create a streaming Turtle outputing one triple per line using Turtle abbreviations */
+    public static WriterGraphRIOT createTurtleFlat()        { return new TurtleWriterFlat() ; }
+
+    /** Create an N-Triples writer */
+    public static WriterGraphRIOT createNTriples()          { return new NTriplesWriter() ; }
+
+    /** Create an RDF/XML writer which pretty-prints */
+    public static WriterGraphRIOT createRDFXMLAbbrev()      { return new RDFXMLAbbrevWriter() ; }
+
+    /** Create an RDF/XML writer which does not pretty-print */
+    public static WriterGraphRIOT createRDFXMLPlain()       { return new RDFXMLPlainWriter() ; }
+
+    /** Create an RDF/JSON writer */
+    public static WriterGraphRIOT createRDFJSON()           { return new RDFJSONWriter() ; }
+
+    /** Create a TriG writer */
+    public static WriterDatasetRIOT createTrig()             { return new TriGWriter() ; }
+
+    /** Create a TriG writer that streams */
+    public static WriterDatasetRIOT createTrigStreaming()    { return new TriGWriterBlocks() ; }
+
+    /** Create a TriG writer that writes one quad per line in Trig, using abbreviated forms */ 
+    public static WriterDatasetRIOT createTrigFlat()         { return new TriGWriterFlat() ; }
+
+    /** Create an NQuads writer */
+    public static WriterDatasetRIOT createNQuads()           { return new NQuadsWriter() ; }
+
 }
 

Added: jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOT.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOT.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOT.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOT.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package riot;
+
+import java.io.OutputStream ;
+import java.io.Writer ;
+
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.system.PrefixMap ;
+
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+
+/**
+ * A RIOT serializer for a language.
+ * This covers both graphs and datasets.
+ * A WriterRIOT is a one-time use object (they may accumulate state, e.g. pretty writers).
+ */
+public interface WriterDatasetRIOT
+{
+    public void  write(OutputStream out, DatasetGraph datasetGraph) ;
+    
+    public void  write(OutputStream out, DatasetGraph datasetGraph, PrefixMap prefixMap) ;
+
+    public void  write(OutputStream out, DatasetGraph datasetGraph, String baseURI) ;
+    
+    public void  write(OutputStream out, DatasetGraph datasetGraph, PrefixMap prefixMap, String baseURI) ;
+
+    /** Use of Writer is discouraged - let the serializer manage character sets in accordance with the format */
+    public void  write(Writer out, DatasetGraph datasetGraph) ;
+    
+    public void  write(Writer out, DatasetGraph datasetGraph, PrefixMap prefixMap, String baseURI) ;
+    
+    public Lang  getLang() ;
+}

Added: jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTBase.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTBase.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTBase.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTBase.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,57 @@
+/**
+ * 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 riot;
+
+import java.io.OutputStream ;
+import java.io.Writer ;
+
+import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
+
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+
+public abstract class WriterDatasetRIOTBase implements WriterDatasetRIOT
+{
+    private static PrefixMap prefixMap(DatasetGraph dataset)
+    {
+        return PrefixMapFactory.create(dataset.getDefaultGraph().getPrefixMapping()) ;
+    }
+    
+    @Override
+    public void write(OutputStream out, DatasetGraph dataset)
+    { write(out, dataset, prefixMap(dataset), null) ; }
+
+    @Override
+    public void write(OutputStream out, DatasetGraph dataset, PrefixMap prefixMap)
+    { write(out, dataset, prefixMap, null) ; }
+
+    @Override
+    public void write(OutputStream out, DatasetGraph dataset, String baseURI)
+    { write(out, dataset, prefixMap(dataset), baseURI) ; }
+
+    @Override
+    public void write(Writer out, DatasetGraph dataset)
+    { write(out, dataset, prefixMap(dataset), null) ; }
+    
+    @Override
+    public abstract void write(Writer out, DatasetGraph dataset, PrefixMap prefixMap, String baseURI) ;
+    
+    @Override
+    public abstract void write(OutputStream out, DatasetGraph dataset, PrefixMap prefixMap, String baseURI) ;
+}

Added: jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTFactory.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTFactory.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTFactory.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/WriterDatasetRIOTFactory.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,25 @@
+/**
+ * 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 riot;
+
+/** Factory for creating dataset writers */ 
+public interface WriterDatasetRIOTFactory
+{
+    public WriterDatasetRIOT create(RDFFormat syntaxForm) ;
+}

Copied: jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOT.java (from r1443261, jena/Experimental/riot-output/src/main/java/riot/RiotSerializer.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOT.java?p2=jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOT.java&p1=jena/Experimental/riot-output/src/main/java/riot/RiotSerializer.java&r1=1443261&r2=1444417&rev=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RiotSerializer.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOT.java Sat Feb  9 20:01:44 2013
@@ -18,18 +18,33 @@
 
 package riot;
 
+import java.io.OutputStream ;
+import java.io.Writer ;
+
 import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.system.PrefixMap ;
+
+import com.hp.hpl.jena.graph.Graph ;
 
 /**
- * A RIOT serilaizer for a language 
+ * A RIOT serializer for a language.
+ * This covers both graphs and datasets.
+ * A WriterRIOT is a one-time use object (they may accumulate state, e.g. pretty writers).
  */
-public interface RiotSerializer
+public interface WriterGraphRIOT
 {
-    /** 
-     * Perform the output process
-     */
-    public void             write() ;
-    public Lang             getLang() ;
+    public void  write(OutputStream out, Graph graph) ;
+    
+    public void  write(OutputStream out, Graph graph, PrefixMap prefixMap) ;
+
+    public void  write(OutputStream out, Graph graph, String baseURI) ;
+    
+    public void  write(OutputStream out, Graph graph, PrefixMap prefixMap, String baseURI) ;
+
+    /** Use of Writer is discouraged - let the serializer manage character sets in accordance with the format */
+    public void  write(Writer out, Graph graph) ;
+    
+    public void  write(Writer out, Graph graph, PrefixMap prefixMap, String baseURI) ;
     
-    // Profile?
+    public Lang  getLang() ;
 }

Added: jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTBase.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTBase.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTBase.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTBase.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,57 @@
+/**
+ * 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 riot;
+
+import java.io.OutputStream ;
+import java.io.Writer ;
+
+import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
+
+import com.hp.hpl.jena.graph.Graph ;
+
+public abstract class WriterGraphRIOTBase implements WriterGraphRIOT
+{
+    private static PrefixMap prefixMap(Graph graph)
+    {
+        return PrefixMapFactory.create(graph.getPrefixMapping()) ;
+    }
+    
+    @Override
+    public void write(OutputStream out, Graph graph)
+    { write(out, graph, prefixMap(graph), null) ; }
+
+    @Override
+    public void write(OutputStream out, Graph graph, PrefixMap prefixMap)
+    { write(out, graph, prefixMap, null) ; }
+
+    @Override
+    public void write(OutputStream out, Graph graph, String baseURI)
+    { write(out, graph, prefixMap(graph), baseURI) ; }
+
+    @Override
+    public void write(Writer out, Graph graph)
+    { write(out, graph, prefixMap(graph), null) ; }
+    
+    @Override
+    public abstract void write(Writer out, Graph graph, PrefixMap prefixMap, String baseURI) ;
+    
+    @Override
+    public abstract void write(OutputStream out, Graph graph, PrefixMap prefixMap, String baseURI) ;
+}

Copied: jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTFactory.java (from r1443261, jena/Experimental/riot-output/src/main/java/riot/WriterRIOTFactory.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTFactory.java?p2=jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTFactory.java&p1=jena/Experimental/riot-output/src/main/java/riot/WriterRIOTFactory.java&r1=1443261&r2=1444417&rev=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/WriterRIOTFactory.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/WriterGraphRIOTFactory.java Sat Feb  9 20:01:44 2013
@@ -18,12 +18,8 @@
 
 package riot;
 
-import java.io.OutputStream ;
-
-import com.hp.hpl.jena.graph.Graph ;
-
-/** Factory for creating writers (usually one-time use but see a particular writer for details) */ 
-public interface WriterRIOTFactory
+/** Factory for creating graph writers */ 
+public interface WriterGraphRIOTFactory
 {
-    public RiotSerializer create(OutputStream out, Graph graph, RDFSerialization syntaxForm) ;
+    public WriterGraphRIOT create(RDFFormat syntaxForm) ;
 }

Added: jena/Experimental/riot-output/src/main/java/riot/adpaters/RDFWriterRIOT.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/adpaters/RDFWriterRIOT.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/adpaters/RDFWriterRIOT.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/adpaters/RDFWriterRIOT.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,85 @@
+/**
+ * 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 riot.adpaters;
+
+import java.io.OutputStream ;
+import java.io.Writer ;
+import java.util.HashMap ;
+import java.util.Map ;
+
+import riot.RDFFormat ;
+import riot.RDFWriterMgr ;
+
+import com.hp.hpl.jena.n3.N3JenaWriter ;
+import com.hp.hpl.jena.rdf.model.Model ;
+import com.hp.hpl.jena.rdf.model.RDFErrorHandler ;
+import com.hp.hpl.jena.rdf.model.RDFWriter ;
+
+// To adapater a package--> 
+public class RDFWriterRIOT implements RDFWriter 
+{
+    static Map<String, RDFFormat> mapJenaNameToFormat = new HashMap<>() ;
+    static {
+        mapJenaNameToFormat.put("RDF/XML", RDFFormat.RDFXMLPlain) ;
+        mapJenaNameToFormat.put("RDF/XML-ABBREV", RDFFormat.RDFXMLAbbrev) ;
+        mapJenaNameToFormat.put("N-TRIPLE", RDFFormat.NTriples) ;
+        mapJenaNameToFormat.put("N-TRIPLES", RDFFormat.NTriples) ;
+        mapJenaNameToFormat.put("N3", RDFFormat.Turtle) ;
+        mapJenaNameToFormat.put(N3JenaWriter.n3WriterPrettyPrinter, RDFFormat.TurtlePretty) ;
+        mapJenaNameToFormat.put(N3JenaWriter.n3WriterPlain, RDFFormat.TurtleBlocks) ;
+        mapJenaNameToFormat.put(N3JenaWriter.n3WriterTriples, RDFFormat.TurtleFlat) ;
+        mapJenaNameToFormat.put(N3JenaWriter.n3WriterTriplesAlt, RDFFormat.TurtleFlat) ;
+        mapJenaNameToFormat.put(N3JenaWriter.turtleWriter, RDFFormat.Turtle) ;
+        mapJenaNameToFormat.put(N3JenaWriter.turtleWriterAlt1, RDFFormat.Turtle) ;
+        mapJenaNameToFormat.put(N3JenaWriter.turtleWriterAlt2, RDFFormat.Turtle) ;
+    }
+    
+    private RDFFormat format ;
+    
+    public RDFWriterRIOT(RDFFormat format) { this.format = format ; }
+    
+    public RDFWriterRIOT(String jenaName) { this(jenaName, mapJenaNameToFormat.get(jenaName)) ; }
+    
+    public RDFWriterRIOT(String jenaName, RDFFormat format) { this.format = format ; }
+    
+    @SuppressWarnings("deprecation")
+    @Override
+    public void write(Model model, Writer out, String base)
+    {
+        RDFWriterMgr.write(out, model, format) ;
+    }
+
+    @Override
+    public void write(Model model, OutputStream out, String base)
+    {
+        RDFWriterMgr.write(out, model, format) ;
+    }
+
+    @Override
+    public Object setProperty(String propName, Object propValue)
+    {
+        return null ;
+    }
+
+    @Override
+    public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler)
+    {
+        return null ;
+    }
+}

Added: jena/Experimental/riot-output/src/main/java/riot/system/IO_Jena2.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/system/IO_Jena2.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/system/IO_Jena2.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/system/IO_Jena2.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,83 @@
+/**
+ * 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 riot.system;
+
+import riot.adpaters.RDFWriterRIOT ;
+
+import com.hp.hpl.jena.Jena ;
+import com.hp.hpl.jena.n3.N3JenaWriter ;
+import com.hp.hpl.jena.rdf.model.impl.RDFWriterFImpl ;
+
+public class IO_Jena2
+{
+    // Jena writer adapters
+    public static class RDFWriterRIOT_RDFXML        extends RDFWriterRIOT   { public RDFWriterRIOT_RDFXML()         { super("RDF/XML") ; } }
+    public static class RDFWriterRIOT_RDFXMLAbbrev  extends RDFWriterRIOT   { public RDFWriterRIOT_RDFXMLAbbrev()   { super("RDF/XML-ABBREV") ; } }
+    public static class RDFWriterRIOT_NTriple       extends RDFWriterRIOT   { public RDFWriterRIOT_NTriple()        { super("N-TRIPLE") ; } }
+    public static class RDFWriterRIOT_NTriples      extends RDFWriterRIOT   { public RDFWriterRIOT_NTriples()       { super("N-TRIPLES") ; } }
+    public static class RDFWriterRIOT_N3            extends RDFWriterRIOT   { public RDFWriterRIOT_N3()             { super("N3") ; } }
+    public static class RDFWriterRIOT_N3_PP         extends RDFWriterRIOT   { public RDFWriterRIOT_N3_PP()          { super(N3JenaWriter.n3WriterPrettyPrinter) ; } }
+    public static class RDFWriterRIOT_N3Plain       extends RDFWriterRIOT   { public RDFWriterRIOT_N3Plain()        { super(N3JenaWriter.n3WriterPlain) ; } }
+    public static class RDFWriterRIOT_N3Triples     extends RDFWriterRIOT   { public RDFWriterRIOT_N3Triples()      { super(N3JenaWriter.n3WriterTriples) ; } }
+    public static class RDFWriterRIOT_N3TriplesAlt  extends RDFWriterRIOT   { public RDFWriterRIOT_N3TriplesAlt()   { super(N3JenaWriter.n3WriterTriplesAlt) ; } }
+    public static class RDFWriterRIOT_Turtle        extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle()         { super(N3JenaWriter.turtleWriter) ; } }
+    public static class RDFWriterRIOT_Turtle1       extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle1()        { super(N3JenaWriter.turtleWriterAlt1) ; } }
+    public static class RDFWriterRIOT_Turtle2       extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle2()        { super(N3JenaWriter.turtleWriterAlt2) ; } }
+    
+    public static void wireIntoJenaW()
+    { 
+//        RDFWriterFImpl.LANGS
+//        RDFWriterFImpl.DEFAULTWRITER
+        RDFWriterFImpl.setBaseWriterClassName("RDF/XML",        RDFWriterRIOT_RDFXML.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName("RDF/XML",        RDFWriterRIOT_RDFXML.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName("RDF/XML-ABBREV", RDFWriterRIOT_RDFXMLAbbrev.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName("N-TRIPLE",       RDFWriterRIOT_NTriple.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName("N-TRIPLES",      RDFWriterRIOT_NTriples.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName("N3",             RDFWriterRIOT_N3.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterPrettyPrinter,   RDFWriterRIOT_N3_PP.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterPlain,           RDFWriterRIOT_N3Plain.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterTriples,         RDFWriterRIOT_N3Triples.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterTriplesAlt,      RDFWriterRIOT_N3TriplesAlt.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriter,            RDFWriterRIOT_Turtle.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriterAlt1,        RDFWriterRIOT_Turtle1.class.getName()) ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriterAlt2,        RDFWriterRIOT_Turtle2.class.getName()) ;
+    }
+    
+    public static void resetJenaW()
+    {
+        // This is the old Jena configuration (bugs and all) 
+        RDFWriterFImpl.setBaseWriterClassName("RDF/XML",        Jena.PATH + ".xmloutput.impl.Basic") ;
+        RDFWriterFImpl.setBaseWriterClassName("RDF/XML-ABBREV", Jena.PATH + ".xmloutput.impl.Abbreviated") ;
+
+        RDFWriterFImpl.setBaseWriterClassName("N-TRIPLE",       Jena.PATH + ".rdf.model.impl.NTripleWriter") ;
+        RDFWriterFImpl.setBaseWriterClassName("N-TRIPLES",      Jena.PATH + ".rdf.model.impl.NTripleWriter") ;
+        
+        RDFWriterFImpl.setBaseWriterClassName("N3",             Jena.PATH + ".n3.N3JenaWriter") ;         
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterPrettyPrinter,    Jena.PATH + ".n3.N3JenaWriterPP") ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterPlain,           Jena.PATH + ".n3.N3TurtleJenaWriter") ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterTriples,         Jena.PATH + ".n3.N3TurtleJenaWriter") ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterTriplesAlt,      Jena.PATH + ".n3.N3JenaWriterTriples") ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriter,            Jena.PATH + ".n3.N3TurtleJenaWriter") ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriterAlt1,        Jena.PATH + ".n3.N3TurtleJenaWriter") ;
+        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriterAlt2,        Jena.PATH + ".n3.N3TurtleJenaWriter") ;
+        
+    }
+
+}
+

Added: jena/Experimental/riot-output/src/main/java/riot/system/IndentedWriterWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/system/IndentedWriterWriter.java?rev=1444417&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/system/IndentedWriterWriter.java (added)
+++ jena/Experimental/riot-output/src/main/java/riot/system/IndentedWriterWriter.java Sat Feb  9 20:01:44 2013
@@ -0,0 +1,30 @@
+/**
+ * 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 riot.system;
+
+import java.io.Writer ;
+
+import org.apache.jena.atlas.io.IndentedWriter ;
+
+/** Hide Writers */
+public class IndentedWriterWriter extends IndentedWriter
+{
+    public static IndentedWriter create(Writer writer) { return new IndentedWriterWriter(writer) ; }
+    private IndentedWriterWriter(Writer w) { super(w) ; }
+}

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/NQuadsWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/NQuadsWriter.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/NQuadsWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/NQuadsWriter.java Sat Feb  9 20:01:44 2013
@@ -19,33 +19,51 @@
 package riot.writer;
 
 import java.io.OutputStream ;
+import java.io.Writer ;
 import java.util.Iterator ;
 
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
+import riot.WriterDatasetRIOTBase ;
 
-import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 
-public class NQuadsWriter
+public class NQuadsWriter extends WriterDatasetRIOTBase
 {
-    public static void write(OutputStream out, DatasetGraph dsg)
-    {
-        write(out, dsg.find(Node.ANY, Node.ANY, Node.ANY, Node.ANY)) ;
-    }
-    
-    public static void write(OutputStream out, Dataset dsg)
+    public static void write(OutputStream out, Iterator<Quad> iter)
     {
-        write(out, dsg.asDatasetGraph()) ;
+        StreamRDF s = new WriterStreamRDFTuples(out) ;
+        s.start() ;
+        StreamRDFLib.quadsToStream(s, iter) ;
+        s.finish();
     }
     
-    public static void write(OutputStream out, Iterator<Quad> iter)
+    public static void write(Writer out, Iterator<Quad> iter)
     {
         StreamRDF s = new WriterStreamRDFTuples(out) ;
         s.start() ;
         StreamRDFLib.quadsToStream(s, iter) ;
         s.finish();
     }
+
+    @Override
+    public Lang getLang()
+    {
+        return Lang.NQUADS ;
+    }
+
+    @Override
+    public void write(Writer out, DatasetGraph dataset, PrefixMap prefixMap, String baseURI)
+    {
+        write(out, dataset.find(null, null, null, null)) ;
+    }
+
+    @Override
+    public void write(OutputStream out, DatasetGraph dataset, PrefixMap prefixMap, String baseURI)
+    {
+        write(out, dataset.find(null, null, null, null)) ;
+    }
 }

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/NTriplesWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/NTriplesWriter.java?rev=1444417&r1=1444416&r2=1444417&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/NTriplesWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/NTriplesWriter.java Sat Feb  9 20:01:44 2013
@@ -19,33 +19,51 @@
 package riot.writer;
 
 import java.io.OutputStream ;
+import java.io.Writer ;
 import java.util.Iterator ;
 
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
+import riot.WriterGraphRIOTBase ;
 
 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.rdf.model.Model ;
 
-public class NTriplesWriter
+public class NTriplesWriter extends WriterGraphRIOTBase
 {
-    public static void write(OutputStream out, Model model)
-    {
-        write(out, model.getGraph()) ;
-    }
-
-    public static void write(OutputStream out, Graph graph)
+    public static void write(OutputStream out, Iterator<Triple> iter)
     {
-        write(out, graph.find(Node.ANY, Node.ANY, Node.ANY)) ;
+        StreamRDF s = new WriterStreamRDFTuples(out) ;
+        s.start() ;
+        StreamRDFLib.triplesToStream(s, iter) ;
+        s.finish();
     }
     
-    public static void write(OutputStream out, Iterator<Triple> iter)
+    public static void write(Writer out, Iterator<Triple> iter)
     {
         StreamRDF s = new WriterStreamRDFTuples(out) ;
         s.start() ;
         StreamRDFLib.triplesToStream(s, iter) ;
-        s.finish() ;
+        s.finish();
+    }
+
+    @Override
+    public Lang getLang()
+    {
+        return Lang.NTRIPLES ;
+    }
+
+    @Override
+    public void write(Writer out, Graph graph, PrefixMap prefixMap, String baseURI)
+    {
+        write(out, graph.find(null, null, null)) ;
+    }
+
+    @Override
+    public void write(OutputStream out, Graph graph, PrefixMap prefixMap, String baseURI)
+    {
+        write(out, graph.find(null, null, null)) ;
     }
 }