Package org.eclipse.rdf4j.rio.helpers

## Class AbstractRDFParser

- java.lang.Object
- - org.eclipse.rdf4j.rio.helpers.AbstractRDFParser

- All Implemented Interfaces:
    `RDFParser`
  Direct Known Subclasses:
    `BinaryRDFParser`, `HDTParser`, `JSONLDParser`, `NTriplesParser`, `RDFJSONParser`, `TurtleParser`, `XMLReaderBasedParser`

      public abstract class AbstractRDFParser
      extends Object
      implements RDFParser

  Base class for `RDFParser`s offering common functionality for RDF parsers.
  Author:
    Arjohn Kampman

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected RDFHandler` | `rdfHandler` | The RDFHandler that will handle the parsed RDF.
    `protected ValueFactory` | `valueFactory` | The ValueFactory to use for creating RDF model objects.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `AbstractRDFParser()` | Creates a new RDFParserBase that will use a `SimpleValueFactory` to create RDF model objects.
    `protected` | `AbstractRDFParser​(ValueFactory valueFactory)` | Creates a new RDFParserBase that will use the supplied ValueFactory to create RDF model objects.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `clear()` | Clears any information that has been collected while parsing.
    `protected void` | `clearBNodeIDMap()` | Deprecated. Map is no longer used, call `clear()` instead.
    `protected BNode` | `createBNode()` | Deprecated.
    `protected BNode` | `createBNode​(String nodeID)` | Deprecated.
    `protected Literal` | `createLiteral​(String label, String lang, IRI datatype)` | Creates a `Literal` object with the supplied parameters.
    `protected Literal` | `createLiteral​(String label, String lang, IRI datatype, long lineNo, long columnNo)` | Creates a `Literal` object 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 Resource` | `createNode()` | Creates a new `BNode` or Skolem `IRI` object.
    `protected Resource` | `createNode​(String nodeID)` | Creates a `BNode` or Skolem `IRI` object for the specified identifier.
    `protected Statement` | `createStatement​(Resource subj, IRI pred, Value obj)` | Creates a new `Statement` object with the supplied components.
    `protected Statement` | `createStatement​(Resource subj, IRI pred, Value obj, Resource context)` | Creates a new `Statement` object with the supplied components.
    `protected IRI` | `createURI​(String uri)` | Creates a `IRI` object for the specified URI-string.
    `protected String` | `getNamespace​(String prefix)` | Gets the namespace that is associated with the specified prefix or throws an `RDFParseException`.
    `ParseErrorListener` | `getParseErrorListener()` |
    `ParseLocationListener` | `getParseLocationListener()` |
    `ParserConfig` | `getParserConfig()` | Retrieves the current parser configuration as a single object.
    `RDFHandler` | `getRDFHandler()` |
    `Collection<RioSetting<?>>` | `getSupportedSettings()` |
    `protected void` | `initializeNamespaceTableFromConfiguration()` |
    `boolean` | `preserveBNodeIDs()` |
    `protected void` | `reportError​(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 void` | `reportError​(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 void` | `reportError​(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 void` | `reportError​(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 void` | `reportError​(String msg, 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 void` | `reportFatalError​(Exception e)` | Reports a fatal error to the registered ParseErrorListener, if any, and throws a ParseException afterwards.
    `protected void` | `reportFatalError​(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 void` | `reportFatalError​(String msg)` | Reports a fatal error to the registered ParseErrorListener, if any, and throws a ParseException afterwards.
    `protected void` | `reportFatalError​(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 void` | `reportFatalError​(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 void` | `reportLocation​(long lineNo, long columnNo)` | Reports the specified line- and column number to the registered `ParseLocationListener`, if any.
    `protected void` | `reportWarning​(String msg)` | Reports a warning to the registered ParseErrorListener, if any.
    `protected void` | `reportWarning​(String msg, long lineNo, long columnNo)` | Reports a warning with associated line- and column number to the registered ParseErrorListener, if any.
    `protected IRI` | `resolveURI​(String uriSpec)` | Resolves a URI-string against the base URI and creates a `IRI` object for it.
    `<T> RDFParser` | `set​(RioSetting<T> setting, T value)` | Set a setting on the parser, and return this parser object to allow chaining.
    `protected void` | `setBaseURI​(String uriSpec)` | Parses the supplied URI-string and sets it as the base URI for resolving relative URIs.
    `protected void` | `setBaseURI​(ParsedIRI baseURI)` | Sets the base URI for resolving relative URIs.
    `protected void` | `setNamespace​(String prefix, String namespace)` | Associates the specified prefix to the specified namespace.
    `RDFParser` | `setParseErrorListener​(ParseErrorListener el)` | Sets the ParseErrorListener that will be notified of any errors that this parser finds during parsing.
    `RDFParser` | `setParseLocationListener​(ParseLocationListener el)` | Sets the ParseLocationListener that will be notified of the parser's progress during the parse process.
    `RDFParser` | `setParserConfig​(ParserConfig config)` | Sets all supplied parser configuration options.
    `void` | `setPreserveBNodeIDs​(boolean preserveBNodeIDs)` | Set whether the parser should preserve bnode identifiers specified in the source (default is false).
    `RDFParser` | `setRDFHandler​(RDFHandler handler)` | Sets the RDFHandler that will handle the parsed RDF data.
    `RDFParser` | `setValueFactory​(ValueFactory valueFactory)` | Sets the ValueFactory that the parser will use to create Value objects for the parsed RDF data.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.rdf4j.rio.RDFParser

      `getRDFFormat, parse, parse, parse, parse`

- - ### Field Detail

    - #### rdfHandler

          protected RDFHandler rdfHandler

      The RDFHandler that will handle the parsed RDF.

    - #### valueFactory

          protected ValueFactory valueFactory

      The ValueFactory to use for creating RDF model objects.

  - ### Constructor Detail

    - #### AbstractRDFParser

          protected AbstractRDFParser()

      Creates a new RDFParserBase that will use a `SimpleValueFactory` to create RDF model objects.

    - #### AbstractRDFParser

          protected AbstractRDFParser​(ValueFactory valueFactory)

      Creates a new RDFParserBase that will use the supplied ValueFactory to create RDF model objects.
      Parameters:
        `valueFactory` - A ValueFactory.

  - ### Method Detail

    - #### setValueFactory

          public RDFParser setValueFactory​(ValueFactory valueFactory)

      Description copied from interface: `RDFParser`
      Sets the ValueFactory that the parser will use to create Value objects for the parsed RDF data.
      Specified by:
        `setValueFactory` in interface `RDFParser`
      Parameters:
        `valueFactory` - The value factory that the parser should use.
      Returns:
        Either a copy of this parser, if it is immutable, or this object, to allow chaining of method calls.

    - #### setRDFHandler

          public RDFParser setRDFHandler​(RDFHandler handler)

      Description copied from interface: `RDFParser`
      Sets the RDFHandler that will handle the parsed RDF data.
      Specified by:
        `setRDFHandler` in interface `RDFParser`
      Parameters:
        `handler` - The RDFHandler to handle the parsed data.
      Returns:
        Either a copy of this parser, if it is immutable, or this object, to allow chaining of method calls.

    - #### getRDFHandler

          public RDFHandler getRDFHandler()

    - #### setParseErrorListener

          public RDFParser setParseErrorListener​(ParseErrorListener el)

      Description copied from interface: `RDFParser`
      Sets the ParseErrorListener that will be notified of any errors that this parser finds during parsing.
      Specified by:
        `setParseErrorListener` in interface `RDFParser`
      Parameters:
        `el` - The ParseErrorListener that will be notified of errors or warnings.
      Returns:
        Either a copy of this parser, if it is immutable, or this object, to allow chaining of method calls.

    - #### getParseErrorListener

          public ParseErrorListener getParseErrorListener()

    - #### setParseLocationListener

          public RDFParser setParseLocationListener​(ParseLocationListener el)

      Description copied from interface: `RDFParser`
      Sets the ParseLocationListener that will be notified of the parser's progress during the parse process.
      Specified by:
        `setParseLocationListener` in interface `RDFParser`
      Parameters:
        `el` - The ParseLocationListener that will be notified of the parser's progress.
      Returns:
        Either a copy of this parser, if it is immutable, or this object, to allow chaining of method calls.

    - #### getParseLocationListener

          public ParseLocationListener getParseLocationListener()

    - #### setParserConfig

          public RDFParser setParserConfig​(ParserConfig config)

      Description copied from interface: `RDFParser`
      Sets all supplied parser configuration options.
      Specified by:
        `setParserConfig` in interface `RDFParser`
      Parameters:
        `config` - a parser configuration object.
      Returns:
        Either a copy of this parser, if it is immutable, or this object, to allow chaining of method calls.

    - #### getParserConfig

          public ParserConfig getParserConfig()

      Description copied from interface: `RDFParser`
      Retrieves the current parser configuration as a single object.
      Specified by:
        `getParserConfig` in interface `RDFParser`
      Returns:
        a parser configuration object representing the current configuration of the parser.

    - #### getSupportedSettings

          public Collection<RioSetting<?>> getSupportedSettings()

      Specified by:
        `getSupportedSettings` in interface `RDFParser`
      Returns:
        A collection of `RioSetting`s that are supported by this RDFParser.

    - #### set

          public <T> RDFParser set​(RioSetting<T> setting,
                                   T value)

      Description copied from interface: `RDFParser`
      Set a setting on the parser, and return this parser object to allow chaining.
      Specified by:
        `set` in interface `RDFParser`
      Parameters:
        `setting` - The setting to change.
        `value` - The value to change.
      Returns:
        Either a copy of this parser, if it is immutable, or this object, to allow chaining of method calls.

    - #### setPreserveBNodeIDs

          public void setPreserveBNodeIDs​(boolean preserveBNodeIDs)

      Description copied from interface: `RDFParser`
      Set whether the parser should preserve bnode identifiers specified in the source (default is false).
      Specified by:
        `setPreserveBNodeIDs` in interface `RDFParser`

    - #### preserveBNodeIDs

          public boolean preserveBNodeIDs()

    - #### setBaseURI

          protected void setBaseURI​(String uriSpec)

      Parses the supplied URI-string and sets it as the base URI for resolving relative URIs.

    - #### setBaseURI

          protected void setBaseURI​(ParsedIRI baseURI)

      Sets the base URI for resolving relative URIs.

    - #### setNamespace

          protected void setNamespace​(String prefix,
                                      String namespace)

      Associates the specified prefix to the specified namespace.

    - #### getNamespace

          protected String getNamespace​(String prefix)
                                 throws RDFParseException

      Gets the namespace that is associated with the specified prefix or throws an `RDFParseException`.
      Throws:
        `RDFParseException` - if no namespace is associated with this prefix

    - #### clear

          protected void clear()

      Clears any information that has been collected while parsing. This method must be called by subclasses when finishing the parse process.

    - #### initializeNamespaceTableFromConfiguration

          protected void initializeNamespaceTableFromConfiguration()

    - #### clearBNodeIDMap

          @Deprecated
          protected void clearBNodeIDMap()

      Deprecated.
      Map is no longer used, call `clear()` instead.
      Clears the map that keeps track of blank nodes that have been parsed. Normally, this map is clear when the document has been parsed completely, but subclasses can clear the map at other moments too, for example when a bnode scope ends.

    - #### resolveURI

          protected IRI resolveURI​(String uriSpec)
                            throws RDFParseException

      Resolves a URI-string against the base URI and creates a `IRI` object for it.
      Throws:
        `RDFParseException`

    - #### createURI

          protected IRI createURI​(String uri)
                           throws RDFParseException

      Creates a `IRI` object for the specified URI-string.
      Throws:
        `RDFParseException`

    - #### createNode

          protected Resource createNode()
                                 throws RDFParseException

      Creates a new `BNode` or Skolem `IRI` object.
      Returns:
        blank node or skolem IRI
      Throws:
        `RDFParseException`

    - #### createNode

          protected Resource createNode​(String nodeID)
                                 throws RDFParseException

      Creates a `BNode` or Skolem `IRI` object for the specified identifier.
      Parameters:
        `nodeID` - node identifier
      Returns:
        blank node or skolem IRI
      Throws:
        `RDFParseException`

    - #### createBNode

          @Deprecated
          protected BNode createBNode()
                               throws RDFParseException

      Deprecated.
      Creates a new `BNode` object.
      Throws:
        `RDFParseException`

    - #### createBNode

          @Deprecated
          protected BNode createBNode​(String nodeID)
                               throws RDFParseException

      Deprecated.
      Creates a `BNode` object for the specified identifier.
      Throws:
        `RDFParseException`

    - #### createLiteral

          protected Literal createLiteral​(String label,
                                          String lang,
                                          IRI datatype)
                                   throws RDFParseException

      Creates a `Literal` object with the supplied parameters.
      Throws:
        `RDFParseException`

    - #### createLiteral

          protected Literal createLiteral​(String label,
                                          String lang,
                                          IRI datatype,
                                          long lineNo,
                                          long columnNo)
                                   throws RDFParseException

      Creates a `Literal` object 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.
      Throws:
        `RDFParseException`
      See Also:
        `RDFParserHelper.createLiteral(String, String, IRI, ParserConfig, ParseErrorListener, ValueFactory, long, long)`

    - #### createStatement

          protected Statement createStatement​(Resource subj,
                                              IRI pred,
                                              Value obj)
                                       throws RDFParseException

      Creates a new `Statement` object with the supplied components.
      Throws:
        `RDFParseException`

    - #### createStatement

          protected Statement createStatement​(Resource subj,
                                              IRI pred,
                                              Value obj,
                                              Resource context)
                                       throws RDFParseException

      Creates a new `Statement` object with the supplied components.
      Throws:
        `RDFParseException`

    - #### reportLocation

          protected void reportLocation​(long lineNo,
                                        long columnNo)

      Reports the specified line- and column number to the registered `ParseLocationListener`, if any.

    - #### reportWarning

          protected void reportWarning​(String msg)

      Reports a warning to the registered ParseErrorListener, if any. This method simply calls `reportWarning(String, long, long)` supplying -1 for the line- and column number.

    - #### reportWarning

          protected void reportWarning​(String msg,
                                       long lineNo,
                                       long columnNo)

      Reports a warning with associated line- and column number to the registered ParseErrorListener, if any.

    - #### reportError

          protected void reportError​(String msg,
                                     RioSetting<Boolean> relevantSetting)
                              throws RDFParseException

      Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.

      This method also throws an `RDFParseException` when the given setting has been set to true and it is not a nonFatalError.

      Parameters:
        `msg` - The message to use for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `relevantSetting` - 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 if `ParserConfig.isNonFatalError(RioSetting)` returns true an exception will be thrown.
      Throws:
        `RDFParseException` - If `RioConfig.get(RioSetting)` returns true, and `ParserConfig.isNonFatalError(RioSetting)` returns true for the given setting.

    - #### reportError

          protected void reportError​(String msg,
                                     long lineNo,
                                     long columnNo,
                                     RioSetting<Boolean> relevantSetting)
                              throws RDFParseException

      Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.

      This method also throws an `RDFParseException` when the given setting has been set to true and it is not a nonFatalError.

      Parameters:
        `msg` - The message to use for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `lineNo` - Optional line number, should default to setting this as -1 if not known. Used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `columnNo` - Optional column number, should default to setting this as -1 if not known. Used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `relevantSetting` - 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 if `ParserConfig.isNonFatalError(RioSetting)` returns true an exception will be thrown.
      Throws:
        `RDFParseException` - If `RioConfig.get(RioSetting)` returns true, and `ParserConfig.isNonFatalError(RioSetting)` returns true for the given setting.

    - #### reportError

          protected void reportError​(Exception e,
                                     RioSetting<Boolean> relevantSetting)
                              throws RDFParseException

      Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.

      This method also throws an `RDFParseException` when the given setting has been set to true and it is not a nonFatalError.

      Parameters:
        `e` - The exception whose message will be used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `relevantSetting` - 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 if `ParserConfig.isNonFatalError(RioSetting)` returns true an exception will be thrown.
      Throws:
        `RDFParseException` - If `RioConfig.get(RioSetting)` returns true, and `ParserConfig.isNonFatalError(RioSetting)` returns true for the given setting.

    - #### reportError

          protected void reportError​(Exception e,
                                     long lineNo,
                                     long columnNo,
                                     RioSetting<Boolean> relevantSetting)
                              throws RDFParseException

      Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.

      This method also throws an `RDFParseException` when the given setting has been set to true and it is not a nonFatalError.

      Parameters:
        `e` - The exception whose message will be used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `lineNo` - Optional line number, should default to setting this as -1 if not known. Used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `columnNo` - Optional column number, should default to setting this as -1 if not known. Used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `relevantSetting` - 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 if `ParserConfig.isNonFatalError(RioSetting)` returns true an exception will be thrown.
      Throws:
        `RDFParseException` - If `RioConfig.get(RioSetting)` returns true, and `ParserConfig.isNonFatalError(RioSetting)` returns true for the given setting.

    - #### reportError

          protected void reportError​(String msg,
                                     Exception e,
                                     long lineNo,
                                     long columnNo,
                                     RioSetting<Boolean> relevantSetting)
                              throws RDFParseException

      Reports an error with associated line- and column number to the registered ParseErrorListener, if the given setting has been set to true.

      This method also throws an `RDFParseException` when the given setting has been set to true and it is not a nonFatalError.

      Parameters:
        `msg` - The message to use for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `e` - The exception whose message will be used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `lineNo` - Optional line number, should default to setting this as -1 if not known. Used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `columnNo` - Optional column number, should default to setting this as -1 if not known. Used for `ParseErrorListener.error(String, long, long)` and for `RDFParseException(String, long, long)` .
        `relevantSetting` - 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 if `ParserConfig.isNonFatalError(RioSetting)` returns true an exception will be thrown.
      Throws:
        `RDFParseException` - If `RioConfig.get(RioSetting)` returns true, and `ParserConfig.isNonFatalError(RioSetting)` returns true for the given setting.

    - #### reportFatalError

          protected void reportFatalError​(String msg)
                                   throws RDFParseException

      Reports a fatal error to the registered ParseErrorListener, if any, and throws a ParseException afterwards. This method simply calls `reportFatalError(String, long, long)` supplying -1 for the line- and column number.
      Throws:
        `RDFParseException`

    - #### reportFatalError

          protected void reportFatalError​(String msg,
                                          long lineNo,
                                          long columnNo)
                                   throws RDFParseException

      Reports a fatal error with associated line- and column number to the registered ParseErrorListener, if any, and throws a ParseException afterwards.
      Throws:
        `RDFParseException`

    - #### reportFatalError

          protected void reportFatalError​(Exception e)
                                   throws RDFParseException

      Reports a fatal error to the registered ParseErrorListener, if any, and throws a ParseException afterwards. An exception is made for the case where the supplied exception is a `RDFParseException`; in that case the supplied exception is not wrapped in another ParseException and the error message is not reported to the ParseErrorListener, assuming that it has already been reported when the original ParseException was thrown.

      This method simply calls `reportFatalError(Exception, long, long)` supplying -1 for the line- and column number.

      Throws:
        `RDFParseException`

    - #### reportFatalError

          protected void reportFatalError​(Exception e,
                                          long lineNo,
                                          long columnNo)
                                   throws RDFParseException

      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. An exception is made for the case where the supplied exception is a `RDFParseException`; in that case the supplied exception is not wrapped in another ParseException and the error message is not reported to the ParseErrorListener, assuming that it has already been reported when the original ParseException was thrown.
      Throws:
        `RDFParseException`

    - #### reportFatalError

          protected void reportFatalError​(String message,
                                          Exception e,
                                          long lineNo,
                                          long columnNo)
                                   throws RDFParseException

      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. An exception is made for the case where the supplied exception is a `RDFParseException`; in that case the supplied exception is not wrapped in another ParseException and the error message is not reported to the ParseErrorListener, assuming that it has already been reported when the original ParseException was thrown.
      Throws:
        `RDFParseException`