9 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2022 年 2 月 15 日 |
---|---|
0.3.3 | 2022 年 1 月 21 日 |
0.2.0 | 2021 年 12 月 12 日 |
0.1.2 | 2020 年 4 月 10 日 |
0.1.0 | 2019 年 7 月 24 日 |
#1022 in 科学
每月 36 次下载
用于 fastobo-owl
130KB
2.5K SLoC
horned-functional

OWL2 函数式语法解析器,用于 horned-owl
。
🗺️ 概述
此库为 horned-owl
晶格提供扩展,以便使用 OWL 函数式语法。它提供了一个使用 pest
编写的解析器和序列化器。
🔌 使用方法
将 horned-owl
和 horned-functional
的最新版本添加到您的 Cargo.toml
清单的 [dependencies]
部分
[dependencies]
horned-owl = "0.11.0"
horned-functional = "0.4.0"
🔍 解析器
要轻松读取包括前缀在内的整个 OWL 文档,请使用 horned_functional::to_string
函数
use horned_owl::ontology::set::SetOntology;
let s = std::fs::read_to_string("tests/data/ms.obo.ofn")
.expect("failed to read OWL file");
let (ontology, prefixes) = horned_functional::from_str::<SetOntology, _>(&s)
.expect("failed to parse OWL file");
所有 OWL 元素都可以使用 FromFunctional
特性以函数式语法进行解析,使用 from_ofn
方法从序列化字符串读取
use horned_owl::model::Axiom;
use horned_functional::FromFunctional;
let axiom = Axiom::from_ofn("Declaration(Class(<http://purl.obolibrary.org/obo/MS_1000031>))")
.expect("failed to parse axiom");
如果序列化版本包含缩写的 IRIs,则可以将自定义前缀映射传递给 from_ofn_ctx
方法
use horned_owl::model::Axiom;
use horned_functional::FromFunctional;
let mut mapping = curie::PrefixMapping::default();
mapping.add_prefix("obo", "http://purl.obolibrary.org/obo/").ok();
let ctx = horned_functional::Context::from(&mapping);
let axiom = Axiom::from_ofn_ctx("Declaration(Class(obo:MS_1000031))", &ctx)
.expect("failed to parse axiom");
✏️ 序列化器
要轻松序列化包括前缀在内的整个 OWL 文档,请使用 horned_functional::to_string
函数
let mut file = std::fs::File::open("tests/data/ms.owx")
.map(std::io::BufReader::new)
.expect("failed to open OWL file");
let (ontology, prefixes) = horned_owl::io::owx::reader::read(&mut file)
.expect("failed to read OWL file");
// `horned_functional::to_string` needs an AxiomMappedOntology
let axiom_mapped = ontology.into();
// serialize using the same prefixes as the input OWL/XML file
let ofn = horned_functional::to_string(&axiom_mapped, &prefixes);
// serialize without abbreviated IRIs
let ofn = horned_functional::to_string(&axiom_mapped, None);
所有OWL元素都可以使用自定义的Display
实现以功能语法显示,允许在format!
、println!
或write!
宏中使用功能语法。format!
、println!
或write!
。只需将AsFunctional
特质添加到作用域中,并使用as_ofn
方法来获取任何支持元素的显示类型。
use horned_owl::model::*;
use horned_functional::AsFunctional;
let build = Build::new();
// build a Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/RO_0002175>))
let op = build.object_property("http://purl.obolibrary.org/obo/RO_0002175");
let axiom = Axiom::from(DeclareObjectProperty(op));
println!("Axiom: {}", axiom.as_ofn());
💭 反馈
⚠️ 问题跟踪器
发现了一个错误?有一个增强请求?如果您需要报告或询问某些内容,请访问项目的GitHub问题跟踪器。如果您正在提交一个错误,请尽可能多地提供有关问题的信息,并尝试在简单、易于复现的情况下重现相同的错误。
📋 更新日志
本项目遵循语义化版本控制,并提供更新日志,格式为Keep a Changelog。
📜 许可证
此库在开源MIT许可证下提供。
📰 引用
该项目由Martin Larralde开发,作为BBOP团队在劳伦斯伯克利国家实验室的硕士实习项目的一部分,在Chris Mungall的指导下进行。引用此项目如下:
Larralde M. Developing Python and Rust libraries to improve the ontology ecosystem [version 1; not peer reviewed]. F1000Research 2019, 8(ISCB Comm J):1500 (poster) (https://doi.org/10.7490/f1000research.1117405.1)
依赖
~7MB
~122K SLoC