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 2015/08/20 19:03:36 UTC

[2/3] jena git commit: JENA-1012 : RiotParser class to hide implementation details.

JENA-1012 : RiotParser class to hide implementation details.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/85b9243c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/85b9243c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/85b9243c

Branch: refs/heads/master
Commit: 85b9243cbdfae2f1c6dcf148ac242e7c3d768877
Parents: fdd77f9
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 20 17:54:47 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 20 17:56:30 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/riot/RDFParserRegistry.java |  10 +-
 .../java/org/apache/jena/riot/ReaderRIOT.java   |   4 +-
 .../java/org/apache/jena/riot/RiotReader.java   | 218 +-----------------
 .../org/apache/jena/riot/lang/RiotParsers.java  | 230 +++++++++++++++++++
 4 files changed, 251 insertions(+), 211 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/85b9243c/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
index 9ba05c8..e88d14a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
@@ -31,6 +31,7 @@ import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.riot.lang.JsonLDReader ;
 import org.apache.jena.riot.lang.LangRIOT ;
 import org.apache.jena.riot.lang.ReaderTriX ;
+import org.apache.jena.riot.lang.RiotParsers ;
 import org.apache.jena.riot.system.ErrorHandler ;
 import org.apache.jena.riot.system.ErrorHandlerFactory ;
 import org.apache.jena.riot.system.ParserProfile ;
@@ -167,7 +168,7 @@ public class RDFParserRegistry
         @Override
         public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
             @SuppressWarnings("deprecation")
-            LangRIOT parser = RiotReader.createParser(in, lang, baseURI, output) ;
+            LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, output) ;
             if ( parserProfile != null )
                 parser.setProfile(parserProfile);
             if ( errorHandler != null )
@@ -178,7 +179,7 @@ public class RDFParserRegistry
         @Override
         public void read(Reader in, String baseURI, ContentType ct, StreamRDF output, Context context) {
             @SuppressWarnings("deprecation")
-            LangRIOT parser = RiotReader.createParser(in, lang, baseURI, output) ;
+            LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, output) ;
             parser.getProfile().setHandler(errorHandler) ; 
             parser.parse() ;
         }
@@ -187,7 +188,10 @@ public class RDFParserRegistry
         @Override public void setErrorHandler(ErrorHandler errorHandler)    { this.errorHandler = errorHandler ; }
 
         @Override public ParserProfile getParserProfile()                   { return parserProfile ; } 
-        @Override public void setParserProfile(ParserProfile parserProfile) { this.parserProfile = parserProfile ; }
+        @Override public void setParserProfile(ParserProfile parserProfile) { 
+            this.parserProfile = parserProfile ;
+            this.errorHandler = parserProfile.getHandler() ;
+        }
     }
 
     private static class ReaderRIOTFactoryJSONLD implements ReaderRIOTFactory {

http://git-wip-us.apache.org/repos/asf/jena/blob/85b9243c/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java
index 2179608..a9f3be7 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java
@@ -62,8 +62,8 @@ public interface ReaderRIOT
     public ErrorHandler getErrorHandler() ;
     public void setErrorHandler(ErrorHandler errorHandler) ;
     
-    /** Get the parser profile.  Not all parser have parser profiles so this may be null */
+    /** Get the parser profile.  Not all parsers have parser profiles so this may be null */
     public ParserProfile getParserProfile() ;
-    /** Set the parser profile.  Not all parser have parser profiles so this may be a no-op */
+    /** Set the parser profile.  Not all parsers have parser profiles so this may be a no-op */
     public void setParserProfile(ParserProfile profile) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/85b9243c/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java b/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java
index 4b7faa1..df7d7e5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RiotReader.java
@@ -18,36 +18,19 @@
 
 package org.apache.jena.riot;
 
-import static org.apache.jena.riot.RDFLanguages.CSV;
-import static org.apache.jena.riot.RDFLanguages.N3 ;
-import static org.apache.jena.riot.RDFLanguages.NQUADS ;
 import static org.apache.jena.riot.RDFLanguages.NTRIPLES ;
-import static org.apache.jena.riot.RDFLanguages.RDFJSON ;
-import static org.apache.jena.riot.RDFLanguages.RDFXML ;
-import static org.apache.jena.riot.RDFLanguages.TRIG ;
-import static org.apache.jena.riot.RDFLanguages.TURTLE ;
-import static org.apache.jena.riot.RDFLanguages.RDFNULL ;
 import static org.apache.jena.riot.RDFLanguages.filenameToLang ;
 
 import java.io.InputStream ;
-import java.io.Reader ;
 import java.util.Iterator ;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.io.PeekReader ;
 import org.apache.jena.atlas.iterator.IteratorResourceClosing ;
-import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
 import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.riot.lang.* ;
-import org.apache.jena.riot.out.CharSpace;
-import org.apache.jena.riot.system.ErrorHandlerFactory ;
-import org.apache.jena.riot.system.IRIResolver ;
-import org.apache.jena.riot.system.RiotLib ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
-import org.apache.jena.riot.tokens.Tokenizer ;
-import org.apache.jena.riot.tokens.TokenizerFactory ;
 import org.apache.jena.sparql.core.Quad ;
 
 /** Operations to access RIOT parsers and send the output to 
@@ -63,7 +46,9 @@ public class RiotReader
      * Must be in a triples syntax.
      * @param filename 
      * @param dest  Where to send the triples from the parser.
+     * @deprecated Use {@link RDFDataMgr#parse(StreamRDF, String)}
      */
+    @Deprecated
     public static void parse(String filename, StreamRDF dest)
     { parse(filename, null, null, dest) ; }
 
@@ -72,7 +57,9 @@ public class RiotReader
      * @param filename 
      * @param lang      Language, or null for "guess from URL" (e.g. file extension)
      * @param dest      Where to send the triples from the parser.
-     */  
+     * @deprecated Use {@link RDFDataMgr#parse(StreamRDF, String, Lang)}
+     */
+    @Deprecated
     public static void parse(String filename, Lang lang, StreamRDF dest)
     {
         parse(filename, lang, null, dest) ;
@@ -84,7 +71,9 @@ public class RiotReader
      * @param lang      Language, or null for "guess from URL" (e.g. file extension)
      * @param baseIRI   Base IRI, or null for based on input filename
      * @param dest      Where to send the triples from the parser.
-     */  
+     * @deprecated Use {@link RDFDataMgr#parse(StreamRDF, String, String, Lang)}
+     */
+    @Deprecated
     public static void parse(String filename, Lang lang, String baseIRI, StreamRDF dest)
     {
         if ( lang == null )
@@ -119,73 +108,6 @@ public class RiotReader
 
     // -------- Parsers
     
-    /** Create a parser 
-     * @deprecated Use {@link RDFDataMgr#createReader(Lang)}
-     */
-    @Deprecated
-    public static LangRIOT createParser(InputStream input, Lang lang, String baseIRI, StreamRDF dest)
-    {
-        if ( lang == RDFXML )
-        {
-            if ( baseIRI != null )
-                baseIRI = IRIResolver.resolveString(baseIRI) ;
-            return LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
-        } else if ( lang == CSV){
-        	return new LangCSV (input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(),  dest);
-        }
-        Tokenizer tokenizer = ( lang == RDFJSON ) ?
-            new TokenizerJSON(PeekReader.makeUTF8(input)) :
-                TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParser(tokenizer, lang, baseIRI, dest) ;
-    }
-
-    /** Create a parser 
-     * @deprecated Use {@link RDFDataMgr#createReader(Lang)}
-     */
-    @Deprecated
-    public static LangRIOT createParser(Reader input, Lang lang, String baseIRI, StreamRDF dest)
-    {
-        if ( lang == RDFXML )
-        {
-            if ( baseIRI != null )
-                baseIRI = IRIResolver.resolveStringSilent(baseIRI) ;
-            return LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
-        } else if ( lang == CSV){
-        	return new LangCSV (input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(),  dest);
-        }
-        Tokenizer tokenizer = ( lang == RDFJSON ) ?
-            new TokenizerJSON(PeekReader.make(input)) :
-                TokenizerFactory.makeTokenizer(input) ;
-        return createParser(tokenizer, lang, baseIRI, dest) ;
-    }
-
-    /** Create a parser 
-     * @deprecated Use {@link RDFDataMgr#createReader(Lang)}
-     */
-    @Deprecated  
-    public static LangRIOT createParser(Tokenizer tokenizer, Lang lang, String baseIRI, StreamRDF dest)
-    {
-        if ( RDFLanguages.sameLang(RDFXML, lang) )
-            throw new RiotException("Not possible - can't parse RDF/XML from a RIOT token stream") ;
-        if ( RDFLanguages.sameLang(TURTLE, lang) || RDFLanguages.sameLang(N3,  lang) ) 
-                return createParserTurtle(tokenizer, baseIRI, dest) ;
-        if ( RDFLanguages.sameLang(NTRIPLES, lang) )
-                return createParserNTriples(tokenizer, dest) ;
-        if ( RDFLanguages.sameLang(RDFJSON, lang) )
-            // But it must be a JSON tokenizer ...
-            return createParserRdfJson(tokenizer, dest) ;
-        
-        if ( RDFLanguages.sameLang(NQUADS, lang) )
-            return createParserNQuads(tokenizer, dest) ;
-        if ( RDFLanguages.sameLang(TRIG, lang) )
-            return createParserTriG(tokenizer, baseIRI, dest) ;
-        
-        if ( RDFLanguages.sameLang(RDFNULL, lang) )
-            return new LangNull() ;
-        
-        return null ;
-    }
-
     /** Parse a file, sending triples to a sink.
      * Must be in a triples syntax.
      * @param filename 
@@ -270,7 +192,7 @@ public class RiotReader
         // Special case N-Triples, because the RIOT reader has a pull interface
         if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
         {
-            return new IteratorResourceClosing<>(createParserNTriples(input, null), input);
+            return new IteratorResourceClosing<>(RiotParsers.createParserNTriples(input, null), input);
         }
         else
         {
@@ -285,7 +207,7 @@ public class RiotReader
                 {
                     out.start();
                     parse(input, lang, baseIRI, out);
-                    // Unsafe: out.finish() ;
+                    out.finish() ;
                 }
             });
             t.start();
@@ -306,7 +228,7 @@ public class RiotReader
         // Special case N-Quads, because the RIOT reader has a pull interface
         if ( RDFLanguages.sameLang(RDFLanguages.NQUADS, lang) )
         {
-            return new IteratorResourceClosing<>(createParserNQuads(input, null), input);
+            return new IteratorResourceClosing<>(RiotParsers.createParserNQuads(input, null), input);
         }
         else
         {
@@ -321,7 +243,7 @@ public class RiotReader
                 {
                     out.start();
                     parse(input, lang, baseIRI, out);
-                    // Unsafe: out.finish() ;
+                    out.finish() ;
                 }
             });
             t.start();
@@ -329,120 +251,4 @@ public class RiotReader
             return it;
         }
     }
-    
-    /** Create a parser for Turtle
-     * @deprecated use an RDFDataMgr operation with argument Lang.Turtle
-     */
-    @Deprecated
-    public static LangTurtle createParserTurtle(InputStream input, String baseIRI, StreamRDF dest)
-    {
-        Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserTurtle(tokenizer, baseIRI, dest) ;
-    }
-    
-    /** Create a parser for Turtle */
-    public static LangTurtle createParserTurtle(Tokenizer tokenizer, String baseIRI, StreamRDF dest)
-    {
-        RiotLib.profile(RDFLanguages.TURTLE, baseIRI) ;
-        LangTurtle parser = new LangTurtle(tokenizer, RiotLib.profile(RDFLanguages.TURTLE, baseIRI), dest) ;
-        return parser ;
-    }
-
-    /** Create a parser for RDF/XML
-     * @deprecated use an RDFDataMgr operation with argument Lang.RDFXML
-     */
-    @Deprecated
-    public static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, StreamRDF dest)
-    {
-        if ( baseIRI == null )
-            baseIRI = SysRIOT.chooseBaseIRI() ;
-        LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
-        return parser ;
-    }
-
-    /** Create parsers for RDF/JSON */
-    public static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, StreamRDF dest)
-    {
-    	LangRDFJSON parser = new LangRDFJSON(tokenizer, RiotLib.profile(RDFLanguages.RDFJSON, null), dest) ;
-    	return parser;
-    }
-    
-    /**
-     * @deprecated use RDFDataMgr and Lang.RDFJSON
-     */
-    @Deprecated
-    public static LangRDFJSON createParserRdfJson(InputStream input, StreamRDF dest)
-    {
-        TokenizerJSON tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input)) ;
-        return createParserRdfJson(tokenizer, dest) ;
-    }
-    
-    /** Create a parser for TriG
-     * @deprecated use an RDFDataMgr operation with argument Lang.TRIG
-     */
-    @Deprecated
-    public static LangTriG createParserTriG(InputStream input, String baseIRI, StreamRDF dest)
-    {
-        Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserTriG(tokenizer, baseIRI, dest) ;
-    }
-    
-    /** Create a parser for TriG */
-    public static LangTriG createParserTriG(Tokenizer tokenizer, String baseIRI, StreamRDF dest)
-    {
-        LangTriG parser = new LangTriG(tokenizer, RiotLib.profile(RDFLanguages.TRIG, baseIRI), dest) ;
-        return parser ;
-    }
-
-    /** Create a parser for N-Triples
-     * @deprecated use an RDFDataMgr operation with argument Lang.NTRIPLES
-     */
-    @Deprecated
-    public static LangNTriples createParserNTriples(InputStream input, StreamRDF dest)
-    {
-        return createParserNTriples(input, CharSpace.UTF8, dest) ;
-    }
-    
-    /** Create a parser for N-Triples
-     * @deprecated use an RDFDataMgr operation with argument Lang.NTRIPLES
-     */
-    @Deprecated
-    public static LangNTriples createParserNTriples(InputStream input, CharSpace charSpace, StreamRDF dest)
-    {
-        Tokenizer tokenizer = charSpace == CharSpace.ASCII ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserNTriples(tokenizer, dest) ;
-    }
-    
-    /** Create a parser for N-Triples */
-    public static LangNTriples createParserNTriples(Tokenizer tokenizer, StreamRDF dest)
-    {
-        LangNTriples parser = new LangNTriples(tokenizer, RiotLib.profile(RDFLanguages.NTRIPLES, null), dest) ;
-        return parser ;
-    }
-    
-    /** Create a parser for NQuads
-     * @deprecated use an RDFDataMgr operation with argument Lang.NQUADS)
-     */
-    @Deprecated
-    public static LangNQuads createParserNQuads(InputStream input, StreamRDF dest)
-    {
-        return createParserNQuads(input, CharSpace.UTF8, dest) ;
-    }
-    
-    /** Create a parser for NQuads
-     * @deprecated use an RDFDataMgr operation with argument Lang.NQUADS)
-     */
-    @Deprecated
-    public static LangNQuads createParserNQuads(InputStream input, CharSpace charSpace, StreamRDF dest)
-    {
-        Tokenizer tokenizer = charSpace == CharSpace.ASCII ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input) ;
-        return createParserNQuads(tokenizer, dest) ;
-    }
-    
-    /** Create a parser for NQuads */
-    public static LangNQuads createParserNQuads(Tokenizer tokenizer, StreamRDF dest)
-    {
-        LangNQuads parser = new LangNQuads(tokenizer, RiotLib.profile(RDFLanguages.NQUADS, null), dest) ;
-        return parser ;
-    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/85b9243c/jena-arq/src/main/java/org/apache/jena/riot/lang/RiotParsers.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/RiotParsers.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/RiotParsers.java
new file mode 100644
index 0000000..306d61b
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/RiotParsers.java
@@ -0,0 +1,230 @@
+/**
+ * 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 org.apache.jena.riot.lang;
+
+import static org.apache.jena.riot.RDFLanguages.CSV ;
+import static org.apache.jena.riot.RDFLanguages.N3 ;
+import static org.apache.jena.riot.RDFLanguages.NQUADS ;
+import static org.apache.jena.riot.RDFLanguages.NTRIPLES ;
+import static org.apache.jena.riot.RDFLanguages.RDFJSON ;
+import static org.apache.jena.riot.RDFLanguages.RDFNULL ;
+import static org.apache.jena.riot.RDFLanguages.RDFXML ;
+import static org.apache.jena.riot.RDFLanguages.TRIG ;
+import static org.apache.jena.riot.RDFLanguages.TURTLE ;
+
+import java.io.InputStream ;
+import java.io.Reader ;
+
+import org.apache.jena.atlas.io.PeekReader ;
+import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
+import org.apache.jena.riot.* ;
+import org.apache.jena.riot.out.CharSpace ;
+import org.apache.jena.riot.system.ErrorHandlerFactory ;
+import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.riot.system.RiotLib ;
+import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.tokens.Tokenizer ;
+import org.apache.jena.riot.tokens.TokenizerFactory ;
+
+public class RiotParsers {
+
+    /** Create a parser for Turtle
+     * @deprecated use an RDFDataMgr operation with argument Lang.Turtle
+     */
+    @Deprecated
+    public static LangTurtle createParserTurtle(InputStream input, String baseIRI, StreamRDF dest)
+    {
+        Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+        return createParserTurtle(tokenizer, baseIRI, dest) ;
+    }
+
+    /** Create a parser for Turtle */
+    public static LangTurtle createParserTurtle(Tokenizer tokenizer, String baseIRI, StreamRDF dest)
+    {
+        RiotLib.profile(RDFLanguages.TURTLE, baseIRI) ;
+        LangTurtle parser = new LangTurtle(tokenizer, RiotLib.profile(RDFLanguages.TURTLE, baseIRI), dest) ;
+        return parser ;
+    }
+
+    /** Create a parser for RDF/XML
+     * @deprecated use an RDFDataMgr operation with argument Lang.RDFXML
+     */
+    @Deprecated
+    public static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, StreamRDF dest)
+    {
+        if ( baseIRI == null )
+            baseIRI = SysRIOT.chooseBaseIRI() ;
+        LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+        return parser ;
+    }
+
+    /** Create parsers for RDF/JSON */
+    public static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, StreamRDF dest)
+    {
+    	LangRDFJSON parser = new LangRDFJSON(tokenizer, RiotLib.profile(RDFLanguages.RDFJSON, null), dest) ;
+    	return parser;
+    }
+
+    /**
+     * @deprecated use RDFDataMgr and Lang.RDFJSON
+     */
+    @Deprecated
+    public static LangRDFJSON createParserRdfJson(InputStream input, StreamRDF dest)
+    {
+        TokenizerJSON tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input)) ;
+        return createParserRdfJson(tokenizer, dest) ;
+    }
+
+    /** Create a parser for TriG
+     * @deprecated use an RDFDataMgr operation with argument Lang.TRIG
+     */
+    @Deprecated
+    public static LangTriG createParserTriG(InputStream input, String baseIRI, StreamRDF dest)
+    {
+        Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+        return createParserTriG(tokenizer, baseIRI, dest) ;
+    }
+
+    /** Create a parser for TriG.
+     * @deprecated use an RDFDataMgr operation with argument Lang.TRIG
+     */
+    @Deprecated
+    public static LangTriG createParserTriG(Tokenizer tokenizer, String baseIRI, StreamRDF dest)
+    {
+        LangTriG parser = new LangTriG(tokenizer, RiotLib.profile(RDFLanguages.TRIG, baseIRI), dest) ;
+        return parser ;
+    }
+
+    /** Create a parser for N-Triples
+     * Normally, use an RDFDataMgr operation with argument Lang.NTRIPLES
+     */
+    public static LangNTriples createParserNTriples(InputStream input, StreamRDF dest)
+    {
+        return createParserNTriples(input, CharSpace.UTF8, dest) ;
+    }
+
+    /** Create a parser for N-Triples
+     * Normally, use an RDFDataMgr operation with argument Lang.NTRIPLES
+     */
+    public static LangNTriples createParserNTriples(InputStream input, CharSpace charSpace, StreamRDF dest)
+    {
+        Tokenizer tokenizer = charSpace == CharSpace.ASCII ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input) ;
+        return createParserNTriples(tokenizer, dest) ;
+    }
+
+    /** Create a parser for N-Triples */
+    public static LangNTriples createParserNTriples(Tokenizer tokenizer, StreamRDF dest)
+    {
+        LangNTriples parser = new LangNTriples(tokenizer, RiotLib.profile(RDFLanguages.NTRIPLES, null), dest) ;
+        return parser ;
+    }
+
+    /** Create a parser for NQuads
+     * Normally, use an RDFDataMgr operation with argument Lang.NQUADS
+     */
+    public static LangNQuads createParserNQuads(InputStream input, StreamRDF dest)
+    {
+        return createParserNQuads(input, CharSpace.UTF8, dest) ;
+    }
+
+    /** Create a parser for NQuads
+     * Normally, use an RDFDataMgr operation with argument Lang.NQUADS
+     */
+    public static LangNQuads createParserNQuads(InputStream input, CharSpace charSpace, StreamRDF dest)
+    {
+        Tokenizer tokenizer = charSpace == CharSpace.ASCII ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input) ;
+        return createParserNQuads(tokenizer, dest) ;
+    }
+
+    /** Create a parser for NQuads */
+    public static LangNQuads createParserNQuads(Tokenizer tokenizer, StreamRDF dest)
+    {
+        LangNQuads parser = new LangNQuads(tokenizer, RiotLib.profile(RDFLanguages.NQUADS, null), dest) ;
+        return parser ;
+    }
+
+    /** Create a parser 
+     * @deprecated Use {@link RDFDataMgr#createReader(Lang)}
+     */
+    @Deprecated
+    public static LangRIOT createParser(InputStream input, Lang lang, String baseIRI, StreamRDF dest)
+    {
+        if ( lang == RDFXML )
+        {
+            if ( baseIRI != null )
+                baseIRI = IRIResolver.resolveString(baseIRI) ;
+            return LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+        } else if ( lang == CSV){
+        	return new LangCSV (input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(),  dest);
+        }
+        Tokenizer tokenizer = ( lang == RDFJSON ) ?
+            new TokenizerJSON(PeekReader.makeUTF8(input)) :
+                TokenizerFactory.makeTokenizerUTF8(input) ;
+        return createParser(tokenizer, lang, baseIRI, dest) ;
+    }
+
+    /** Create a parser 
+     * @deprecated Use {@link RDFDataMgr#createReader(Lang)}
+     */
+    @Deprecated
+    public static LangRIOT createParser(Reader input, Lang lang, String baseIRI, StreamRDF dest)
+    {
+        if ( lang == RDFXML )
+        {
+            if ( baseIRI != null )
+                baseIRI = IRIResolver.resolveStringSilent(baseIRI) ;
+            return LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+        } else if ( lang == CSV){
+        	return new LangCSV (input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(),  dest);
+        }
+        Tokenizer tokenizer = ( lang == RDFJSON ) ?
+            new TokenizerJSON(PeekReader.make(input)) :
+                TokenizerFactory.makeTokenizer(input) ;
+        return createParser(tokenizer, lang, baseIRI, dest) ;
+    }
+
+    /** Create a parser 
+     * @deprecated Use {@link RDFDataMgr#createReader(Lang)}
+     */
+    @Deprecated  
+    public static LangRIOT createParser(Tokenizer tokenizer, Lang lang, String baseIRI, StreamRDF dest)
+    {
+        if ( RDFLanguages.sameLang(RDFXML, lang) )
+            throw new RiotException("Not possible - can't parse RDF/XML from a RIOT token stream") ;
+        if ( RDFLanguages.sameLang(TURTLE, lang) || RDFLanguages.sameLang(N3,  lang) ) 
+                return createParserTurtle(tokenizer, baseIRI, dest) ;
+        if ( RDFLanguages.sameLang(NTRIPLES, lang) )
+                return createParserNTriples(tokenizer, dest) ;
+        if ( RDFLanguages.sameLang(RDFJSON, lang) )
+            // But it must be a JSON tokenizer ...
+            return createParserRdfJson(tokenizer, dest) ;
+        
+        if ( RDFLanguages.sameLang(NQUADS, lang) )
+            return createParserNQuads(tokenizer, dest) ;
+        if ( RDFLanguages.sameLang(TRIG, lang) )
+            return createParserTriG(tokenizer, baseIRI, dest) ;
+        
+        if ( RDFLanguages.sameLang(RDFNULL, lang) )
+            return new LangNull() ;
+        
+        return null ;
+    }
+
+}
+