Struct rio_xml::RdfXmlParser[][src]

pub struct RdfXmlParser<R: BufRead> { /* fields omitted */ }

A RDF XML streaming parser.

It implements the TriplesParser trait. 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:IDs 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 using the TriplesParser API without proper error management:

use rio_xml::{RdfXmlParser, RdfXmlError};
use rio_api::parser::TriplesParser;
use rio_api::model::NamedNode;

let file = b"<?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 rdf_type = NamedNode { iri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" };
let schema_person = NamedNode { iri: "http://schema.org/Person" };
let mut count = 0;
RdfXmlParser::new(file.as_ref(), None).parse_all(&mut |t| {
    if t.predicate == rdf_type && t.object == schema_person.into() {
        count += 1;
    }
    Ok(()) as Result<(), RdfXmlError>
})?;
assert_eq!(2, count);

Implementations

impl<R: BufRead> RdfXmlParser<R>[src]

pub fn new(reader: R, base_iri: Option<Iri<String>>) -> Self[src]

Builds the parser from a BufRead implementation, and a base IRI for relative IRI resolution.

Trait Implementations

impl<B: BufRead> TripleSource for RdfXmlParser<B>[src]

type Error = RdfXmlError

The type of errors produced by this source.

type Triple = ScopedRioSourceTriple

Determine the type of Triples that this triple source yields. (see streaming_mode Read more

impl<R: BufRead> TriplesParser for RdfXmlParser<R>[src]

type Error = RdfXmlError

Auto Trait Implementations

impl<R> RefUnwindSafe for RdfXmlParser<R> where
    R: RefUnwindSafe

impl<R> Send for RdfXmlParser<R> where
    R: Send

impl<R> Sync for RdfXmlParser<R> where
    R: Sync

impl<R> Unpin for RdfXmlParser<R> where
    R: Unpin

impl<R> UnwindSafe for RdfXmlParser<R> where
    R: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.