1pub mod schema;
11pub mod sparql;
12mod sparql_update;
13pub mod sql;
14
15pub use schema::{list_sql_schema, list_sql_tables, SqlColumnSchema, SqlTableSchema};
16
17pub use sparql::{run_sparql, SparqlResult};
18pub use sql::{run_sql, QueryResult};
19
20use ontocore_catalog::OntologyCatalog;
21use thiserror::Error;
22
23#[derive(Debug, Error)]
24pub enum QueryError {
25 #[error("SQL error: {0}")]
26 Sql(String),
27
28 #[error("SPARQL error: {0}")]
29 Sparql(String),
30
31 #[error("export error: {0}")]
32 Export(String),
33}
34
35pub type Result<T> = std::result::Result<T, QueryError>;
36
37pub trait QueryableCatalog {
38 fn catalog(&self) -> &OntologyCatalog;
39}
40
41impl QueryableCatalog for OntologyCatalog {
42 fn catalog(&self) -> &OntologyCatalog {
43 self
44 }
45}
46
47pub fn query_catalog(catalog: &OntologyCatalog, sql: &str) -> Result<QueryResult> {
48 run_sql(catalog, sql)
49}
50
51pub fn sparql_catalog(catalog: &OntologyCatalog, sparql: &str) -> Result<SparqlResult> {
52 run_sparql(catalog, sparql)
53}