pub struct RdfXmlParser { /* private fields */ }
Expand description
A RDF/XML streaming parser.
It reads the file in streaming.
It does not keep data in memory except a stack for handling nested XML tags, and a set of all
seen rdf:ID
s to detect duplicate ids and fail according to the specification.
Its performances are not optimized yet and hopefully could be significantly enhanced by reducing the number of allocations and copies done by the parser.
Count the number of people:
use oxrdf::vocab::rdf;
use oxrdf::NamedNodeRef;
use oxrdfxml::RdfXmlParser;
let file = br#"<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/foo">
<rdf:type rdf:resource="http://schema.org/Person" />
<schema:name>Foo</schema:name>
</rdf:Description>
<schema:Person rdf:about="http://example.com/bar" schema:name="Bar" />
</rdf:RDF>"#;
let schema_person = NamedNodeRef::new("http://schema.org/Person")?;
let mut count = 0;
for triple in RdfXmlParser::new().for_reader(file.as_ref()) {
let triple = triple?;
if triple.predicate == rdf::TYPE && triple.object == schema_person.into() {
count += 1;
}
}
assert_eq!(2, count);
Implementations§
Source§impl RdfXmlParser
impl RdfXmlParser
Sourcepub fn new() -> Self
pub fn new() -> Self
Builds a new RdfXmlParser
.
Sourcepub fn unchecked(self) -> Self
pub fn unchecked(self) -> Self
Assumes the file is valid to make parsing faster.
It will skip some validations.
Note that if the file is actually not valid, broken RDF might be emitted by the parser.
pub fn with_base_iri( self, base_iri: impl Into<String>, ) -> Result<Self, IriParseError>
Sourcepub fn for_reader<R: Read>(self, reader: R) -> ReaderRdfXmlParser<R> ⓘ
pub fn for_reader<R: Read>(self, reader: R) -> ReaderRdfXmlParser<R> ⓘ
Parses a RDF/XML file from a Read
implementation.
Count the number of people:
use oxrdf::vocab::rdf;
use oxrdf::NamedNodeRef;
use oxrdfxml::RdfXmlParser;
let file = br#"<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/foo">
<rdf:type rdf:resource="http://schema.org/Person" />
<schema:name>Foo</schema:name>
</rdf:Description>
<schema:Person rdf:about="http://example.com/bar" schema:name="Bar" />
</rdf:RDF>"#;
let schema_person = NamedNodeRef::new("http://schema.org/Person")?;
let mut count = 0;
for triple in RdfXmlParser::new().for_reader(file.as_ref()) {
let triple = triple?;
if triple.predicate == rdf::TYPE && triple.object == schema_person.into() {
count += 1;
}
}
assert_eq!(2, count);
Sourcepub fn for_slice(self, slice: &[u8]) -> SliceRdfXmlParser<'_> ⓘ
pub fn for_slice(self, slice: &[u8]) -> SliceRdfXmlParser<'_> ⓘ
Parses a RDF/XML file from a byte slice.
Count the number of people:
use oxrdf::vocab::rdf;
use oxrdf::NamedNodeRef;
use oxrdfxml::RdfXmlParser;
let file = br#"<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/foo">
<rdf:type rdf:resource="http://schema.org/Person" />
<schema:name>Foo</schema:name>
</rdf:Description>
<schema:Person rdf:about="http://example.com/bar" schema:name="Bar" />
</rdf:RDF>"#;
let schema_person = NamedNodeRef::new("http://schema.org/Person")?;
let mut count = 0;
for triple in RdfXmlParser::new().for_slice(file) {
let triple = triple?;
if triple.predicate == rdf::TYPE && triple.object == schema_person.into() {
count += 1;
}
}
assert_eq!(2, count);
Trait Implementations§
Source§impl Clone for RdfXmlParser
impl Clone for RdfXmlParser
Source§fn clone(&self) -> RdfXmlParser
fn clone(&self) -> RdfXmlParser
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Default for RdfXmlParser
impl Default for RdfXmlParser
Source§fn default() -> RdfXmlParser
fn default() -> RdfXmlParser
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for RdfXmlParser
impl RefUnwindSafe for RdfXmlParser
impl Send for RdfXmlParser
impl Sync for RdfXmlParser
impl Unpin for RdfXmlParser
impl UnwindSafe for RdfXmlParser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more