This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new 221ac7726a GH-2093: Correct WriterStreamRDFBlocks on mixed 
triples/quads
221ac7726a is described below

commit 221ac7726ac65bdf26c703fb89e5b30e1db1376e
Author: Andy Seaborne <[email protected]>
AuthorDate: Fri Dec 1 13:12:38 2023 +0000

    GH-2093: Correct WriterStreamRDFBlocks on mixed triples/quads
---
 .../org/apache/jena/riot/writer/IndentStyle.java   |  6 +++
 .../jena/riot/writer/WriterStreamRDFBlocks.java    | 50 +++++++++++++---------
 2 files changed, 35 insertions(+), 21 deletions(-)

diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/IndentStyle.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/IndentStyle.java
index b2d32e30b7..1abe34c67a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/IndentStyle.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/IndentStyle.java
@@ -18,6 +18,12 @@
 
 package org.apache.jena.riot.writer;
 
+/**
+ * The "long" Turtle format variant is based on rdflib's "longturtle"
+ * format. It uses a fixed indentation width (2) and linebreaks after
+ * each sequence element.
+ */
+
 enum IndentStyle {
     WIDE, LONG ;
     public static IndentStyle create(String label) {
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
index c5d1aba59f..f4248a9ab9 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
@@ -91,6 +91,7 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
         } else {
             // Different graph
             endGraph(g) ;
+            // This does the startBatch.
             startGraph(g) ;
             lastGraph = g ;
         }
@@ -100,35 +101,29 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
         lastSubject = s ;
     }
 
-    private void startBatch() {
-        // Any output so far? prefixes or a previous graph.
-        if ( out.getRow() > 1 )
-            out.println() ;
-        out.flush();
-    }
-
-    private void gap(int gap) {
-        out.print(' ', gap) ;
-    }
-
-    @Override
-    public void prefixSetup(String prefix, String iri) {
-        // Newline between blocks.
-        // After flush, before writing PREFIX
-        boolean addNL = ( activeTripleData || activeQuadData );
-        if ( addNL )
-            out.println();
-    }
-
     @Override
     protected void printBatchTriples(Node s, List<Triple> triples) {
         startBatch();
         printBatch(s, triples) ;
-        // End of cluster.
         out.println(" .") ;
         lastGraph = null;
     }
 
+    private void startBatch() {
+        if ( lastGraph != null ) {
+            // last batch was quads
+            endGraph(null) ;
+            lastGraph = null;
+        } else {
+            // last batch was triples.
+        }
+
+        // Any output so far? prefixes or a previous graph.
+        if ( out.getRow() > 1 )
+            out.println() ;
+        out.flush();
+    }
+
     private void printBatch(Node s, List<Triple> triples) {
         outputNode(s) ;
         if ( out.getCol() > LONG_SUBJECT )
@@ -162,6 +157,10 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
         }
     }
 
+    private void gap(int gap) {
+        out.print(' ', gap) ;
+    }
+
     @Override
     protected void finalizeRun() {
         if ( lastGraph != null )
@@ -169,6 +168,15 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
             endGraph(null) ;
     }
 
+    @Override
+    protected void prefixSetup(String prefix, String iri) {
+        // Newline between blocks.
+        // After flush, before writing PREFIX
+        boolean addNL = ( activeTripleData || activeQuadData );
+        if ( addNL )
+            out.println();
+    }
+
     protected boolean dftGraph()        { return lastGraph == 
Quad.defaultGraphNodeGenerated ; }
     protected boolean dftGraph(Node g)  { return g == 
Quad.defaultGraphNodeGenerated ; }
 

Reply via email to