/*!

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`.
*/
#![warn(
unknown_lints,
// ---------- Stylistic
absolute_paths_not_starting_with_crate,
elided_lifetimes_in_paths,
explicit_outlives_requirements,
macro_use_extern_crate,
nonstandard_style, /* group */
noop_method_call,
rust_2018_idioms,
single_use_lifetimes,
trivial_casts,
trivial_numeric_casts,
// ---------- Future
future_incompatible, /* group */
rust_2021_compatibility, /* group */
// ---------- Public
missing_debug_implementations,
// missing_docs,
unreachable_pub,
// ---------- Unsafe
unsafe_code,
unsafe_op_in_unsafe_fn,
// ---------- Unused
unused, /* group */
)]
#![deny(
// ---------- Public
exported_private_dependencies,
// ---------- Deprecated
anonymous_parameters,
bare_trait_objects,
ellipsis_inclusive_range_patterns,
// ---------- Unsafe
deref_nullptr,
drop_bounds,
dyn_drop,
)]
use objio::ObjectWriter;
use rdftk_core::model::data_set::DataSet;
use rdftk_core::model::graph::Graph;
// ------------------------------------------------------------------------------------------------
// Public Types
// ------------------------------------------------------------------------------------------------
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;