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 2014/04/04 19:46:48 UTC

svn commit: r1584833 - in /jena/trunk/jena-arq/src/main/java: org/apache/jena/riot/RDFParserRegistry.java org/apache/jena/riot/ReaderRIOT.java org/apache/jena/riot/lang/JsonLDReader.java riotcmd/CmdLangParse.java

Author: andy
Date: Fri Apr  4 17:46:48 2014
New Revision: 1584833

URL: http://svn.apache.org/r1584833
Log:
Add ProfileProfile to ReaderRIOT; fix riot command line reader so it handles JSON-LD

Modified:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
    jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java?rev=1584833&r1=1584832&r2=1584833&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java Fri Apr  4 17:46:48 2014
@@ -32,6 +32,7 @@ import org.apache.jena.riot.lang.JsonLDR
 import org.apache.jena.riot.lang.LangRIOT ;
 import org.apache.jena.riot.system.ErrorHandler ;
 import org.apache.jena.riot.system.ErrorHandlerFactory ;
+import org.apache.jena.riot.system.ParserProfile ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.sparql.util.Context ;
@@ -149,6 +150,7 @@ public class RDFParserRegistry
     {
         private final Lang lang ;
         private ErrorHandler errorHandler ; 
+        private ParserProfile parserProfile = null ;
 
         ReaderRIOTLang(Lang lang) {
             this.lang = lang ;
@@ -159,7 +161,10 @@ public class RDFParserRegistry
         public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
             @SuppressWarnings("deprecation")
             LangRIOT parser = RiotReader.createParser(in, lang, baseURI, output) ;
-            parser.getProfile().setHandler(errorHandler) ;
+            if ( parserProfile != null )
+                parser.setProfile(parserProfile);
+            if ( errorHandler != null )
+                parser.getProfile().setHandler(errorHandler) ;
             parser.parse() ;
         }
 
@@ -173,6 +178,9 @@ public class RDFParserRegistry
 
         @Override public ErrorHandler getErrorHandler()                     { return errorHandler ; }
         @Override public void setErrorHandler(ErrorHandler errorHandler)    { this.errorHandler = errorHandler ; }
+
+        @Override public ParserProfile getParserProfile()                   { return parserProfile ; } 
+        @Override public void setParserProfile(ParserProfile parserProfile) { this.parserProfile = parserProfile ; }
     }
 
     private static class ReaderRIOTFactoryJSONLD implements ReaderRIOTFactory

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java?rev=1584833&r1=1584832&r2=1584833&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ReaderRIOT.java Fri Apr  4 17:46:48 2014
@@ -23,6 +23,7 @@ import java.io.Reader ;
 
 import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.riot.system.ErrorHandler ;
+import org.apache.jena.riot.system.ParserProfile ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.sparql.util.Context ;
@@ -61,4 +62,9 @@ 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 */
+    public ParserProfile getParserProfile() ;
+    /** Set the parser profile.  Not all parser have parser profiles so this may be a no-op */
+    public void setParserProfile(ParserProfile profile) ;
 }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java?rev=1584833&r1=1584832&r2=1584833&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java Fri Apr  4 17:46:48 2014
@@ -28,12 +28,10 @@ import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.riot.RDFLanguages ;
 import org.apache.jena.riot.ReaderRIOT ;
 import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.system.ErrorHandler ;
-import org.apache.jena.riot.system.ErrorHandlerFactory ;
-import org.apache.jena.riot.system.StreamRDF ;
-import org.apache.jena.riot.system.SyntaxLabels ;
+import org.apache.jena.riot.system.* ;
 
 import com.github.jsonldjava.core.* ;
 import com.github.jsonldjava.utils.JSONUtils ;
@@ -48,12 +46,18 @@ import com.hp.hpl.jena.sparql.util.Conte
 public class JsonLDReader implements ReaderRIOT
 {
     private ErrorHandler errorHandler = ErrorHandlerFactory.getDefaultErrorHandler() ;
-
+    private ParserProfile parserProfile = null ; 
+    
     @Override public ErrorHandler getErrorHandler() { return errorHandler ; }
     @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 read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {
+        if ( parserProfile == null )
+            parserProfile = RiotLib.profile(RDFLanguages.JSONLD, baseURI, errorHandler) ;
         try {
             Object jsonObject = JSONUtils.fromReader(reader) ;
             read$(jsonObject, baseURI, ct, output, context) ;
@@ -65,6 +69,8 @@ public class JsonLDReader implements Rea
 
     @Override
     public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
+        if ( parserProfile == null )
+            parserProfile = RiotLib.profile(RDFLanguages.JSONLD, baseURI, errorHandler) ;
         try {
             Object jsonObject = JSONUtils.fromInputStream(in) ;
             read$(jsonObject, baseURI, ct, output, context) ;
@@ -73,7 +79,7 @@ public class JsonLDReader implements Rea
             IO.exception(e) ;
         }
     }
-
+    
     private void read$(Object jsonObject, String baseURI, ContentType ct, final StreamRDF output, Context context) {
         try {
             JSONLDTripleCallback callback = new JSONLDTripleCallback() {
@@ -89,18 +95,19 @@ public class JsonLDReader implements Rea
                                 Node s = createNode(t, "subject") ;
                                 Node p = createNode(t, "predicate") ;
                                 Node o = createNode(t, "object") ;
-                                Triple triple = Triple.create(s, p, o) ;
+                                Triple triple = parserProfile.createTriple(s, p, o, -1, -1) ;
                                 output.triple(triple) ;
                             }
                         } else {
                             @SuppressWarnings("unchecked")
                             List<Map<String, Object>> quads = (List<Map<String, Object>>)x ;
-                            Node g = NodeFactory.createURI(gn) ; // Bnodes?
+                            Node g = createURI(gn) ; 
                             for ( Map<String, Object> q : quads ) {
                                 Node s = createNode(q, "subject") ;
                                 Node p = createNode(q, "predicate") ;
                                 Node o = createNode(q, "object") ;
-                                output.quad(Quad.create(g, s, p, o)) ;
+                                Quad quad = parserProfile.createQuad(g, s, p, o, -1, -1) ;
+                                output.quad(quad) ;
                             }
                         }
                     }
@@ -135,9 +142,9 @@ public class JsonLDReader implements Rea
         String type = (String)map.get("type") ;
         String lex = (String)map.get("value") ;
         if ( type.equals(IRI) )
-            return NodeFactory.createURI(lex) ;
+            return createURI(lex) ;
         else if ( type.equals(BLANK_NODE) )
-            return labels.get(null, lex) ;
+            return labels.get(null, lex) ;  //??
         else if ( type.equals(LITERAL) ) {
             String lang = (String)map.get("language") ;
             String datatype = (String)map.get("datatype") ;
@@ -146,11 +153,11 @@ public class JsonLDReader implements Rea
                 // During migration, we prefer simple literals to xsd:strings. 
                 datatype = null ;
             if ( lang == null && datatype == null )
-                return NodeFactory.createLiteral(lex) ;
+                return parserProfile.createStringLiteral(lex,-1, -1) ;
             if ( lang != null )
-                return NodeFactory.createLiteral(lex, lang, null) ;
+                return parserProfile.createLangLiteral(lex, lang, -1, -1) ;
             RDFDatatype dt = NodeFactory.getType(datatype) ;
-            return NodeFactory.createLiteral(lex, dt) ;
+            return parserProfile.createTypedLiteral(lex, dt, -1, -1) ;
         } else
             throw new InternalErrorException("Node is not a IRI, bNode or a literal: " + type) ;
     }
@@ -159,7 +166,7 @@ public class JsonLDReader implements Rea
         if ( str.startsWith("_:") )
             return labels.get(null, str) ;
         else
-            return NodeFactory.createURI(str) ;
+            return parserProfile.createURI(str, -1, -1) ;
     }
 
     private Node createLiteral(String lex, String datatype, String lang) {

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=1584833&r1=1584832&r2=1584833&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java (original)
+++ jena/trunk/jena-arq/src/main/java/riotcmd/CmdLangParse.java Fri Apr  4 17:46:48 2014
@@ -28,7 +28,6 @@ import org.apache.jena.atlas.web.Content
 import org.apache.jena.atlas.web.TypedInputStream ;
 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.process.inf.InfFactory ;
@@ -249,35 +248,27 @@ public abstract class CmdLangParse exten
         StreamRDFCounting sink = StreamRDFLib.count(s) ;
         s = null ;
         
-        // Need low level control over the parser.
-        @SuppressWarnings("deprecation")
-        LangRIOT parser = RiotReader.createParser(in, lang, baseURI, sink) ;
-        try
-        {
-            if ( checking )
-            {
-                if ( parser.getLang() == RDFLanguages.NTRIPLES ||  parser.getLang() == RDFLanguages.NQUADS )
-                    parser.setProfile(RiotLib.profile(baseURI, false, true, errHandler)) ;
+        ReaderRIOT reader = RDFDataMgr.createReader(lang) ;
+        try {
+            if ( checking ) {
+                if ( lang == RDFLanguages.NTRIPLES || lang == RDFLanguages.NQUADS )
+                    reader.setParserProfile(RiotLib.profile(baseURI, false, true, errHandler)) ;
                 else
-                    parser.setProfile(RiotLib.profile(baseURI, true, true, errHandler)) ;
-            }
-            else
-                parser.setProfile(RiotLib.profile(baseURI, false, false, errHandler)) ;
-            
+                    reader.setParserProfile(RiotLib.profile(baseURI, true, true, errHandler)) ;
+            } else
+                reader.setParserProfile(RiotLib.profile(baseURI, false, false, errHandler)) ;
+
             if ( labelsAsGiven )
-                parser.getProfile().setLabelToNode(LabelToNode.createUseLabelAsGiven()) ;
+                reader.getParserProfile().setLabelToNode(LabelToNode.createUseLabelAsGiven()) ;
             modTime.startTimer() ;
-            parser.parse() ;
-        }
-        catch (RiotException ex)
-        {
+            reader.read(in, baseURI, ct, sink, null) ;
+        } catch (RiotException ex) {
             // Should have handled the exception and logged a message by now.
-            //System.err.println("++++"+ex.getMessage()); 
-           
+            // System.err.println("++++"+ex.getMessage());
+
             if ( modLangParse.stopOnBadTerm() )
                 return ;
-        }
-        finally {
+        } finally {
             // Not close - we may write again to the underlying output stream in another call to parse a file.  
             sink.finish() ;
             IO.close(in) ;