【问题标题】:Inferring Inverse Property in Protege在 Protege 中推断逆属性
【发布时间】:2020-09-04 20:24:16
【问题描述】:

我创建了A 'is functional parent of' B 关系并将'has functional parent' 定义为'is functional parent of' 的倒数。 'A''B' 都是 'chemical entity' 的子类。

我希望 Protege 推断 B 'has functional parent' A。查询'has functional parent' some A 失败。

错误 #1:不理解开放世界

我意识到some 意味着并非所有B 都具有'has functional parent''A' 的关系。 但是,查询'chemical entity' and 'has functional parent' 仍然失败。

我的本​​体没有实例。我希望查询伤口找到子类。

乌龟文件

@prefix : <http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10#> .
@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/michaelchary/ontologies/2020/8/untitled-ontology-10> .

<http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10> rdf:type owl:Ontology .

#################################################################
#    Object Properties
#################################################################

###  http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10#hasFunctionalParent
:hasFunctionalParent rdf:type owl:ObjectProperty ;
                     owl:inverseOf :isFunctionalParentOf .


###  http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10#isFunctionalParentOf
:isFunctionalParentOf rdf:type owl:ObjectProperty .


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

###  http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10#A
:A rdf:type owl:Class ;
   rdfs:subClassOf :Z ,
                   [ rdf:type owl:Restriction ;
                     owl:onProperty :isFunctionalParentOf ;
                     owl:someValuesFrom :B
                   ] .


###  http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10#B
:B rdf:type owl:Class ;
   rdfs:subClassOf :Z .


###  http://www.semanticweb.org/michaelchary/ontologies/2020/8/untitled-ontology-10#Z
:Z rdf:type owl:Class .


###  Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi

【问题讨论】:

  • 请添加一个最小本体来说明您遇到的问题。
  • @HenrietteHarmse 我在 Turtle 语法中添加了一个最小本体。
  • 当我尝试在 Protege 中打开此 .ttl 文件时出现错误。请提供您在 Protege 中使用的确切文件。
  • @HenrietteHarmse 从 Protege 上传了准确的 TTL 文件

标签: ontology protege inference


【解决方案1】:

根据您在本体中陈述的公理,推理者绝对没有任何东西可以得出B hasFunctionalParent A

要理解为什么会出现这种情况,即使您的本体不包含任何明确的个体,从个体的角度进行思考也会很有帮助。当推理器​​运行时,它会尝试根据本体中的公理生成模型。模型由遵循本体公理的生成个体组成。

为了说明的目的,让我们假设个人的宇宙由以下数字组成:

域 = {0, 1, 2, 3, 4, 5, 6, 7},

Z = {1, 2, 3, 5, 6, 7},

A = {5, 7}

B = {2, 3, 6}

然后你有一个对象属性hasFunctionalParent 和它的逆。简而言之,我将hasFunctionalParent 称为R,将其反向称为invRRinvR 是什么意思?它基本上表明,当我们域中的两个人通过R 关联时,他们也通过invR 关联。也就是说,如果我们有R(1, 2),那么invR(2, 1) 也成立。

声明A subClassOf invR some B 意味着A 的每个个体都通过invRB 的至少1 个个体相关联。因此,如果我们有invR(5, 2)invR(7, 3),我们也会有R(2, 5)R(3, 7)。但是,这没有一般地说明 B 类。 R(6, 0) 完全有可能成立。因此推理者无法推断出B hasFunctionalParent A

要获得BZ 用于查询“查找hasFunctionalParent some B 的超类”(这意味着在进行查询时必须在Protege 中勾选“超类”),您必须声明isFunctionalParentOf 具有域A 和范围B。这表明,每当xy 两个人通过isFunctionalParentOf 关联时,我们可以假设xA 的一个实例,而yB 的一个实例。

最后,您会注意到您需要使用 Protege 中的 DL 查询选项卡来进行此推理。特别是它没有显示为推理后推论的一部分。这是为什么?这是因为 Protege 只显示 named 类的推断。 hasFunctionalParent some B 是一个匿名类,因此未显示此推断。在 Protege 中制作此节目的一个技巧是添加一个任意概念,例如 X,您将其设置为等同于 hasFunctionalParent some B。如果您现在运行推理器,Protege 将推断出 X subClassOf B

【讨论】:

  • 非常感谢。我看到了我的错误,但我原来的问题的精神仍然存在。如果有 A、B、C 三个类,我想从 R(A,B) 和 R(B,C) 中推断出 invR(B,A) 和 invR(B,C) 怎么办?如果我将R的域设置为{A,B}的交集,那是不是失去了关系的特异性?
  • 是的,它会失去特异性。维护它的唯一方法是引入具有适当范围的新对象属性,例如 invS 和 S。否则,推理者根本没有足够的信息来做出您需要的推理。
  • 顺便说一句,你想要 {A,B} 的并集而不是交集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
相关资源
最近更新 更多