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) ;