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 2017/05/24 14:50:26 UTC

[2/7] jena git commit: JENA-1340: riot command to work by configuring an RDFParserBuilder.

JENA-1340: riot command to work by configuring an RDFParserBuilder.

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

Branch: refs/heads/master
Commit: d286ea0ae635c121a68310405b6ecdc6306c0381
Parents: bfc6e47
Author: Andy Seaborne <an...@apache.org>
Authored: Mon May 22 00:30:23 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon May 22 00:30:56 2017 +0100

----------------------------------------------------------------------
 .../org/apache/jena/riot/RDFParserRegistry.java | 14 ++++-
 .../org/apache/jena/riot/lang/RiotParsers.java  |  4 +-
 .../src/main/java/riotcmd/CmdLangParse.java     | 61 ++++++++++----------
 jena-cmds/src/main/java/riotcmd/riot.java       | 12 ++--
 4 files changed, 50 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d286ea0a/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 f19c78e..1a1458b 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
@@ -190,13 +190,23 @@ public class RDFParserRegistry
 
         @Override
         public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
-            LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, output, parserProfile);
+            // Unnecessary - RDFParser did it and set it in the ParserProfile
+//            if ( baseURI != null ) {
+//                IRIResolver newResolver = IRIResolver.create(baseURI) ;
+//                parserProfile.setIRIResolver(newResolver);
+//            }
+            LangRIOT parser = RiotParsers.createParser(in, lang, output, parserProfile);
             parser.parse() ;
         }
 
         @Override
         public void read(Reader in, String baseURI, ContentType ct, StreamRDF output, Context context) {
-            LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, output, parserProfile);
+            // Unnecessary - RDFParser did it and set it in the ParserProfile
+//          if ( baseURI != null ) {
+//              IRIResolver newResolver = IRIResolver.create(baseURI) ;
+//              parserProfile.setIRIResolver(newResolver);
+//          }
+            LangRIOT parser = RiotParsers.createParser(in, lang, output, parserProfile);
             parser.parse() ;
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/d286ea0a/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
index 054ec23..8e8df94 100644
--- 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
@@ -48,7 +48,7 @@ public class RiotParsers {
     private RiotParsers() {}
 
     /** InputStream input */
-    public static LangRIOT createParser(InputStream input, Lang lang, String baseIRI, StreamRDF dest, ParserProfile profile) {
+    public static LangRIOT createParser(InputStream input, Lang lang, StreamRDF dest, ParserProfile profile) {
         if ( RDFLanguages.sameLang(RDFJSON, lang) ) {
             Tokenizer tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input));
             return createParserRdfJson(tokenizer, dest, profile);
@@ -67,7 +67,7 @@ public class RiotParsers {
     }
 
     /** Reader input */
-    public static LangRIOT createParser(Reader input, Lang lang, String baseIRI, StreamRDF dest, ParserProfile profile) {
+    public static LangRIOT createParser(Reader input, Lang lang, StreamRDF dest, ParserProfile profile) {
         if ( RDFLanguages.sameLang(RDFJSON, lang) ) {
             Tokenizer tokenizer = new TokenizerJSON(PeekReader.make(input));
             return createParserRdfJson(tokenizer, dest, profile);

http://git-wip-us.apache.org/repos/asf/jena/blob/d286ea0a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java b/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
index d247c52..34a7dec 100644
--- a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
+++ b/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
@@ -37,7 +37,6 @@ import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.web.ContentType ;
-import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.query.ARQ ;
 import org.apache.jena.riot.* ;
 import org.apache.jena.riot.lang.LabelToNode ;
@@ -99,7 +98,6 @@ public abstract class CmdLangParse extends CmdGeneral
     protected interface PostParseHandler { void postParse(); }
     
     static class ParseRecord {
-        final String baseURI;
         final String filename;
         final boolean success;
         final long timeMillis;
@@ -107,10 +105,8 @@ public abstract class CmdLangParse extends CmdGeneral
         final long quads;
         final long tuples = 0;
         
-        public ParseRecord(String baseURI, String filename,
-                           boolean successful, long timeMillis,
+        public ParseRecord(String filename, boolean successful, long timeMillis,
                            long countTriples, long countQuads) {
-            this.baseURI = baseURI;
             this.filename = filename;
             this.success = successful;
             this.timeMillis = timeMillis;
@@ -121,6 +117,9 @@ public abstract class CmdLangParse extends CmdGeneral
 
     @Override
     protected void exec() {
+        if ( modLangParse.skipOnBadTerm() )
+            throw new CmdException("Not supported : skip on bad term"); 
+        
         boolean oldStrictValue = SysRIOT.isStrictMode() ;
         if ( modLangParse.strictMode() )
             SysRIOT.setStrictMode(true) ;
@@ -149,6 +148,7 @@ public abstract class CmdLangParse extends CmdGeneral
         }
         
         try {
+            // The actual parsing ... 
             if ( super.getPositional().isEmpty() ) {
                 ParseRecord parseRec = parseFile("-");
                 outcome(parseRec);
@@ -162,10 +162,12 @@ public abstract class CmdLangParse extends CmdGeneral
                     outcome(parseRec);
                 }
             }
+            // ... parsing done.
+
             if ( postParse != null )
                 postParse.postParse();
             // Post parse information.
-            // Total if more then one file.
+            // Total if more than one file.
             if ( super.getPositional().size() > 1 && modTime.timingEnabled() ) {
                 long totalMillis = 0; 
                 long totalTriples = 0;
@@ -206,32 +208,33 @@ public abstract class CmdLangParse extends CmdGeneral
     
     public ParseRecord parseFile(String filename) {
         String baseURI = modLangParse.getBaseIRI() ;
+        RDFParserBuilder builder = RDFParser.create();
+        if ( baseURI != null )
+            builder.base(baseURI);
+        Lang lang = selectLang(null, null, RDFLanguages.NQUADS) ;
+        builder.lang(lang);
+
+        // Set the source.
         if ( filename.equals("-") ) {
-            if ( baseURI == null )
+            if ( baseURI == null ) {
                 baseURI = "http://base/";
-            TypedInputStream in = TypedInputStream.wrap(System.in) ;
-            return parseRIOT(baseURI, "stdin", in) ;
-        } else {
-            try ( TypedInputStream in = RDFDataMgr.open(filename) ) {
-                return parseRIOT(baseURI, filename, in) ;    
-            } catch (RiotNotFoundException ex) {
-                System.err.println("Can't open '"+filename+"' "+ex.getMessage()) ;
-                return new ParseRecord(null, filename, false, -1, -1, -1);
+                builder.base(baseURI);
             }
+            builder.source(System.in);
+        } else {
+            builder.source(filename);
         }
+        return parseRIOT(builder, filename);
     }
 
     protected abstract Lang selectLang(String filename, ContentType contentType, Lang dftLang  ) ;
 
-    protected ParseRecord parseRIOT(String baseURI, String filename, TypedInputStream in) {
-        ContentType ct = in.getMediaType() ;
-        
-        baseURI = SysRIOT.chooseBaseIRI(baseURI, filename) ;
-        
-        RDFParserBuilder builder = RDFParser.create();
+    protected ParseRecord parseRIOT(RDFParserBuilder builder, /*Info for the ProcessOutcome*/ String filename) {
         boolean checking = true ;
-        if ( modLangParse.explicitChecking() )  checking = true ;
-        if ( modLangParse.explicitNoChecking() ) checking = false ;
+        if ( modLangParse.explicitChecking() )
+            checking = true;
+        if ( modLangParse.explicitNoChecking() )
+            checking = false;
         builder.checking(checking);
 
         ErrorHandler errHandler = ErrorHandlerFactory.errorHandlerWarn ;
@@ -244,14 +247,9 @@ public abstract class CmdLangParse extends CmdGeneral
         }
         
         if ( modLangParse.skipOnBadTerm() ) {
-            // TODO skipOnBadterm
+            // skipOnBadterm - this needs collaboration from the parser.
         }
         
-        Lang lang = selectLang(filename, ct, RDFLanguages.NQUADS) ;  
-        if ( ! RDFLanguages.isQuads(lang) && ! RDFLanguages.isTriples(lang) )
-            throw new CmdException("Undefined language: "+lang) ; 
-        builder.lang(lang);
-        
         // Make a flag.
         // Input and output subflags.
         // If input is "label, then output using NodeToLabel.createBNodeByLabelRaw() ;
@@ -279,8 +277,6 @@ public abstract class CmdLangParse extends CmdGeneral
         
         modTime.startTimer() ;
         sink.start() ;
-        
-        builder.source(in);
         RDFParser parser = builder.build();
         try {
             parser.parse(sink);
@@ -290,7 +286,8 @@ public abstract class CmdLangParse extends CmdGeneral
         }
         sink.finish() ;
         long x = modTime.endTimer() ;
-        ParseRecord outcome = new ParseRecord(baseURI, filename, successful, x, sink.countTriples(), sink.countQuads());
+        // TEMP
+        ParseRecord outcome = new ParseRecord(filename, successful, x, sink.countTriples(), sink.countQuads());
         return outcome;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/d286ea0a/jena-cmds/src/main/java/riotcmd/riot.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/riotcmd/riot.java b/jena-cmds/src/main/java/riotcmd/riot.java
index 1bf8cf6..4ef6df8 100644
--- a/jena-cmds/src/main/java/riotcmd/riot.java
+++ b/jena-cmds/src/main/java/riotcmd/riot.java
@@ -47,11 +47,13 @@ public class riot extends CmdLangParse
         
         if ( contentType != null && ! WebContent.matchContentType(WebContent.ctTextPlain, contentType) )
             return RDFLanguages.contentTypeToLang(contentType) ;
-
-        Lang lang =  RDFLanguages.filenameToLang(filename) ;
-        if ( lang == null )
-            lang = dftLang ;
-        return lang ;
+        
+        if ( filename != null ) {
+            Lang lang =  RDFLanguages.filenameToLang(filename) ;
+            if ( lang != null )
+                return lang;
+        }
+        return dftLang;
     }
 
     @Override