Class TurtleParser
java.lang.Object
org.eclipse.rdf4j.rio.helpers.AbstractRDFParser
org.eclipse.rdf4j.rio.turtle.TurtleParser
- All Implemented Interfaces:
RDFParser
- Direct Known Subclasses:
N3Parser, TriGParser, TurtleStarParser
RDF parser for RDF-1.1 Turtle files. This parser is not thread-safe,
therefore its public methods are synchronized.
Normalization of integer, floating point and boolean values is dependent on the specified datatype handling.
According to the specification, integers and booleans should be normalized, but floats don't.
Comments can be used anywhere in the document, and extend to the end of the line. The Turtle grammar doesn't
allow comments to be used inside triple constructs that extend over multiple lines, but the author's own parser
deviates from this too.
- Author:
- Arjohn Kampman, Peter Ansell
-
Field Summary
FieldsFields inherited from class AbstractRDFParser
rdfHandler, valueFactoryModifier and TypeFieldDescriptionprotected RDFHandlerThe RDFHandler that will handle the parsed RDF.protected ValueFactoryThe ValueFactory to use for creating RDF model objects. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new TurtleParser that will use aSimpleValueFactoryto create RDF model objects.TurtleParser(ValueFactory valueFactory) Creates a new TurtleParser that will use the supplied ValueFactory to create RDF model objects. -
Method Summary
Modifier and TypeMethodDescriptionprotected intGets the RDF format that this parser can parse.Collection<RioSetting<?>> voidparse(InputStream in, String baseURI) Parses the data from the supplied InputStream, using the supplied baseURI to resolve any relative URI references.voidParses the data from the supplied Reader, using the supplied baseURI to resolve any relative URI references.protected voidprotected voidprotected ResourceParses a collection, e.g.protected voidparseDirective(String directive) protected ResourceParses an implicit blank node.protected StringparseLongString(int closingCharacter) Parses a """long string""".protected ResourceParses a blank node ID, e.g.protected Literalprotected voidParse an objectprotected voidprotected IRIprotected voidprotected voidprotected ValueParses qnames and boolean values, which have equivalent starting characters.protected LiteralParses a quoted string, optionally followed by a language tag or datatype.protected StringParses a quoted string, which is either a "normal string" or a """long string""".protected voidprotected StringparseString(int closingCharacter) Parses a "normal string".protected voidprotected voidprotected TripleParser an RDF-star triple value and returns it.protected IRIparseURI()protected ValueParses an RDF value.protected intPeeks at the next Unicode code point without advancing the reader, and returns its value.protected booleanPeeks at the next two Unicode code points without advancing the reader and returns true if they indicate the start of an RDF-star triple value.protected voidConsumes characters from reader until the first EOL has been read.protected intReads the next Unicode code point.protected voidreportError(String msg, RioSetting<Boolean> setting) OverridesAbstractRDFParser.reportError(String, RioSetting), adding line number information to the error.protected voidOverridesAbstractRDFParser.reportFatalError(Exception), adding line number information to the error.protected voidreportFatalError(String msg) OverridesAbstractRDFParser.reportFatalError(String), adding line number information to the error.protected voidprotected voidreportStatement(Resource subj, IRI pred, Value obj) protected voidreportWarning(String msg) OverridesAbstractRDFParser.reportWarning(String), adding line number information to the error.protected intskipWSC()Consumes any white space characters (space, tab, line feed, newline) and comments (#-style) from reader.protected voidprotected voidunread(int codePoint) Pushes back a single code point by copying it to the front of the buffer.protected voidPushes back the supplied string by copying it to the front of the buffer.protected voidverifyCharacterOrFail(int codePoint, String expected) Verifies that the supplied character code point codePoint is one of the expected characters specified in expected.Methods inherited from class AbstractRDFParser
clear, clearBNodeIDMap, createBNode, createBNode, createLiteral, createLiteral, createLiteral, createNode, createNode, createStatement, createStatement, createURI, getNamespace, getParseErrorListener, getParseLocationListener, getParserConfig, getRDFHandler, initializeNamespaceTableFromConfiguration, preserveBNodeIDs, reportError, reportError, reportError, reportError, reportFatalError, reportFatalError, reportFatalError, reportLocation, reportWarning, resolveURI, set, setBaseURI, setBaseURI, setNamespace, setParseErrorListener, setParseLocationListener, setParserConfig, setPreserveBNodeIDs, setRDFHandler, setValueFactoryModifier and TypeMethodDescriptionprotected voidclear()Clears any information that has been collected while parsing.protected voidDeprecated.protected BNodeDeprecated.protected BNodecreateBNode(String nodeID) Deprecated.protected LiteralcreateLiteral(String label, String lang, CoreDatatype datatype, long lineNo, long columnNo) Creates aLiteralobject with the supplied parameters, using the lineNo and columnNo to enhance error messages or exceptions that may be generated during the creation of the literal.protected LiteralcreateLiteral(String label, String lang, IRI datatype) Creates aLiteralobject with the supplied parameters.protected LiteralcreateLiteral(String label, String lang, IRI datatype, long lineNo, long columnNo) Creates aLiteralobject with the supplied parameters, using the lineNo and columnNo to enhance error messages or exceptions that may be generated during the creation of the literal.protected Resourceprotected ResourcecreateNode(String nodeID) protected StatementcreateStatement(Resource subj, IRI pred, Value obj) Creates a newStatementobject with the supplied components.protected StatementcreateStatement(Resource subj, IRI pred, Value obj, Resource context) Creates a newStatementobject with the supplied components.protected IRICreates aIRIobject for the specified URI-string.protected StringgetNamespace(String prefix) Gets the namespace that is associated with the specified prefix or throws anRDFParseException.Retrieves the current parser configuration as a single object.protected voidbooleanprotected voidreportError(Exception e, long lineNo, long columnNo, RioSetting<Boolean> relevantSetting) Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.protected voidreportError(Exception e, RioSetting<Boolean> relevantSetting) Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.protected voidreportError(String msg, long lineNo, long columnNo, RioSetting<Boolean> relevantSetting) Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.protected voidreportError(String msg, Exception e, long lineNo, long columnNo, RioSetting<Boolean> relevantSetting) Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.protected voidreportFatalError(Exception e, long lineNo, long columnNo) Reports a fatal error with associated line- and column number to the registered ParseErrorListener, if any, and throws a ParseException wrapped the supplied exception afterwards.protected voidreportFatalError(String msg, long lineNo, long columnNo) Reports a fatal error with associated line- and column number to the registered ParseErrorListener, if any, and throws a ParseException afterwards.protected voidreportFatalError(String message, Exception e, long lineNo, long columnNo) Reports a fatal error with associated line- and column number to the registered ParseErrorListener, if any, and throws a ParseException wrapped the supplied exception afterwards.protected voidreportLocation(long lineNo, long columnNo) Reports the specified line- and column number to the registeredParseLocationListener, if any.protected voidreportWarning(String msg, long lineNo, long columnNo) Reports a warning with associated line- and column number to the registered ParseErrorListener, if any.protected IRIresolveURI(String uriSpec) Resolves a URI-string against the base URI and creates aIRIobject for it.<T> RDFParserset(RioSetting<T> setting, T value) Set a setting on the parser, and return this parser object to allow chaining.protected voidsetBaseURI(String uriSpec) Parses the supplied URI-string and sets it as the base URI for resolving relative URIs.protected voidsetBaseURI(ParsedIRI baseURI) Sets the base URI for resolving relative URIs.protected voidsetNamespace(String prefix, String namespace) Associates the specified prefix to the specified namespace.Sets the ParseErrorListener that will be notified of any errors that this parser finds during parsing.Sets the ParseLocationListener that will be notified of the parser's progress during the parse process.setParserConfig(ParserConfig config) Sets all supplied parser configuration options.voidsetPreserveBNodeIDs(boolean preserveBNodeIDs) Set whether the parser should preserve bnode identifiers specified in the source (default is false).setRDFHandler(RDFHandler handler) Sets the RDFHandler that will handle the parsed RDF data.setValueFactory(ValueFactory valueFactory) Sets the ValueFactory that the parser will use to create Value objects for the parsed RDF data.
-
Field Details
-
subject
-
predicate
-
object
-
-
Constructor Details
-
TurtleParser
public TurtleParser()Creates a new TurtleParser that will use aSimpleValueFactoryto create RDF model objects. -
TurtleParser
Creates a new TurtleParser that will use the supplied ValueFactory to create RDF model objects.- Parameters:
valueFactory- A ValueFactory.
-
-
Method Details
-
getRDFFormat
-
getSupportedSettings
- Specified by:
getSupportedSettingsin interfaceRDFParser- Overrides:
getSupportedSettingsin classAbstractRDFParser- Returns:
- A collection of
RioSettings that are supported by this RDFParser.
-
parse
public void parse(InputStream in, String baseURI) throws IOException, RDFParseException, RDFHandlerException Description copied from interface:RDFParserParses the data from the supplied InputStream, using the supplied baseURI to resolve any relative URI references.- Parameters:
in- The InputStream from which to read the data.baseURI- The URI associated with the data in the InputStream. May benull. Parsers for syntax formats that do not support relative URIs will ignore this argument.Note that if the data contains an embedded base URI, that embedded base URI will overrule the value supplied here (see RFC 3986 section 5.1 for details).
- Throws:
IOException- If an I/O error occurred while data was read from the InputStream.RDFParseException- If the parser has found an unrecoverable parse error.RDFHandlerException- If the configured statement handler has encountered an unrecoverable error.
-
parse
public void parse(Reader reader, String baseURI) throws IOException, RDFParseException, RDFHandlerException Description copied from interface:RDFParserParses the data from the supplied Reader, using the supplied baseURI to resolve any relative URI references.- Parameters:
reader- The Reader from which to read the data.baseURI- The URI associated with the data in the InputStream. May benull. Parsers for syntax formats that do not support relative URIs will ignore this argument.Note that if the data contains an embedded base URI, that embedded base URI will overrule the value supplied here (see RFC 3986 section 5.1 for details).
- Throws:
IOException- If an I/O error occurred while data was read from the InputStream.RDFParseException- If the parser has found an unrecoverable parse error.RDFHandlerException- If the configured statement handler has encountered an unrecoverable error.
-
parseStatement
-
parseDirective
protected void parseDirective(String directive) throws IOException, RDFParseException, RDFHandlerException -
parsePrefixID
-
parseBase
-
parseTriples
-
parsePredicateObjectList
protected void parsePredicateObjectList() throws IOException, RDFParseException, RDFHandlerException -
parseObjectList
-
parseSubject
-
parsePredicate
-
parseObject
Parse an object -
parseCollection
Parses a collection, e.g. ( item1 item2 item3 ). -
parseImplicitBlank
Parses an implicit blank node. This method parses the token [] and predicateObjectLists that are surrounded by square brackets. -
parseValue
Parses an RDF value. This method parses uriref, qname, node ID, quoted literal, integer, double and boolean. -
parseQuotedLiteral
Parses a quoted string, optionally followed by a language tag or datatype. -
parseQuotedString
Parses a quoted string, which is either a "normal string" or a """long string""".- Returns:
- string
- Throws:
IOExceptionRDFParseException
-
parseString
Parses a "normal string". This method requires that the opening character has already been parsed.- Returns:
- parsed string
- Throws:
IOExceptionRDFParseException
-
parseLongString
Parses a """long string""". This method requires that the first three characters have already been parsed.- Throws:
IOExceptionRDFParseException
-
parseNumber
- Throws:
IOExceptionRDFParseException
-
parseURI
- Throws:
IOExceptionRDFParseException
-
parseQNameOrBoolean
Parses qnames and boolean values, which have equivalent starting characters.- Throws:
IOExceptionRDFParseException
-
parseNodeID
Parses a blank node ID, e.g. _:node1.- Throws:
IOExceptionRDFParseException
-
reportStatement
protected void reportStatement(Resource subj, IRI pred, Value obj) throws RDFParseException, RDFHandlerException - Throws:
RDFParseExceptionRDFHandlerException
-
verifyCharacterOrFail
Verifies that the supplied character code point codePoint is one of the expected characters specified in expected. This method will throw a ParseException if this is not the case.- Throws:
RDFParseException
-
skipWSC
Consumes any white space characters (space, tab, line feed, newline) and comments (#-style) from reader. After this method has been called, the first character that is returned by reader is either a non-ignorable character, or EOF. For convenience, this character is also returned by this method.- Returns:
- The next character code point that will be returned by reader.
- Throws:
IOExceptionRDFHandlerException
-
processComment
Consumes characters from reader until the first EOL has been read. This line of text is then passed to theAbstractRDFParser.rdfHandleras a comment.- Throws:
IOExceptionRDFHandlerException
-
readCodePoint
Reads the next Unicode code point.- Returns:
- the next Unicode code point, or -1 if the end of the stream has been reached.
- Throws:
IOException
-
unread
Pushes back a single code point by copying it to the front of the buffer. After this method returns, a call toreadCodePoint()will return the same code point c again.- Parameters:
codePoint- a single Unicode code point.- Throws:
IOException
-
unread
Pushes back the supplied string by copying it to the front of the buffer. After this method returns, successive calls toreadCodePoint()will return the code points in the supplied string again, starting at the first in the String..- Parameters:
string- the string to un-read.- Throws:
IOException
-
peekCodePoint
Peeks at the next Unicode code point without advancing the reader, and returns its value.- Returns:
- the next Unicode code point, or -1 if the end of the stream has been reached.
- Throws:
IOException
-
reportLocation
protected void reportLocation() -
reportWarning
OverridesAbstractRDFParser.reportWarning(String), adding line number information to the error.- Overrides:
reportWarningin classAbstractRDFParser
-
reportError
OverridesAbstractRDFParser.reportError(String, RioSetting), adding line number information to the error.- Overrides:
reportErrorin classAbstractRDFParser- Parameters:
msg- The message to use forParseErrorListener.error(String, long, long)and forRDFParseException(String, long, long).setting- The boolean setting that will be checked to determine if this is an issue that we need to look at at all. If this setting is true, then the error listener will receive the error, and ifParserConfig.isNonFatalError(RioSetting)returns true an exception will be thrown.- Throws:
RDFParseException- IfRioConfig.get(RioSetting)returns true, andParserConfig.isNonFatalError(RioSetting)returns true for the given setting.
-
reportFatalError
OverridesAbstractRDFParser.reportFatalError(String), adding line number information to the error.- Overrides:
reportFatalErrorin classAbstractRDFParser- Throws:
RDFParseException
-
reportFatalError
OverridesAbstractRDFParser.reportFatalError(Exception), adding line number information to the error.- Overrides:
reportFatalErrorin classAbstractRDFParser- Throws:
RDFParseException
-
throwEOFException
- Throws:
RDFParseException
-
getLineNumber
protected int getLineNumber() -
peekIsTripleValue
Peeks at the next two Unicode code points without advancing the reader and returns true if they indicate the start of an RDF-star triple value. Such values start with 'invalid input: '<'invalid input: '<''.- Returns:
- true if the next code points indicate the beginning of an RDF-star triple value, false otherwise
- Throws:
IOException
-
parseTripleValue
Parser an RDF-star triple value and returns it.- Returns:
- An RDF-star triple.
- Throws:
IOException
-
parseAnnotation
- Throws:
IOException
-
AbstractRDFParser.clear()instead.