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/09 21:55:39 UTC

svn commit: r1444433 - in /jena/Experimental/riot-output/src/main/java: dev/ExRIOT_out1.java dev/ExRIOT_out2.java dev/ExRIOT_out3.java dev/MainWriter.java dev/PROJECT_RiotWriter.java riot/RDFWriterMgr.java riot/RDFWriterRegistry.java

Author: andy
Date: Sat Feb  9 20:55:39 2013
New Revision: 1444433

URL: http://svn.apache.org/r1444433
Log:
Example of registering a writer.

Added:
    jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out3.java
Modified:
    jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java
    jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java
    jena/Experimental/riot-output/src/main/java/dev/MainWriter.java
    jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java
    jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java
    jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java

Modified: jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java?rev=1444433&r1=1444432&r2=1444433&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out1.java Sat Feb  9 20:55:39 2013
@@ -20,8 +20,10 @@ package dev;
 
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
+import org.apache.jena.riot.RIOT ;
 import riot.RDFFormat ;
 import riot.RDFWriterMgr ;
+import riot.RDFWriterRegistry ;
 
 import com.hp.hpl.jena.rdf.model.Model ;
 
@@ -30,14 +32,25 @@ public class ExRIOT_out1
 {
     public static void main(String[] args)
     {
+        RIOT.init() ;
+        RDFWriterRegistry.init() ;
+        
         Model model = RDFDataMgr.loadModel("D.ttl") ;
         
+        System.out.println() ;
+        System.out.println("#### ---- Write as Turtle") ;
+        System.out.println() ;
         RDFWriterMgr.write(System.out, model, Lang.TURTLE) ;
+        
         System.out.println() ;
-        System.out.println("#### ---- ####") ;
+        System.out.println("#### ---- Write as Turtle (streaming)") ;
         System.out.println() ;
         RDFWriterMgr.write(System.out, model, RDFFormat.TurtleBlocks) ;
         
+        System.out.println() ;
+        System.out.println("#### ---- Write as Turtle via model.write") ;
+        System.out.println() ;
+        model.write(System.out, "TTL") ;
     }
 
 }

Modified: jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java?rev=1444433&r1=1444432&r2=1444433&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out2.java Sat Feb  9 20:55:39 2013
@@ -18,12 +18,36 @@
 
 package dev;
 
-/** Example of registering a new writer with RIOT */
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
+import org.apache.jena.riot.RIOT ;
+import riot.RDFWriterMgr ;
+import riot.RDFWriterRegistry ;
+
+import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.rdf.model.Model ;
+
+/** Other writer examples */
 public class ExRIOT_out2
 {
     public static void main(String[] args)
     {
-        // All ways to write.
+        RIOT.init() ;
+        RDFWriterRegistry.init() ;
+        
+        Model model = RDFDataMgr.loadModel("D.ttl") ;
+        System.out.println() ;
+        System.out.println("#### ---- Write as TriG") ;
+        System.out.println() ;
+        // This wil be the default graph of the dataset written.
+        RDFWriterMgr.write(System.out, model, Lang.TRIG) ;
+        
+        // Loading Turtle as Trig reads into the default graph.
+        Dataset dataset = RDFDataMgr.loadDataset("D.ttl") ;
+        System.out.println() ;
+        System.out.println("#### ---- Write as NQuads") ;
+        System.out.println() ;
+        RDFWriterMgr.write(System.out, dataset, Lang.NQUADS) ;
     }
 
 }

Added: jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out3.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out3.java?rev=1444433&view=auto
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out3.java (added)
+++ jena/Experimental/riot-output/src/main/java/dev/ExRIOT_out3.java Sat Feb  9 20:55:39 2013
@@ -0,0 +1,102 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dev;
+
+import java.io.OutputStream ;
+import java.io.Writer ;
+
+import org.apache.jena.atlas.io.IndentedWriter ;
+import org.apache.jena.riot.* ;
+import org.apache.jena.riot.system.PrefixMap ;
+import riot.* ;
+import riot.system.IndentedWriterWriter ;
+
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.rdf.model.Model ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+
+/** Example of registering a new writer with RIOT */
+public class ExRIOT_out3
+{
+    // See also ExRIOT_5
+    public static void main(String[] args)
+    {
+        RIOT.init() ;
+        RDFWriterRegistry.init() ;
+        
+        System.out.println("## Example of a registering a new language with RIOT") ; 
+        System.out.println() ;
+        
+        // Register the language
+        Lang lang = LangBuilder.create("SSE", "text/x-sse").addFileExtensions("rsse").build() ;
+        RDFLanguages.register(lang) ;
+
+        // Create format and register.
+        RDFFormat format = new RDFFormat(lang) ;
+        RDFWriterRegistry.register(lang, format)  ;
+        
+        // Register the writer factory
+        RDFWriterRegistry.register(format, new SSEWriterFactory()) ;
+        
+        Lang lang2 = RDFWriterRegistry.getWriterGraphFactory(lang).create(format).getLang() ;
+        System.out.println("## Language = "+lang2) ;
+        System.out.println() ;
+        
+        Model model = RDFDataMgr.loadModel("D.ttl") ;
+        // Write
+        System.out.println("## Write by format") ;
+        RDFWriterMgr.write(System.out, model, format) ;
+        System.out.println() ;
+        System.out.println("## Write by language") ;
+        RDFWriterMgr.write(System.out, model, lang) ;
+    }
+    
+    static class SSEWriterFactory implements WriterGraphRIOTFactory
+    {
+        @Override
+        public WriterGraphRIOT create(RDFFormat syntaxForm)
+        {
+            return new SSEWriter() ;
+        }
+    }
+    
+    static class SSEWriter extends WriterGraphRIOTBase
+    {
+        // Ignore externally provided prefix map and baseURI
+        @Override
+        public void write(OutputStream out, Graph graph, PrefixMap prefixMap, String baseURI)
+        {
+            SSE.write(out, graph) ;
+        }
+
+        @Override
+        public Lang getLang()   { return  RDFLanguages.contentTypeToLang("text/x-sse") ; }
+
+        @Override
+        public void write(Writer out, Graph graph, PrefixMap prefixMap, String baseURI)
+        {
+            // Writers are discouraged : just hoe the charset is UTF-8.
+            IndentedWriter x = IndentedWriterWriter.create(out) ;
+            SSE.write(x, graph) ;
+        }
+
+    }
+
+}
+

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=1444433&r1=1444432&r2=1444433&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/MainWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/MainWriter.java Sat Feb  9 20:55:39 2013
@@ -47,6 +47,9 @@ public class MainWriter
 {
     public static void main(String ...args)
     {
+        Dataset ds = RDFDataMgr.loadDataset("D.ttl") ;
+        RDFWriterMgr.write(System.out, ds, Lang.TRIG) ;
+        System.out.println("DONE") ;
 //        
 //        String fn = "D.ttl" ;
 //        
@@ -64,7 +67,7 @@ public class MainWriter
         
         
         //writeTTL() ;
-        writeTriG() ;
+        //writeTriG() ;
     }
     
     public static void writeTriG()

Modified: jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java?rev=1444433&r1=1444432&r2=1444433&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java (original)
+++ jena/Experimental/riot-output/src/main/java/dev/PROJECT_RiotWriter.java Sat Feb  9 20:55:39 2013
@@ -25,6 +25,8 @@ public class PROJECT_RiotWriter
     
     // ExRIOT_out2 :: register language and writer 
     
+    // defaultGraphSerialization - table ise.
+    
     // TODO - check for TODO
 
     // Options.
@@ -37,5 +39,10 @@ public class PROJECT_RiotWriter
     // 2 - other rdf: rdfs: namespace items (sorted)
     // 3 - all other properties, sorted by URI (not qname)  
     //     same properties together - with and without object lists
+    
+    // Migration
+    // RIOT.init to call RDFWriterRegistry.init()
+    // Remove some RIOT.init calls.
 }
 
+ 
\ No newline at end of file

Modified: jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java?rev=1444433&r1=1444432&r2=1444433&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RDFWriterMgr.java Sat Feb  9 20:55:39 2013
@@ -103,7 +103,7 @@ public class RDFWriterMgr
      */
     public static void write(OutputStream out, Graph graph, Lang lang)
     {
-        RDFFormat serialization = RDFWriterRegistry.defaultGraphSerialization(lang) ;
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
         write(out, graph, serialization) ;
     }
 
@@ -127,6 +127,8 @@ public class RDFWriterMgr
     public static void write(OutputStream out, Graph graph, RDFFormat serialization)
     {
         WriterGraphRIOTFactory wf = RDFWriterRegistry.getWriterGraphFactory(serialization) ;
+        if ( wf == null )
+            throw new RiotException("No graph writer for "+serialization) ; 
         WriterGraphRIOT w = wf.create(serialization) ;
         w.write(out, graph) ;
     }
@@ -139,7 +141,7 @@ public class RDFWriterMgr
     public static void write(StringWriter out, Graph graph, Lang lang)
     {
         // Only known reasonable use of a Writer
-        write(out, graph, RDFWriterRegistry.defaultGraphSerialization(lang)) ;
+        write(out, graph, RDFWriterRegistry.defaultSerialization(lang)) ;
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -207,7 +209,7 @@ public class RDFWriterMgr
      */
     public static void write(OutputStream out, DatasetGraph dataset, Lang lang)
     {
-        RDFFormat serialization = RDFWriterRegistry.defaultDatasetSerialization(lang) ;
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
         write(out, dataset, serialization) ;
     }
 

Modified: jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java?rev=1444433&r1=1444432&r2=1444433&view=diff
==============================================================================
--- jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java (original)
+++ jena/Experimental/riot-output/src/main/java/riot/RDFWriterRegistry.java Sat Feb  9 20:55:39 2013
@@ -44,6 +44,8 @@ public class RDFWriterRegistry
 
     static Map<RDFFormat, WriterGraphRIOTFactory> registryGraph     = new HashMap<RDFFormat, WriterGraphRIOTFactory>() ;
     static Map<RDFFormat, WriterDatasetRIOTFactory> registryDataset = new HashMap<RDFFormat, WriterDatasetRIOTFactory>() ;
+    static Map<Lang, RDFFormat> langToFormat = new HashMap<Lang, RDFFormat>() ;
+
 
     // Writing a graph
     static WriterGraphRIOTFactory wgfactory = new WriterGraphRIOTFactory() {
@@ -121,6 +123,17 @@ public class RDFWriterRegistry
      static { init$() ; }
     private static void init$()
     {
+        // Language to format.
+        register(RDFLanguages.TURTLE, RDFFormat.Turtle) ;
+        register(RDFLanguages.N3, RDFFormat.Turtle) ;
+        register(RDFLanguages.NTRIPLES, RDFFormat.NTriples) ;
+        register(RDFLanguages.RDFXML, RDFFormat.RDFXML) ;
+        register(RDFLanguages.RDFJSON, RDFFormat.RDFJSON) ;
+        
+        register(RDFLanguages.TRIG, RDFFormat.Trig) ;
+        register(RDFLanguages.NQUADS, RDFFormat.NQuads) ;
+
+        // Wrietr factories.
         register(RDFFormat.TurtlePretty,  wgfactory) ;
         register(RDFFormat.TurtleBlocks,  wgfactory) ;
         register(RDFFormat.TurtleFlat,    wgfactory) ;
@@ -155,13 +168,34 @@ public class RDFWriterRegistry
         registryDataset.put(serialization, wfactory) ;
     }
 
+    public static void register(Lang lang, WriterGraphRIOTFactory wfactory)
+    {
+        RDFFormat serialization = defaultSerialization(lang) ;
+        if ( serialization == null )
+            throw new RiotException("No default serialization for language "+lang) ;
+        register(serialization, wfactory) ;
+    }
+
+    public static void register(Lang lang, WriterDatasetRIOTFactory wfactory)
+    {
+        RDFFormat serialization = defaultSerialization(lang) ;
+        if ( serialization == null )
+            throw new RiotException("No default serialization for language "+lang) ;
+        register(serialization, wfactory) ;
+    }
+    
+    public static void register(Lang lang, RDFFormat serialization)
+    {
+        langToFormat.put(lang, serialization) ;
+    }
+
     // Map Lang to default output format.
     public static WriterGraphRIOTFactory getWriterGraphFactory(Lang lang)
     {
-        RDFFormat serialization = defaultGraphSerialization(lang) ;
+        RDFFormat serialization = defaultSerialization(lang) ;
         if ( serialization == null )
             throw new RiotException("No default serialization for language "+lang) ;
-        return getWriterGraphFactory(serialization) ;  
+        return getWriterGraphFactory(serialization) ;
     }
 
     public static WriterGraphRIOTFactory getWriterGraphFactory(Lang lang, RDFFormatVariant variant)
@@ -171,14 +205,12 @@ public class RDFWriterRegistry
 
     public static WriterGraphRIOTFactory getWriterGraphFactory(RDFFormat serialization)
     {
-        if ( serialization == null )
-            return null ; 
         return registryGraph.get(serialization) ;
     }
     
     public static WriterDatasetRIOTFactory getWriterDatasetFactory(Lang lang)
     {
-        RDFFormat serialization = defaultDatasetSerialization(lang) ;
+        RDFFormat serialization = defaultSerialization(lang) ;
         if ( serialization == null )
             throw new RiotException("No default serialization for language "+lang) ;
         return getWriterDatasetFactory(serialization) ;  
@@ -195,30 +227,11 @@ public class RDFWriterRegistry
             return null ; 
         return registryDataset.get(serialization) ;
     }
-
-    public static RDFFormat defaultGraphSerialization(Lang lang)
-    {
-        if ( RDFLanguages.TURTLE.equals(lang) )     return RDFFormat.Turtle ;
-        if ( RDFLanguages.N3.equals(lang) )         return RDFFormat.Turtle ;
-        if ( RDFLanguages.NTRIPLES.equals(lang) )   return RDFFormat.NTriples ;
-        
-        // We write as the default graph of a dataset
-        if ( RDFLanguages.TRIG.equals(lang) )       return RDFFormat.Trig ;
-        if ( RDFLanguages.NQUADS.equals(lang) )     return RDFFormat.NQuads ;
-        
-        if ( RDFLanguages.RDFXML.equals(lang) )     return RDFFormat.RDFXML ;
-        if ( RDFLanguages.RDFJSON.equals(lang) )    return RDFFormat.RDFJSON ;
-        
-        return null ;
-    }
     
-    public static RDFFormat defaultDatasetSerialization(Lang lang)
+    public static RDFFormat defaultSerialization(Lang lang)
     {
-        if ( RDFLanguages.TRIG.equals(lang) )       return RDFFormat.Trig ;
-        if ( RDFLanguages.NQUADS.equals(lang) )     return RDFFormat.NQuads ;
-        
-        return null ;
+        return langToFormat.get(lang) ;
     }
-
+   
 }