Skip to main content

ontologos_rdfs/
lib.rs

1//! RDFS reasoning via graph closure and property propagation.
2//!
3//! # Start here — load a file and materialize
4//!
5//! ```no_run
6//! use ontologos_parser::load_ontology;
7//! use ontologos_rdfs::RdfsEngine;
8//!
9//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
10//! let mut ontology = load_ontology(std::path::Path::new("ontology.owl"))?;
11//! let report = RdfsEngine::new().materialize(&mut ontology)?;
12//! println!("inferred {}", report.inferred_total());
13//! # Ok(())
14//! # }
15//! ```
16//!
17//! Via [`Reasoner`](ontologos_core::Reasoner): use [`classify_reasoner`] — not [`Reasoner::classify`](ontologos_core::Reasoner::classify).
18
19mod engine;
20mod reasoner;
21mod report;
22mod rules;
23
24pub use engine::RdfsEngine;
25pub use reasoner::{classify_reasoner, materialize_reasoner};
26pub use report::{InferenceRecord, MaterializationReport, RdfsRule};
27
28use ontologos_core::Error as CoreError;
29use thiserror::Error;
30
31pub type Result<T> = std::result::Result<T, Error>;
32
33#[derive(Debug, Error)]
34pub enum Error {
35    #[error("expected profile {expected:?}, got {actual:?}")]
36    WrongProfile {
37        expected: ontologos_core::Profile,
38        actual: ontologos_core::Profile,
39    },
40    #[error(transparent)]
41    Core(#[from] CoreError),
42}