owlish 0.28.0

OWL 2 implementation with wasm support and turtle parsing
Documentation
use owlish::{
    api::Ontology,
    owl::{Axiom, ObjectPropertyDomain, ObjectPropertyRange, IRI},
    parser::ParserOptions,
};

#[test]
fn object_properties() {
    env_logger::try_init().ok();
    let turtle = include_str!("./object_properties.ttl");

    harriet::TurtleDocument::parse_full(turtle)
        .map_err(|e| format!("{}...", &format!("{:?}", e)[..200]))
        .expect("Could not parse with harriet");

    let o = Ontology::parse(
        turtle,
        ParserOptions::builder()
            .known(owlish::owl::Declaration::DataProperty {
                iri: IRI::new("http://field33.com/ontologies/test/TestDataProperty")
                    .unwrap()
                    .into(),
                annotations: vec![],
            })
            .build(),
    )
    .unwrap();
    assert_eq!(o.declarations().len(), 197);
    assert_eq!(o.axioms().len(), 433);

    let mut domain_to_check = None;
    let mut range_to_check = None;
    for a in o.axioms().iter() {
        if let Axiom::ObjectPropertyDomain(d) = &a {
            if d.iri
                .as_iri()
                .as_str()
                .ends_with("AccountabilityFulfillingOf")
            {
                domain_to_check = Some(d)
            }
        }
        if let Axiom::ObjectPropertyRange(r) = &a {
            if r.iri
                .as_iri()
                .as_str()
                .ends_with("AccountabilityFulfillingOf")
            {
                range_to_check = Some(r)
            }
        }
    }

    assert_eq!(
        domain_to_check,
        Some(&ObjectPropertyDomain::new(
            IRI::new(
                "http://field33.com/ontologies/EXTERNAL_as_innovation/AccountabilityFulfillingOf"
            )
            .unwrap()
            .into(),
            IRI::new("http://field33.com/ontologies/EXTERNAL_as_innovation/Accountability")
                .unwrap()
                .into(),
            vec![]
        ))
    );

    assert_eq!(
        range_to_check,
        Some(&ObjectPropertyRange::new(
            IRI::new(
                "http://field33.com/ontologies/EXTERNAL_as_innovation/AccountabilityFulfillingOf"
            )
            .unwrap()
            .into(),
            IRI::new("http://field33.com/ontologies/EXTERNAL_as_innovation/Purpose")
                .unwrap()
                .into(),
            vec![]
        ))
    );
}