【问题标题】:Ontology comparison in owlapiowlapi中的本体比较
【发布时间】:2017-06-13 20:50:17
【问题描述】:

我在一个项目中使用 OWLAPI,我需要比较两个本体以了解它们之间的差异。这将忽略空白节点,例如,我可以确定两个本体中是否存在相同的 OWL 限制。我不仅需要知道是否存在差异,还需要找出这些差异是什么。 OWLAPI 中是否存在这样的功能,oz 有没有相对简单的方法来做到这一点?

【问题讨论】:

    标签: ontology owl-api


    【解决方案1】:

    匿名类表达式之间的相等性不是基于空白节点 id - 匿名类表达式在文本输出中只有空白节点,在内存中 id 被忽略。因此,默认情况下,检查本体中是否存在公理将正确匹配您的差异表达式。

    这不适用于个人 - 匿名个人不会在不同的本体中被发现是相同的,这是由规范决定的。一个本体中的匿名个体无法在另一个本体中找到,因为匿名个体 id 的范围仅限于包含的本体。

    注意:OWLAPI 的单元测试必须执行一个非常相似的任务,以验证一个本体可以在不改变的情况下被解析、编写和再次解析(即在输入语法和输出语法之间往返),所以有代码您可以查看以获取灵感。有关详细信息,请参阅TestBase.java - equal() method。这包括处理匿名个人的不同 ID 的代码。

    【讨论】:

    • 在比较本体时,我知道匿名个人没有身份(因此内部身份在这里无关紧要)。所以我的意图是比较匿名节点的结构。例如,在它的命名子类的上下文中的限制:给定一个出现在两个本体中的命名子类,在每个本体中都是一个限制的子类,其中该限制是相同三元组(属性和对象)的主题两种情况。这是我需要确定的。
    • 在您的情况下,子类公理应该是 .equals() 彼此,因此您可以从第一个本体中获取一个公理并检查第二个本体是否包含它。
    • @Ignazio 那些没有明确包含但可以推断(使用推理器)的公理呢?即,是否有这样的功能来获取两个本体之间的逻辑差异,例如在 CEX3 库 (github.com/michel-ludwig/cex3) 中?
    • Owl api 没有开箱即用的功能。您可以使用推理生成器来创建显式公理,然后应用上面建议的方法,但是具有此功能的推理器会是更好的选择。
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多