Java 导出Protege中的推理公理

Java 导出Protege中的推理公理,java,owl,ontology,protege,inference,Java,Owl,Ontology,Protege,Inference,我正在学习本体论和Protege工具。我创建了一个包含3个类a、B和C的基本本体 我使用等价性来说明A类和B类是等价的。B类和C类是等价的。然后我使用推理器(小球)来确定A类和C类是等价的 这种过渡关系在Protege中非常有效。我可以在黄色中看到A类等同于C类,反之亦然 我想从Protege工具导出这个推断出的公理。我进入“文件->导出推断的公理作为本体”,在第一个屏幕上选择所有选项,在第二个屏幕上不选择任何选项。最后,我用RDF/XML语法将文件保存为OWL 现在,当我打开这个新文件时,我没

我正在学习本体论和Protege工具。我创建了一个包含3个类a、B和C的基本本体

我使用等价性来说明A类和B类是等价的。B类和C类是等价的。然后我使用推理器(小球)来确定A类和C类是等价的

这种过渡关系在Protege中非常有效。我可以在黄色中看到A类等同于C类,反之亦然

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

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

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

可能吗?我花了很多时间在这个问题上,在互联网上四处寻找,但没有找到任何解决方案。我漏了一步吗

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

谢谢

我使用的本体就是这个


///////////////////////////////////////////////////////////////////////////////////////
//
//班级
//
///////////////////////////////////////////////////////////////////////////////////////


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


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

更新2:我收到了关于Protege Dev列表的以下回复。通过设计,推断出的公理似乎没有保存为RDF/XML格式

“OWL RDF/XML语法不支持与等价类类似的n元构造函数,因为所有内容都应该使用三元组来表示(因为RDF)。在您的示例中,推断出的axiom等价类(A B C)在RDF[1]中序列化(参见表1)以

A猫头鹰:相当于B类

B猫头鹰:相当于C类

其他格式,如OWL/XML或OWL函数式语法支持n元公理。这与您观察到的一致

此外,在相关注释中,请注意推断公理生成器不会保存推理机生成的所有推断公理。例如,如果您的本体具有公理A子类B和B子类C,那么推断公理A子类C将不会保存,因为它与其他(推断)公理A子类C的保存方式不同公理A子类B和B子类C。只保存非冗余的推断公理(不遵循其他推断公理)。这是因为推断公理可能太多。”


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

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

输入本体:
@前缀:。
@前缀owl:。
@前缀rdf:。
@前缀xml:。
@前缀xsd:。
@前缀rdfs:。
@基地。
rdf:type owl:Ontology。
#################################################################
#班级
#################################################################
###  http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#A
:A rdf:type owl:Class;
猫头鹰:等价类:B。
###  http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#B
:B rdf:type owl:Class;
owl:等效类:C。
###  http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#C
:C rdf:type owl:Class。
###由OWL API生成(版本4.2.8.20170104-2310)https://github.com/owlcs/owlapi
导出推断出的公理并在Protege中重新打开后:


它可能是一个bug,也可能是预期的行为。你应该先问一下Protege邮件列表。

对我来说就像预期的那样。你能分享本体吗?你确定在推理过程中没有异常(右上角是否有红色错误指示器)?@AKSW,我已经用本体更新了这个问题。也不例外。小球推理机工作正常,毫无例外。现在,我明白你的意思了。您希望在导出的本体中看到A和C之间的等价类axiom,对吗?是的,这就是我希望在生成的OWL文件中看到的。->Protege邮件列表。你可以在这里链接到这个问题,这样他们也可以在这里回答。谢谢你的努力。我想要的是推断出的公理也应该在输出本体中。但事实并非如此。输出本体与输入本体相同。我的理解是,输出本体应该包含一个三元组,明确表示a与C等价。我理解并可以复制它。请参阅我的最新答案。你应该报告和Protege邮件列表。马修·霍里奇可能知道答案。谢谢你的帮助。如果我使用OWL/XML作为推断出的axiom本体的输出格式(以前我一直使用RDF/XML),我会得到推断出的axiom。我已经用这些信息更新了我的问题。好吧,那听起来像个bug。
@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