[][src]Crate sophia

This crate aims to provide a comprehensive toolkit for working with RDF and Linked Data in Rust.

RDF is a data model designed to exchange knowledge on the Web in an interoperable way. Each piece of knowledge in RDF (a statement) is represented by a triple, made of three terms. A set of triples forms an RDF graph. Finally, several graphs can be grouped in a collection called a dataset, where each graph is identified by a unique name.

Generalized vs. Strict RDF model

The data model supported by this crate is in fact a superset of the RDF data model as defined by the W3C. When the distinction matters, they will be called, respectively, the generalized RDF model, and the strict RDF model.

Getting Started

Following a short example how to build a graph, mutate it and serialize it back.

use sophia::graph::{*, inmem::FastGraph};
use sophia::ns::Namespace;
use sophia::parser::turtle;
use sophia::serializer::*;
use sophia::serializer::nt::NtSerializer;
use sophia::triple::stream::TripleSource;

let example = r#"
    @prefix : <http://example.org/>.
    @prefix foaf: <http://xmlns.com/foaf/0.1/>.

    :alice foaf:name "Alice";
           foaf:mbox <mailto:alice@work.example> .

    :bob foaf:name "Bob".
"#;
let mut graph: FastGraph = turtle::parse_str(example).collect_triples()?;

let ex = Namespace::new("http://example.org/")?;
let foaf = Namespace::new("http://xmlns.com/foaf/0.1/")?;
graph.insert(
    &ex.get("bob")?,
    &foaf.get("knows")?,
    &ex.get("alice")?,
)?;

let mut nt_stringifier = NtSerializer::new_stringifier();
let example2 = nt_stringifier.serialize_graph(&mut graph)?.as_str();
println!("The resulting graph\n{}", example2);

Modules

dataset

This module re-exports symbols from sophia_api::dataset, and also provides some implementations of its traits.

graph

This module re-exports symbols from sophia_api::graph, and also provides some implementations of its traits.

ns

This module re-exports symbols from sophia_api::ns.

parser

This module re-exports symbols from sophia_api::parser, and also provides some implementations of its traits.

quad

This module re-exports symbols from sophia_api::quad.

query

Query processing over RDF graphs and datasets.

serializer

This module re-exports symbols from sophia_api::serializer, and also provides some implementations of its traits.

term

This module re-exports symbols from sophia_api::term and sophia_term.

triple

This module re-exports symbols from sophia_api::triple.

Macros

impl_collectible_dataset_for_indexed_dataset

Defines the implementation of CollectibleDataset for IndexedDataset.

impl_collectible_graph_for_indexed_graph

Defines the implementation of CollectibleGraph for IndexedGraph.

impl_dataset_for_wrapper

Defines the implementation of Dataset for DatasetWrapper.

impl_graph_for_wrapper

Defines the implementation of Graph for GraphWrapper.

impl_indexed_dataset_for_wrapper

Defines the implementation of IndexedDataset for DatasetWrapper around another IndexedDataset.

impl_indexed_graph_for_wrapper

Defines the implementation of IndexedGraph for GraphWrapper around another IndexedGraph.

impl_mutable_dataset_for_indexed_dataset

Defines the implementation of MutableDataset for IndexedDataset.

impl_mutable_graph_for_indexed_graph

Defines the implementation of MutableGraph for IndexedGraph.