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/03/09 13:32:03 UTC

svn commit: r1454694 [2/2] - in /jena/trunk: jena-arq/ jena-arq/src-examples/arq/examples/riot/ jena-arq/src-examples/arq/examples/update/ jena-arq/src/main/java/arq/ jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/binding/ jena-arq/src/main/java/...

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFormatterTTL.java Sat Mar  9 12:32:02 2013
@@ -18,71 +18,76 @@
 
 package org.apache.jena.riot.out;
 
-import java.io.IOException ;
-import java.io.Writer ;
 import java.net.MalformedURLException ;
 
-
-import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
-
-import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.io.AWriter ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIFactory ;
 import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.riot.system.PrefixMap;
-import org.apache.jena.riot.system.PrefixMapFactory;
+import org.apache.jena.riot.out.NodeToLabel ;
+import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
 import org.apache.jena.riot.system.RiotChars ;
 
+import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
+import com.hp.hpl.jena.graph.Node ;
+
 public class NodeFormatterTTL extends NodeFormatterNT
 {
-    private final NodeToLabel nodeToLabel = NodeToLabel.createBNodeByLabelEncoded() ;
+    private final NodeToLabel nodeToLabel ;
     private final PrefixMap prefixMap ;
     private final String baseIRI ; 
     
-   public NodeFormatterTTL(String baseIRI , PrefixMap prefixMap) //OutputPolicy outputPolicy)
+    // Replace with a single "OutputPolicy"
+    public NodeFormatterTTL(String baseIRI , PrefixMap prefixMap) //OutputPolicy outputPolicy)
+    {
+        this(baseIRI, prefixMap, NodeToLabel.createBNodeByLabelEncoded()) ;
+    }
+    
+   public NodeFormatterTTL(String baseIRI , PrefixMap prefixMap, NodeToLabel nodeToLabel)
    {
        super(false) ;
+       this.nodeToLabel = nodeToLabel ;
        if ( prefixMap == null )
-           prefixMap = PrefixMapFactory.createForOutput() ;
+           prefixMap = PrefixMapFactory.create() ;
        this.prefixMap = prefixMap ;
        this.baseIRI = baseIRI ;
    }
     
     @Override
-    public void formatURI(Writer w, String uriStr)
+    public void formatURI(AWriter w, String uriStr)
     {
-        try {
-            Pair<String, String> pName = prefixMap.abbrev(uriStr) ;
-            // Check if legal
-            if ( pName != null )
+        Pair<String, String> pName = prefixMap.abbrev(uriStr) ;
+        // Check if legal
+        if ( pName != null )
+        {
+            // Check legal - need to check legal, not for illegal.
+            String pref = pName.getLeft() ;
+            String ln = pName.getRight() ;
+            if ( safeForPrefix(pref) && safeForPrefixLocalname(ln) )
             {
-                // Check legal - need to check legal, not for illegal.
-                String pref = pName.getLeft() ;
-                String ln = pName.getRight() ;
-                if ( safeForPrefix(pref) && safeForPrefixLocalname(ln) )
-                {
-                    w.write(pName.getLeft()) ;
-                    w.write(':') ;
-                    w.write(pName.getRight()) ;
-                    return ;
-                }
+                w.print(pName.getLeft()) ;
+                w.print(':') ;
+                w.print(pName.getRight()) ;
+                return ;
             }
-        
-            // Attemp base abbreviation.
-            if ( baseIRI != null )
+        }
+
+        // Attempt base abbreviation.
+        if ( baseIRI != null )
+        {
+            String x = abbrevByBase(uriStr, baseIRI) ;
+            if ( x != null )
             {
-                String x = abbrevByBase(uriStr, baseIRI) ;
-                if ( x != null )
-                {
-                    w.write('<') ;
-                    w.write(x) ;
-                    w.write('>') ;
-                    return ;
-                }
+                w.print('<') ;
+                w.print(x) ;
+                w.print('>') ;
+                return ;
             }
-        } catch (IOException ex) { IO.exception(ex) ; }
-        
+        }
+
+        // else
         super.formatURI(w, uriStr) ;
     }
     
@@ -116,27 +121,23 @@ public class NodeFormatterTTL extends No
     }
 
 //    @Override
-//    public void formatVar(Writer w, String name)
+//    public void formatVar(WriterI w, String name)
 
 //    @Override
-//    public void formatBNode(Writer w, String label)
+//    public void formatBNode(WriterI w, String label)
+    
+    @Override
+    public void formatBNode(AWriter w, Node n)
+    {
+        String x = nodeToLabel.get(null, n) ;
+        w.print(x) ; 
+    }
 
 //    @Override
-//    public void formatLitString(Writer w, String lex)
+//    public void formatLitString(WriterI w, String lex)
 
 //    @Override
-//    public void formatLitLang(Writer w, String lex, String langTag)
-
-    /* PN_CHARS_BASE includes escapes. 
-     * 
-     *  PN_CHARS_BASE ::= [A-Z] | [a-z] | [#00C0-#00D6] | [#00D8-#00F6] | [#00F8-#02FF] | [#0370-#037D] | [#037F-#1FFF]
-     *                  | [#200C-#200D] | [#2070-#218F] | [#2C00-#2FEF] | [#3001-#D7FF] | [#F900-#FDCF] | [#FDF0-#FFFD] | [#10000-#EFFFF]
-     *                  | UCHAR
-     *  PN_CHARS_U    ::= PN_CHARS_BASE | "_"
-     *  PN_CHARS      ::= PN_CHARS_U | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
-     *  PN_PREFIX     ::= PN_CHARS_BASE ( ( PN_CHARS | "." )* PN_CHARS )?
-     *  PN_LOCAL      ::= ( PN_CHARS_U | [0-9] ) ( ( PN_CHARS | "." )* PN_CHARS )?
-     */
+//    public void formatLitLang(WriterI w, String lex, String langTag)
 
     /*private-testing*/ static boolean safeForPrefixLocalname(String str)
     {
@@ -150,29 +151,6 @@ public class NodeFormatterTTL extends No
         if ( idx == N ) return true ;
         idx = skip1_PN_CHARS(str, idx) ;
         return ( idx == N ) ;
-        
-//        int N = str.length();
-//        if ( N == 0 )
-//            return true ;
-//        // Test first and last.
-//        //char chFirst = str.charAt(0) ;
-//        int startIdx = 0 ;
-//        
-//        char chLast = str.charAt(N-1) ;
-//        if ( ! RiotChars.isA2ZN(chLast) &&
-//             chLast != '_' )
-//            return false ;
-//        int lastIdx = N-2 ;
-//        
-//        for ( int i = startIdx ; i <= lastIdx ; i++ )
-//        {
-//            char ch = str.charAt(i) ;
-//            if ( ! RiotChars.isA2ZN(ch) &&
-//                 ch != '_' &&
-//                 ch != '.' )
-//                return false ;
-//        }
-//        return true ;
     }
 
     private static boolean is_PN_CHARS_BASE(int ch)    { return RiotChars.isAlpha(ch) ; }
@@ -223,45 +201,44 @@ public class NodeFormatterTTL extends No
     private static final String dtBoolean   = XSDDatatype.XSDboolean.getURI() ;
 
     @Override
-    public void formatLitDT(Writer w, String lex, String datatypeURI)
+    public void formatLitDT(AWriter w, String lex, String datatypeURI)
     {
-        try {
-            if ( dtDecimal.equals(datatypeURI) )
+        if ( dtDecimal.equals(datatypeURI) )
+        {
+            if ( validDecimal(lex) )
             {
-                if ( validDecimal(lex) )
-                {
-                    w.write(lex) ;
-                    return ;
-                }
+                w.print(lex) ;
+                return ;
             }
-            else if ( dtInteger.equals(datatypeURI) )
+        }
+        else if ( dtInteger.equals(datatypeURI) )
+        {
+            if ( validInteger(lex) )
             {
-                if ( validInteger(lex) )
-                {
-                    w.write(lex) ;
-                    return ;
-                }
+                w.print(lex) ;
+                return ;
             }
-            if ( dtDouble.equals(datatypeURI) )
+        }
+        if ( dtDouble.equals(datatypeURI) )
+        {
+            if ( validDouble(lex) )
             {
-                if ( validDouble(lex) )
-                {
-                    w.write(lex) ;
-                    return ; 
-                }
+                w.print(lex) ;
+                return ; 
             }
-            // Boolean
-            if ( dtBoolean.equals(datatypeURI) )
+        }
+        // Boolean
+        if ( dtBoolean.equals(datatypeURI) )
+        {
+            // We leave "0" and "1" as-is assumign that if written like that, there was a reason.
+            if ( lex.equals("true") || lex.equals("false") )
             {
-                // We leave "0" and "1" as-is assumign that if written like that, there was a reason.
-                if ( lex.equals("true") || lex.equals("false") )
-                {
-                    w.write(lex) ;
-                    return ; 
-                }
+                w.print(lex) ;
+                return ; 
             }
-        } catch (IOException ex) { IO.exception(ex) ; } 
-
+        }
+        
+        // else.
         super.formatLitDT(w, lex, datatypeURI) ;
     }
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/RDFJSONWriter.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/RDFJSONWriter.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/RDFJSONWriter.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/RDFJSONWriter.java Sat Mar  9 12:32:02 2013
@@ -20,67 +20,25 @@ package org.apache.jena.riot.out;
 
 import java.io.OutputStream ;
 import java.io.Writer ;
-import java.util.HashMap ;
-import java.util.HashSet ;
-import java.util.Map ;
-import java.util.Set ;
 
-import org.apache.jena.atlas.lib.Pair ;
-import org.apache.jena.atlas.lib.Sink ;
-import org.apache.jena.riot.system.Prologue ;
-import org.apache.jena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
 
 import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.GraphUtil ;
-import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.graph.Triple ;
-import com.hp.hpl.jena.util.iterator.ExtendedIterator ;
 
 public class RDFJSONWriter {
 
-    public RDFJSONWriter() {}
+    //public RDFJSONWriter() {}
     
+    /** @deprecated 
+     * Use {@link RDFDataMgr#write(OutputStream, Graph, Lang)}
+     * with {@code Lang.RDFJSON}
+     */  
+    @Deprecated
 	public static void write (OutputStream out, Graph graph) {
-        Prologue prologue = Prologue.create(null, null) ; // (null, graph.getPrefixMapping()) ;
-		Sink<Pair<Node, Map<Node, Set<Node>>>> sink = new SinkEntityOutput(out, prologue, SyntaxLabels.createNodeToLabel()) ;
-		write ( sink, graph ) ;
+	    RDFDataMgr.write(out, graph, Lang.RDFJSON) ;
 	}
 	
 	public static void write (Writer out, Graph graph) {
-        Prologue prologue = Prologue.create(null, null) ; // (null, graph.getPrefixMapping()) ;
-		Sink<Pair<Node, Map<Node, Set<Node>>>> sink = new SinkEntityOutput(out, prologue, SyntaxLabels.createNodeToLabel()) ;
-		write ( sink, graph ) ;
 	}
-
-	private static void write (Sink<Pair<Node, Map<Node, Set<Node>>>> sink, Graph graph) {
-		ExtendedIterator<Node> subjects = GraphUtil.listSubjects(graph, Node.ANY, Node.ANY) ;
-		try {
-			Map<Node, Set<Node>> predicates = new HashMap<Node, Set<Node>>() ;
-			while ( subjects.hasNext() ) {
-				Node subject = subjects.next() ;
-				ExtendedIterator<Triple> triples = graph.find(subject, Node.ANY, Node.ANY) ;
-				try {
-					while ( triples.hasNext() ) {
-						Triple triple = triples.next() ;
-						Node p = triple.getPredicate() ;
-						if ( predicates.containsKey(p) ) {
-							predicates.get(p).add(triple.getObject()) ; 
-						} else {
-							Set<Node> objects = new HashSet<Node>() ;
-							objects.add(triple.getObject()) ;
-							predicates.put(p, objects) ;
-						}
-					}				
-				} finally {
-					if ( triples != null ) triples.close() ;
-				}
-				sink.send(new Pair<Node, Map<Node, Set<Node>>>(subject, predicates)) ;
-				predicates.clear() ;
-			}			
-		} finally {
-			if ( subjects != null ) subjects.close() ;
-			sink.close() ;
-		}
-	}
-	
 }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadOutput.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadOutput.java Sat Mar  9 12:32:02 2013
@@ -18,26 +18,32 @@
 
 package org.apache.jena.riot.out;
 
-import java.io.IOException ;
 import java.io.OutputStream ;
-import java.io.Writer ;
 
 import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.io.AWriter ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.system.Prologue ;
 import org.apache.jena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.writer.WriterStreamRDFTuples ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 
-/** A class that print quads, N-Quads style */ 
+/** A class that print quads, N-Quads style *  
+ * @see WriterStreamRDFTuples
+ * @see RDFDataMgr#writeTriples
+ */ 
 public class SinkQuadOutput implements Sink<Quad>
 {
     private Prologue prologue = null ;
-    private Writer out ;
+    private AWriter out ;
     private NodeToLabel labelPolicy = null ;
     private NodeFormatter nodeFmt = new NodeFormatterNT() ;
 
+    /** @deprecated Use {@linkplain RDFDataMgr#writeTriples} */ 
+    @Deprecated
     public SinkQuadOutput(OutputStream outs)
     {
         this(outs, null, SyntaxLabels.createNodeToLabel()) ;
@@ -45,7 +51,7 @@ public class SinkQuadOutput implements S
     
     public SinkQuadOutput(OutputStream outs, Prologue prologue, NodeToLabel labels)
     {
-        out = IO.asBufferedUTF8(outs) ;
+        out = IO.wrapUTF8(outs) ;
         setPrologue(prologue) ;
         setLabelPolicy(labels) ;
     }
@@ -64,26 +70,24 @@ public class SinkQuadOutput implements S
     @Override
     public void send(Quad quad)
     {
-        try {
-            Node s = quad.getSubject() ;
-            Node p = quad.getPredicate() ;
-            Node o = quad.getObject() ;
-            Node g = quad.getGraph() ;
-
-            nodeFmt.format(out, s) ;
-            out.write(" ") ;
-            nodeFmt.format(out, p) ;
-            out.write(" ") ;
-            nodeFmt.format(out, o) ;
-
-            if ( outputGraphSlot(g) ) 
-            {
-                out.write(" ") ;
-                nodeFmt.format(out, g) ;
-            }
+        Node s = quad.getSubject() ;
+        Node p = quad.getPredicate() ;
+        Node o = quad.getObject() ;
+        Node g = quad.getGraph() ;
+
+        nodeFmt.format(out, s) ;
+        out.print(" ") ;
+        nodeFmt.format(out, p) ;
+        out.print(" ") ;
+        nodeFmt.format(out, o) ;
+
+        if ( outputGraphSlot(g) ) 
+        {
+            out.print(" ") ;
+            nodeFmt.format(out, g) ;
+        }
 
-            out.write(" .\n") ;
-        } catch (IOException ex) { IO.exception(ex) ; }
+        out.print(" .\n") ;
     }
     
     private static boolean outputGraphSlot(Node g)
@@ -94,7 +98,7 @@ public class SinkQuadOutput implements S
     @Override
     public void flush()
     {
-        try { out.flush() ; } catch (IOException ex) { IO.exception(ex) ; }
+        IO.flush(out) ;
     }
 
     @Override

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkTripleOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkTripleOutput.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkTripleOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/out/SinkTripleOutput.java Sat Mar  9 12:32:02 2013
@@ -18,29 +18,36 @@
 
 package org.apache.jena.riot.out;
 
-import java.io.IOException ;
 import java.io.OutputStream ;
-import java.io.Writer ;
-import java.nio.charset.CharsetEncoder ;
 
 import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.io.AWriter ;
 import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.system.Prologue ;
 import org.apache.jena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.writer.WriterStreamRDFTuples ;
 
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 
-/** A class that print triples, N-triples style */ 
+/** A class that print triples, N-triples style
+ *  
+ * @see WriterStreamRDFTuples
+ * @see RDFDataMgr#writeTriples
+ */ 
 public class SinkTripleOutput implements Sink<Triple>
 {
-    private CharsetEncoder encoder ;
+    // WriterStreamRDFTuples
+    
     private Prologue prologue = null ;
-    private Writer out ;
+    private final AWriter out ;
     private NodeToLabel labelPolicy = null ;
     
     private NodeFormatter nodeFmt = new NodeFormatterNT() ;
 
+    /** @deprecated Use {@linkplain RDFDataMgr#writeTriples} */ 
+    @Deprecated
     public SinkTripleOutput(OutputStream outs)
     {
         this(outs, null, SyntaxLabels.createNodeToLabel()) ;
@@ -48,7 +55,7 @@ public class SinkTripleOutput implements
     
     public SinkTripleOutput(OutputStream outs, Prologue prologue, NodeToLabel labels)
     {
-        out = IO.asBufferedUTF8(outs) ;
+        out = IO.wrapUTF8(outs) ;
         setPrologue(prologue) ;
         setLabelPolicy(labels) ;
     }
@@ -67,18 +74,16 @@ public class SinkTripleOutput implements
     @Override
     public void send(Triple triple)
     {
-        try {
             Node s = triple.getSubject() ;
             Node p = triple.getPredicate() ;
             Node o = triple.getObject() ;
 
             nodeFmt.format(out, s) ;
-            out.write(" ") ;
+            out.print(" ") ;
             nodeFmt.format(out, p) ;
-            out.write(" ") ;
+            out.print(" ") ;
             nodeFmt.format(out, o) ;
-            out.write(" .\n") ;
-        } catch (IOException ex) { IO.exception(ex) ; }
+            out.print(" .\n") ;
     }
 
     @Override

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InfFactory.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InfFactory.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InfFactory.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InfFactory.java Sat Mar  9 12:32:02 2013
@@ -18,33 +18,20 @@
 
 package org.apache.jena.riot.process.inf;
 
-import org.apache.jena.atlas.lib.Sink ;
+import org.apache.jena.riot.system.StreamRDF ;
 
-import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.rdf.model.Model ;
-import com.hp.hpl.jena.sparql.core.Quad ;
 
 public class InfFactory
 {
-    public static Sink<Triple> infTriples(Sink<Triple> sink, Model vocab)
+    public static StreamRDF inf(StreamRDF data, Model vocab)
     {
         InferenceSetupRDFS setup =  new InferenceSetupRDFS(vocab) ;
-        return new InferenceProcessorTriples(sink, setup) ; 
+        return new InferenceProcessorStreamRDF(data, setup) ; 
     }
     
-    public static Sink<Quad> infQuads(Sink<Quad> sink, Model vocab)
+    public static StreamRDF inf(StreamRDF data, InferenceSetupRDFS setup)
     {
-        InferenceSetupRDFS setup =  new InferenceSetupRDFS(vocab) ;
-        return new InferenceProcessorQuads(sink, setup) ; 
-    }
-
-    public static Sink<Triple> infTriples(Sink<Triple> sink, InferenceSetupRDFS setup)
-    {
-        return new InferenceProcessorTriples(sink, setup) ; 
-    }
-    
-    public static Sink<Quad> infQuads(Sink<Quad> sink, InferenceSetupRDFS setup)
-    {
-        return new InferenceProcessorQuads(sink, setup) ; 
+        return new InferenceProcessorStreamRDF(data, setup) ; 
     }
 }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InferenceProcessorRDFS.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InferenceProcessorRDFS.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InferenceProcessorRDFS.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/process/inf/InferenceProcessorRDFS.java Sat Mar  9 12:32:02 2013
@@ -37,7 +37,6 @@ import com.hp.hpl.jena.vocabulary.RDF ;
  *  Usage: call process(Node, Node, Node), outputs to derive(Node, Node, Node).
  */
 
-
 abstract class InferenceProcessorRDFS
 {
     // Calculates hierarchies (subclass, subproperty) from a model.

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java Sat Mar  9 12:32:02 2013
@@ -45,6 +45,8 @@ public class StreamManager
     
     private static StreamManager globalStreamManager ;
     
+    public StreamManager() {}
+    
     /** Return a default configuration StreamManager 
      *  with a {@link LocatorFile}, 
      *  {@link LocatorURL},

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java Sat Mar  9 12:32:02 2013
@@ -22,23 +22,44 @@ import static org.apache.jena.riot.RDFLa
 import static org.apache.jena.riot.RDFLanguages.NTRIPLES ;
 import static org.apache.jena.riot.RDFLanguages.RDFJSON ;
 import static org.apache.jena.riot.RDFLanguages.sameLang ;
+import static org.apache.jena.riot.writer.WriterConst.PREFIX_IRI ;
+import static org.apache.jena.riot.writer.WriterConst.RDF_type ;
+import static org.apache.jena.riot.writer.WriterConst.rdfNS ;
+
+import java.io.OutputStream ;
+import java.io.Writer ;
+import java.util.ArrayList ;
+import java.util.Collection ;
+import java.util.List ;
+import java.util.Map ;
+
+import org.apache.jena.atlas.io.IndentedWriter ;
+import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFLanguages ;
+import org.apache.jena.riot.WriterDatasetRIOT ;
 import org.apache.jena.riot.tokens.Token ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
+import org.apache.jena.riot.writer.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.query.ARQ ;
 import com.hp.hpl.jena.rdf.model.AnonId ;
 import com.hp.hpl.jena.sparql.ARQConstants ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
+import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.util.iterator.ExtendedIterator ;
 
 /** Misc RIOT code */
 public class RiotLib
 {
-    final static String bNodeLabelStart = "_:" ;
-    final static boolean skolomizedBNodes = ARQ.isTrue(ARQ.constantBNodeLabels) ;
+    private final static String bNodeLabelStart = "_:" ;
+    private final static boolean skolomizedBNodes = ARQ.isTrue(ARQ.constantBNodeLabels) ;
     
     /** Implement <_:....> as a 2bNode IRI"
      * that is, use the given label as the BNode internal label.
@@ -62,7 +83,7 @@ public class RiotLib
         return skolomizedBNodes && iri.startsWith(bNodeLabelStart) ;
     }
     
-    static ParserProfile profile = profile(RDFLanguages.TURTLE, null, null) ;
+    private static ParserProfile profile = profile(RDFLanguages.TURTLE, null, null) ;
     static {
         PrefixMap pmap = profile.getPrologue().getPrefixMap() ;
         pmap.add("rdf",  ARQConstants.rdfPrefix) ;
@@ -115,4 +136,173 @@ public class RiotLib
         else
             return new ParserProfileBase(prologue, handler) ;
     }
+
+    public static Collection<Triple> triplesOfSubject(Graph graph, Node subj)
+    {
+        return triples(graph, subj, Node.ANY, Node.ANY) ;
+    }
+
+    /* Get all the triples for the graph.find */
+    public static List<Triple> triples(Graph graph, Node s, Node p, Node o)
+    {
+        List<Triple> acc =  new ArrayList<Triple>() ;
+        accTriples(acc, graph, s, p, o) ;
+        return acc ;
+    }
+
+    /* Get all the triples for the graph.find */
+    public static long countTriples(Graph graph, Node s, Node p, Node o)
+    {
+        ExtendedIterator<Triple> iter = graph.find(s, p, o) ;
+        try { return Iter.count(iter) ; }
+        finally { iter.close() ; }
+    }
+
+    public static void accTriples(Collection<Triple> acc, Graph graph, Node s, Node p, Node o)
+    {
+        ExtendedIterator<Triple> iter = graph.find(s, p, o) ;
+        for ( ; iter.hasNext() ; )
+            acc.add(iter.next()) ;
+        iter.close() ;
+    }
+
+    /* Get a triple or null. */
+    public static Triple triple1(Graph graph, Node s, Node p, Node o)
+    {
+        ExtendedIterator<Triple> iter = graph.find(s, p, o) ;
+        try {
+            if ( ! iter.hasNext() )
+                return null ;
+            Triple t = iter.next() ;
+            if (  iter.hasNext() )
+                return null ;
+            return t ;
+        } finally { iter.close() ; }
+    }
+
+    public static boolean strSafeFor(String str, char ch) { return str.indexOf(ch) == -1 ; }
+
+    public static void writeBase(IndentedWriter out, String base)
+    {
+        if ( base != null )
+        {
+            out.print("@base ") ;
+            out.pad(PREFIX_IRI) ;
+            out.print("<") ;
+            out.print(base) ;
+            out.print(">") ;
+            out.print(" .") ;
+            out.println() ;
+        }
+    }
+
+    public static void writePrefixes(IndentedWriter out, PrefixMap prefixMap)
+    {        
+        if ( prefixMap != null && ! prefixMap.isEmpty() )
+        {
+            for ( Map.Entry <String, String> e : prefixMap.getMappingCopyStr().entrySet() )
+            {
+                out.print("@prefix ") ;
+                out.print(e.getKey()) ;
+                out.print(": ") ;
+                out.pad(PREFIX_IRI) ;
+                out.print("<") ;
+                out.print(e.getValue()) ;
+                out.print(">") ;
+                out.print(" .") ;
+                out.println() ;
+            }
+        }
+    }
+
+    /** Returns dataset that wraps a graph */
+    public static DatasetGraph dataset(Graph graph)
+    {
+        return DatasetGraphFactory.createOneGraph(graph) ;
+    }
+
+    public static PrefixMap prefixMap(DatasetGraph dsg)
+    {
+        return PrefixMapFactory.create(dsg.getDefaultGraph().getPrefixMapping()) ;
+    }
+
+    private static int calcWidth(PrefixMap prefixMap, String baseURI, Node p)
+    {
+        if ( ! prefixMap.contains(rdfNS) && RDF_type.equals(p) )
+            return 1 ;
+        
+        String x = prefixMap.abbreviate(p.getURI()) ;
+        if ( x == null )
+            return p.getURI().length()+2 ;
+        return x.length() ;
+    }
+
+    public static int calcWidth(PrefixMap prefixMap, String baseURI, Collection<Node> nodes, int minWidth, int maxWidth)
+    {
+        Node prev = null ; 
+        int nodeMaxWidth = minWidth ;
+        
+        for ( Node n : nodes )
+        {
+            if ( prev != null && prev.equals(n) )
+                continue ;
+            int len = calcWidth(prefixMap, baseURI, n) ;
+            if ( len > maxWidth )
+                continue ;
+            if ( nodeMaxWidth < len )
+                nodeMaxWidth = len ;
+            prev = n ;
+        }
+        return nodeMaxWidth ; 
+    }
+
+    public static int calcWidthTriples(PrefixMap prefixMap, String baseURI, Collection<Triple> triples, int minWidth, int maxWidth)
+    {
+        Node prev = null ; 
+        int nodeMaxWidth = minWidth ;
+    
+        for ( Triple triple : triples )
+        {
+            Node n = triple.getPredicate() ;
+            if ( prev != null && prev.equals(n) )
+                continue ;
+            int len = calcWidth(prefixMap, baseURI, n) ;
+            if ( len > maxWidth )
+                continue ;
+            if ( nodeMaxWidth < len )
+                nodeMaxWidth = len ;
+            prev = n ;
+        }
+        return nodeMaxWidth ;
+    }
+
+    public static IndentedWriter create(Writer writer)  { return new IndentedWriterWriter(writer) ; }
+
+    public static PrefixMap prefixMap(Graph graph)      { return PrefixMapFactory.create(graph.getPrefixMapping()) ; }
+
+    public static WriterGraphRIOTBase adapter(WriterDatasetRIOT writer)
+    { return new WriterAdapter(writer) ; }
+
+    private static class IndentedWriterWriter extends IndentedWriter
+    {
+        IndentedWriterWriter(Writer w) { super(w) ; }
+    }
+
+    private static class WriterAdapter extends WriterGraphRIOTBase
+    {
+        private WriterDatasetRIOT writer ;
+    
+        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, Context context)
+        { writer.write(out, RiotLib.dataset(graph), prefixMap, baseURI, context) ; }
+        
+        @Override
+        public void write(Writer out, Graph graph, PrefixMap prefixMap, String baseURI, Context context)
+        { writer.write(out, RiotLib.dataset(graph), prefixMap, baseURI, context) ; }
+    }
 }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFLib.java Sat Mar  9 12:32:02 2013
@@ -18,15 +18,21 @@
 
 package org.apache.jena.riot.system;
 
+import java.io.OutputStream ;
+import java.io.Writer ;
 import java.util.Iterator ;
 
+import org.apache.jena.atlas.io.AWriter ;
+import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.atlas.lib.Tuple ;
-import org.apache.jena.riot.lang.RDFParserOutputCounting ;
+import org.apache.jena.riot.lang.StreamRDFCounting ;
+import org.apache.jena.riot.writer.WriterStreamRDFTuples ;
 
 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.shared.PrefixMapping ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 
@@ -36,11 +42,15 @@ public class StreamRDFLib
     /** Send everything to nowhere ... efficiently */
     public static StreamRDF sinkNull()                       { return new StreamRDFBase() ; }
 
+    public static StreamRDF writer(OutputStream out)         { return new WriterStreamRDFTuples(IO.wrapUTF8(out)) ; }
+    public static StreamRDF writer(AWriter out)              { return new WriterStreamRDFTuples(out) ; }
+    public static StreamRDF writer(Writer out)               { return new WriterStreamRDFTuples(IO.wrap(out)) ; }
+
     public static StreamRDF graph(Graph graph)               { return new ParserOutputGraph(graph) ; }
     
     public static StreamRDF dataset(DatasetGraph dataset)    { return new ParserOutputDataset(dataset) ; }
     
-    /** Set triples to a StreamRDF - does not all .start/.finish */ 
+    /** Set triples to a StreamRDF - does not call .start/.finish */ 
     public static void triplesToStream(StreamRDF dest, Iterator<Triple> iter)
     {
         for ( ; iter.hasNext() ; )
@@ -50,7 +60,7 @@ public class StreamRDFLib
         }
     }
 
-    /** Set quads to a StreamRDF - does not all .start/.finish */ 
+    /** Set quads to a StreamRDF - does not call .start/.finish */ 
     public static void quadsToStream(StreamRDF dest, Iterator<Quad> iter)
     {
         for ( ; iter.hasNext() ; )
@@ -59,7 +69,6 @@ public class StreamRDFLib
             dest.quad(q) ;
         }
     }
-
     
     /** 
      * Output to a sink; prefix and base handled only within the parser.
@@ -83,11 +92,11 @@ public class StreamRDFLib
     public static StreamRDF extendTriplesToQuads(Node graphNode, StreamRDF base)
     { return new ParserOutputSinkTriplesToQuads(graphNode, base) ; }
     
-    public static RDFParserOutputCounting count()
-    { return new ParserOutputCountingBase(sinkNull()) ; }
+    public static StreamRDFCounting count()
+    { return new StreamRDFCountingBase(sinkNull()) ; }
 
-    public static RDFParserOutputCounting count(StreamRDF other)
-    { return new ParserOutputCountingBase(other) ; }
+    public static StreamRDFCounting count(StreamRDF other)
+    { return new StreamRDFCountingBase(other) ; }
 
     private static class ParserOutputSinkTriplesToQuads extends StreamRDFWrapper
     {
@@ -167,7 +176,14 @@ public class StreamRDFLib
     private static class ParserOutputDataset extends StreamRDFBase
     {
         protected final DatasetGraph dsg ;
-        public ParserOutputDataset(DatasetGraph dsg) { this.dsg = dsg ; }
+        protected final PrefixMapping prefixMapping ;
+        
+        public ParserOutputDataset(DatasetGraph dsg)
+        { 
+            this.dsg = dsg ;
+            this.prefixMapping = dsg.getDefaultGraph().getPrefixMapping() ;
+            // = dsg.getPrefixMapping().setNsPrefix(prefix, uri) ;
+        }
         
         @Override public void triple(Triple triple) 
         {
@@ -188,11 +204,11 @@ public class StreamRDFLib
 
         @Override public void prefix(String prefix, String uri)
         {
-            //dsg.getPrefixMapping().setNsPrefix(prefix, uri) ;
+            prefixMapping.setNsPrefix(prefix, uri) ;
         }
     }
 
-    private  static class ParserOutputCountingBase extends StreamRDFWrapper implements StreamRDF, RDFParserOutputCounting
+    private  static class StreamRDFCountingBase extends StreamRDFWrapper implements StreamRDF, StreamRDFCounting
     {
         private long countTriples = 0 ;
         private long countQuads = 0 ;
@@ -200,7 +216,7 @@ public class StreamRDFLib
         private long countBase = 0 ;
         private long countPrefixes = 0 ;
         
-        public ParserOutputCountingBase (StreamRDF other)     { super(other) ; }
+        public StreamRDFCountingBase (StreamRDF other)     { super(other) ; }
 
         @Override
         public void triple(Triple triple)

Modified: jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java (original)
+++ jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java Sat Mar  9 12:32:02 2013
@@ -27,16 +27,12 @@ import java.util.Map ;
 import java.util.Properties ;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.lib.Sink ;
-import org.apache.jena.atlas.lib.SinkCounting ;
-import org.apache.jena.atlas.lib.SinkNull ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.riot.* ;
 import org.apache.jena.riot.lang.LabelToNode ;
 import org.apache.jena.riot.lang.LangRIOT ;
+import org.apache.jena.riot.lang.StreamRDFCounting ;
 import org.apache.jena.riot.out.NodeToLabel ;
-import org.apache.jena.riot.out.SinkQuadOutput ;
-import org.apache.jena.riot.out.SinkTripleOutput ;
 import org.apache.jena.riot.process.inf.InfFactory ;
 import org.apache.jena.riot.process.inf.InferenceSetupRDFS ;
 import org.apache.jena.riot.system.* ;
@@ -47,9 +43,7 @@ import arq.cmd.CmdException ;
 import arq.cmdline.* ;
 
 import com.hp.hpl.jena.Jena ;
-import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.query.ARQ ;
-import com.hp.hpl.jena.sparql.core.Quad ;
 
 /** Common framework for running RIOT parsers */
 public abstract class CmdLangParse extends CmdGeneral
@@ -271,44 +265,20 @@ public abstract class CmdLangParse exten
         // Also, as URI.
         final boolean labelsAsGiven = false ;
         
-        SinkCounting<?> sink ;
-        LangRIOT parser ;
-        
         NodeToLabel labels = SyntaxLabels.createNodeToLabel() ;
         if ( labelsAsGiven )
             labels = NodeToLabel.createBNodeByLabelEncoded() ;
         
-        // Uglyness because quads and triples aren't subtype of some Tuple<Node>
-        // Replace with StreamRDF all the way through.
-        
-        if ( RDFLanguages.isTriples(lang) )
-        {
-            Sink<Triple> s = SinkNull.create() ;
-            if ( ! modLangParse.toBitBucket() )
-                s = new SinkTripleOutput(output, null, labels) ;
-            if ( setup != null )
-                s = InfFactory.infTriples(s, setup) ;
-            
-            SinkCounting<Triple> sink2 = new SinkCounting<Triple>(s) ;
-            StreamRDF dest = StreamRDFLib.sinkTriples(sink2) ;
-            parser = RiotReader.createParser(in, lang, baseURI, dest) ;
-            
-            sink = sink2 ;
-        }
-        else
-        {
-            Sink <Quad> s = SinkNull.create() ;
-            if ( ! modLangParse.toBitBucket() )
-                s = new SinkQuadOutput(output, null, labels) ;
-            if ( setup != null )
-                s = InfFactory.infQuads(s, setup) ;
-            
-            SinkCounting<Quad> sink2 = new SinkCounting<Quad>(s) ;
-            StreamRDF dest = StreamRDFLib.sinkQuads(sink2) ;
-            parser = RiotReader.createParser(in, lang, baseURI, dest) ;
-            sink = sink2 ;
-        }
+        StreamRDF s = StreamRDFLib.sinkNull() ;
+        if ( ! modLangParse.toBitBucket() )
+            s = StreamRDFLib.writer(output) ;
+        if ( setup != null )
+            s = InfFactory.inf(s, setup) ;
+        StreamRDFCounting sink = StreamRDFLib.count(s) ;
+        s = null ;
         
+        // Need low level control over the parser.
+        LangRIOT parser = RiotReader.createParser(in, lang, baseURI, sink) ;
         try
         {
             if ( checking )
@@ -323,7 +293,6 @@ public abstract class CmdLangParse exten
             
             if ( labelsAsGiven )
                 parser.getProfile().setLabelToNode(LabelToNode.createUseLabelAsGiven()) ;
-            
             modTime.startTimer() ;
             parser.parse() ;
         }
@@ -336,12 +305,12 @@ public abstract class CmdLangParse exten
                 return ;
         }
         finally {
-            IO.close(in) ;
             // Not close - we may write again to the underlying output stream in another call to parse a file.  
-            sink.flush() ;
+            sink.finish() ;
+            IO.close(in) ;
         }
         long x = modTime.endTimer() ;
-        long n = sink.getCount() ;
+        long n = sink.countTriples()+sink.countQuads() ;
 
         if ( modTime.timingEnabled() )
             output(filename, n, x, handler) ;

Modified: jena/trunk/jena-arq/src/main/java/riotcmd/infer.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/riotcmd/infer.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/riotcmd/infer.java (original)
+++ jena/trunk/jena-arq/src/main/java/riotcmd/infer.java Sat Mar  9 12:32:02 2013
@@ -18,17 +18,12 @@
 
 package riotcmd;
 
-import java.io.InputStream ;
 import java.util.List ;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.lib.IRILib ;
-import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.RiotReader ;
-import org.apache.jena.riot.lang.LangRIOT ;
-import org.apache.jena.riot.out.SinkQuadOutput ;
 import org.apache.jena.riot.process.inf.InfFactory ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
@@ -37,7 +32,6 @@ import arq.cmdline.ArgDecl ;
 import arq.cmdline.CmdGeneral ;
 
 import com.hp.hpl.jena.rdf.model.Model ;
-import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.util.FileManager ;
 
 /*
@@ -130,8 +124,8 @@ public class infer extends CmdGeneral
     @Override
     protected void exec()
     {
-        Sink<Quad> sink = new SinkQuadOutput(System.out) ;
-        sink = InfFactory.infQuads(sink, vocab) ;
+        StreamRDF sink = StreamRDFLib.writer(System.out) ;
+        sink = InfFactory.inf(sink, vocab) ;
         
         List<String> files = getPositionalOrStdin() ;
         if ( files.isEmpty() )
@@ -142,26 +136,14 @@ public class infer extends CmdGeneral
         IO.flush(System.out); 
     }
 
-    private void processFile(String filename, Sink<Quad> qsink)
+    private void processFile(String filename, StreamRDF sink)
     {
         Lang lang = filename.equals("-") ? RDFLanguages.NQUADS : RDFLanguages.filenameToLang(filename, RDFLanguages.NQUADS) ;
-        String baseURI = IRILib.filenameToIRI(filename) ;
-        StreamRDF sink = StreamRDFLib.sinkQuads(qsink) ;
-        
-        if ( RDFLanguages.isTriples(lang) )
-        {
-            InputStream in = IO.openFile(filename) ;
-            sink = StreamRDFLib.extendTriplesToQuads(sink) ;
-            LangRIOT parser = RiotReader.createParser(in, lang, baseURI, sink) ;
-            parser.parse() ;
-            return ;
-        }
+
+        if ( filename.equals("-") )
+            RDFDataMgr.parse(sink, System.in, null, RDFLanguages.NQUADS, null) ;
         else
-        {
-            InputStream in = IO.openFile(filename) ;
-            LangRIOT parser = RiotReader.createParser(in, lang, baseURI, sink) ; 
-            parser.parse() ;
-        }        
+            RDFDataMgr.parse(sink, filename) ;
     }
 
     @Override

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java Sat Mar  9 12:32:02 2013
@@ -25,23 +25,21 @@ import org.apache.jena.riot.process.TS_P
 import org.apache.jena.riot.stream.TS_IO2 ;
 import org.apache.jena.riot.system.TS_RiotSystem ;
 import org.apache.jena.riot.web.TS_RiotWeb ;
+import org.apache.jena.riot.writer.TS_RiotWriter ;
 import org.junit.BeforeClass ;
 import org.junit.runner.RunWith ;
 import org.junit.runners.Suite ;
 
 @RunWith(Suite.class)
 @Suite.SuiteClasses( {
-    // Old world - org.openjena.riot
     TS_Out.class
-
-    // New world - org.apache.jena.riot
     , TS_Lang.class
     , TS_LangSuite.class
     , TS_ReaderRIOT.class
     , TS_IO2.class
     , TS_RIOTAdapters.class
     , TS_Process.class
-    //, TS_RiotMisc.class
+    , TS_RiotWriter.class
     , TS_RiotSystem.class
     , TS_RiotWeb.class
 })

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TS_Lang.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TS_Lang.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TS_Lang.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TS_Lang.java Sat Mar  9 12:32:02 2013
@@ -29,7 +29,6 @@ import org.junit.runners.Suite ;
      TestIRI.class
     , TestLang.class
     , TestNodeAllocator.class
-    
     , TestTurtleTerms.class
     , TestLangNTriples.class
     , TestLangNQuads.class
@@ -37,7 +36,6 @@ import org.junit.runners.Suite ;
     , TestLangTrig.class
     , TestLangRdfJson.class
     , TestParserFactory.class
-
     , TestPipedRDFIterators.class
 })
 

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNQuads.java Sat Mar  9 12:32:02 2013
@@ -21,7 +21,7 @@ package org.apache.jena.riot.lang;
 import org.apache.jena.riot.RiotReader ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ExFatal ;
 import org.apache.jena.riot.lang.LangRIOT ;
-import org.apache.jena.riot.lang.RDFParserOutputCounting ;
+import org.apache.jena.riot.lang.StreamRDFCounting ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
@@ -75,7 +75,7 @@ public class TestLangNQuads extends Test
     @Override
     protected long parseCount(String... strings)
     {
-        RDFParserOutputCounting sink = StreamRDFLib.count() ;
+        StreamRDFCounting sink = StreamRDFLib.count() ;
         parse(sink, strings) ;
         return sink.count() ;
     }

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java Sat Mar  9 12:32:02 2013
@@ -95,7 +95,7 @@ public class TestLangNTriples extends Te
     {
         String string = StrUtils.strjoin("\n", strings) ;
         Tokenizer tokenizer = tokenizer(string) ;
-        RDFParserOutputCounting sink = StreamRDFLib.count() ;
+        StreamRDFCounting sink = StreamRDFLib.count() ;
         LangNTriples x = RiotReader.createParserNTriples(tokenizer, sink) ;
         x.getProfile().setHandler(new ErrorHandlerEx()) ;
         x.parse() ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTuples.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTuples.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTuples.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTuples.java Sat Mar  9 12:32:02 2013
@@ -29,7 +29,7 @@ import org.apache.jena.riot.ErrorHandler
 import org.apache.jena.riot.ErrorHandlerTestLib.ExFatal ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ExWarning ;
 import org.apache.jena.riot.lang.LangRIOT ;
-import org.apache.jena.riot.lang.RDFParserOutputCounting ;
+import org.apache.jena.riot.lang.StreamRDFCounting ;
 import org.apache.jena.riot.system.RiotLib ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
@@ -182,7 +182,7 @@ abstract public class TestLangNTuples ex
     {
         String string = StrUtils.strjoin("\n", strings) ;
         Tokenizer tokenizer = tokenizer(string) ;
-        RDFParserOutputCounting sink = StreamRDFLib.count() ;
+        StreamRDFCounting sink = StreamRDFLib.count() ;
         LangRIOT x = RiotReader.createParserNQuads(tokenizer, sink) ;
         x.setProfile(RiotLib.profile(null, false, true, new ErrorHandlerEx())) ;
         x.parse() ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangRdfJson.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangRdfJson.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangRdfJson.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangRdfJson.java Sat Mar  9 12:32:02 2013
@@ -25,15 +25,12 @@ import org.apache.jena.atlas.io.PeekRead
 import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.StrUtils ;
-import org.apache.jena.riot.* ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ErrorHandlerEx ;
 import org.apache.jena.riot.ErrorHandlerTestLib.ExFatal ;
-import org.apache.jena.riot.lang.LangRDFJSON ;
-import org.apache.jena.riot.lang.RDFParserOutputCounting ;
+import org.apache.jena.riot.* ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.junit.AfterClass ;
 import org.junit.BeforeClass ;
 import org.junit.Test ;
 
@@ -45,14 +42,12 @@ public class TestLangRdfJson extends Bas
 	@BeforeClass
 	public static void setup()
 	{
-		IO_Jena.wireIntoJena();
+	    RIOT.init();
 	}
 	
-	@AfterClass
-	public static void teardown()
-	{
-	    IO_Jena.resetJenaReaders();
-	}
+//	@AfterClass
+//	public static void teardown()
+//	{ }
 	
 	@Test
 	public void rdfjson_get_jena_reader()
@@ -501,14 +496,14 @@ public class TestLangRdfJson extends Bas
 		byte b[] = StrUtils.asUTF8bytes("") ;
 		ByteArrayInputStream in = new ByteArrayInputStream(b);
 		Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(in) ;
-        RDFParserOutputCounting sink = StreamRDFLib.count() ;
+        StreamRDFCounting sink = StreamRDFLib.count() ;
 		LangRDFJSON parser = RiotReader.createParserRdfJson(tokenizer, sink) ;
 	}
 
     private long parseCount(String string)
     {
         Tokenizer tokenizer = tokenizer(string) ;
-        RDFParserOutputCounting sink = StreamRDFLib.count() ;
+        StreamRDFCounting sink = StreamRDFLib.count() ;
         LangRDFJSON x = RiotReader.createParserRdfJson(tokenizer, sink) ;
         x.getProfile().setHandler(new ErrorHandlerEx()) ;
         x.parse() ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TS_Out.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TS_Out.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TS_Out.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TS_Out.java Sat Mar  9 12:32:02 2013
@@ -27,8 +27,6 @@ import org.junit.runners.Suite ;
       TestNodeFmt.class
     , TestNodeFmtLib.class
     , TestOutput.class
-    , TestOutputNTriples.class
-    , TestOutputRDFJSON.class
 })
 
 public class TS_Out

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmt.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmt.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmt.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmt.java Sat Mar  9 12:32:02 2013
@@ -18,8 +18,7 @@
 
 package org.apache.jena.riot.out;
 
-import java.io.StringWriter ;
-
+import org.apache.jena.atlas.io.StringWriterI ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.PrefixMapFactory ;
@@ -53,7 +52,7 @@ public class TestNodeFmt extends BaseTes
 
     public static void test(NodeFormatter nodeFormatter, Node n , String str)
     {
-        StringWriter sw = new StringWriter() ;
+        StringWriterI sw = new StringWriterI() ;
         nodeFormatter.format(sw, n) ;
         String str2 = sw.toString() ;
         assertEquals(str, str2) ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java Sat Mar  9 12:32:02 2013
@@ -38,75 +38,100 @@ public class TestStreamManager extends B
     private static final String directory = "testing/RIOT/StreamManager" ;
     private static final String absDirectory = new File(directory).getAbsolutePath() ;
 
-    private static Context context = new Context() ;
     
-    private static StreamManager streamMgr ;
+    
+    private static StreamManager streamMgrDir ;
+    private static StreamManager streamMgrHere ;
+    private static StreamManager streamMgrNull ;
     private static StreamManager streamMgrStd ;
-    private static Object streamManagerContextValue ;
     
     @BeforeClass static public void beforeClass()
     { 
         streamMgrStd = StreamManager.get() ;
-        streamMgr = new StreamManager() ;
-        streamMgr.addLocator(new LocatorFile()) ;
-        streamMgr.addLocator(new LocatorFile(directory)) ;
-        streamMgr.addLocator(new LocatorURL()) ;
+        streamMgrDir = new StreamManager() ;
+        // Not current directory.
+        streamMgrDir.addLocator(new LocatorFile(directory)) ;
+        streamMgrDir.addLocator(new LocatorURL()) ;
         
-        streamManagerContextValue = context.get(RDFDataMgr.streamManagerSymbol) ;
-        context.put(RDFDataMgr.streamManagerSymbol, streamMgr) ;
+        streamMgrHere = new StreamManager() ;
+        // Not current directory.
+        streamMgrHere.addLocator(new LocatorFile()) ;
+        streamMgrHere.addLocator(new LocatorURL()) ;
+        
+        streamMgrNull = new StreamManager() ;
     }
     
     @AfterClass static public void afterClass()
     { 
         StreamManager.setGlobal(streamMgrStd) ;
-        if ( streamManagerContextValue == null )
-            context.remove(RDFDataMgr.streamManagerSymbol) ;
-        else
-            context.put(RDFDataMgr.streamManagerSymbol, streamManagerContextValue) ;
     }
     
-    @Test public void fm_open_01() { open(directory+"/D.ttl", context) ; }
-    @Test public void fm_open_02() { open("D.ttl", context) ; }
+    private static Context context(StreamManager streamMgr)
+    {
+        Context context = new Context() ;
+        context.put(RDFDataMgr.streamManagerSymbol, streamMgr) ;
+        return context ;
+    }
+    
+    @Test public void fm_open_01()  { open(streamMgrNull, directory+"/D.ttl", context(streamMgrHere)) ; }
+    @Test public void fm_open_02()  { open(streamMgrHere, directory+"/D.ttl", null) ; }
+    
+    @Test public void fm_open_03()  { open(streamMgrNull,  "D.ttl", context(streamMgrDir)) ; }
+    @Test public void fm_open_04()  { open(streamMgrDir, "D.ttl", null) ; }
+
+    @Test public void fm_open_05()  { open(streamMgrHere, "file:"+directory+"/D.ttl", context(streamMgrHere)) ; }
+    @Test public void fm_open_06()  { open(streamMgrHere, "file:"+directory+"/D.ttl", null) ; }
 
-    @Test public void fm_open_03() { open("file:"+directory+"/D.ttl", context) ; }
-    @Test public void fm_open_04() { open("file:D.ttl", context) ; }
+    @Test public void fm_open_07()  { open(streamMgrHere, "file:D.ttl", context(streamMgrDir)) ; }
+    @Test public void fm_open_08()  { open(streamMgrDir, "file:D.ttl", null) ; }
     
-    @Test public void fm_open_05() { open(absDirectory+"/D.ttl", context) ; }
-    @Test public void fm_open_06() { open("file://"+absDirectory+"/D.ttl", context) ; }
+    @Test public void fm_open_09()  { open(streamMgrHere, absDirectory+"/D.ttl", null) ; }
+    @Test public void fm_open_10()  { open(streamMgrDir,  absDirectory+"/D.ttl", null) ; }
+    @Test public void fm_open_11()  { open(streamMgrDir,  "file://"+absDirectory+"/D.ttl", null) ; }
+    @Test public void fm_open_12()  { open(streamMgrHere, "file://"+absDirectory+"/D.ttl", null) ; }
     
     @Test (expected=RiotNotFoundException.class)
-    public void fm_open_10() { open("nosuchfile", null) ; }
+    public void fm_open_20()        { open(null, "nosuchfile", context(streamMgrDir)) ; }
+    @Test (expected=RiotNotFoundException.class)
+    public void fm_open_21()        { open(streamMgrHere, "nosuchfile", null) ; }
     
-    @Test public void fm_read_01() { read("D.nt") ; }
-    @Test public void fm_read_02() { read("D.ttl") ; }
-    @Test public void fm_read_03() { read("D.rdf") ; }
-    @Test public void fm_read_04() { read("D.json") ; }
+    @Test public void fm_read_01()  { read("D.nt") ; }
+    @Test public void fm_read_02()  { read("D.ttl") ; }
+    @Test public void fm_read_03()  { read("D.rdf") ; }
+    @Test public void fm_read_04()  { read("D.json") ; }
 
-    @Test public void fm_read_11() { read("file:D.nt") ; }
-    @Test public void fm_read_12() { read("file:D.ttl") ; }
-    @Test public void fm_read_13() { read("file:D.rdf") ; }
-    @Test public void fm_read_14() { read("file:D.json") ; }
+    @Test public void fm_read_11()  { read("file:D.nt") ; }
+    @Test public void fm_read_12()  { read("file:D.ttl") ; }
+    @Test public void fm_read_13()  { read("file:D.rdf") ; }
+    @Test public void fm_read_14()  { read("file:D.json") ; }
     
     // TriG
     // NQuads
     
-    private static void open(String dataName, Context context)
+    private static void open(StreamManager streamMgr, String dataName, Context context)
     {
-        TypedInputStream in = 
-            ( context != null ) ?
-                 RDFDataMgr.open(dataName, context) :
-                 RDFDataMgr.open(dataName) ;
-        assertNotNull(in) ;
-        IO.close(in) ;
+        StreamManager.setGlobal(streamMgr) ;
+        try {
+            TypedInputStream in = ( context != null ) 
+                ? RDFDataMgr.open(dataName, context)
+                : RDFDataMgr.open(dataName) ;
+            assertNotNull(in) ;
+            IO.close(in) ;
+        } finally {
+            StreamManager.setGlobal(streamMgrStd) ;
+        }
     }
     
     private static void read(String dataName)
     {
-        StreamManager.setGlobal(streamMgr) ;
-        Model m = ModelFactory.createDefaultModel() ;
-        RDFDataMgr.read(m, dataName) ;
-        assertTrue(m.size() != 0 ) ;
-        StreamManager.setGlobal(streamMgrStd) ;
+        try {
+            StreamManager.setGlobal(streamMgrDir) ;
+            Model m = ModelFactory.createDefaultModel() ;
+            RDFDataMgr.read(m, dataName) ;
+            assertNotEquals("Read "+dataName, 0, m.size()) ;
+        } finally {
+            StreamManager.setGlobal(streamMgrStd) ;
+        }
     }
 }
 

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBBackup.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBBackup.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBBackup.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBBackup.java Sat Mar  9 12:32:02 2013
@@ -18,15 +18,12 @@
 
 package com.hp.hpl.jena.tdb;
 
-import java.io.BufferedOutputStream ;
-import java.io.FileNotFoundException ;
-import java.io.FileOutputStream ;
-import java.io.IOException ;
-import java.io.OutputStream ;
+import java.io.* ;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.riot.out.NQuadsWriter ;
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
 
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.query.ReadWrite ;
@@ -63,7 +60,7 @@ public class TDBBackup
         Dataset ds = TDBFactory.createDataset(location) ;
         StoreConnection sConn = StoreConnection.make(location) ;
         DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ, "backup") ;
-        NQuadsWriter.write(backupfile, dsg) ;
+        RDFDataMgr.write(backupfile, dsg, Lang.NQUADS) ;
         dsg.end();
     }
 }

Modified: jena/trunk/jena-tdb/src/main/java/tdb/tdbdump.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/tdb/tdbdump.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/tdb/tdbdump.java (original)
+++ jena/trunk/jena-tdb/src/main/java/tdb/tdbdump.java Sat Mar  9 12:32:02 2013
@@ -18,7 +18,8 @@
 
 package tdb;
 
-import org.apache.jena.riot.RiotWriter ;
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
 import tdb.cmdline.CmdTDB ;
 
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -46,6 +47,6 @@ public class tdbdump extends CmdTDB
     protected void exec()
     {
         DatasetGraph dsg = super.getDatasetGraphTDB() ;
-        RiotWriter.writeNQuads(System.out, dsg) ;
+        RDFDataMgr.write(System.out, dsg, Lang.NQUADS) ;
     }
 }

Modified: jena/trunk/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java?rev=1454694&r1=1454693&r2=1454694&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java (original)
+++ jena/trunk/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java Sat Mar  9 12:32:02 2013
@@ -104,7 +104,7 @@ public class dumpnodetable extends CmdGe
         for ( ; iter.hasNext() ; )
         {
             Pair<NodeId, Node> pair = iter.next() ;
-            iw.print(pair.car()) ;
+            iw.print(pair.car().toString()) ;
             iw.print(" : ") ;
             //iw.print(pair.cdr()) ;
             Node n = pair.cdr() ;