Package org.eclipse.rdf4j.rio.rdfxml
Class RDFXMLParser
java.lang.Object
org.eclipse.rdf4j.rio.helpers.AbstractRDFParser
org.eclipse.rdf4j.rio.helpers.XMLReaderBasedParser
org.eclipse.rdf4j.rio.rdfxml.RDFXMLParser
- All Implemented Interfaces:
RDFParser
,ErrorHandler
A parser for XML-serialized RDF. This parser operates directly on the SAX events generated by a SAX-enabled XML
parser. The XML parser should be compliant with SAX2. You should specify which SAX parser should be used by setting
the
org.xml.sax.driver
property. This parser is not thread-safe, therefore it's public methods are
synchronized.
To parse a document using this parser:
- Create an instance of RDFXMLParser, optionally supplying it with your own ValueFactory.
- Set the RDFHandler.
- Optionally, set the ParseErrorListener and/or ParseLocationListener.
- Optionally, specify whether the parser should verify the data it parses and whether it should stop immediately when it finds an error in the data (both default to true).
- Call the parse method.
// Use the SAX2-compliant Xerces parser: System.setProperty("org.xml.sax.driver", "org.apache.xerces.parsers.SAXParser"); RDFParser parser = new RDFXMLParser(); parser.setRDFHandler(myRDFHandler); parser.setParseErrorListener(myParseErrorListener); parser.setVerifyData(true); parser.stopAtFirstError(false); // Parse the data from inputStream, resolving any // relative URIs against http://foo/bar: parser.parse(inputStream, "http://foo/bar");
Note that JAXP entity expansion limits may apply. Check the documentation on limits and using the jaxp.properties file if you get one of the following errors:
JAXP00010001: The parser has encountered more than "64000" entity expansions in this document JAXP00010004: The accumulated size of entities is ... that exceeded the "50,000,000" limit
As a work-around, try passing -Djdk.xml.totalEntitySizeLimit=0 -DentityExpansionLimit=0
to the JVM.
- Author:
- Arjohn Kampman
- See Also:
-
Field Summary
Fields inherited from class org.eclipse.rdf4j.rio.helpers.AbstractRDFParser
rdfHandler, valueFactory
-
Constructor Summary
ConstructorDescriptionCreates a new RDFXMLParser that will use aSimpleValueFactory
to create RDF model objects.RDFXMLParser
(ValueFactory valueFactory) Creates a new RDFXMLParser that will use the supplied ValueFactory to create RDF model objects. -
Method Summary
Modifier and TypeMethodDescriptionprotected Literal
createLiteral
(String label, String lang, IRI datatype) Creates aLiteral
object with the supplied parameters.protected Resource
createNode
(String nodeID) void
error
(SAXParseException exception) Implementation of SAX ErrorHandler.errorvoid
fatalError
(SAXParseException exception) Implementation of SAX ErrorHandler.fatalErrorboolean
Returns whether the parser is currently in a mode to parse stand-alone RDF documents.final RDFFormat
Gets the RDF format that this parser can parse.getSAXResult
(String baseURI) Collection<RioSetting<?>>
void
parse
(InputStream in, String baseURI) Parses the data from the supplied InputStream, using the supplied baseURI to resolve any relative URI references.void
Parses the data from the supplied Reader, using the supplied baseURI to resolve any relative URI references.protected void
reportError
(Exception e, RioSetting<Boolean> setting) OverridesAbstractRDFParser.reportError(String, RioSetting)
, adding line- and column number information to the error.protected void
reportError
(String msg, RioSetting<Boolean> setting) OverridesAbstractRDFParser.reportError(String, RioSetting)
, adding line- and column number information to the error.protected void
OverridesAbstractRDFParser.reportFatalError(Exception)
, adding line- and column number information to the error.protected void
reportFatalError
(String msg) OverridesAbstractRDFParser.reportFatalError(String)
, adding line- and column number information to the error.protected void
reportWarning
(String msg) OverridesAbstractRDFParser.reportWarning(String)
, adding line- and column number information to the error.protected void
setBaseURI
(String baseURI) 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.void
setParseStandAloneDocuments
(boolean standAloneDocs) Sets the parser in a mode to parse stand-alone RDF documents.void
warning
(SAXParseException exception) Implementation of SAX ErrorHandler.warningMethods inherited from class org.eclipse.rdf4j.rio.helpers.XMLReaderBasedParser
getCompulsoryXmlFeatureSettings, getCompulsoryXmlPropertySettings, getOptionalXmlFeatureSettings, getOptionalXmlPropertySettings, getXMLReader
Methods inherited from class org.eclipse.rdf4j.rio.helpers.AbstractRDFParser
clear, clearBNodeIDMap, createBNode, createBNode, createLiteral, createNode, createStatement, createStatement, createURI, getNamespace, getParseErrorListener, getParseLocationListener, getParserConfig, getRDFHandler, initializeNamespaceTableFromConfiguration, preserveBNodeIDs, reportError, reportError, reportError, reportFatalError, reportFatalError, reportFatalError, reportLocation, reportWarning, resolveURI, set, setNamespace, setParseErrorListener, setParseLocationListener, setParserConfig, setPreserveBNodeIDs, setRDFHandler, setValueFactory
-
Constructor Details
-
RDFXMLParser
public RDFXMLParser()Creates a new RDFXMLParser that will use aSimpleValueFactory
to create RDF model objects. -
RDFXMLParser
Creates a new RDFXMLParser that will use the supplied ValueFactory to create RDF model objects.- Parameters:
valueFactory
- A ValueFactory.
-
-
Method Details
-
getRDFFormat
Description copied from interface:RDFParser
Gets the RDF format that this parser can parse.- Specified by:
getRDFFormat
in interfaceRDFParser
-
setParseStandAloneDocuments
public void setParseStandAloneDocuments(boolean standAloneDocs) Sets the parser in a mode to parse stand-alone RDF documents. In stand-alone RDF documents, the enclosing rdf:RDF root element is optional if this root element contains just one element (e.g. rdf:Description. -
getParseStandAloneDocuments
public boolean getParseStandAloneDocuments()Returns whether the parser is currently in a mode to parse stand-alone RDF documents.- See Also:
-
parse
public void parse(InputStream in, String baseURI) throws IOException, RDFParseException, RDFHandlerException Description copied from interface:RDFParser
Parses the data from the supplied InputStream, using the supplied baseURI to resolve any relative URI references.- Specified by:
parse
in interfaceRDFParser
- 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:RDFParser
Parses the data from the supplied Reader, using the supplied baseURI to resolve any relative URI references.- Specified by:
parse
in interfaceRDFParser
- 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.
-
getSupportedSettings
- Specified by:
getSupportedSettings
in interfaceRDFParser
- Overrides:
getSupportedSettings
in classAbstractRDFParser
- Returns:
- A collection of
RioSetting
s that are supported by this RDFParser.
-
getSAXResult
-
setBaseURI
Description copied from class:AbstractRDFParser
Sets the base URI for resolving relative URIs.- Overrides:
setBaseURI
in classAbstractRDFParser
-
setBaseURI
Description copied from class:AbstractRDFParser
Parses the supplied URI-string and sets it as the base URI for resolving relative URIs.- Overrides:
setBaseURI
in classAbstractRDFParser
-
createNode
Description copied from class:AbstractRDFParser
- Overrides:
createNode
in classAbstractRDFParser
- Parameters:
nodeID
- node identifier- Returns:
- blank node or skolem IRI
- Throws:
RDFParseException
-
createLiteral
Description copied from class:AbstractRDFParser
Creates aLiteral
object with the supplied parameters.- Overrides:
createLiteral
in classAbstractRDFParser
- Throws:
RDFParseException
-
reportWarning
OverridesAbstractRDFParser.reportWarning(String)
, adding line- and column number information to the error.- Overrides:
reportWarning
in classAbstractRDFParser
-
reportError
OverridesAbstractRDFParser.reportError(String, RioSetting)
, adding line- and column number information to the error.- Overrides:
reportError
in 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.
-
reportError
OverridesAbstractRDFParser.reportError(String, RioSetting)
, adding line- and column number information to the error.- Overrides:
reportError
in classAbstractRDFParser
- Parameters:
e
- The exception whose message will be used 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- and column number information to the error.- Overrides:
reportFatalError
in classAbstractRDFParser
- Throws:
RDFParseException
-
reportFatalError
OverridesAbstractRDFParser.reportFatalError(Exception)
, adding line- and column number information to the error.- Overrides:
reportFatalError
in classAbstractRDFParser
- Throws:
RDFParseException
-
warning
Implementation of SAX ErrorHandler.warning- Specified by:
warning
in interfaceErrorHandler
- Throws:
SAXException
-
error
Implementation of SAX ErrorHandler.error- Specified by:
error
in interfaceErrorHandler
- Throws:
SAXException
-
fatalError
Implementation of SAX ErrorHandler.fatalError- Specified by:
fatalError
in interfaceErrorHandler
- Throws:
SAXException
-