【问题标题】:OWLAPI 4: import or merge ontologies?OWLAPI 4:导入或合并本体?
【发布时间】:2015-12-02 06:55:35
【问题描述】:

我的情况如下: 我有三个核心本体,它们分别有 TBox 和 ABox 描述。它们需要在运行时导入/合并。我还需要一次导入/合并一个只包含 ABox 描述的其他本体。最后一个必须随着时间的推移动态加载和删除。 我的困境是是否使用 OWLAPI 4 的导入或合并?

更新: 核心本体 ABox 最终将根据“兼职”本体动态加载的传入数据进行修改。

【问题讨论】:

    标签: owl owl-api


    【解决方案1】:

    导入听起来是最好的策略,因为您没有提到对任何本体的修改,而只是添加和删除整个本体。

    我会做以下事情:

    • 创建一个新的空本体
    • 导入将始终包含的所有本体
    • 向您只想在部分时间使用的本体添加/删除导入

    注意:OWLAPI 不会在创建导入声明时加载本体——这是为了避免在编辑导入时加载时间过长。因此,要使其工作,您必须预先加载您计划使用的本体:

    • 加载本体 X
    • 在 Y 中添加导入声明:Y imports X

    OWLOntology 上的大多数查询方法都接受一个参数来判断您是否希望搜索包含导入闭包 - 您可能希望将其设置为 Imports。一直包含。

    【讨论】:

    • 是的,我没有提到修改。核心本体 ABox 将根据来自“兼职”本体的传入数据进行修改。已修改问题以包含此信息
    • 这使设计有点复杂,但您应该仍然可以使用上面的答案。可以修改导入的本体,只是失去了只修改根本体的便利。
    • 如果我创建一个新的空本体并将其他的导入到其中,我将无法对根进行修改,即空本体,但我将能够对其他本体进行修改。我说的对吗?
    • 不完全是。如果本体 a 导入 b,并且您向 a 添加或删除公理,则更改将始终应用于 a,而不会应用于 b。因此,导入的本体不能通过导入本体进行修改。但是,没有什么能阻止您直接将更改应用到 b ;唯一的困难是确保将正确的更改应用于正确的本体。
    • 对于核心本体,应该没问题。对于您计划添加和删除的本体,我不会推荐它 - 它是可行的,但它的计算成本会更高。另外,考虑重复公理:如果一个公理同时出现在核心本体和临时本体中,当您合并核心和临时本体时,您将只保留该公理的一份副本。然后,当您删除临时本体中包含的所有公理时,重复公理的单个副本也将被删除。导入不会存在此问题。
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2015-09-02
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多