#![warn(missing_docs)]
pub mod hierarchy;
mod parse;
mod query;
pub mod rewrite;
use ontologos_core::{Ontology, Taxonomy};
use thiserror::Error;
pub use hierarchy::TaxonomyHierarchy;
pub use parse::{MAX_QUERY_ATOMS, MAX_QUERY_LEN, parse_conjunctive_query};
pub use query::{ConjunctiveQuery, QueryAnswer, QueryAtom};
pub use rewrite::rewrite_query;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("unknown class in query: {0}")]
UnknownClass(String),
#[error("query parse error: {0}")]
Parse(String),
#[error(transparent)]
Query(#[from] hierarchy::Error),
}
pub fn answer_query<'a>(
ontology: &'a Ontology,
taxonomy: &'a Taxonomy,
query: &ConjunctiveQuery,
) -> Result<Vec<QueryAnswer>> {
let engine = hierarchy::TaxonomyHierarchy::new(ontology, taxonomy);
query::evaluate(&engine, ontology, query)
}