Skip to main content

Crate owl_structural_model

Crate owl_structural_model 

Source
Expand description

§owl-structural-model

crates.io Documentation CI License

Typed OWL 2 structural values for Rust.

owl-structural-model is a small, dependency-light model for representing the structural values of OWL 2: entities, class expressions, literals, annotations, axioms, ontology identity, and structural patches. It is intended for parsers, editors, validators, serializers, and storage adapters that need typed OWL values without taking a dependency on an RDF store or a reasoner.

The target standard is OWL 2, the current version of the W3C Web Ontology Language. This crate models a deliberately small, currently supported subset of the OWL 2 structural specification; it is not an OWL 2 parser, reasoner, or full conformance implementation, and it does not model the older OWL 1 API.

§W3C specifications

§What it provides

The crate keeps the structural layer explicit:

  • Entity and EntityKind represent OWL declarations.
  • ClassExpression and ObjectPropertyExpression represent nested OWL expressions.
  • OwlLiteral, Annotation, and AxiomAnnotations preserve typed values.
  • Axiom represents the currently supported structural axiom forms.
  • OntologyId represents anonymous, named, and versioned ontology identity.
  • OntologyPatch represents a non-empty set of changes to one ontology.

It does not parse files, perform I/O, access a graph store, run a reasoner, or choose an application-specific profile. A caller can stream a document as individual axioms and retain only the bounded structural values it needs.

§Example

use iri_rfc3987::Iri;
use owl_structural_model::{Axiom, ClassExpression, Entity};

fn iri(value: &str) -> Iri<String> {
    Iri::parse(value).expect("example IRI is valid").into()
}

let customer = Entity::class(iri("https://example.org/Customer"));
let declaration = Axiom::declaration(customer);
let subclass = Axiom::sub_class_of(
    ClassExpression::named(iri("https://example.org/Customer")),
    ClassExpression::named(iri("https://example.org/Party")),
);

assert!(matches!(declaration, Axiom::Declaration { .. }));
assert!(matches!(subclass, Axiom::SubClassOf { .. }));

§Validation

Constructors reject invalid structural shapes immediately. For example, equivalent classes require at least two operands and language-tagged literals require a non-empty language tag. Errors are returned as the typed StructuralModelError enum.

§Scope and memory

The crate models individual structural values and explicit, caller-owned patches. It does not promise that an entire ontology fits in memory. A parser or application handling an unbounded source should stream axioms and apply its own explicit limits or persistence strategy.

§License

Licensed under either of:

  • Apache License, Version 2.0
  • MIT License

at your option. Typed OWL 2 structural values without an RDF-store dependency.

Structs§

Annotation
An OWL annotation.
AxiomAnnotations
Axiom annotations attached to one structural axiom.
Entity
An OWL entity declaration target.
OntologyId
OWL ontology identity: optional ontology IRI plus optional version IRI.
OntologyPatch
A non-empty collection of structural changes for one ontology identity.

Enums§

AnnotationSubject
Subject of an OWL annotation assertion.
AnnotationValue
A value that can appear in an OWL annotation.
Axiom
An OWL structural axiom.
ClassExpression
An OWL class expression.
EntityKind
Kind of OWL entity.
ObjectPropertyExpression
An OWL object property expression.
OntologyPatchOperation
One structural ontology patch operation.
OwlLiteral
A literal value used in OWL structural annotations and axioms.
StructuralModelError
A structural value failed an invariant at construction time.

Type Aliases§

OntologyIdentity
Alias emphasizing that this value is metadata rather than a document.