# owlish [github](https://github.com/field33/owlish) [crates.io](https://crates.io/crates/owlish) [docs.rs](https://docs.rs/owlish) [npmjs.com](https://www.npmjs.com/package/owlish) This library provides OWL2 datastructures that allow you to build and work with ontologies. The OWL2 model is based on functional style syntax. E.g. the function ``` ClassAssertion( :Person :Mary ) ``` Is represented as a similar tuple struct ```rust pub struct ClassAssertion(pub(crate) ClassConstructor, pub(crate) IndividualIRI); ``` ## Usage owlish provides two APIs: 1. A low level representation of OWL based on functional syntax - This is exported in `owlish::owl::*` 2. A conceptional api that concatenates OWL data for relevant types. - TBD ## Usage (Node.js) To initialize the module in a Node.js environment, it is currently recommend to load the WASM module via the `fs` API and pass it explicitly to the initialization function. Example: ```js import path from 'path'; import { readFile } from 'fs/promises'; import { fileURLToPath } from 'url'; // The next two lines are only required if running the Node script as an ESM module const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // Load .wasm file from the package const owlishWasm = await readFile(path.join(__dirname, "../node_modules/owlish/owlish_bg.wasm")); // Initialize module, after executing this line, all functions from `owlish` can be used like normal. await owlish(owlishWasm) ``` ## Dev stuff Build: ``` cargo build ``` Test: ``` cargo test ``` Run benchmark tests: ``` cargo bench ``` ## Commits and Releases This crate uses [convenentional commits](https://www.conventionalcommits.org/en/v1.0.0/) to create automated releases whenever the main branch is updated. In addition the CHANGELOG.md is automatically generated.