//!
//! 
//! This crate provides traits for reading and writing `Statement`s and `Graph`s as well as implementations of these for common representations.
//!
//! The following are some well-known formats (see [Wikipedia](https://en.wikipedia.org/wiki/Resource_Description_Framework#Serialization_formats)
//! for a description of different serializations), support is indicated in the final column with
//! an **R** for read support and **W** for write support. One additional module, `dot` allows for the
//! creation of [GraphViz](https://graphviz.gitlab.io/) dot files for a visualization of a graph's structure.
//!
//!
//! | Module | Name | MIME Type | R/W |
//! |-----------|---------------------------------------------------------------------------------------------------- |-----------------------------|---------|
//! | `nt` | [RDF 1.1 N-Triples](https://www.w3.org/TR/n-triples/); A line-based syntax for an RDF graph | `application/n-triples` | **R+W** |
//! | `nq` | [RDF 1.1 N-Quads](https://www.w3.org/TR/n-quads/); A line-based syntax for RDF datasets | `application/n-quads` | **W** |
//! | `turtle` | [RDF 1.1 Turtle](https://www.w3.org/TR/turtle/); Terse RDF Triple Language | `text/turtle` | **W** |
//! | `trig` | [RDF 1.1 TriG](https://www.w3.org/TR/trig/); RDF Dataset Language | `application/trig` | |
//! | `xml` | [RDF 1.1 XML Syntax](https://www.w3.org/TR/rdf-syntax-grammar/) | `application/rdf+xml` | **W** |
//! | `json` | [RDF 1.1 JSON Alternate Serialization](https://www.w3.org/TR/rdf-json/) | `application/rdf+json` | **W** |
//! | `n3` | [Notation3 (N3): A readable RDF syntax](https://www.w3.org/TeamSubmission/n3/) | `text/rdf+n3` | **W** |
//! | TBD | [Binary RDF Representation for Publication and Exchange (HDT)](https://www.w3.org/Submission/HDT/) | N/A | |
//! | TBD | [RDF Binary using Apache Thrift](https://afs.github.io/rdf-thrift/) | `application/x-binary-rdf` | |
//! | TBD | [JSON-LD 1.1](https://www.w3.org/TR/json-ld/); A JSON-based Serialization for Linked Data | `application/ld+json` | |
//! | TBD | [RDFa Core 1.1 - Third Edition](https://www.w3.org/TR/rdfa-core/) | `text/html` | |
//!
//! Each module will also provide public constants `NAME`, `FILE_EXTENSION`, and `MIME_TYPE`.
//!
use rdftk_core::model::data_set::DataSet;
use rdftk_core::model::graph::Graph;
// ------------------------------------------------------------------------------------------------
// Public Types
// ------------------------------------------------------------------------------------------------
pub use objio::{HasOptions, ObjectWriter};
pub trait GraphWriter: ObjectWriter<Graph, Error = rdftk_core::error::Error> {}
pub trait DataSetWriter: ObjectWriter<DataSet, Error = rdftk_core::error::Error> {}
// ------------------------------------------------------------------------------------------------
// Modules
// ------------------------------------------------------------------------------------------------
#[macro_use]
mod common;
#[cfg(feature = "dot")]
pub mod dot;
#[cfg(feature = "json")]
pub mod json;
#[cfg(feature = "n3")]
pub mod n3;
#[cfg(feature = "nq")]
pub mod nq;
#[cfg(feature = "nt")]
pub mod nt;
#[cfg(feature = "trig")]
pub mod trig;
#[cfg(feature = "turtle")]
pub mod turtle;
#[cfg(feature = "xml")]
pub mod xml;