oxigraph::io

Struct RdfSerializer

Source
pub struct RdfSerializer { /* private fields */ }
Expand description

A serializer for RDF serialization formats.

It currently supports the following formats:

use oxrdfio::{RdfFormat, RdfSerializer};
use oxrdf::{Quad, NamedNode};

let mut serializer = RdfSerializer::from_format(RdfFormat::NQuads).for_writer(Vec::new());
serializer.serialize_quad(&Quad {
   subject: NamedNode::new("http://example.com/s")?.into(),
   predicate: NamedNode::new("http://example.com/p")?,
   object: NamedNode::new("http://example.com/o")?.into(),
   graph_name: NamedNode::new("http://example.com/g")?.into()
})?;
assert_eq!(serializer.finish()?, b"<http://example.com/s> <http://example.com/p> <http://example.com/o> <http://example.com/g> .\n");

Implementations§

Source§

impl RdfSerializer

Source

pub fn from_format(format: RdfFormat) -> RdfSerializer

Builds a serializer for the given format

Source

pub fn format(&self) -> RdfFormat

The format the serializer serializes to.

use oxrdfio::{RdfFormat, RdfSerializer};

assert_eq!(
    RdfSerializer::from_format(RdfFormat::Turtle).format(),
    RdfFormat::Turtle
);
Source

pub fn with_prefix( self, prefix_name: impl Into<String>, prefix_iri: impl Into<String>, ) -> Result<RdfSerializer, IriParseError>

If the format supports it, sets a prefix.

use oxrdf::vocab::rdf;
use oxrdf::{NamedNodeRef, TripleRef};
use oxrdfio::{RdfFormat, RdfSerializer};

let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle)
    .with_prefix("schema", "http://schema.org/")?
    .for_writer(Vec::new());
serializer.serialize_triple(TripleRef {
    subject: NamedNodeRef::new("http://example.com/s")?.into(),
    predicate: rdf::TYPE.into(),
    object: NamedNodeRef::new("http://schema.org/Person")?.into(),
})?;
assert_eq!(
    serializer.finish()?,
    b"@prefix schema: <http://schema.org/> .\n<http://example.com/s> a schema:Person .\n"
);
Source

pub fn with_base_iri( self, base_iri: impl Into<String>, ) -> Result<RdfSerializer, IriParseError>

If the format supports it, sets a base IRI.

use oxrdf::vocab::rdf;
use oxrdf::{NamedNodeRef, TripleRef};
use oxrdfio::{RdfFormat, RdfSerializer};

let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle)
    .with_base_iri("http://example.com")?
    .with_prefix("ex", "http://example.com/ns#")?
    .for_writer(Vec::new());
serializer.serialize_triple(TripleRef::new(
    NamedNodeRef::new("http://example.com/me")?,
    rdf::TYPE,
    NamedNodeRef::new("http://example.com/ns#Person")?,
))?;
assert_eq!(
    serializer.finish()?,
    b"@base <http://example.com> .\n@prefix ex: </ns#> .\n</me> a ex:Person .\n",
);
Source

pub fn for_writer<W>(self, writer: W) -> WriterQuadSerializer<W>
where W: Write,

Serializes to a Write implementation.

Do not forget to run the finish method to properly write the last bytes of the file.

This writer does unbuffered writes. You might want to use BufWriter to avoid that.

use oxrdfio::{RdfFormat, RdfSerializer};
use oxrdf::{Quad, NamedNode};

let mut serializer = RdfSerializer::from_format(RdfFormat::NQuads).for_writer(Vec::new());
serializer.serialize_quad(&Quad {
   subject: NamedNode::new("http://example.com/s")?.into(),
   predicate: NamedNode::new("http://example.com/p")?,
   object: NamedNode::new("http://example.com/o")?.into(),
   graph_name: NamedNode::new("http://example.com/g")?.into()
})?;
assert_eq!(serializer.finish()?, b"<http://example.com/s> <http://example.com/p> <http://example.com/o> <http://example.com/g> .\n");

Trait Implementations§

Source§

impl Clone for RdfSerializer

Source§

fn clone(&self) -> RdfSerializer

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl From<DatasetFormat> for RdfSerializer

Source§

fn from(format: DatasetFormat) -> Self

Converts to this type from the input type.
Source§

impl From<GraphFormat> for RdfSerializer

Source§

fn from(format: GraphFormat) -> Self

Converts to this type from the input type.
Source§

impl From<RdfFormat> for RdfSerializer

Source§

fn from(format: RdfFormat) -> RdfSerializer

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V