#ontology #owl #visitor #owl2

horned-visit

具有可重载实现的 horned-owl 访问者特性

1 个不稳定版本

0.1.0 2022年2月23日

#844 in 科学

MITLGPL-3.0

31KB
507

horned-visit Star me

具有可重载实现的 horned-owl 访问者特性。

Actions Codecov License Source Crate Documentation Changelog GitHub issues

🗺️ 概述

此库为 horned-owl 对象模型提供访问者特性,可用于轻松实现查询或编辑本体算法。

🔌 使用方法

horned-owlhorned-visit 的最新版本添加到您的 Cargo.toml 清单文件中的 [dependencies] 部分

[dependencies]
horned-owl = "0.11.0"
horned-visit = "0.1.0"

然后使用 horned_visit::Visithorned_visit::VisitMut 特性来实现算法。`horned_visit::visit` 和 `horned_visit::visit_mut` 模块包含默认方法实现。

💡 示例

OWL2 不要求声明所有实体(见 规范),但根据惯例可能需要这样做以帮助捕获错误。以下是如何使用 horned-visit 实现一个算法的示例,确保在本体文档中声明了所有引用 OWL2 类的 IRI

extern crate horned_owl;
extern crate horned_visit;

use std::collections::HashSet;
use std::fs::File;
use std::io::BufReader;

use horned_owl::model::*;
use horned_visit::Visit;

#[derive(Default, Debug)]
struct ClassDeclarationChecker<'ast> {
    declared: HashSet<&'ast IRI>,
    used: HashSet<&'ast IRI>
}

impl<'ast> Visit<'ast> for ClassDeclarationChecker<'ast> {
    fn visit_declare_class(&mut self, declare_class: &'ast DeclareClass) {
        self.declared.insert(&declare_class.0.0);
        horned_visit::visit::visit_declare_class(self, declare_class);
    }
    fn visit_class(&mut self, class: &'ast Class) {
        self.used.insert(&class.0);
    }
}

pub fn classes_well_declared(ontology: &horned_owl::ontology::set::SetOntology) -> bool {
    let mut checker = ClassDeclarationChecker::default();
    ontology.iter().for_each(|aa| checker.visit_annotated_axiom(aa));
    checker.used.is_subset(&checker.declared)
}

let mut f = File::open("tests/data/bfo.owl").map(BufReader::new).unwrap();
let ontology = horned_owl::io::rdf::reader::read(&mut f).unwrap().0.into();
assert!(classes_well_declared(&ontology));

💭 反馈

⚠️ 问题跟踪器

发现了一个错误?有增强请求吗?如果您需要报告或询问,请访问项目的 GitHub 问题跟踪器。如果您正在填写错误报告,请尽可能提供有关问题的信息,并尝试在简单、易于复现的情况下重现相同的错误。

📋 更新日志

此项目遵循 语义版本控制 并提供 更新日志,格式为 Keep a Changelog

📜 许可证

此库根据开源 MIT 许可证 提供。

本项目由Martin Larralde欧洲分子生物学实验室Zeller团队的博士课题期间开发。

依赖项

约6MB
约105K SLoC