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 ; }