ontology - 如何强制一个类恰好具有给定属性之一

标签 ontology protege

我有一个 Person 类和一组数据属性:First_Name、Surname、Gender、DoB、Country_of_Birth。数据属性的 Domains 设置为 Person。我想在我的本体中设置一条规则,规定每个人必须恰好拥有这些属性中的每一个。

因此,在 Protege 中,我将 Person 设置为“First_Name 恰好 1 xsd:string”、“Surname 恰好 1 xsd:string”等的子类。然后,我设置了一个具有姓氏的个人,但没有名字、性别等。

然后我运行推理机。我期望它会因不一致而大发雷霆(姓氏被分配给不符合成为人的要求的个人),但事实并非如此,推理者推断该个人是一个人,尽管事实上它不具备所需的属性。

这是正确的行为吗?如何使本体按照我想要的方式运行?因为我想要的是本体对于不完整的数据具有鲁棒性(例如,你不能添加一个没有名字的人)。

最佳答案

是的,这是正确的行为,因为 Protege 使用开放世界假设,而不是关系数据库的封闭世界假设。在开放世界假设下,没有任何东西可以假设没有明确说明或可以从明确已知的信息中推导出来。当您创建一个没有分配 First_Name 的个体(可能是 Person 类型)时,在开放世界假设下,推理器仅假设 First_Name > 是未知的,并不是说它不存在(封闭世界假设就是这种情况)。因此,即使推理器推断个体必须是 Person 类型,也不会给出任何不一致的原因。为了获得不一致,您必须声明已知该人既是 Person 并且没有 First_Name。对于单个 john 可以通过断言来实现:

john Type Person
john Type First_Name max 0 xsd:string

关于ontology - 如何强制一个类恰好具有给定属性之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115438/

相关文章:

rdf - 如何在 Protege 中添加匿名个人?

java - 对象属性的多个域/范围

rdf - 如何设计本体?

java - 在 OWL/XML 语法中添加新标签

java - 获取语​​义属性的字符串值

java - OWLAPI : Want to get inferred axioms from ontology using HermiT reasoner

java - 在java web中使用OWL API获取快照SPARQL查询

sparql - 使用 Pellet 了解 SPARQL 和语义推理之间的区别

rdf - 从文件加载本体时如何覆盖默认前缀?

sparql - 创建数据属性 XSD :string with Jena