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/14 16:12:30 UTC

svn commit: r1446228 - in /jena/Experimental/riot-output/src/main/java: dev/ riot/writer/

Author: andy
Date: Thu Feb 14 15:12:29 2013
New Revision: 1446228

URL: http://svn.apache.org/r1446228
Log: (empty)

Added:
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStream.java
      - copied, changed from r1444182, jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamBase.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBase.java
      - copied, changed from r1444562, jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDF.java
Removed:
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamBase.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDF.java
Modified:
    jena/Experimental/riot-output/src/main/java/dev/MainWriter.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/TurtleWriterBlocks.java
    jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterFlat.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBlocks.java
    jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFFlat.java

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=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/MainWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/MainWriter.java Thu Feb 14 15:12:29 2013
@@ -27,7 +27,6 @@ import org.apache.jena.atlas.lib.StrUtil
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.RIOT ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.PrefixMapFactory ;
 import org.apache.jena.riot.system.StreamRDF ;
@@ -48,20 +47,11 @@ public class MainWriter
 {
     public static void main(String ...args)
     {
-        RIOT.init() ;
-        String fn = "D.ttl" ;
-        Model m = ModelFactory.createDefaultModel() ;
-        m.read(fn) ;
-        RDFWriterMgr.write(System.out, m, RDFFormat.RDFNULL) ;
-        //m.write(System.out, "TTL") ;
-        System.out.println("DONE") ;
-        System.exit(0) ;
-
         writeAll() ;
         System.exit(0) ;
         
-        Dataset ds = RDFDataMgr.loadDataset("D.ttl") ;
-        RDFWriterMgr.write(System.out, ds, Lang.TRIG) ;
+        Dataset ds = RDFDataMgr.loadDataset("W.trig") ;
+        RDFWriterMgr.write(System.out, ds, RDFFormat.TRIG_FLAT ) ;
         System.out.println("DONE") ;
 //        
 //        String fn = "D.ttl" ;
@@ -90,16 +80,16 @@ public class MainWriter
         
         RDFFormat formats[] = {
             null
-//            , RDFFormat.Turtle
-//            , RDFFormat.TurtleBlocks
-//            , RDFFormat.TurtleFlat
-//            , RDFFormat.NTriples
-//            , RDFFormat.Trig
-//            , RDFFormat.TrigBlocks
+            , RDFFormat.TURTLE
+            , RDFFormat.TURTLE_BLOCKS
+            , RDFFormat.TURTLE_FLAT
+            , RDFFormat.NTRIPLES
+            , RDFFormat.TRIG
+            , RDFFormat.TRIG_BLOCKS
             , RDFFormat.TRIG_FLAT
-//            , RDFFormat.NQuads
-//            , RDFFormat.RDFXML
-//            , RDFFormat.RDFXMLPlain
+            , RDFFormat.NQUADS
+            , RDFFormat.RDFXML
+            , RDFFormat.RDFXML_PLAIN
         } ;
         
         for ( RDFFormat f : formats )

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterBlocks.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterBlocks.java?rev=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterBlocks.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterBlocks.java Thu Feb 14 15:12:29 2013
@@ -33,7 +33,7 @@ public class TriGWriterBlocks extends Tr
     protected void output$(IndentedWriter iOut, DatasetGraph dsg, PrefixMap prefixMap, String baseURI)
     {
         StreamRDF dest = new WriterStreamRDFBlocks(iOut) ;
-        WriterStreamBase.write(dest, dsg, prefixMap, baseURI) ;
+        WriterStream.write(dest, dsg, prefixMap, baseURI) ;
     }
 }
 

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterFlat.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterFlat.java?rev=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterFlat.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/TriGWriterFlat.java Thu Feb 14 15:12:29 2013
@@ -34,7 +34,7 @@ public class TriGWriterFlat extends TriG
     protected void output$(IndentedWriter iOut, DatasetGraph datasetGraph, PrefixMap prefixMap, String baseURI)
     {
         StreamRDF dest = new WriterStreamRDFFlat(iOut) ;
-        WriterStreamBase.write(dest, datasetGraph, prefixMap, baseURI) ;
+        WriterStream.write(dest, datasetGraph, prefixMap, baseURI) ;
     }
 }
 

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterBlocks.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterBlocks.java?rev=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterBlocks.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterBlocks.java Thu Feb 14 15:12:29 2013
@@ -33,7 +33,7 @@ public class TurtleWriterBlocks extends 
     protected void output$(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI)
     {
         StreamRDF dest = new WriterStreamRDFBlocks(out) ;
-        WriterStreamBase.write(dest, graph, prefixMap, baseURI) ;
+        WriterStream.write(dest, graph, prefixMap, baseURI) ;
     }
 }
 

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterFlat.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterFlat.java?rev=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterFlat.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/TurtleWriterFlat.java Thu Feb 14 15:12:29 2013
@@ -31,6 +31,6 @@ public class TurtleWriterFlat extends Tu
     protected void output$(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI)
     {
         StreamRDF dest = new WriterStreamRDFFlat(out) ;
-        WriterStreamBase.write(dest, graph, prefixMap, baseURI) ;
+        WriterStream.write(dest, graph, prefixMap, baseURI) ;
     }
 }
\ No newline at end of file

Copied: jena/Experimental/riot-output/src/main/java/riot/writer/WriterStream.java (from r1444182, jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamBase.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/WriterStream.java?p2=jena/Experimental/riot-output/src/main/java/riot/writer/WriterStream.java&p1=jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamBase.java&r1=1444182&r2=1446228&rev=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamBase.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/WriterStream.java Thu Feb 14 15:12:29 2013
@@ -30,8 +30,10 @@ import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 
-public abstract class WriterStreamBase
+public class WriterStream
 {
+    private WriterStream() {}
+    
     protected static void finish(StreamRDF dest)
     { dest.finish() ; }
 
@@ -64,5 +66,6 @@ public abstract class WriterStreamBase
         finish(dest) ;
     }
     
+    
 }
 

Copied: jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBase.java (from r1444562, jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDF.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBase.java?p2=jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBase.java&p1=jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDF.java&r1=1444562&r2=1446228&rev=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDF.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBase.java Thu Feb 14 15:12:29 2013
@@ -18,8 +18,6 @@
 
 package riot.writer;
 
-import static org.apache.jena.atlas.lib.Lib.equal ;
-
 import java.io.BufferedWriter ;
 import java.io.OutputStream ;
 import java.io.Writer ;
@@ -43,26 +41,8 @@ import com.hp.hpl.jena.sparql.core.Quad 
  *  If fed only triples, the output is valid Turtle. 
  */
 
-public abstract class WriterStreamRDF implements StreamRDF
+public abstract class WriterStreamRDFBase implements StreamRDF
 {
-    // TODO
-    // Min width for properties?
-    // better layering and state machine
-    
-    // When false, gets 
-    // :g1 { ... }
-    // :g2 { ... }
-    protected static final boolean NL_GDFT_START  =  false ;      // Newline after { of dft graph
-    protected static final boolean NL_GNMD_START  =  true ;       // same, but for named graphs
-    protected static final boolean NL_GDFT_END    =  true ;      // Whether the closing } is on a new line
-    protected static final boolean NL_GNMD_END    =  true ;      // Whether the closing } is on a new line
-    
-    protected static final int INDENT_MIN_S       = 4 ;           // Range of subject indent
-    protected static final int INDENT_MAX_S       = 10 ;          //   i.e. offset of predicate.
-
-    protected static final int INDENT_GDFT        = 2 ;           // Default graph indent
-    protected static final int INDENT_GNMD        = 4 ;           // Named graph indent
-    
     protected boolean activeTripleData = false ;
     protected boolean activeQuadData = false ;
     protected boolean lastWasDirective = false ;
@@ -70,56 +50,40 @@ public abstract class WriterStreamRDF im
     protected final PrefixMap pMap ;
     protected final NodeFormatterTTL fmt ;
     protected final IndentedWriter out ;
-
-    protected Node lastSubject = null ;
-    protected Node lastGraph = null ;     // null -> unset : Quad.
-    protected boolean firstGraph = true ;
-    
-    // --- Indent management.
-    protected int currentGraphIndent = 0;
-    protected int currentSubjectIndent = 0 ;
-
-    protected void setGraphIndent(int x)
-    {
-        currentGraphIndent = x ;
-    }
-
-    protected void setSubjectIndent(int x)
-    {
-        if ( x < INDENT_MIN_S ) x = INDENT_MIN_S ;
-        if ( x > INDENT_MAX_S ) x = INDENT_MAX_S ;
-        currentSubjectIndent = x ;
-    }
     
-    protected int graphIndent() { return currentGraphIndent ; }
-    protected int subjectIndent() { return currentSubjectIndent ; }
-    // ----
-    public WriterStreamRDF(OutputStream output)
+    public WriterStreamRDFBase(OutputStream output)
     { 
         this(new IndentedWriter(output)) ;
-
     }
 
-    public WriterStreamRDF(IndentedWriter output)
+    public WriterStreamRDFBase(IndentedWriter output)
     { 
         out = output ;
         pMap = PrefixMapFactory.create() ;
         fmt = new NodeFormatterTTL(null, pMap, NodeToLabel.createScopeByDocument()) ; 
     }
 
-    public WriterStreamRDF(Writer output)
+    public WriterStreamRDFBase(Writer output)
     { 
+        this(wrap(output)) ;
+//        if ( ! ( output instanceof BufferedWriter ) )
+//            output = new BufferedWriter(output, 32*1024) ;
+//        out = RiotLib.create(output) ;
+//        pMap = PrefixMapFactory.create() ;
+//        fmt = new NodeFormatterTTL(null, pMap, NodeToLabel.createScopeByDocument()) ; 
+    }
+    
+    private static IndentedWriter wrap(Writer output)
+    {
         if ( ! ( output instanceof BufferedWriter ) )
             output = new BufferedWriter(output, 32*1024) ;
-        out = RiotLib.create(output) ;
-        pMap = PrefixMapFactory.create() ;
-        fmt = new NodeFormatterTTL(null, pMap, NodeToLabel.createScopeByDocument()) ; 
+        return RiotLib.create(output) ;
     }
     
     @Override
     public void start()
     {
-        reset() ;
+        reset$() ;
     }
 
     @Override
@@ -136,6 +100,7 @@ public abstract class WriterStreamRDF im
         Node p = triple.getPredicate() ;
         Node o = triple.getObject() ;
         print(s,p,o) ;
+        activeTripleData = true ;
     }
 
     @Override
@@ -145,10 +110,8 @@ public abstract class WriterStreamRDF im
         Node s = quad.getSubject() ;
         Node p = quad.getPredicate() ;
         Node o = quad.getObject() ;
-        if ( g == null )
-            // Don't have g as null for a triple.
-            g = Quad.defaultGraphNodeGenerated ;
         print(g, s, p, o) ;
+        activeQuadData = true ;
     }
 
     @Override
@@ -157,10 +120,8 @@ public abstract class WriterStreamRDF im
 
     @Override
     public void base(String base)
-    {
+    {}
         
-    }
-
     @Override
     public void prefix(String prefix, String iri)
     {
@@ -175,28 +136,30 @@ public abstract class WriterStreamRDF im
         pMap.add(prefix, iri) ;
     }
 
+    protected abstract void startData() ;
+    protected abstract void endData() ;
+
     protected void outputNode(Node n)
     {
         fmt.format(out, n) ;
     }
     
-    protected void reset() 
+    private void reset$() 
     {
         activeTripleData = false ;
         activeQuadData = false ;
         lastWasDirective = false ;
-        lastSubject = null ;
-        lastGraph = null ;
-        // Shouldn't be necessary - if it is some other code is not managing inc/dec indents.
-        //out.setAbsoluteIndent(0) ;
+        reset() ;
     }
     
+    protected abstract void reset() ;
+
     protected void printPre()
     {
         // Directive -> data transition.
         if ( lastWasDirective )
         {
-            reset() ;
+            reset$() ;
             out.print('\n') ;
         }
     }
@@ -217,89 +180,5 @@ public abstract class WriterStreamRDF im
     
     protected abstract void print(Node s, Node p, Node o) ;
     
-    protected boolean dftGraph() { return lastGraph == Quad.defaultGraphNodeGenerated ; }
-
-    protected void endGraph(Node g)
-    {
-        if ( lastGraph == null )
-            return ;
-            
-        // End of graph
-        if ( ! equal(lastGraph, g) )
-        {
-            if ( lastSubject != null )
-                out.print(" .") ;
-            boolean nl = dftGraph() ? NL_GDFT_END : NL_GNMD_END ;
-            
-            if ( nl ) {
-                // } on a new line.
-                out.decIndent(graphIndent()) ;
-                out.println() ;
-                out.println("}") ;
-            } else {
-                // Possibly on same line as last quad/triple.
-                out.decIndent(graphIndent()) ;
-                if ( out.atLineStart() )
-                    out.println("}") ;      // Trailing NL
-                else
-                    out.println(" }") ;     // Trailing NL
-            }
-            lastSubject = null ;
-            lastGraph = null ;
-        }
-    }
-
-    protected void startGraph(Node g)
-    {
-        // Start graph
-        if ( lastGraph == null )
-        {
-            if ( ! firstGraph )
-                out.println() ;
-            firstGraph = false ;
-            
-            lastSubject = null ;
-            if ( g == Quad.defaultGraphNodeGenerated )
-            {
-                if ( NL_GDFT_START )
-                    out.println("{") ;
-                else
-                    out.print("{ ") ;
-                
-                setGraphIndent(INDENT_GDFT) ;
-            }
-            else
-            {
-                outputNode(g) ;
-                if ( NL_GNMD_START )
-                {
-                    out.println(" {") ;
-                    setGraphIndent(INDENT_GNMD) ;
-                }
-                else
-                {
-                    out.print(" { ") ;
-                    setGraphIndent(out.getCol()) ;
-                }
-            }
-            out.incIndent(graphIndent()) ;
-        }
-        lastGraph = g ;
-    }
-
-    protected void endTriples()
-    {
-        out.println(" .") ;
-        lastSubject = null ;
-    }
-    
-    protected void endData()
-    {
-        if ( activeQuadData )
-            endGraph(null) ;
-        if ( activeTripleData )
-            endTriples() ;
-        reset() ;
-    }
 
 }

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBlocks.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBlocks.java?rev=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBlocks.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFBlocks.java Thu Feb 14 15:12:29 2013
@@ -26,6 +26,7 @@ import java.io.Writer ;
 import org.apache.jena.atlas.io.IndentedWriter ;
 
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.core.Quad ;
 
 /** An output of triples / quads that is streaming.
  *  It writes something that is easier to read than
@@ -37,32 +38,71 @@ import com.hp.hpl.jena.graph.Node ;
  *  If fed only triples, the output is valid Turtle. 
  */
 
-public class WriterStreamRDFBlocks extends WriterStreamRDF
+public class WriterStreamRDFBlocks extends WriterStreamRDFBase
 {
+    // TODO
+    // Min width for properties?
+    
+    protected static final boolean NL_GDFT_START  =  false ;      // Newline after { of dft graph
+    protected static final boolean NL_GNMD_START  =  true ;       // same, but for named graphs
+    protected static final boolean NL_GDFT_END    =  true ;      // Whether the closing } is on a new line
+    protected static final boolean NL_GNMD_END    =  true ;      // Whether the closing } is on a new line
+    
+    protected static final int INDENT_MIN_S       = 4 ;           // Range of subject indent
+    protected static final int INDENT_MAX_S       = 10 ;          //   i.e. offset of predicate.
+
+    protected static final int INDENT_GDFT        = 2 ;           // Default graph indent
+    protected static final int INDENT_GNMD        = 4 ;           // Named graph indent
+    
+    protected Node lastSubject = null ;
+    protected Node lastGraph = null ;     // null -> unset : Quad.
+    protected boolean firstGraph = true ;
+    
+    // --- Indent management.
+    protected int currentGraphIndent = 0;
+    protected int currentSubjectIndent = 0 ;
+
     public WriterStreamRDFBlocks(OutputStream output)
     { 
         super(output) ;
     }
     
+    public WriterStreamRDFBlocks(Writer output)
+    {
+        super(output) ;
+    }
+
     public WriterStreamRDFBlocks(IndentedWriter output)
     {
         super(output) ;
     }
     
-    public WriterStreamRDFBlocks(Writer output)
+    protected void setGraphIndent(int x)
     {
-        super(output) ;
+        currentGraphIndent = x ;
     }
 
+    protected void setSubjectIndent(int x)
+    {
+        if ( x < INDENT_MIN_S ) x = INDENT_MIN_S ;
+        if ( x > INDENT_MAX_S ) x = INDENT_MAX_S ;
+        currentSubjectIndent = x ;
+    }
+    
+    protected int graphIndent() { return currentGraphIndent ; }
+    protected int subjectIndent() { return currentSubjectIndent ; }
+    
     @Override
     protected void print(Node g, Node s, Node p, Node o)
     {
+        if ( g == null )
+            // Don't have g as null for a triple.
+            g = Quad.defaultGraphNodeGenerated ;
         printPre() ;
         endGraph(g) ;
         startGraph(g) ;
         print$(s,p,o) ;
         lastGraph = g ;
-        activeQuadData = true ;
     }
     
     @Override
@@ -70,7 +110,6 @@ public class WriterStreamRDFBlocks exten
     {
         printPre() ;
         print$(s, p, o) ;
-        activeTripleData = true ;
     }
     
     private void print$(Node s, Node p, Node o)
@@ -92,4 +131,106 @@ public class WriterStreamRDFBlocks exten
         outputNode(o) ;
         lastSubject = s ;
     }
+    
+    protected boolean dftGraph() { return lastGraph == Quad.defaultGraphNodeGenerated ; }
+
+    protected void endGraph(Node g)
+    {
+        if ( lastGraph == null )
+            return ;
+            
+        // End of graph
+        if ( ! equal(lastGraph, g) )
+        {
+            if ( lastSubject != null )
+                out.print(" .") ;
+            boolean nl = dftGraph() ? NL_GDFT_END : NL_GNMD_END ;
+            
+            if ( nl ) {
+                // } on a new line.
+                out.decIndent(graphIndent()) ;
+                out.println() ;
+                out.println("}") ;
+            } else {
+                // Possibly on same line as last quad/triple.
+                out.decIndent(graphIndent()) ;
+                if ( out.atLineStart() )
+                    out.println("}") ;      // Trailing NL
+                else
+                    out.println(" }") ;     // Trailing NL
+            }
+            lastSubject = null ;
+            lastGraph = null ;
+        }
+    }
+
+    protected void startGraph(Node g)
+    {
+        // Start graph
+        if ( lastGraph == null )
+        {
+            if ( ! firstGraph )
+                out.println() ;
+            firstGraph = false ;
+            
+            lastSubject = null ;
+            if ( g == Quad.defaultGraphNodeGenerated )
+            {
+                if ( NL_GDFT_START )
+                    out.println("{") ;
+                else
+                    out.print("{ ") ;
+                
+                setGraphIndent(INDENT_GDFT) ;
+            }
+            else
+            {
+                outputNode(g) ;
+                if ( NL_GNMD_START )
+                {
+                    out.println(" {") ;
+                    setGraphIndent(INDENT_GNMD) ;
+                }
+                else
+                {
+                    out.print(" { ") ;
+                    setGraphIndent(out.getCol()) ;
+                }
+            }
+            out.incIndent(graphIndent()) ;
+        }
+        lastGraph = g ;
+    }
+
+    protected void endTriples()
+    {
+        out.println(" .") ;
+        lastSubject = null ;
+    }
+    
+    @Override
+    protected void startData()
+    {
+        
+    }
+    
+    @Override
+    protected void endData()
+    {
+        if ( activeQuadData )
+            endGraph(null) ;
+        if ( activeTripleData )
+            endTriples() ;
+        reset() ;
+    }
+
+    @Override
+    protected void reset()
+    {
+        lastSubject = null ;
+        lastGraph = null ;
+        currentGraphIndent = 0 ;
+        currentSubjectIndent = 0 ;
+    }
+
 }

Modified: jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFFlat.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFFlat.java?rev=1446228&r1=1446227&r2=1446228&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFFlat.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/writer/WriterStreamRDFFlat.java Thu Feb 14 15:12:29 2013
@@ -24,57 +24,67 @@ import java.io.Writer ;
 import org.apache.jena.atlas.io.IndentedWriter ;
 
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.core.Quad ;
 
 /** An output of triples / quads that is streaming.
- *  It writes N-triples/N-quads + prefixes.
- *  
- *  If fed only quads, the output is valid TriG (use Quad.defaultGraphIRI) 
- *  If fed only triples, the output is valid Turtle. 
+ *  It writes one line per triple/quads, with prefixes and literal short forms.
  */
 
-public class WriterStreamRDFFlat extends WriterStreamRDF
+public class WriterStreamRDFFlat extends WriterStreamRDFBase
 {
     public WriterStreamRDFFlat(OutputStream output)
     { 
         super(output) ;
     }
-    
+
     public WriterStreamRDFFlat(IndentedWriter output)
-    {
+    { 
         super(output) ;
     }
 
     public WriterStreamRDFFlat(Writer output)
-    {
+    { 
         super(output) ;
     }
 
     @Override
-    protected void print(Node g, Node s, Node p, Node o)
-    {
-        printPre() ;
-        endGraph(g) ;
-        startGraph(g) ;
-        print$(s,p,o) ;
-        lastGraph = g ;
-        activeQuadData = true ; 
-    }
-    
+    protected void startData()
+    {}
+
+    @Override
+    protected void endData()
+    {}
+
+    @Override
+    protected void reset()
+    {}
+
     @Override
     protected void print(Node s, Node p, Node o)
     {
-        printPre() ;
-        print$(s, p, o) ;
-        activeTripleData = false ; // We completed the triple. 
+        outputNode(s) ;
+        out.print(' ') ;
+        outputNode(p) ;
+        out.print(' ') ;
+        outputNode(o) ;
+        out.println(" .") ;
     }
-    
-    private void print$(Node s, Node p, Node o)
+
+    @Override
+    protected void print(Node g, Node s, Node p, Node o)
     {
+        if ( g != null && ! Quad.isDefaultGraph(g) )
+        {
+            outputNode(g) ;
+            out.print(" { ") ;
+        }
+        else
+            out.print("{ ") ;
         outputNode(s) ;
-        out.print("  ") ;
+        out.print(' ') ;
         outputNode(p) ;
-        out.print("  ") ;
+        out.print(' ') ;
         outputNode(o) ;
-        out.println(" .") ;
+        out.println(" }") ;
     }
 }