Skip to main content

pyshacl_turbo_engine/
lib.rs

1//! SHACL engine. Unsupported SHACL features are explicit errors.
2//! Python is not involved in compilation, targeting, rules, or validation.
3//!
4//! The diagram and example below describe the borrowed graph query foundation.
5#![doc = concat!("<div>\n", include_str!("architecture.svg"), "\n</div>\n\n")]
6#![doc = include_str!("architecture.md")]
7
8mod compile;
9mod components;
10mod constraints;
11mod display;
12mod execute;
13mod expression;
14mod functions;
15mod graph;
16#[cfg(test)]
17mod graph_backend_tests;
18mod graph_read;
19mod graph_views;
20#[cfg(test)]
21mod graph_views_tests;
22mod inference;
23mod ontology;
24mod path;
25mod pattern;
26mod query_graph;
27#[cfg(test)]
28mod query_graph_tests;
29mod revision;
30mod sparql;
31mod sparql_regex;
32mod structural;
33mod value;
34
35#[cfg(test)]
36mod structural_tests;
37
38pub use compile::CompiledShapes;
39pub use execute::{Options, RuleExpansion, ValidationReport};
40pub use functions::evaluate_query;
41pub use graph::{
42    parse as parse_graph, parse_dataset, parse_store_snapshot, serialize as serialize_graph,
43    store_quad,
44};
45pub use graph_read::GraphRead;
46pub use graph_views::{OverlayGraph, UnionGraph};
47pub use inference::{expand as infer, expand_into as infer_into};
48pub use ontology::inoculate;
49pub use oxigraph;
50pub use query_graph::QueryGraph;
51pub use revision::fingerprint as engine_fingerprint;
52
53#[derive(Debug, thiserror::Error)]
54pub enum Error {
55    #[error("SHACL validation failure: {0}")]
56    ValidationFailure(String),
57    #[error("Unsupported feature: {0}")]
58    Unsupported(String),
59    #[error("{0}")]
60    Invalid(String),
61    #[error("{0}")]
62    Runtime(String),
63    #[error("SPARQL evaluation failed: {0}")]
64    Query(#[from] oxigraph::sparql::QueryEvaluationError),
65}
66
67pub type Result<T> = std::result::Result<T, Error>;