【问题标题】:OWL/Protege: Model inferred class of persons, who are not members of a groupOWL/Protege:模型推断的一类人,他们不是一个群体的成员
【发布时间】:2020-08-03 08:26:36
【问题描述】:

我尝试使用 Protégé 5.5.0 在 OWL 中创建一个本体。不,我在推断类方面有点麻烦。

我有三个类:代理和子类 Groups 和 Persons。人员可以是组的成员。现在我想创建两个推断类:a)“组成员”和 b)“不是组成员”(都是 Person 的子类)

我用 a) 成功了,使用公理等效类:Person and member_of some Group。 我创建了一个人,它是一个人和一个组的成员,它被推断为“组成员”类的成员。

现在我被 b) 困住了。我为等效类尝试了几个选项,例如: Person and member_of max 0 Group 或:Person and member_of exactly 0 Group 或:Person and not member_of some Group 我创建了一个人,它是一个人,但不是组成员。但是推理者不同意我的观点,即这个人应该属于推断的类“不是群体的成员”。

我做错了什么?

【问题讨论】:

  • 感谢您的评论!对于我想放入“非组成员”类的个人,我添加了以下类型:"member_of max 0 Group"。所以现在,显然,个人被推断为“非群体成员”的成员。但这并不能真正解决问题,因为我的意图是找到一种方法,自动找到所有不是组成员的个人,而无需自己为每个人添加此信息。这不可能以某种方式做到这一点吗?
  • 不在 Protégé 中。 Stardog 支持封闭世界推理;或尝试 SPIN/SHACL。

标签: owl ontology protege inference


【解决方案1】:

在 OWL 中实现此目的的一种方法是使用您的 Person and not member_of some Group, 是定义一个MemberOfGroup 类,该类按照您的建议定义。然后定义一个NotMemberOfGroup 类,它与MemberOfGroup 类不相交。如果您现在将您的个人定义为Person 类型以及not member_of some Group 类型,那么您的个人将被归类为属于NotMemberOfGroup 类。

你必须这样做的原因是 OWL 使用开放世界假设,因此它只能对它肯定知道的事物进行推断。 IE。说个人是Person,而没有就member_of 发表任何声明,为推理者提供了零明确信息来确定个人属于或不属于某个组。

另一种选择是使用 SHACL/SHEX/SPIN。

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多