An open API service indexing awesome lists of open source software.

https://github.com/field33/owlish

OWL2 representation in Rust
https://github.com/field33/owlish

owl2 rdf rust

Last synced: 11 days ago
JSON representation

OWL2 representation in Rust

Awesome Lists containing this project

README

          

# 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.