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/04/11 10:05:34 UTC
[07/17] jena git commit: Internal reorganisation in RIOT.
Internal reorganisation in RIOT.
Isolate use of ParerProfile prior to removal.
LangCSV becomes ReaderRIOTCSV.
Deprecate reading CSV files as RDF (use jena-csv).
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1f90685f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1f90685f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1f90685f
Branch: refs/heads/master
Commit: 1f90685f35914b9c7ea6f74bcfb8b8bc4e3e3b37
Parents: 04c8a51
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Apr 7 18:38:44 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Apr 7 18:38:44 2017 +0100
----------------------------------------------------------------------
.../main/java/org/apache/jena/riot/Lang.java | 6 +
.../java/org/apache/jena/riot/RDFDataMgr.java | 15 +-
.../java/org/apache/jena/riot/RDFLanguages.java | 2 +
.../org/apache/jena/riot/RDFParserRegistry.java | 47 +-
.../java/org/apache/jena/riot/ReaderRIOT.java | 4 -
.../org/apache/jena/riot/lang/JsonLDReader.java | 5 +-
.../org/apache/jena/riot/lang/LangBase.java | 11 +-
.../org/apache/jena/riot/lang/LangEngine.java | 202 ++++----
.../org/apache/jena/riot/lang/LangNQuads.java | 5 +-
.../org/apache/jena/riot/lang/LangNTuple.java | 4 +-
.../org/apache/jena/riot/lang/LangTriG.java | 4 +-
.../apache/jena/riot/lang/LangTurtleBase.java | 43 +-
.../apache/jena/riot/lang/ReaderRDFNULL.java | 9 -
.../org/apache/jena/riot/lang/ReaderRDFXML.java | 75 +++
.../org/apache/jena/riot/lang/ReaderTriX.java | 10 -
.../org/apache/jena/riot/lang/RiotParsers.java | 468 +++++++++++++------
.../jena/riot/resultset/ResultSetLang.java | 15 +-
.../org/apache/jena/riot/system/MakerRDF.java | 13 +
.../apache/jena/riot/system/MakerRDFStd.java | 17 +-
.../apache/jena/riot/system/ParserProfile.java | 6 +-
.../jena/riot/system/ParserProfileBase.java | 12 +-
.../jena/riot/system/ParserProfileBase2.java | 225 +++++++++
.../org/apache/jena/riot/system/RiotLib.java | 11 +-
.../engine/binding/BindingInputStream.java | 4 +-
.../apache/jena/riot/ErrorHandlerTestLib.java | 2 +
.../org/apache/jena/riot/lang/TestLangCSV.java | 4 +-
.../apache/jena/riot/lang/TestLangNTriples.java | 16 +-
.../apache/jena/riot/lang/TestLangNTuples.java | 33 +-
.../apache/jena/riot/lang/TestLangRdfJson.java | 3 +-
.../apache/jena/riot/lang/TestLangTurtle.java | 3 +-
.../jena/riot/lang/TestParserFactory.java | 45 +-
.../apache/jena/riot/lang/TestTurtleTerms.java | 6 +-
32 files changed, 902 insertions(+), 423 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/Lang.java b/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
index d9e8b10..62a2838 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
@@ -80,6 +80,12 @@ public class Lang
//** The RDF syntax "RDF Thrift" : see http://jena.apache.org/documentation/io */
public static Lang RDFTHRIFT ;
+
+ /** "CSV" - CSV data read into an RDF model with simple conversion : See Jena-625.
+ * @deprecated Use jena-csv {@code org.apache.jena.lang.csv.CSVRDF.CSV}
+ */
+ @Deprecated
+ public static Lang CSV ;
/** <a href="http://www.hpl.hp.com/techreports/2004/HPL-2004-56.html">TriX</a> */
public static Lang TRIX ;
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 509c1a4..6b93989 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -35,10 +35,8 @@ import org.apache.jena.rdf.model.ModelFactory ;
import org.apache.jena.riot.lang.PipedQuadsStream ;
import org.apache.jena.riot.lang.PipedRDFIterator ;
import org.apache.jena.riot.lang.PipedTriplesStream ;
-import org.apache.jena.riot.system.ParserProfile;
-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.lang.RiotParsers;
+import org.apache.jena.riot.system.*;
import org.apache.jena.riot.system.stream.StreamManager ;
import org.apache.jena.riot.writer.NQuadsWriter ;
import org.apache.jena.riot.writer.NTriplesWriter ;
@@ -1249,7 +1247,7 @@ public class RDFDataMgr
public static Iterator<Triple> createIteratorTriples(InputStream input, Lang lang, String baseIRI) {
// Special case N-Triples, because the RIOT reader has a pull interface
if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
- return new IteratorResourceClosing<>(org.apache.jena.riot.lang.RiotParsers.createIteratorNTriples(input, null), input);
+ return new IteratorResourceClosing<>(RiotParsers.createIteratorNTriples(input, null), input);
// Otherwise, we have to spin up a thread to deal with it
PipedRDFIterator<Triple> it = new PipedRDFIterator<>();
PipedTriplesStream out = new PipedTriplesStream(it);
@@ -1267,8 +1265,11 @@ public class RDFDataMgr
*/
public static Iterator<Quad> createIteratorQuads(InputStream input, Lang lang, String baseIRI) {
// Special case N-Quads, because the RIOT reader has a pull interface
- if ( RDFLanguages.sameLang(RDFLanguages.NQUADS, lang) )
- return new IteratorResourceClosing<>(org.apache.jena.riot.lang.RiotParsers.createIteratorNQuads(input, null), input);
+ if ( RDFLanguages.sameLang(RDFLanguages.NQUADS, lang) ) {
+ return new IteratorResourceClosing<>(
+ RiotParsers.createIteratorNQuads(input, null, RiotLib.dftMakerRDF()),
+ input);
+ }
// Otherwise, we have to spin up a thread to deal with it
final PipedRDFIterator<Quad> it = new PipedRDFIterator<>();
final PipedQuadsStream out = new PipedQuadsStream(it);
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
index 3c2a2cf..c093cc6 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
@@ -188,6 +188,7 @@ public class RDFLanguages
public static void init() {}
static { init$() ; }
+ @SuppressWarnings("deprecation")
private static synchronized void init$()
{
initStandard() ;
@@ -206,6 +207,7 @@ public class RDFLanguages
Lang.RDFTHRIFT = RDFLanguages.THRIFT ;
Lang.TRIX = RDFLanguages.TRIX ;
Lang.RDFNULL = RDFLanguages.RDFNULL ;
+ Lang.CSV = RDFLanguages.CSV ;
}
// ----------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/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 19f6f97..53becb3 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
@@ -18,7 +18,7 @@
package org.apache.jena.riot;
-import static org.apache.jena.riot.RDFLanguages.* ;
+import static org.apache.jena.riot.RDFLanguages.*;
import java.io.InputStream ;
import java.io.Reader ;
@@ -30,7 +30,8 @@ import java.util.Set ;
import org.apache.jena.atlas.lib.InternalErrorException ;
import org.apache.jena.atlas.web.ContentType ;
import org.apache.jena.riot.lang.* ;
-import org.apache.jena.riot.system.*;
+import org.apache.jena.riot.system.ParserProfile;
+import org.apache.jena.riot.system.StreamRDF;
import org.apache.jena.riot.thrift.BinRDF ;
import org.apache.jena.sparql.util.Context ;
@@ -62,6 +63,7 @@ public class RDFParserRegistry
private static ReaderRIOTFactory parserFactoryThrift = new ReaderRIOTFactoryThrift() ;
private static ReaderRIOTFactory parserFactoryTriX = new ReaderRIOTFactoryTriX() ;
private static ReaderRIOTFactory parserFactoryRDFNULL = new ReaderRIOTFactoryRDFNULL() ;
+ private static ReaderRIOTFactory parserFactoryCSV = new ReaderRIOTCSV.Factory() ;
private static boolean initialized = false ;
static { init() ; }
@@ -72,6 +74,7 @@ public class RDFParserRegistry
initStandard() ;
}
+ @SuppressWarnings("deprecation")
private static void initStandard()
{
// Make sure the constants are initialized.
@@ -83,7 +86,7 @@ public class RDFParserRegistry
registerLangTriples(TURTLE, parserFactory) ;
registerLangTriples(JSONLD, parserFactoryJsonLD) ;
registerLangTriples(RDFJSON, parserFactory) ;
- registerLangTriples(CSV, parserFactory) ;
+ registerLangTriples(CSV, parserFactoryCSV) ;
registerLangTriples(THRIFT, parserFactoryThrift) ;
registerLangTriples(TRIX, parserFactoryTriX) ;
registerLangTriples(RDFNULL, parserFactoryRDFNULL) ;
@@ -156,50 +159,42 @@ public class RDFParserRegistry
public ReaderRIOT create(Lang lang, ParserProfile parserProfile) {
return new ReaderRIOTLang(lang, parserProfile) ;
}
-
}
private static class ReaderRIOTLang implements ReaderRIOT
{
private final Lang lang ;
- private ErrorHandler errorHandler ;
private ParserProfile parserProfile = null ;
ReaderRIOTLang(Lang lang) {
this.lang = lang ;
- errorHandler = ErrorHandlerFactory.getDefaultErrorHandler() ;
}
ReaderRIOTLang(Lang lang, ParserProfile parserProfile) {
this.lang = lang ;
this.parserProfile = parserProfile;
- this.errorHandler = parserProfile.getHandler();
}
@Override
public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
- LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, output) ;
- if ( parserProfile != null )
- parser.setProfile(parserProfile);
- if ( errorHandler != null )
- parser.getProfile().setHandler(errorHandler) ;
+ LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, 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) ;
- parser.getProfile().setHandler(errorHandler) ;
+ LangRIOT parser = RiotParsers.createParser(in, lang, baseURI, output, parserProfile);
parser.parse() ;
}
- @Override public ErrorHandler getErrorHandler() { return errorHandler ; }
- @Override public void setErrorHandler(ErrorHandler errorHandler) { this.errorHandler = errorHandler ; }
+ @Override
+ public ParserProfile getParserProfile() {
+ return parserProfile;
+ }
- @Override public ParserProfile getParserProfile() { return parserProfile ; }
- @Override public void setParserProfile(ParserProfile parserProfile) {
- this.parserProfile = parserProfile ;
- this.errorHandler = parserProfile.getHandler() ;
+ @Override
+ public void setParserProfile(ParserProfile parserProfile) {
+ this.parserProfile = parserProfile;
}
}
@@ -208,7 +203,7 @@ public class RDFParserRegistry
public ReaderRIOT create(Lang language, ParserProfile profile) {
if ( !Lang.JSONLD.equals(language) )
throw new InternalErrorException("Attempt to parse " + language + " as JSON-LD") ;
- return new JsonLDReader(language, profile, profile.getHandler());
+ return new JsonLDReader(language, profile, profile.getErrorHandler());
}
}
@@ -231,14 +226,6 @@ public class RDFParserRegistry
}
@Override
- public ErrorHandler getErrorHandler() {
- return null ;
- }
-
- @Override
- public void setErrorHandler(ErrorHandler errorHandler) {}
-
- @Override
public ParserProfile getParserProfile() {
return null ;
}
@@ -251,7 +238,7 @@ public class RDFParserRegistry
private static class ReaderRIOTFactoryTriX implements ReaderRIOTFactory {
@Override
public ReaderRIOT create(Lang language, ParserProfile profile) {
- return new ReaderTriX(profile, profile.getHandler());
+ return new ReaderTriX(profile, profile.getErrorHandler());
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/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 a9f3be7..f248100 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
@@ -22,7 +22,6 @@ import java.io.InputStream ;
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 org.apache.jena.sparql.util.Context ;
@@ -59,9 +58,6 @@ public interface ReaderRIOT
*/
public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) ;
- public ErrorHandler getErrorHandler() ;
- public void setErrorHandler(ErrorHandler errorHandler) ;
-
/** Get the parser profile. Not all parsers have parser profiles so this may be null */
public ParserProfile getParserProfile() ;
/** Set the parser profile. Not all parsers have parser profiles so this may be a no-op */
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
index 06ba468..7edf6ce 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java
@@ -58,14 +58,11 @@ public class JsonLDReader implements ReaderRIOT
private /*final*/ ErrorHandler errorHandler = ErrorHandlerFactory.getDefaultErrorHandler() ;
private /*final*/ MakerRDF maker;
- @Override public ErrorHandler getErrorHandler() { return errorHandler ; }
- @Override public void setErrorHandler(ErrorHandler errorHandler) { this.errorHandler = errorHandler ; }
-
@Override public ParserProfile getParserProfile() { return (MakerRDFStd)maker ; }
@Override
public void setParserProfile(ParserProfile parserProfile) {
- this.errorHandler = parserProfile.getHandler();
+ this.errorHandler = parserProfile.getErrorHandler();
this.maker = parserProfile;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/LangBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangBase.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangBase.java
index 9125eda..1ae9423 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangBase.java
@@ -26,10 +26,12 @@ import org.apache.jena.riot.tokens.Tokenizer ;
public abstract class LangBase extends LangEngine implements LangRIOT
{
protected final StreamRDF dest;
+ protected final boolean isStrictMode;
protected LangBase(Tokenizer tokens, ParserProfile profile, StreamRDF dest) {
- super(tokens, profile);
+ super(tokens, profile, profile.getHandler());
this.dest = dest;
+ this.isStrictMode = profile.isStrictMode();
}
@Override
@@ -48,11 +50,16 @@ public abstract class LangBase extends LangEngine implements LangRIOT
@Override
public ParserProfile getProfile() {
- return profile;
+ // XXX Temp - for migration ParserProfile
+ if ( profile instanceof ParserProfile )
+ return (ParserProfile)profile;
+ return null;
}
@Override
public void setProfile(ParserProfile profile) {
+ // XXX Temp - for migration ParserProfile
super.profile = profile;
+ super.errorHandler = profile.getHandler();
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
index 24746b4..cda6e88 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
@@ -18,151 +18,139 @@
package org.apache.jena.riot.lang;
-import static org.apache.jena.riot.tokens.TokenType.EOF ;
-import static org.apache.jena.riot.tokens.TokenType.NODE ;
-
-import org.apache.jena.atlas.AtlasException ;
-import org.apache.jena.atlas.iterator.PeekIterator ;
-import org.apache.jena.riot.RiotParseException ;
-import org.apache.jena.riot.system.ErrorHandler ;
-import org.apache.jena.riot.system.ParserProfile ;
-import org.apache.jena.riot.tokens.Token ;
-import org.apache.jena.riot.tokens.TokenType ;
-import org.apache.jena.riot.tokens.Tokenizer ;
-
-/** Common operations for RIOT parsers - not the implementation LangRIOT */
-public class LangEngine
-{
- protected ParserProfile profile ;
- protected final Tokenizer tokens ;
- private PeekIterator<Token> peekIter ;
-
- protected LangEngine(Tokenizer tokens, ParserProfile profile)
- {
- this.tokens = tokens ;
- this.profile = profile ;
+import static org.apache.jena.riot.tokens.TokenType.EOF;
+import static org.apache.jena.riot.tokens.TokenType.NODE;
+
+import java.util.Objects;
+
+import org.apache.jena.atlas.AtlasException;
+import org.apache.jena.atlas.iterator.PeekIterator;
+import org.apache.jena.riot.RiotParseException;
+import org.apache.jena.riot.system.ErrorHandler;
+import org.apache.jena.riot.system.MakerRDF;
+import org.apache.jena.riot.tokens.Token;
+import org.apache.jena.riot.tokens.TokenType;
+import org.apache.jena.riot.tokens.Tokenizer;
+
+/** Common operations for RIOT token stream parsing - not the implementation LangRIOT. */
+public class LangEngine {
+ protected MakerRDF profile;
+ protected ErrorHandler errorHandler;
+ protected final Tokenizer tokens;
+ private PeekIterator<Token> peekIter;
+
+ protected LangEngine(Tokenizer tokens, MakerRDF profile, ErrorHandler errorHandler) {
+ this.tokens = Objects.requireNonNull(tokens);
+ this.profile = Objects.requireNonNull(profile);
+ this.errorHandler = errorHandler;
// The PeekIterator is always loaded with the next token until the end
- // (for simplicity) but it means this can throw an exception.
- try { this.peekIter = new PeekIterator<>(tokens) ; }
- catch (RiotParseException ex) { raiseException(ex) ; }
+ // (for simplicity) but it means this can throw an exception.
+ try {
+ this.peekIter = new PeekIterator<>(tokens);
+ }
+ catch (RiotParseException ex) {
+ raiseException(ex);
+ }
}
-
+
// ---- Managing tokens.
-
- protected final Token peekToken()
- {
+
+ protected final Token peekToken() {
// Avoid repeating.
- if ( eof() ) return tokenEOF ;
- return peekIter.peek() ;
+ if ( eof() )
+ return tokenEOF;
+ return peekIter.peek();
}
-
+
// Set when we get to EOF to record line/col of the EOF.
- private Token tokenEOF = null ;
+ private Token tokenEOF = null;
- protected final boolean eof()
- {
+ protected final boolean eof() {
if ( tokenEOF != null )
- return true ;
-
- if ( ! moreTokens() )
- {
- tokenEOF = new Token(tokens.getLine(), tokens.getColumn()) ;
- tokenEOF.setType(EOF) ;
- return true ;
+ return true;
+
+ if ( !moreTokens() ) {
+ tokenEOF = new Token(tokens.getLine(), tokens.getColumn());
+ tokenEOF.setType(EOF);
+ return true;
}
- return false ;
+ return false;
}
- protected final boolean moreTokens()
- {
- return peekIter.hasNext() ;
+ protected final boolean moreTokens() {
+ return peekIter.hasNext();
}
-
- protected final boolean lookingAt(TokenType tokenType)
- {
+
+ protected final boolean lookingAt(TokenType tokenType) {
if ( eof() )
- return tokenType == EOF ;
+ return tokenType == EOF;
if ( tokenType == NODE )
- return peekToken().isNode() ;
- return peekToken().hasType(tokenType) ;
+ return peekToken().isNode();
+ return peekToken().hasType(tokenType);
}
-
- // Remember line/col of last token for messages
- protected long currLine = -1 ;
- protected long currCol = -1 ;
-
- protected final Token nextToken()
- {
+
+ // Remember line/col of last token for messages
+ protected long currLine = -1;
+ protected long currCol = -1;
+
+ protected final Token nextToken() {
if ( eof() )
- return tokenEOF ;
-
+ return tokenEOF;
+
// Tokenizer errors appear here!
try {
- Token t = peekIter.next() ;
- currLine = t.getLine() ;
- currCol = t.getColumn() ;
- return t ;
- } catch (RiotParseException ex)
- {
+ Token t = peekIter.next();
+ currLine = t.getLine();
+ currCol = t.getColumn();
+ return t;
+ }
+ catch (RiotParseException ex) {
// Intercept to log it.
- raiseException(ex) ;
- throw ex ;
+ raiseException(ex);
+ throw ex;
}
- catch (AtlasException ex)
- {
+ catch (AtlasException ex) {
// Bad I/O
- RiotParseException ex2 = new RiotParseException(ex.getMessage(), -1, -1) ;
- raiseException(ex2) ;
- throw ex2 ;
+ RiotParseException ex2 = new RiotParseException(ex.getMessage(), -1, -1);
+ raiseException(ex2);
+ throw ex2;
}
}
-// protected final Node scopedBNode(Node scopeNode, String label)
-// {
-// return profile.getLabelToNode().get(scopeNode, label) ;
-// }
-//
- protected final void expectOrEOF(String msg, TokenType tokenType)
- {
+ protected final void expectOrEOF(String msg, TokenType tokenType) {
// DOT or EOF
if ( eof() )
- return ;
- expect(msg, tokenType) ;
+ return;
+ expect(msg, tokenType);
}
-
+
protected final void skipIf(TokenType ttype) {
if ( lookingAt(ttype) )
- nextToken() ;
+ nextToken();
}
-
- protected final void expect(String msg, TokenType ttype)
- {
- if ( ! lookingAt(ttype) )
- {
- Token location = peekToken() ;
- exception(location, msg) ;
+
+ protected final void expect(String msg, TokenType ttype) {
+ if ( !lookingAt(ttype) ) {
+ Token location = peekToken();
+ exception(location, msg);
}
- nextToken() ;
+ nextToken();
}
- protected final void exception(Token token, String msg, Object... args)
- {
+ protected final void exception(Token token, String msg, Object... args) {
if ( token != null )
- exceptionDirect(String.format(msg, args), token.getLine(), token.getColumn()) ;
+ exceptionDirect(String.format(msg, args), token.getLine(), token.getColumn());
else
- exceptionDirect(String.format(msg, args), -1, -1) ;
+ exceptionDirect(String.format(msg, args), -1, -1);
}
- protected final void exceptionDirect(String msg, long line, long col)
- {
- raiseException(new RiotParseException(msg, line, col)) ;
+ protected final void exceptionDirect(String msg, long line, long col) {
+ raiseException(new RiotParseException(msg, line, col));
}
-
- protected final void raiseException(RiotParseException ex)
- {
- ErrorHandler errorHandler = profile.getHandler() ;
+
+ protected final void raiseException(RiotParseException ex) {
if ( errorHandler != null )
- errorHandler.fatal(ex.getOriginalMessage(), ex.getLine(), ex.getCol()) ;
- throw ex ;
+ errorHandler.fatal(ex.getOriginalMessage(), ex.getLine(), ex.getCol());
+ throw ex;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java
index 581d028..fafa1e7 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNQuads.java
@@ -115,8 +115,7 @@ public class LangNQuads extends LangNTuple<Quad>
}
@Override
- protected final Node tokenAsNode(Token token)
- {
- return profile.create(currentGraph, token) ;
+ protected final Node tokenAsNode(Token token) {
+ return profile.create(currentGraph, token);
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNTuple.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNTuple.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNTuple.java
index 40768fb..337fd83 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNTuple.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangNTuple.java
@@ -76,7 +76,7 @@ public abstract class LangNTuple<X> extends LangBase implements Iterator<X>
/** Note a tuple not being output */
protected void skipOne(X object, String printForm, long line, long col) {
- profile.getHandler().warning("Skip: " + printForm, line, col);
+ errorHandler.warning("Skip: " + printForm, line, col);
}
protected abstract Node tokenAsNode(Token token) ;
@@ -115,7 +115,7 @@ public abstract class LangNTuple<X> extends LangBase implements Iterator<X>
private void checkString(Token token) {
if ( token.isLongString() )
exception(token, "Triple quoted string not permitted: %s", token) ;
- if ( profile.isStrictMode() && ! token.hasStringType(StringType.STRING2) )
+ if ( isStrictMode && ! token.hasStringType(StringType.STRING2) )
exception(token, "Not a \"\"-quoted string: %s", token);
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
index 0160fa7..e058957 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
@@ -188,7 +188,7 @@ public class LangTriG extends LangTurtleBase {
// = is optional and old style.
if ( lookingAt(EQUALS) ) {
- if ( profile.isStrictMode() )
+ if ( isStrictMode )
exception(token, "Use of = {} is not part of standard TriG: " + graphNode) ;
// Skip.
nextToken() ;
@@ -218,7 +218,7 @@ public class LangTriG extends LangTurtleBase {
if ( lookingAt(RBRACE) )
exception(token, "Expected end of graph: got %s", token) ;
- if ( !profile.isStrictMode() ) {
+ if ( !isStrictMode ) {
// Skip DOT after {}
token = peekToken() ;
if ( lookingAt(DOT) )
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
index 0f13ee1..9673b8b 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
@@ -36,9 +36,7 @@ import static org.apache.jena.riot.tokens.TokenType.SEMICOLON ;
import org.apache.jena.graph.Node ;
import org.apache.jena.graph.NodeFactory ;
import org.apache.jena.iri.IRI ;
-import org.apache.jena.riot.system.ParserProfile ;
-import org.apache.jena.riot.system.Prologue;
-import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.system.*;
import org.apache.jena.riot.tokens.Token ;
import org.apache.jena.riot.tokens.TokenType ;
import org.apache.jena.riot.tokens.Tokenizer ;
@@ -58,6 +56,8 @@ public abstract class LangTurtleBase extends LangBase {
// protected final static boolean CHECKING = true ;
// Current graph - null for default graph
private Node currentGraph = null ;
+
+ protected /*final*/ PrefixMap prefixMap;
public final Node getCurrentGraph() {
return currentGraph ;
@@ -69,9 +69,17 @@ public abstract class LangTurtleBase extends LangBase {
protected LangTurtleBase(Tokenizer tokens, ParserProfile profile, StreamRDF dest) {
super(tokens, profile, dest) ;
+ // Shared with the MakerRDF
+ prefixMap = profile.getPrefixMap();
}
@Override
+ public void setProfile(ParserProfile profile) {
+ super.setProfile(profile);
+ prefixMap = profile.getPrefixMap();
+ }
+
+ @Override
protected final void runParser() {
while (moreTokens()) {
Token t = peekToken() ;
@@ -128,7 +136,7 @@ public abstract class LangTurtleBase extends LangBase {
if ( x.equals("base") ) {
directiveBase() ;
- if ( profile.isStrictMode() )
+ if ( isStrictMode )
// The line number is probably one ahead due to the newline
expect("Base directive not terminated by a dot", DOT) ;
else
@@ -138,7 +146,7 @@ public abstract class LangTurtleBase extends LangBase {
if ( x.equals("prefix") ) {
directivePrefix() ;
- if ( profile.isStrictMode() )
+ if ( isStrictMode )
// The line number is probably one ahead due to the newline
expect("Prefix directive not terminated by a dot", DOT) ;
else
@@ -160,7 +168,7 @@ public abstract class LangTurtleBase extends LangBase {
exception(peekToken(), "@prefix requires an IRI (found '" + peekToken() + "')") ;
String iriStr = peekToken().getImage() ;
IRI iri = profile.makeIRI(iriStr, currLine, currCol) ;
- profile.getPrologue().getPrefixMap().add(prefix, iri) ;
+ prefixMap.add(prefix, iri) ;
emitPrefix(prefix, iri.toString()) ;
nextToken() ;
}
@@ -173,18 +181,12 @@ public abstract class LangTurtleBase extends LangBase {
IRI baseIRI = profile.makeIRI(baseStr, currLine, currCol) ;
emitBase(baseIRI.toString()) ;
nextToken() ;
- //profile.getPrologue().setBaseURI(baseIRI) ;
- // XXX [ParserRDF]
- // This creates a new resolver but MakerRDFStd has a copy of the resolver object
- Prologue prologue = profile.getPrologue();
- prologue.setBaseURI(baseIRI);
- profile.setPrologue(prologue);
+ IRIResolver newResolver = IRIResolver.create(baseIRI) ;
+ profile.setIRIResolver(newResolver);
}
-
-
// Unlike many operations in this parser suite
- // this does not assume that we have definitely
+ // this does not assume that we are definitely
// entering this state. It does checks and may
// signal a parse exception.
@@ -215,7 +217,7 @@ public abstract class LangTurtleBase extends LangBase {
// There must be a predicate and object.
// -- If strict turtle.
- if ( profile.isStrictMode() && maybeList ) {
+ if ( isStrictMode && maybeList ) {
if ( peekPredicate() ) {
predicateObjectList(n) ;
expectEndOfTriples() ;
@@ -264,7 +266,7 @@ public abstract class LangTurtleBase extends LangBase {
// It is not in N3 and SPARQL.
protected void expectEndOfTriplesTurtle() {
- if ( profile.isStrictMode() )
+ if ( isStrictMode )
expect("Triples not terminated by DOT", DOT) ;
else
expectOrEOF("Triples not terminated by DOT", DOT) ;
@@ -301,7 +303,7 @@ public abstract class LangTurtleBase extends LangBase {
Token t = peekToken() ;
if ( t.hasType(TokenType.KEYWORD) ) {
- boolean strict = profile.isStrictMode() ;
+ boolean strict = isStrictMode ;
Token tErr = peekToken() ;
String image = peekToken().getImage() ;
if ( image.equals(KW_A) )
@@ -323,12 +325,11 @@ public abstract class LangTurtleBase extends LangBase {
protected final boolean peekPredicate() {
if ( lookingAt(TokenType.KEYWORD) ) {
String image = peekToken().getImage() ;
- boolean strict = profile.isStrictMode() ;
if ( image.equals(KW_A) )
return true ;
- if ( !strict && image.equals(KW_SAME_AS) )
+ if ( !isStrictMode && image.equals(KW_SAME_AS) )
return true ;
- if ( !strict && image.equals(KW_LOG_IMPLIES) )
+ if ( !isStrictMode && image.equals(KW_LOG_IMPLIES) )
return true ;
return false ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFNULL.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFNULL.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFNULL.java
index e5964c4..29a44af 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFNULL.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFNULL.java
@@ -22,7 +22,6 @@ import java.io.Reader ;
import org.apache.jena.atlas.web.ContentType ;
import org.apache.jena.riot.ReaderRIOT ;
-import org.apache.jena.riot.system.ErrorHandler ;
import org.apache.jena.riot.system.ParserProfile ;
import org.apache.jena.riot.system.StreamRDF ;
import org.apache.jena.sparql.util.Context ;
@@ -36,14 +35,6 @@ public class ReaderRDFNULL implements ReaderRIOT {
public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {}
@Override
- public ErrorHandler getErrorHandler() {
- return null;
- }
-
- @Override
- public void setErrorHandler(ErrorHandler errorHandler) {}
-
- @Override
public ParserProfile getParserProfile() {
return null;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFXML.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFXML.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFXML.java
new file mode 100644
index 0000000..a69c8a4
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRDFXML.java
@@ -0,0 +1,75 @@
+/*
+ * 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 java.io.InputStream ;
+import java.io.Reader ;
+
+import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.riot.ReaderRIOT ;
+import org.apache.jena.riot.SysRIOT;
+import org.apache.jena.riot.system.*;
+import org.apache.jena.sparql.util.Context ;
+
+public class ReaderRDFXML implements ReaderRIOT {
+ private /*final*/ ErrorHandler errorHandler;
+ private /*final*/ MakerRDF maker;
+
+ public ReaderRDFXML(MakerRDF maker, ErrorHandler errorHandler) {
+ this.maker = maker;
+ this.errorHandler = errorHandler;
+ }
+
+ @Override
+ public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
+ baseURI = baseURI_RDFXML(baseURI) ;
+ LangRDFXML parser = LangRDFXML.create(in, baseURI, baseURI, ErrorHandlerFactory.getDefaultErrorHandler(), output) ;
+ parser.parse();
+ }
+
+ @Override
+ public void read(Reader reader, String baseURI, ContentType ct, StreamRDF output, Context context) {
+ baseURI = baseURI_RDFXML(baseURI) ;
+ LangRDFXML parser = LangRDFXML.create(reader, baseURI, baseURI, ErrorHandlerFactory.getDefaultErrorHandler(), output) ;
+ parser.parse();
+ }
+
+ @Override
+ public ParserProfile getParserProfile() {
+ if ( maker instanceof ParserProfile )
+ return (ParserProfile)maker;
+ throw new UnsupportedOperationException() ;
+ }
+
+ @Override
+ public void setParserProfile(ParserProfile profile) {
+ maker = profile ;
+ }
+
+ /** Sort out the base URI for RDF/XML parsing. */
+ private static String baseURI_RDFXML(String baseIRI) {
+ // LangRIOT derived from LangEngine do this in ParserProfile
+ if ( baseIRI == null )
+ return SysRIOT.chooseBaseIRI() ;
+ else
+ // This normalizes the URI.
+ return SysRIOT.chooseBaseIRI(baseIRI) ;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
index e169e30..4c475f3 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
@@ -423,16 +423,6 @@ public class ReaderTriX implements ReaderRIOT {
}
@Override
- public ErrorHandler getErrorHandler() {
- return errorHandler ;
- }
-
- @Override
- public void setErrorHandler(ErrorHandler errorHandler) {
- this.errorHandler = errorHandler;
- }
-
- @Override
public ParserProfile getParserProfile() {
if ( maker instanceof ParserProfile )
return (ParserProfile)maker;
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/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 5b86aa0..b3b278a 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
@@ -18,7 +18,6 @@
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 ;
@@ -29,20 +28,18 @@ import static org.apache.jena.riot.RDFLanguages.TURTLE ;
import java.io.InputStream ;
import java.io.Reader ;
-import java.util.Iterator ;
+import java.util.Iterator;
import org.apache.jena.atlas.io.PeekReader ;
import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
-import org.apache.jena.atlas.lib.CharSpace ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.riot.* ;
-import org.apache.jena.riot.system.ErrorHandlerFactory ;
-import org.apache.jena.riot.system.ParserProfile ;
-import org.apache.jena.riot.system.RiotLib ;
-import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.riot.SysRIOT;
+import org.apache.jena.riot.system.*;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
-import org.apache.jena.sparql.core.Quad ;
+import org.apache.jena.sparql.core.Quad;
/** Use RDFDataMgr operations.
*
@@ -51,151 +48,312 @@ import org.apache.jena.sparql.core.Quad ;
public class RiotParsers {
// package statics -- for the tests to create exactly what they test.
private RiotParsers() {}
-
- /** Create a parser
- * Use {@link RDFDataMgr#createReader(Lang)}
- */
- public static LangRIOT createParser(InputStream input, Lang lang, String baseIRI, StreamRDF dest) {
- if ( lang == RDFXML )
- return createParserRDFXML(input, baseIRI, dest) ;
- 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
- */
- public static LangRIOT createParser(Reader input, Lang lang, String baseIRI, StreamRDF dest) {
- if ( lang == RDFXML )
- return createParserRDFXML(input, baseIRI, dest) ;
- if ( lang == CSV)
- return new LangCSV (input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest);
-
- @SuppressWarnings("deprecation")
- Tokenizer tokenizer = ( lang == RDFJSON ) ?
- new TokenizerJSON(PeekReader.make(input)) :
- TokenizerFactory.makeTokenizer(input) ;
- return createParser(tokenizer, lang, baseIRI, dest) ;
- }
-
- /** Create an iterator for parsing N-Triples. */
- public static Iterator<Triple> createIteratorNTriples(InputStream input, StreamRDF dest) {
- // LangNTriples supports iterator use.
- return createParserNTriples(input, dest) ;
- }
-
- /** Create an iterator for parsing N-Quads. */
- public static Iterator<Quad> createIteratorNQuads(InputStream input, StreamRDF dest) {
- // LangNQuads supports iterator use.
- return createParserNQuads(input, dest) ;
- }
-
- private static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, StreamRDF dest) {
- baseIRI = baseURI_RDFXML(baseIRI) ;
- LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
- return parser ;
- }
-
- private static LangRDFXML createParserRDFXML(Reader input, String baseIRI, StreamRDF dest) {
- baseIRI = baseURI_RDFXML(baseIRI) ;
- LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
- return parser ;
- }
-
-// /*package*/ static LangTurtle createParserTurtle(InputStream input, String baseIRI, StreamRDF dest) {
-// Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-// return createParserTurtle(tokenizer, baseIRI, dest) ;
-// }
-
-// /*package*/ static LangRDFJSON createParserRdfJson(InputStream input, StreamRDF dest) {
-// TokenizerJSON tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input)) ;
-// return createParserRdfJson(tokenizer, dest) ;
-// }
-//
-// /*package*/ static LangTriG createParserTriG(InputStream input, String baseIRI, StreamRDF dest) {
-// Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
-// return createParserTriG(tokenizer, baseIRI, dest) ;
-// }
-//
- private static LangNTriples createParserNTriples(InputStream input, StreamRDF dest) {
- return createParserNTriples(input, CharSpace.UTF8, dest);
- }
-
- private static LangNTriples createParserNTriples(InputStream input, CharSpace charSpace, StreamRDF dest) {
- Tokenizer tokenizer = charSpace == CharSpace.ASCII
- ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input);
- return createParserNTriples(tokenizer, dest) ;
- }
-
- private static LangNQuads createParserNQuads(InputStream input, StreamRDF dest) {
- return createParserNQuads(input, CharSpace.UTF8, dest) ;
- }
-
- private static LangNQuads createParserNQuads(InputStream input, CharSpace charSpace, StreamRDF dest) {
- Tokenizer tokenizer = charSpace == CharSpace.ASCII ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input) ;
- return createParserNQuads(tokenizer, dest) ;
- }
-
- private 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) ;
- return null ;
- }
-
- /*package*/ static LangNTriples createParserNTriples(Tokenizer tokenizer, StreamRDF dest) {
- /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.NTRIPLES, null) ;
- LangNTriples parser = new LangNTriples(tokenizer, profile, dest) ;
- return parser ;
- }
-
- /*package*/ static LangNQuads createParserNQuads(Tokenizer tokenizer, StreamRDF dest) {
- /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.NQUADS, null) ;
- LangNQuads parser = new LangNQuads(tokenizer, profile, dest) ;
- return parser ;
- }
-
- /*package*/ static LangTurtle createParserTurtle(Tokenizer tokenizer, String baseIRI, StreamRDF dest) {
- /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.TURTLE, baseIRI) ;
- LangTurtle parser = new LangTurtle(tokenizer, profile, dest) ;
- return parser ;
- }
-
- /*package*/ static LangTriG createParserTriG(Tokenizer tokenizer, String baseIRI, StreamRDF dest) {
- /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.TRIG, baseIRI);
- LangTriG parser = new LangTriG(tokenizer, profile, dest) ;
- return parser ;
- }
-
- /*package*/ static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, StreamRDF dest) {
- /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.RDFJSON, null);
- LangRDFJSON parser = new LangRDFJSON(tokenizer, profile, dest) ;
- return parser;
- }
-
- /** Sort out the base URI for RDF/XML parsing. */
- private static String baseURI_RDFXML(String baseIRI) {
- // LangRIOT derived from LangEngine do this in ParserProfile
- if ( baseIRI == null )
- return SysRIOT.chooseBaseIRI() ;
- else
- // This normalizes the URI.
- return SysRIOT.chooseBaseIRI(baseIRI) ;
- }
+// // Adapter code.
+// public static LangRIOT createParser2(InputStream input, Lang lang, String baseIRI, StreamRDF dest, ParserProfile profile) {
+// if ( profile instanceof ParserProfileChecker )
+// throw new InternalError("No long used: ParserProfileChecker");
+// if ( profile == null )
+// profile = RiotLib.profile(lang, baseIRI);
+// return createParser2(input, lang, baseIRI, dest, profile.getHandler(), profile);
+// }
+
+ /** InputStream input */
+ public static LangRIOT createParser(InputStream input, Lang lang, String baseIRI, StreamRDF dest, MakerRDF maker) {
+ if ( lang == RDFXML )
+ return createParserRDFXML(input, baseIRI, dest) ;
+ if ( RDFLanguages.sameLang(RDFJSON, lang) ) {
+ Tokenizer tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input));
+ return createParserRdfJson(tokenizer, dest, maker);
+ }
+
+ Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+ if ( RDFLanguages.sameLang(TURTLE, lang) || RDFLanguages.sameLang(N3, lang) )
+ return createParserTurtle(tokenizer, dest, maker) ;
+ if ( RDFLanguages.sameLang(NTRIPLES, lang) )
+ return createParserNTriples(tokenizer, dest, maker) ;
+ if ( RDFLanguages.sameLang(NQUADS, lang) )
+ return createParserNQuads(tokenizer, dest, maker) ;
+ if ( RDFLanguages.sameLang(TRIG, lang) )
+ return createParserTriG(tokenizer, dest, maker) ;
+ return null ;
+ }
+
+ /** Reader input */
+ public static LangRIOT createParser(Reader input, Lang lang, String baseIRI, StreamRDF dest, MakerRDF maker) {
+ if ( lang == RDFXML )
+ return createParserRDFXML(input, baseIRI, dest) ;
+ if ( RDFLanguages.sameLang(RDFJSON, lang) ) {
+ Tokenizer tokenizer = new TokenizerJSON(PeekReader.make(input));
+ return createParserRdfJson(tokenizer, dest, maker);
+ }
+
+ @SuppressWarnings("deprecation")
+ Tokenizer tokenizer = TokenizerFactory.makeTokenizer(input) ;
+ if ( RDFLanguages.sameLang(TURTLE, lang) || RDFLanguages.sameLang(N3, lang) )
+ return createParserTurtle(tokenizer, dest, maker) ;
+ if ( RDFLanguages.sameLang(NTRIPLES, lang) )
+ return createParserNTriples(tokenizer, dest, maker) ;
+ if ( RDFLanguages.sameLang(NQUADS, lang) )
+ return createParserNQuads(tokenizer, dest, maker) ;
+ if ( RDFLanguages.sameLang(TRIG, lang) )
+ return createParserTriG(tokenizer, dest, maker) ;
+ return null ;
+ }
+
+ private static ParserProfile makeParserProfile(MakerRDF maker) {
+ if ( maker instanceof ParserProfile )
+ return (ParserProfile)maker;
+ ParserProfile profile = new ParserProfileBase2(maker.getPrologue(), maker.getErrorHandler(), maker);
+ return profile;
+ }
+
+ // XXX Each "Old World" needs the constructor changing.
+
+ public /* For Elephas */
+ /*package*/ static LangNTriples createParserNTriples(Tokenizer tokenizer, StreamRDF dest, MakerRDF maker) {
+ // XXX Old world. Change LangNTriples(tokenizer, maker, errorHandler, dest);
+ ParserProfile profile = makeParserProfile(maker);
+ LangNTriples parser = new LangNTriples(tokenizer, profile, dest) ;
+ return parser ;
+ }
+
+ public /* For Elephas */
+ /*package*/ static LangNQuads createParserNQuads(Tokenizer tokenizer, StreamRDF dest, MakerRDF maker) {
+ // XXX Old world
+ ParserProfile profile = makeParserProfile(maker);
+ LangNQuads parser = new LangNQuads(tokenizer, profile, dest) ;
+ return parser ;
+ }
+
+ /*package*/ static LangTurtle createParserTurtle(Tokenizer tokenizer, StreamRDF dest, MakerRDF maker) {
+ // XXX Old world
+ ParserProfile profile = makeParserProfile( maker);
+ LangTurtle parser = new LangTurtle(tokenizer, profile, dest) ;
+ return parser ;
+ }
+
+ /*package*/ static LangTriG createParserTriG(Tokenizer tokenizer, StreamRDF dest, MakerRDF maker) {
+ // XXX Old world
+ ParserProfile profile = makeParserProfile( maker);
+ LangTriG parser = new LangTriG(tokenizer, profile, dest) ;
+ return parser ;
+ }
+
+ /*package*/ static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, StreamRDF dest, MakerRDF maker) {
+ // XXX Old world
+ ParserProfile profile = makeParserProfile( maker);
+ LangRDFJSON parser = new LangRDFJSON(tokenizer, profile, dest) ;
+ return parser;
+ }
+
+ /** Create an iterator for parsing N-Triples. */
+ public static Iterator<Triple> createIteratorNTriples(InputStream input, StreamRDF dest) {
+ return createIteratorNTriples(input, dest, RiotLib.dftMakerRDF());
+ }
+
+ /** Create an iterator for parsing N-Triples. */
+ public static Iterator<Triple> createIteratorNTriples(InputStream input, StreamRDF dest, MakerRDF maker) {
+ // LangNTriples supports iterator use.
+ Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+ return createParserNTriples(tokenizer, null, maker) ;
+ }
+
+ /** Create an iterator for parsing N-Quads. */
+ public static Iterator<Quad> createIteratorNQuads(InputStream input, StreamRDF dest) {
+ return createIteratorNQuads(input, dest, RiotLib.dftMakerRDF());
+ }
+
+ /** Create an iterator for parsing N-Quads. */
+ public static Iterator<Quad> createIteratorNQuads(InputStream input, StreamRDF dest, MakerRDF maker) {
+ // LangNQuads supports iterator use.
+ Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+ return createParserNQuads(tokenizer, null, maker) ;
+ }
+
+ private static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, StreamRDF dest) {
+ baseIRI = baseURI_RDFXML(baseIRI) ;
+ LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+ return parser ;
+ }
+
+ private static LangRDFXML createParserRDFXML(Reader input, String baseIRI, StreamRDF dest) {
+ baseIRI = baseURI_RDFXML(baseIRI) ;
+ LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+ return parser ;
+ }
+
+ /** Sort out the base URI for RDF/XML parsing. */
+ private static String baseURI_RDFXML(String baseIRI) {
+ // LangRIOT derived from LangEngine do this in ParserProfile
+ if ( baseIRI == null )
+ return SysRIOT.chooseBaseIRI() ;
+ else
+ // This normalizes the URI.
+ return SysRIOT.chooseBaseIRI(baseIRI) ;
+ }
+
+// /** Create a parser engine.
+// * Use {@link RDFDataMgr#createReader(Lang)}
+// * @Deprecated Do not use - to be removed.
+// */
+// public static LangRIOT createParser(InputStream input, Lang lang, String baseIRI, StreamRDF dest) {
+// return createLangRIOT(input, lang, baseIRI, dest);
+// }
+//
+// /** Create a parser engine.
+// * Use {@link RDFDataMgr#createReader(Lang)}
+// * <b>Not part of the public API.</b>
+// */
+// public static LangRIOT createLangRIOT(InputStream input, Lang lang, String baseIRI, StreamRDF dest) {
+// if ( lang == RDFXML )
+// return createParserRDFXML(input, baseIRI, dest) ;
+// 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 engine
+// * @Deprecated Do not use - to be removed.
+// */
+// public static LangRIOT createParser(Reader input, Lang lang, String baseIRI, StreamRDF dest) {
+// return createLangRIOT(input, lang, baseIRI, dest);
+// }
+//
+// /** Create a parser engine
+// * <b>Not part of the public API.</b>
+// */
+// public static LangRIOT createLangRIOT(Reader input, Lang lang, String baseIRI, StreamRDF dest) {
+// if ( lang == RDFXML )
+// return createParserRDFXML(input, baseIRI, dest) ;
+// if ( lang == CSV)
+// return new LangCSV (input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest);
+//
+// @SuppressWarnings("deprecation")
+// Tokenizer tokenizer = ( lang == RDFJSON ) ?
+// new TokenizerJSON(PeekReader.make(input)) :
+// TokenizerFactory.makeTokenizer(input) ;
+// return createParser(tokenizer, lang, baseIRI, dest) ;
+// }
+//
+// /** Create an iterator for parsing N-Triples. */
+// public static Iterator<Triple> createIteratorNTriples(InputStream input, StreamRDF dest) {
+// // LangNTriples supports iterator use.
+// return createParserNTriples(input, dest) ;
+// }
+//
+// /** Create an iterator for parsing N-Quads. */
+// public static Iterator<Quad> createIteratorNQuads(InputStream input, StreamRDF dest) {
+// // LangNQuads supports iterator use.
+// return createParserNQuads(input, dest) ;
+// }
+//
+// private static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, StreamRDF dest) {
+// baseIRI = baseURI_RDFXML(baseIRI) ;
+// LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+// return parser ;
+// }
+//
+// private static LangRDFXML createParserRDFXML(Reader input, String baseIRI, StreamRDF dest) {
+// baseIRI = baseURI_RDFXML(baseIRI) ;
+// LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ;
+// return parser ;
+// }
+//
+//// /*package*/ static LangTurtle createParserTurtle(InputStream input, String baseIRI, StreamRDF dest) {
+//// Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+//// return createParserTurtle(tokenizer, baseIRI, dest) ;
+//// }
+//
+//// /*package*/ static LangRDFJSON createParserRdfJson(InputStream input, StreamRDF dest) {
+//// TokenizerJSON tokenizer = new TokenizerJSON(PeekReader.makeUTF8(input)) ;
+//// return createParserRdfJson(tokenizer, dest) ;
+//// }
+////
+//// /*package*/ static LangTriG createParserTriG(InputStream input, String baseIRI, StreamRDF dest) {
+//// Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(input) ;
+//// return createParserTriG(tokenizer, baseIRI, dest) ;
+//// }
+////
+// private static LangNTriples createParserNTriples(InputStream input, StreamRDF dest) {
+// return createParserNTriples(input, CharSpace.UTF8, dest);
+// }
+//
+// private static LangNTriples createParserNTriples(InputStream input, CharSpace charSpace, StreamRDF dest) {
+// Tokenizer tokenizer = charSpace == CharSpace.ASCII
+// ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input);
+// return createParserNTriples(tokenizer, dest) ;
+// }
+//
+// private static LangNQuads createParserNQuads(InputStream input, StreamRDF dest) {
+// return createParserNQuads(input, CharSpace.UTF8, dest) ;
+// }
+//
+// private static LangNQuads createParserNQuads(InputStream input, CharSpace charSpace, StreamRDF dest) {
+// Tokenizer tokenizer = charSpace == CharSpace.ASCII ? TokenizerFactory.makeTokenizerASCII(input) : TokenizerFactory.makeTokenizerUTF8(input) ;
+// return createParserNQuads(tokenizer, dest) ;
+// }
+//
+// private 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) ;
+// return null ;
+// }
+//
+// /*package*/ static LangNTriples createParserNTriples(Tokenizer tokenizer, StreamRDF dest) {
+// /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.NTRIPLES, null) ;
+// LangNTriples parser = new LangNTriples(tokenizer, profile, dest) ;
+// return parser ;
+// }
+//
+// /*package*/ static LangNQuads createParserNQuads(Tokenizer tokenizer, StreamRDF dest) {
+// /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.NQUADS, null) ;
+// LangNQuads parser = new LangNQuads(tokenizer, profile, dest) ;
+// return parser ;
+// }
+//
+// /*package*/ static LangTurtle createParserTurtle(Tokenizer tokenizer, String baseIRI, StreamRDF dest) {
+// /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.TURTLE, baseIRI) ;
+// LangTurtle parser = new LangTurtle(tokenizer, profile, dest) ;
+// return parser ;
+// }
+//
+// /*package*/ static LangTriG createParserTriG(Tokenizer tokenizer, String baseIRI, StreamRDF dest) {
+// /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.TRIG, baseIRI);
+// LangTriG parser = new LangTriG(tokenizer, profile, dest) ;
+// return parser ;
+// }
+//
+// /*package*/ static LangRDFJSON createParserRdfJson(Tokenizer tokenizer, StreamRDF dest) {
+// /* XXX */ ParserProfile profile = RiotLib.profile(RDFLanguages.RDFJSON, null);
+// LangRDFJSON parser = new LangRDFJSON(tokenizer, profile, dest) ;
+// return parser;
+// }
+//
+// /** Sort out the base URI for RDF/XML parsing. */
+// private static String baseURI_RDFXML(String baseIRI) {
+// // LangRIOT derived from LangEngine do this in ParserProfile
+// if ( baseIRI == null )
+// return SysRIOT.chooseBaseIRI() ;
+// else
+// // This normalizes the URI.
+// return SysRIOT.chooseBaseIRI(baseIRI) ;
+// }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
index e8e13f5..a9d1f89 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
@@ -18,8 +18,6 @@
package org.apache.jena.riot.resultset;
-import static org.apache.jena.riot.WebContent.contentTypeTextCSV;
-
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.LangBuilder ;
import org.apache.jena.riot.RDFLanguages ;
@@ -39,11 +37,14 @@ public class ResultSetLang {
.addFileExtensions("srj")
.build() ;
- public static final Lang SPARQLResultSetCSV
- = LangBuilder.create("SPARQL-Results-CSV", contentTypeTextCSV)
- .addAltNames("CSV")
- .addFileExtensions("csv")
- .build() ;
+ @SuppressWarnings("deprecation")
+ public static final Lang SPARQLResultSetCSV = Lang.CSV;
+
+// public static final Lang SPARQLResultSetCSV
+// = LangBuilder.create("SPARQL-Results-CSV", contentTypeTextCSV)
+// .addAltNames("CSV")
+// .addFileExtensions("csv")
+// .build() ;
public static final Lang SPARQLResultSetTSV
= LangBuilder.create("SPARQL-Results-TSV", WebContent.contentTypeTextTSV)
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDF.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDF.java
index a58da54..e6d30b3 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDF.java
@@ -42,6 +42,9 @@ public interface MakerRDF {
/** Create an IRI */
public IRI makeIRI(String uriStr, long line, long col);
+ /* Reset the resolver used to process IRIs. */
+ public void setIRIResolver(IRIResolver resolver);
+
/** Create a triple */
public Triple createTriple(Node subject, Node predicate, Node object, long line, long col);
@@ -74,4 +77,14 @@ public interface MakerRDF {
/** Make any node from a token as appropriate */
public Node create(Node currentGraph, Token token);
+
+ /* Return the prefix map, if any, used for mapping tokens into Nodes. */
+ public PrefixMap getPrefixMap();
+
+ /* XXX Temporary [RDFParser] */
+ public Prologue getPrologue();
+
+ /* XXX Temporary [RDFParser] */
+ public ErrorHandler getErrorHandler();
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDFStd.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDFStd.java b/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDFStd.java
index d0f0cd3..83c8c03 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDFStd.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/MakerRDFStd.java
@@ -75,16 +75,11 @@ public class MakerRDFStd implements MakerRDF /*To be removed*/, ParserProfile/*
}
@Deprecated @Override /* ParserProfile - to be removed */
- public ErrorHandler getHandler() {
- return getErrorHandler();
- }
-
- @Deprecated @Override /* ParserProfile - to be removed */
public void setHandler(ErrorHandler handler) {
//Ignore
}
- // XXX @Override?
+ @Override
public ErrorHandler getErrorHandler() {
return errorHandler;
}
@@ -120,6 +115,11 @@ public class MakerRDFStd implements MakerRDF /*To be removed*/, ParserProfile/*
}
@Override
+ public void setIRIResolver(IRIResolver resolver) {
+ this.resolver = resolver;
+ }
+
+ @Override
public IRI makeIRI(String uriStr, long line, long col) {
IRI iri = resolver.resolveSilent(uriStr);
// Some specific problems and specific error messages,.
@@ -267,6 +267,11 @@ public class MakerRDFStd implements MakerRDF /*To be removed*/, ParserProfile/*
}
}
+ @Override
+ public PrefixMap getPrefixMap() {
+ return prefixMap;
+ }
+
private String expandPrefixedName(String prefix, String localPart, Token token) {
String expansion = prefixMap.expand(prefix, localPart);
if ( expansion == null ) {
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
index a82194d..e8dba6e 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
@@ -54,9 +54,13 @@ public interface ParserProfile extends MakerRDF
// /** Make any node from a token as appropriate */
// public Node create(Node currentGraph, Token token) ;
- public ErrorHandler getHandler() ;
+ public default ErrorHandler getHandler() { return getErrorHandler(); }
+
+ @Override
+ public ErrorHandler getErrorHandler() ;
public void setHandler(ErrorHandler handler) ;
+ @Override
public Prologue getPrologue() ;
public void setPrologue(Prologue prologue) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java
index 1c837c6..a61e1f5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase.java
@@ -57,7 +57,7 @@ public class ParserProfileBase implements ParserProfile {
}
@Override
- public ErrorHandler getHandler() {
+ public ErrorHandler getErrorHandler() {
return errorHandler ;
}
@@ -80,6 +80,11 @@ public class ParserProfileBase implements ParserProfile {
public String resolveIRI(String uriStr, long line, long col) {
return prologue.getResolver().resolveToString(uriStr) ;
}
+
+ @Override
+ public void setIRIResolver(IRIResolver resolver) {
+ prologue.setBaseURI(resolver);
+ }
@Override
public IRI makeIRI(String uriStr, long line, long col) {
@@ -142,6 +147,11 @@ public class ParserProfileBase implements ParserProfile {
return create(this, currentGraph, token) ;
}
+ @Override
+ public PrefixMap getPrefixMap() {
+ return prologue.getPrefixMap();
+ }
+
private static Node create(ParserProfile pp, Node currentGraph, Token token) {
// Dispatches to the underlying ParserProfile operation
long line = token.getLine() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase2.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase2.java b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase2.java
new file mode 100644
index 0000000..844ddbd
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfileBase2.java
@@ -0,0 +1,225 @@
+/*
+ * 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.system ;
+
+import java.util.Objects ;
+
+import org.apache.jena.datatypes.RDFDatatype ;
+import org.apache.jena.datatypes.xsd.XSDDatatype ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.graph.Triple ;
+import org.apache.jena.iri.IRI ;
+import org.apache.jena.query.ARQ ;
+import org.apache.jena.riot.RiotException ;
+import org.apache.jena.riot.SysRIOT ;
+import org.apache.jena.riot.tokens.Token ;
+import org.apache.jena.riot.tokens.TokenType ;
+import org.apache.jena.sparql.core.Quad ;
+
+/**
+ * Basic profile of things, with key operations based on a simple use of the
+ * parse elements into Nodes
+ */
+public class ParserProfileBase2 implements ParserProfile {
+ protected ErrorHandler errorHandler ;
+ protected Prologue prologue ;
+ protected boolean strictMode = SysRIOT.isStrictMode() ;
+ protected MakerRDF factory ;
+
+ public ParserProfileBase2(Prologue prologue, ErrorHandler errorHandler, MakerRDF factory) {
+ Objects.requireNonNull(prologue) ;
+ Objects.requireNonNull(errorHandler) ;
+ Objects.requireNonNull(factory) ;
+ this.prologue = prologue ;
+ this.errorHandler = errorHandler ;
+ this.factory = factory ;
+ }
+
+ @Override
+ public ErrorHandler getErrorHandler() {
+ return errorHandler ;
+ }
+
+ @Override
+ public void setHandler(ErrorHandler handler) {
+ errorHandler = handler ;
+ }
+
+ @Override
+ public Prologue getPrologue() {
+ return prologue ;
+ }
+
+ @Override
+ public void setPrologue(Prologue p) {
+ prologue = p ;
+ }
+
+ @Override
+ public String resolveIRI(String uriStr, long line, long col) {
+ return prologue.getResolver().resolveToString(uriStr) ;
+ }
+
+ @Override
+ public void setIRIResolver(IRIResolver resolver) {
+ prologue.setBaseURI(resolver);
+ }
+
+ @Override
+ public IRI makeIRI(String uriStr, long line, long col) {
+ return prologue.getResolver().resolve(uriStr) ;
+ }
+
+ @Override
+ public Quad createQuad(Node g, Node s, Node p, Node o, long line, long col) {
+ return factory.createQuad(g, s, p, o, line, col);
+ }
+
+ @Override
+ public Triple createTriple(Node s, Node p, Node o, long line, long col) {
+ return factory.createTriple(s, p, o, line, col);
+ }
+
+ @Override
+ public Node createURI(String uriStr, long line, long col) {
+ return factory.createURI(uriStr, line, col);
+ }
+
+ @Override
+ public Node createBlankNode(Node scope, String label, long line, long col) {
+ return factory.createBlankNode(scope, label, line, col);
+ }
+
+ @Override
+ public Node createBlankNode(Node scope, long line, long col) {
+ return factory.createBlankNode(scope, line, col);
+ }
+
+ @Override
+ public Node createTypedLiteral(String lexical, RDFDatatype dt, long line, long col) {
+ return factory.createTypedLiteral(lexical, dt, line, col);
+ }
+
+ @Override
+ public Node createLangLiteral(String lexical, String langTag, long line, long col) {
+ return factory.createLangLiteral(lexical, langTag, line, col);
+ }
+
+ @Override
+ public Node createStringLiteral(String lexical, long line, long col) {
+ return factory.createStringLiteral(lexical, line, col);
+ }
+
+ /** Special token forms */
+ @Override
+ public Node createNodeFromToken(Node scope, Token token, long line, long col) {
+ // OFF - Don't produce Node.ANY by default.
+ if (false && token.getType() == TokenType.KEYWORD) {
+ if (Token.ImageANY.equals(token.getImage()))
+ return Node.ANY ;
+ }
+ return null ;
+ }
+
+ @Override
+ public Node create(Node currentGraph, Token token) {
+ return create(this, currentGraph, token) ;
+ }
+
+ @Override
+ public PrefixMap getPrefixMap() {
+ return prologue.getPrefixMap();
+ }
+
+ private static Node create(ParserProfile pp, Node currentGraph, Token token) {
+ // Dispatches to the underlying ParserProfile operation
+ long line = token.getLine() ;
+ long col = token.getColumn() ;
+ String str = token.getImage() ;
+ switch (token.getType()) {
+ case BNODE :
+ return pp.createBlankNode(currentGraph, str, line, col) ;
+ case IRI :
+ return pp.createURI(str, line, col) ;
+ case PREFIXED_NAME : {
+ String prefix = str ;
+ String suffix = token.getImage2() ;
+ String expansion = expandPrefixedName(pp, prefix, suffix, token) ;
+ return pp.createURI(expansion, line, col) ;
+ }
+ case DECIMAL :
+ return pp.createTypedLiteral(str, XSDDatatype.XSDdecimal, line, col) ;
+ case DOUBLE :
+ return pp.createTypedLiteral(str, XSDDatatype.XSDdouble, line, col) ;
+ case INTEGER :
+ return pp.createTypedLiteral(str, XSDDatatype.XSDinteger, line, col) ;
+ case LITERAL_DT : {
+ Token tokenDT = token.getSubToken2() ;
+ String uriStr ;
+
+ switch (tokenDT.getType()) {
+ case IRI :
+ uriStr = tokenDT.getImage() ;
+ break ;
+ case PREFIXED_NAME : {
+ String prefix = tokenDT.getImage() ;
+ String suffix = tokenDT.getImage2() ;
+ uriStr = expandPrefixedName(pp, prefix, suffix, tokenDT) ;
+ break ;
+ }
+ default :
+ throw new RiotException("Expected IRI for datatype: " + token) ;
+ }
+
+ uriStr = pp.resolveIRI(uriStr, tokenDT.getLine(), tokenDT.getColumn()) ;
+ RDFDatatype dt = NodeFactory.getType(uriStr) ;
+ return pp.createTypedLiteral(str, dt, line, col) ;
+ }
+
+ case LITERAL_LANG :
+ return pp.createLangLiteral(str, token.getImage2(), line, col) ;
+
+ case STRING :
+ return pp.createStringLiteral(str, line, col) ;
+ default : {
+ Node x = pp.createNodeFromToken(currentGraph, token, line, col) ;
+ if (x != null)
+ return x ;
+ pp.getHandler().fatal("Not a valid token for an RDF term: " + token, line, col) ;
+ return null ;
+ }
+ }
+ }
+
+ private static String expandPrefixedName(ParserProfile pp, String prefix, String localPart, Token token) {
+ String expansion = pp.getPrologue().getPrefixMap().expand(prefix, localPart) ;
+ if (expansion == null) {
+ if ( ARQ.isTrue(ARQ.fixupUndefinedPrefixes) )
+ return RiotLib.fixupPrefixIRI(prefix, localPart) ;
+ pp.getHandler().fatal("Undefined prefix: " + prefix, token.getLine(), token.getColumn()) ;
+ }
+ return expansion ;
+ }
+
+ @Override
+ public boolean isStrictMode() {
+ return strictMode ;
+ }
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java b/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
index 67524e4..75a5fdc 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/RiotLib.java
@@ -203,16 +203,21 @@ public class RiotLib
return factoryRDF(SyntaxLabels.createLabelToNode());
}
- /** Create an {@link MakerRDF} with default settings. */
+ /** Create a {@link MakerRDF} with default settings. */
public static MakerRDF dftMakerRDF() {
+ return dftMakerRDF(ErrorHandlerFactory.errorHandlerStd);
+ }
+
+ /** Create a {@link MakerRDF} with default settings, and a specific error handler. */
+ public static MakerRDF dftMakerRDF(ErrorHandler errorHandler) {
return new MakerRDFStd(RiotLib.factoryRDF(),
- ErrorHandlerFactory.errorHandlerStd,
+ errorHandler,
IRIResolver.create(),
PrefixMapFactory.createForInput(),
RIOT.getContext().copy(),
true, false) ;
}
-
+
/** Get triples with the same subject */
public static Collection<Triple> triplesOfSubject(Graph graph, Node subj) {
return triples(graph, subj, Node.ANY, Node.ANY) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
index 1b61563..05236f6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
@@ -96,7 +96,7 @@ public class BindingInputStream extends LangEngine implements Iterator<Binding>,
private BindingInputStream(Tokenizer tokenizer, ParserProfile profile)
{
- super(tokenizer, profile) ;
+ super(tokenizer, profile, profile.getHandler()) ;
iter = new IteratorTuples() ;
}
@@ -244,7 +244,7 @@ public class BindingInputStream extends LangEngine implements Iterator<Binding>,
exception(peekToken(), "@prefix requires an IRI (found '"+peekToken()+"')") ;
String iriStr = peekToken().getImage() ;
IRI iri = profile.makeIRI(iriStr, currLine, currCol) ;
- profile.getPrologue().getPrefixMap().add(prefix, iri) ;
+ profile.getPrefixMap().add(prefix, iri) ;
nextToken() ;
expect("PREFIX directive not terminated by a dot", DOT) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/test/java/org/apache/jena/riot/ErrorHandlerTestLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/ErrorHandlerTestLib.java b/jena-arq/src/test/java/org/apache/jena/riot/ErrorHandlerTestLib.java
index 9e48127..feca07f 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/ErrorHandlerTestLib.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/ErrorHandlerTestLib.java
@@ -34,6 +34,8 @@ public class ErrorHandlerTestLib
public static class ErrorHandlerEx implements ErrorHandler
{
+ public ErrorHandlerEx() {}
+
@Override
public void warning(String message, long line, long col)
{ throw new ExWarning(message) ; }
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangCSV.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangCSV.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangCSV.java
index aa34376..1b8c7e4 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangCSV.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangCSV.java
@@ -73,9 +73,10 @@ public class TestLangCSV extends BaseTest {
assertIsomorphicWith(s1, s2);
}
+ @SuppressWarnings("deprecation")
@Test
public void RDFDataMgrReadTest() {
- Model m1 = RDFDataMgr.loadModel(FILE_NAME, RDFLanguages.CSV);
+ Model m1 = RDFDataMgr.loadModel(FILE_NAME, RDFLanguages.CSV);
Model m2 = ModelFactory.createDefaultModel();
m2.read(FILE_NAME, "CSV");
assertEquals(12, m1.size());
@@ -90,6 +91,7 @@ public class TestLangCSV extends BaseTest {
return model;
}
+ @SuppressWarnings("deprecation")
private void assertIsomorphicWith(String[] s1, String[] s2){
Model m1 = parseToModel(s1, RDFLanguages.CSV);
Model m2 = parseToModel(s2, RDFLanguages.TURTLE);
http://git-wip-us.apache.org/repos/asf/jena/blob/1f90685f/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java
index 5377522..d993ea9 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestLangNTriples.java
@@ -24,14 +24,10 @@ import org.apache.jena.atlas.lib.CharSpace ;
import org.apache.jena.graph.Graph ;
import org.apache.jena.rdf.model.Model ;
import org.apache.jena.rdf.model.ModelFactory ;
-import org.apache.jena.riot.ErrorHandlerTestLib.ErrorHandlerEx ;
import org.apache.jena.riot.ErrorHandlerTestLib.ExFatal ;
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.RDFDataMgr ;
import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.RiotException ;
-import org.apache.jena.riot.system.StreamRDFLib ;
-import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.sparql.sse.SSE ;
import org.junit.Test ;
@@ -94,21 +90,11 @@ public class TestLangNTriples extends TestLangNTuples
return ParserTestBaseLib.parseCount(Lang.NTRIPLES, strings) ;
}
- @Test(expected = RiotException.class)
+ @Test(expected = ExFatal.class)
public void nt_only_5b() {
parseCount(CharSpace.ASCII, "<x> <p> \"�\" .");
}
- private long parseCount(CharSpace charSpace, String... strings) {
- String string = String.join("\n", strings);
- Tokenizer tokenizer = tokenizer(charSpace, string);
- StreamRDFCounting sink = StreamRDFLib.count();
- LangNTriples x = RiotParsers.createParserNTriples(tokenizer, sink);
- x.getProfile().setHandler(new ErrorHandlerEx());
- x.parse();
- return sink.count();
- }
-
protected Model parseToModel(String string) {
StringReader r = new StringReader(string);
Model model = ModelFactory.createDefaultModel();