/*!

This crate provides an implementation of the RDF abstract syntax along with a `Resource` type
that provides a builder-like experience for models.
From [RDF 1.1 Concepts and Abstract Syntax](https://www.w3.org/TR/rdf11-concepts/);
> The core structure of the abstract syntax is a set of triples, each consisting of a subject, a
> predicate and an object. A set of such triples is called an RDF graph. An RDF graph can be
> visualized as a node and directed-arc diagram, in which each triple is represented as a
> node-arc-node link.
>
> 
>
> There can be three kinds of nodes in an RDF graph: IRIs, literals, and blank nodes.
In this library the triple, or statement, as well as subject, predicate, and object types are
in the module [`statement`](statement/index.html). Literal's as objects are supported in the
[`literal`](literal/index.html) module. Traits that describe graphs are provided by the
[`graph`](graph/index.html) module.
Additional features are provided such as support for data sets (module [`data_set`](data_set/index.html))
as well as support for extensions to the core RDF abstract model such as
[RDF-star](https://w3c.github.io/rdf-star/cg-spec/editors_draft.html).
# Example
```rust
use rdftk_core::{Statement, SubjectNode, ObjectNode};
use rdftk_core::statement::StatementList;
use rdftk_iri::IRI;
use std::rc::Rc;
use std::str::FromStr;
let mut statements: StatementList = Default::default();
statements.push(Statement::new(
SubjectNode::from(IRI::from_str("http://en.wikipedia.org/wiki/Tony_Benn").unwrap()).into(),
IRI::from_str("http://purl.org/dc/elements/1.1/title").unwrap().into(),
ObjectNode::literal_str("Tony Benn").into(),
).into());
```
*/
#![warn(
// ---------- Stylistic
future_incompatible,
nonstandard_style,
rust_2018_idioms,
trivial_casts,
trivial_numeric_casts,
// ---------- Public
missing_debug_implementations,
missing_docs,
unreachable_pub,
// ---------- Unsafe
unsafe_code,
// ---------- Unused
unused_extern_crates,
unused_import_braces,
unused_qualifications,
unused_results,
)]
#[macro_use]
extern crate error_chain;
// ------------------------------------------------------------------------------------------------
// Modules
// ------------------------------------------------------------------------------------------------
pub mod error;
pub mod data_set;
pub use data_set::{DataSet, DataSetFactory, DataSetFactoryRef, DataSetRef};
pub mod graph;
pub use graph::{Graph, GraphFactory, GraphFactoryRef, GraphRef, PrefixMappings};
pub mod literal;
pub use literal::{DataType, Literal};
pub mod qname;
pub mod resource;
pub mod statement;
pub use statement::{ObjectNode, Statement, SubjectNode};