【问题标题】:Export inferred axiom in Protege在 Protege 中导出推断的公理
【发布时间】:2017-10-23 10:43:32
【问题描述】:

我正在学习本体和 Protege 工具。我创建了 3 个 A、B 和 C 类的基本本体。

我用Equivalence属性说明A类等价于B类,B类等价于C类,然后我用推理器(Pellet)判断A类等价于C类。

这种传递关系在 Protege 中完美运行。我可以用黄色看到 A 类相当于 C 类,反之亦然。

我想从 Protege 工具中导出这个推断的公理。我转到“文件 -> 将推断公理导出为本体”并在第一个屏幕上选择所有选项,在第二个屏幕上不选择任何选项。最后,我将文件保存为 RDF/XML 语法的 OWL。

现在,当我打开这个新文件时,我看不到任何关于推断公理的三元组,即 A 类等同于 C 类。事实上,它与我原来的本体完全相同。

我不知道我错过了什么。我还尝试通过 Protege 的“活动本体选项卡”将导出的文件导入到我的原始本体中,然后执行“文件 -> 将推断的公理导出为本体”,但输出文件仍然不包含推断的三元组。当在 Protege 中加载并使用推理器时,推理有效,但我希望 Protege 将此推理导出到 OWL 文件中。

有可能吗?我已经花了很多时间在互联网上四处寻找,但没有找到任何解决方案。我错过了一步吗?

顺便说一句,我使用了最新的 Protege 5.2 版本,也尝试了 4.3 版本,看看是否有错误,但结果是一样的。

谢谢

我使用的本体就是这个。


///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////





<!-- http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#A -->

<owl:Class rdf:about="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#A">
    <owl:equivalentClass rdf:resource="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#B"/>
</owl:Class>

<!-- http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#B -->

<owl:Class rdf:about="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#B">
    <owl:equivalentClass rdf:resource="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#C"/>
</owl:Class>

<!-- http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#C -->

<owl:Class rdf:about="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#C"/>


更新 1:如果我在“文件 -> 将推断公理导出为本体”的最后一步中选择 OWL/XML 作为本体格式,我可以在生成的本体文件中看到以下内容。

<Declaration>
    <Class IRI="#A"/>
</Declaration>
<Declaration>
    <Class IRI="#C"/>
</Declaration>
<Declaration>
    <Class IRI="#B"/>
</Declaration>
<EquivalentClasses>
    <Class IRI="#A"/>
    <Class IRI="#B"/>
    <Class IRI="#C"/>
</EquivalentClasses>

以前我以 RDF/XML 格式导出本体。至少我可以看到 A、B 和 C 是等价的类。也许是 RDF 与 OWL 的问题?

更新 2: 我收到了关于 Protege Dev 列表的以下回复。看来推断的公理并非设计为以 RDF/XML 格式保存的。

"OWL RDF/XML 语法不支持像等价类这样的 n 元构造函数,因为一切都应该使用三元组表示(因为 RDF)。在您的示例中,推断的公理 EquivalentClasses(A B C) 在 RDF 中序列化[1](见表 1)至

A owl:equivalentClass B .

B owl:equivalentClass C .

其他格式,如 OWL/XML 或 OWL 函数式语法支持 n 元公理。这是根据你观察到的。

另外,在相关说明中,请注意推断公理生成器不会保存推理器生成的所有推断公理。例如,如果您的本体具有公理 A subClassOf B 和 B subClassOf C,则推断的公理 A subClassOf C 将不会被保存,因为它遵循其他(推断的)公理 A subClassOf B 和 B subClassOf C。只有非冗余推断的公理 (不遵循其他推断公理的)被保存。这是因为推断的公理可能太多了。”

[1]https://www.w3.org/TR/owl2-mapping-to-rdf/#Translation_of_Axioms_without_Annotations

【问题讨论】:

  • 按预期为我工作。可以分享本体吗?你确定推理的时候没有异常(右上方有红色的错误提示)?
  • @AKSW,我已经用本体更新了这个问题。没有例外。 Pellet 推理器工作正常,没有任何异常。
  • 现在,我明白你的意思了。您希望在导出的本体中看到 A 和 C 之间的等价类公理,对吧?
  • 是的,这就是我希望在生成的 OWL 文件中看到的内容。
  • -> Protege 邮件列表。你可以在这里链接到问题,这样他们也可以在这里回答。

标签: java owl ontology protege inference


【解决方案1】:

我明白你的意思。您希望在导出的本体中看到 A 和 C 之间的等价类公理,对吗?

我可以复制它。看起来 Protege 编辑器假设它已经是一个断言的公理。至少,当我再次打开本体时,编辑器会在类层次结构树中呈现它:

输入本体:

@prefix : <http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3> .

<http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3> rdf:type owl:Ontology .

#################################################################
#    Classes
#################################################################

###  http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#A
:A rdf:type owl:Class ;
   owl:equivalentClass :B .


###  http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#B
:B rdf:type owl:Class ;
   owl:equivalentClass :C .


###  http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#C
:C rdf:type owl:Class .


###  Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi

导出推断的公理并在 Protege 中重新打开后:

这可能是一个错误,也可能是预期的行为。您应该先在 Protege 邮件列表中询问。

【讨论】:

  • 感谢您的努力。我想要的是推断的公理也应该在输出本体中。但它不存在。输出本体与输入本体相同。我的理解是,输出本体应该包含一个三元组,明确指出 A isEquivalent to C.
  • 我理解并且可以复制它。请参阅我的更新答案。您应该报告和 Protege 邮件列表。马修·霍里奇可能知道答案。
  • 谢谢,感谢您的帮助。我会在 protege 邮件列表中询问。
  • 如果我使用 OWL/XML 作为推断公理本体的输出格式(以前我一直使用 RDF/XML),我会得到推断公理。我已经用这些信息更新了我的问题。
  • 好吧,那听起来像个 bug。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-10
相关资源
最近更新 更多