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 2011/08/29 21:30:53 UTC

svn commit: r1162952 - in /incubator/jena/Jena2/ARQ/trunk: src-dev/dev/ src/org/openjena/atlas/io/ src/org/openjena/riot/out/ src/org/openjena/riot/system/

Author: andy
Date: Mon Aug 29 19:30:53 2011
New Revision: 1162952

URL: http://svn.apache.org/viewvc?rev=1162952&view=rev
Log:
Node formatting output - N-Triples writer (WIP)

Modified:
    incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/io/BufferingWriter.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/NTriplesWriter.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkQuadOutput.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkTripleOutput.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/system/SyntaxLabels.java

Modified: incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java?rev=1162952&r1=1162951&r2=1162952&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java Mon Aug 29 19:30:53 2011
@@ -7,6 +7,8 @@ public class DevARQ
     // FILTER(?x=<x> && ...) does not push down on the ?x=<x>
     // Do FILTER placement before filter equality -- but dnager of breaking up BGPs.
     
+    // riot.out.SinkTripleOutput and BufferingWriter : respect encoder 
+    
     // Automatically create graphs for in-memorry update.
     //   DatasetFactory.create() ; returns an auto-add dataset.
     //   and UpdateAction.execute (request, model) has a fixed datset of one graph.

Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/io/BufferingWriter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/io/BufferingWriter.java?rev=1162952&r1=1162951&r2=1162952&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/io/BufferingWriter.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/io/BufferingWriter.java Mon Aug 29 19:30:53 2011
@@ -77,7 +77,7 @@ public final class BufferingWriter exten
         return new BufferingWriter(new SinkChannel(out), size, size/2) ;
     }
     
-    /** Writer(chars) over OutputStream (bytes) -- heavily buffered -- fluishing may be needed */
+    /** Writer(chars) over OutputStream (bytes) -- heavily buffered -- flushing may be needed */
     public static BufferingWriter create(OutputStream out)
     {
         return new BufferingWriter(new SinkOutputStream(out), SIZE, BLOB_SIZE) ;

Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/NTriplesWriter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/NTriplesWriter.java?rev=1162952&r1=1162951&r2=1162952&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/NTriplesWriter.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/NTriplesWriter.java Mon Aug 29 19:30:53 2011
@@ -24,7 +24,7 @@ public class NTriplesWriter
     public static void write(OutputStream out, Graph graph)
     {
         Prologue prologue = Prologue.create(null, null) ; // (null, graph.getPrefixMapping()) ;
-        // Write prologue.
+        //NodeToLabel.createBNodeByLabelEncoded() ;
         Sink<Triple> sink = new SinkTripleOutput(out, prologue, SyntaxLabels.createNodeToLabel()) ;
         Iterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
         Iter.sendToSink(iter, sink) ;

Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkQuadOutput.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkQuadOutput.java?rev=1162952&r1=1162951&r2=1162952&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkQuadOutput.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkQuadOutput.java Mon Aug 29 19:30:53 2011
@@ -9,7 +9,6 @@
 package org.openjena.riot.out;
 
 import java.io.OutputStream ;
-import java.nio.ByteBuffer ;
 import java.nio.charset.CharsetEncoder ;
 
 import org.openjena.atlas.io.BufferingWriter ;
@@ -28,6 +27,7 @@ public class SinkQuadOutput implements S
     private Prologue prologue = null ;
     private BufferingWriter out ;
     private NodeToLabel labelPolicy = null ;
+    private NodeFormatter nodeFmt = new NodeFormatterNT() ;
 
     public SinkQuadOutput(OutputStream outs)
     {
@@ -37,8 +37,7 @@ public class SinkQuadOutput implements S
     public SinkQuadOutput(OutputStream outs, Prologue prologue, NodeToLabel labels)
     {
         encoder = Chars.charsetUTF8.newEncoder() ;
-        Sink<ByteBuffer> dest = new BufferingWriter.SinkOutputStream(outs) ; 
-        out = new BufferingWriter(dest) ;
+        out = BufferingWriter.create(outs) ;
         setPrologue(prologue) ;
         setLabelPolicy(labels) ;
     }
@@ -60,11 +59,6 @@ public class SinkQuadOutput implements S
         out.flush() ;
     }
 
-    private Node lastS = null ;
-    private Node lastP = null ;
-    private Node lastO = null ;
-    private Node lastG = null ;
-    
     public void send(Quad quad)
     {
         Node s = quad.getSubject() ;
@@ -72,70 +66,19 @@ public class SinkQuadOutput implements S
         Node o = quad.getObject() ;
         Node g = quad.getGraph() ;
         
-//        if ( ! ( s.isURI() || s.isBlank() ) )
-//            throw new TurtleParseException("["+line+", "+col+"] : Error: Subject is not a URI or blank node") ;
-//        if ( ! p.isURI() )
-//            throw new TurtleParseException("["+line+", "+col+"] : Error: Predicate is not a URI") ;
-//        if ( ! ( o.isURI() || o.isBlank() || o.isLiteral() ) ) 
-//            throw new TurtleParseException("["+line+", "+col+"] : Error: Object is not a URI, blank node or literal") ;
-//        if ( ! g.isURI() ) 
-//            throw new TurtleParseException("["+line+", "+col+"] : Error: Graph is not a URI") ;
-      
-        if ( false )
-        {
-            // The compression of temrs 
-            if ( s.equals(lastS) )
-                out.output("*") ;
-            else
-                OutputLangUtils.output(out, s, prologue, labelPolicy) ;
-            
-            out.output(" ") ;
-            
-            if ( p.equals(lastP) )
-                out.output("*") ;
-            else
-                OutputLangUtils.output(out, p, prologue, labelPolicy) ;
-    
-            out.output(" ") ;
-    
-            if ( o.equals(lastO) )
-                out.output("*") ;
-            else
-                OutputLangUtils.output(out, o, prologue, labelPolicy) ;
-            
-            if ( outputGraphSlot(g) )
-            {
-                if ( g.equals(lastG) )
-                    out.output("*") ;
-                else
-                    OutputLangUtils.output(out, g, prologue, labelPolicy) ;
-            }
-            
-            out.output(" .") ;
-            out.output("\n") ;
-            
-            lastS = s ;
-            lastP = p ;
-            lastO = o ;
-            lastG = g ;
-            return ;
-        }
-
-        // N-triples.
-        OutputLangUtils.output(out, s, prologue, labelPolicy) ;
+        nodeFmt.format(out, s) ;
         out.output(" ") ;
-        OutputLangUtils.output(out, p, prologue, labelPolicy) ;
+        nodeFmt.format(out, p) ;
         out.output(" ") ;
-        OutputLangUtils.output(out, o, prologue, labelPolicy) ;
-
+        nodeFmt.format(out, o) ;
+        
         if ( outputGraphSlot(g) ) 
         {
             out.output(" ") ;
-            OutputLangUtils.output(out, g, prologue, labelPolicy) ;
+            nodeFmt.format(out, g) ;
         }
             
-        out.output(" .") ;
-        out.output("\n") ;
+        out.output(" .\n") ;
     }
     
     private static boolean outputGraphSlot(Node g)
@@ -148,6 +91,7 @@ public class SinkQuadOutput implements S
         flush();
     }
 }
+
 /*
  * (c) Copyright 2009 Hewlett-Packard Development Company, LP
  * (c) Copyright 2010 Talis Systems Ltd.

Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkTripleOutput.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkTripleOutput.java?rev=1162952&r1=1162951&r2=1162952&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkTripleOutput.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/out/SinkTripleOutput.java Mon Aug 29 19:30:53 2011
@@ -8,7 +8,6 @@
 package org.openjena.riot.out;
 
 import java.io.OutputStream ;
-import java.nio.ByteBuffer ;
 import java.nio.charset.CharsetEncoder ;
 
 import org.openjena.atlas.io.BufferingWriter ;
@@ -23,10 +22,13 @@ import com.hp.hpl.jena.graph.Triple ;
 /** A class that print triples, N-triples style */ 
 public class SinkTripleOutput implements Sink<Triple>
 {
+    // TODO ASCII version
     private CharsetEncoder encoder ;
     private Prologue prologue = null ;
     private BufferingWriter out ;
     private NodeToLabel labelPolicy = null ;
+    
+    private NodeFormatter nodeFmt = new NodeFormatterNT() ;
 
     public SinkTripleOutput(OutputStream outs)
     {
@@ -37,8 +39,7 @@ public class SinkTripleOutput implements
     {
         //encoder = Chars.charsetUTF8.newEncoder() ;
         encoder = Chars.charsetASCII.newEncoder() ;
-        Sink<ByteBuffer> dest = new BufferingWriter.SinkOutputStream(outs) ; 
-        out = new BufferingWriter(dest) ;
+        out = BufferingWriter.create(outs) ;
         setPrologue(prologue) ;
         setLabelPolicy(labels) ;
     }
@@ -64,17 +65,13 @@ public class SinkTripleOutput implements
         Node s = triple.getSubject() ;
         Node p = triple.getPredicate() ;
         Node o = triple.getObject() ;
-
-        // See SinkQuadOutput for "*" (for same as row before).
-        // N-triples.
-        OutputLangUtils.output(out, s, prologue, labelPolicy) ;
+        
+        nodeFmt.format(out, s) ;
         out.output(" ") ;
-        OutputLangUtils.output(out, p, prologue, labelPolicy) ;
+        nodeFmt.format(out, p) ;
         out.output(" ") ;
-        OutputLangUtils.output(out, o, prologue, labelPolicy) ;
-        out.output(" .") ;
-        out.output("\n") ;
-        out.flush();
+        nodeFmt.format(out, o) ;
+        out.output(" .\n") ;
     }
 
     public void close()

Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/system/SyntaxLabels.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/system/SyntaxLabels.java?rev=1162952&r1=1162951&r2=1162952&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/system/SyntaxLabels.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/riot/system/SyntaxLabels.java Mon Aug 29 19:30:53 2011
@@ -13,7 +13,7 @@ import org.openjena.riot.out.NodeToLabel
 public class SyntaxLabels
 {
     /** Default setup - scope by document, relabel BNodes ids to short forms */
-    static public NodeToLabel createNodeToLabel() { return  NodeToLabel.createScopeByDocument() ; }
+    static public NodeToLabel createNodeToLabel() { return NodeToLabel.createScopeByDocument() ; }
     static public LabelToNode createLabelToNode() { return LabelToNode.createScopeByDocument() ; }