1 unstable release
0.3.1 | Aug 23, 2022 |
---|
#1139 in Algorithms
32 downloads per month
Used in 5 crates
(4 directly)
380KB
6K
SLoC
RDFtk: Core
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;
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
. Literal's as objects are supported in the
literal
module. Traits that describe graphs are provided by the
graph
module.
Additional features are provided such as support for data sets (module model.data_set
)
as well as support for extensions to the core RDF abstract model such as
RDF-star.
Example
use field33_rdftk_core_temporary_fork::{Literal, Statement, StatementList, SubjectNode};
use field33_rdftk_iri_temporary_fork::IRI;
use std::rc::Rc;
use std::str::FromStr;
pub fn make_statements() -> StatementList {
let mut statements: StatementList = Default::default();
statements.push(Statement::new(
SubjectNode::named(IRI::from_str("http://en.wikipedia.org/wiki/Tony_Benn").unwrap()),
IRI::from_str("http://purl.org/dc/elements/1.1/title").unwrap(),
Literal::new("Tony Benn").into(),
).into());
// ...
statements
}
Changes
Version 0.3.1
- Added PrefixMappingFactory trait and a prefix_mapping_factory method on GraphFactory.
Version 0.3.0
- The abstract RDF API, described in module 'model', is now entirely trait based.
- An implementation, in module 'simple', provides concrete in-memory types.
- Added a new type LanguageTag to model these values more completely.
- Added notion of features which denote capabilities supported by data sets, graphs, and statements implementations.
Version 0.2.4
- Created new Featured trait implemented by a number of types that allow client query of various optional capabilities. This also subsumes the has_index/has_all_indices capability as all index queries are now feature queries.
Version 0.2.3
- Copied some errors from rdftk_io.
- Renamed the Io variant to ReadWrite.
Version 0.2.2
- Reworked APIs to take Ref types and to be consistent in use of trait objects and types throughout.
- Added factory type for data sets.
- Made PrefixMappings a concrete type in the core::graph::mapping module.
- Added InvalidMatch and Io variants to ErrorKind.
- Added mutators to Statement.
Version 0.2.1
- Changed API, removed mutable traits for Graph and DataSet, moved methods into their base traits.
- Added factory types for graphs.
- Added Skolemization function for graphs.
Version 0.2.0
- A change to the API, all
Statement
, and statement components are now passed asRc
references.- Added additional _ref constructors to allow cleaner client code.
- A change to the API,
Graph
andDataSet
now use type parameters to describe iterators returned by query methods. - A change to the API,
QName
constructors now return errors instead of panic on invalid values. - Added more constructors for literal values.
- Added support for
chrono::Duration
in literals as well as the std version as chrono supports the correct output form. - Added
eq_
methods onSubjectNode
andObjectNode
for simple testing of inner values. - Added documentation and examples throughout.
Version 0.1.15
- Fixed Clippy suggestions.
- Removed Context from statements.
- Added value_factory method to Graph.
- Placed all unit tests in tests folder.
Version 0.1.14
- Removed stand-alone named graph.
- Added DataSet as a way to associate names to graphs.
- Renamed CachingGraph to ValueFactory and made stand-alone.
Version 0.1.13
- Bug: fixed Literal constructors to produce an escape-safe literal form for strings.
Version 0.1.12
- Fixed: cargo fmt error.
Version 0.1.11
- Added: public types
StatementRef
andStatementList
rather than havingRc
obviously in all APIs.
Version 0.1.10
- DEPRECATED Support for Datasets and Quads by adding a context
(type
ContextNode
) toStatement
.
Version 0.1.9
- Support for RDF* in
Statement
. - Added additional constructors to
Statement
. - Renamed Resource method
rdf_type
toinstance_of
for compatibility with RDF schema usage. - Added
is_valid
associated function toQName
.
Version 0.1.8
- Explicit exports over
pub use *
.
Version 0.1.7
- Split
Graph
intoGraph
andMutableGraph
. - Split
NamedGraph
intoNamedGraph
andMutableNamedGraph
. - Added
get_default_namespace
to thePrefixMappings
trait as a helper function. - Altered
PrefixMappings::compress
andPrefixMappings::expand
to take references.
Version 0.1.6
- Explicit version management.
Version 0.1.5
- Updates for rdftk_memgraph to build.
Version 0.1.4
- Made all local dependencies only major/minor valued.
Version 0.1.3
- Moved all
IRI
toIRIRef
on interfaces. - Moved
Graph
and associated types into core and deprecatedrdftk_graph
.
Version 0.1.2
- Clean-up changes.
Version 0.1.1
- Added
From
to allow direct construction of aSubjectNode
from anIRI
. - Fixed a bug in
QName
that dropped the ":" for non-prefixed values.
Version 0.1.0
- First release.
TODO
TBD
Dependencies
~7–14MB
~188K SLoC