【问题标题】:Why the inferences visualised in Protege differ from the exported inferred axioms为什么在 Protege 中可视化的推理与导出的推理公理不同
【发布时间】:2017-03-03 17:26:08
【问题描述】:

我有一个包含两个主要类(代码和主题)和一个对象属性(主题获得代码)的本体,其中:

  • 代码(类)包含所有可用的代码(实例)
  • 代码的(类)子类对这些代码(实例)进行分类;手动指定
  • 主题(类)包含所有可用的主题(实例)
  • 每个主体(实例)都断言(获得了属性)一些代码(实例)
  • 主题(类)子类根据关联的代码(实例)和代码的代码类别忠诚度定义主题(实例)的集合
  • 推理器即将推断主题实例的断言到特定组(主题的子类)

当我在 Protege 中启动推理器时,推断的实例被断言到实例仍然满足约束的最深主题子类(见附件 Figure)。但是,如果我将推断的公理导出到单独的本体中,则每个主题子类都包含其自身的所有实例 + 其后代(显然,使用 JAVA OWL API 观察到相同的行为)。

我的问题是:为什么结果不同?我理解这两种情况的逻辑,但我不明白为什么它们不同。有什么方法可以导出 Protege 中显示的推论吗?如果没有直接的方法,我可以强迫 Hermit(或其他推理者)从 OWL API 以某种方式向我展示完全相同的“黄色门徒”结果吗?到目前为止,我只找到了一种解决方法 - 按原样导出推理,然后通过 SPARQL 请求差异。

我正在使用 Protege 5.0.0、Reasoner Hermit 1.3.8 和 OWL API 5.0.5(尽管不同的推理器获得了相同的结果:Fact++、Pellet;以及不同的 OWL API 和 Protege 版本:4.x)

我会为任何 cmet 感到非常高兴,即使是简单的解释也会对我有很大帮助。

【问题讨论】:

    标签: ontology protege owl-api inference reasoning


    【解决方案1】:

    导出的公理取决于所使用的推断公理生成器的集合 - Protege 可能使用的集合与您选择的集合不同。

    发电机组可在面板中配置;它的初始化如下所示:

        addCheckBox(new InferredSubClassAxiomGenerator(), true, false);
        addCheckBox(new InferredEquivalentClassAxiomGenerator(), true, false);
        addCheckBox(new InferredSubObjectPropertyAxiomGenerator(), true, false);
        addCheckBox(new InferredSubDataPropertyAxiomGenerator(), true, false);
        addCheckBox(new InferredEquivalentObjectPropertyAxiomGenerator(), true, false);
        addCheckBox(new InferredEquivalentDataPropertiesAxiomGenerator(), true, false);
        addCheckBox(new InferredObjectPropertyCharacteristicAxiomGenerator(), false, false);
        addCheckBox(new InferredDataPropertyCharacteristicAxiomGenerator(), false, false);
        addCheckBox(new InferredInverseObjectPropertiesAxiomGenerator(), false, false);
        addCheckBox(new InferredClassAssertionAxiomGenerator(), false, false);
        addCheckBox(new InferredPropertyAssertionGenerator(), false, true);
        addCheckBox(new InferredDisjointClassesAxiomGenerator(), false, true);
    

    我会猜测默认选中的是那些标记为true的。

    【讨论】:

    • 非常感谢@Ignazio 的回答。但实际上,它并没有解决我的问题。我尝试了许多配置(在 Protege 和 OWL API 中),但我从未达到与 Protege 可视化“实时”推理相同的状态。此外,由于我可以为公理导出设置一组生成器,我还可以设置将在 Protege 中显示的推论(突出显示,淡黄色)。即使我让 Protege 只显示和生成实例,它们仍然不同(在推断实例的情况下)。
    • 在 protégé 中可能有更多的推理,超出了我发现的范围 - 我知道对于非推理视图来说是这样。但是我对 protégé 还不够熟悉,无法指出任何此类额外内容。
    • 我在您的另一个comment 中找到了解决方案。 Protege 突出显示的推理可能是reasoner.getInstances(c, true); 的输出(跳过子类的实例)。但是当推断的本体由 InferredOntologyGenerator (IOG) 对象生成时,没有这样的选项,因此不会跳过实例。您知道如何将 IOG 设置为 reasoner.getInstances(c, false); 吗?
    • 问题已解决。我使用的是InferredClassAssertionAxiomGenerator,其中“直接类型检索条件”被硬编码为false。所以我编写了自己的生成器,其中条件设置为 truereasoner.getTypes(entity, true).entities() .forEach(t -> result.add(dataFactory.getOWLClassAssertionAxiom(t, entity)));。谢谢@Ignazio!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多