如果A与B互斥且该个人不在B中,那么OWL本体中的个人如何分类为A的实例?

问题描述

这是我用Protege创建的本体。

Prefix(:=<http://www.semanticweb.org/kolam/ontologies/2020/9/exInference#>)
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#>)


Ontology(<http://www.semanticweb.org/kolam/ontologies/2020/9/exInference>

Declaration(Class(:Course))
Declaration(Class(:Professor))
Declaration(Class(:ProfessorBusy))
Declaration(Class(:ProfessorLazy))
Declaration(ObjectProperty(:hasChild))
Declaration(ObjectProperty(:teaches))
Declaration(Namedindividual(:INF1000))
Declaration(Namedindividual(:INF2000))
Declaration(Namedindividual(:INF3000))
Declaration(Namedindividual(:INF4000))
Declaration(Namedindividual(:INF5000))
Declaration(Namedindividual(:John))
Declaration(Namedindividual(:marc))

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

# Class: :Professor (:Professor)

EquivalentClasses(:Professor ObjectSomeValuesFrom(:teaches :Course))

# Class: :ProfessorBusy (:ProfessorBusy)

EquivalentClasses(:ProfessorBusy ObjectIntersectionOf(:Professor ObjectComplementOf(:ProfessorLazy)))

# Class: :ProfessorLazy (:ProfessorLazy)

EquivalentClasses(:ProfessorLazy ObjectIntersectionOf(:Professor ObjectMaxCardinality(2 :teaches :Course)))


############################
#   Named Individuals
############################

# Individual: :INF1000 (:INF1000)

ClassAssertion(:Course :INF1000)

# Individual: :INF2000 (:INF2000)

ClassAssertion(:Course :INF2000)

# Individual: :INF3000 (:INF3000)

ClassAssertion(:Course :INF3000)

# Individual: :INF4000 (:INF4000)

ClassAssertion(:Course :INF4000)

# Individual: :INF5000 (:INF5000)

ClassAssertion(:Course :INF5000)

# Individual: :John (:John)

ObjectPropertyAssertion(:teaches :John :INF1000)
ObjectPropertyAssertion(:teaches :John :INF2000)

# Individual: :marc (:marc)

ObjectPropertyAssertion(:teaches :marc :INF3000)
ObjectPropertyAssertion(:teaches :marc :INF4000)
ObjectPropertyAssertion(:teaches :marc :INF5000)


DifferentIndividuals(:INF1000 :INF2000 :INF3000 :INF4000 :INF5000)
)

正如预期的那样,推理者将marc正确地归类为ProfessorBusy一个实例,因为他教授了2门以上的课程。但是,John仅教授2门课程,推理机不会将他归类为ProfessorLazy

我猜是因为有开放世界的假设,我们永远不能确定约翰实际教授的课程少于2门。

还有另一种方法可以使这项工作吗?如果某物不是ProfessorBusy,那是ProfessorLazy吗?

解决方法

推理者不推断JohnProfessorLazy的原因是由于开放世界的假设。开放世界假设基本上意味着推理者只能基于明确声明的信息或可以从明确声明的信息派生的信息进行推理。推理者无法做出任何其他判断。

这就是为什么推理者无法推断JohnProfessorLazy的原因。它只知道John教授2门课程。没有信息表明John仅教授2门课程。推理者认为,约翰有可能正在教授目前未知的课程。

要获得想要的东西,您需要关闭世界。实质上,这就是@Stanislav Kralin的评论所要表达的。

  1. 您需要声明John不会教授其他任何课程:NegativeObjectPropertyAssertion(:teaches :John :INF3000)等。

  2. 要使(1)工作,您需要声明课程数量有限:EquivalentClasses(:Course ObjectOneOf(:INF1000 :INF2000 :INF3000 :INF4000 :INF5000))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...