在 Protege 中使用存在限制的问题

Problems in using Existential restrictions in Protege

我想知道属于 Class A 的个人是否与 Class B 的所有个人有至少一种关系。

我找不到合适的表达式来提供我想要的 DL 查询结果。对于以下示例:

Classs: Course {CourseA, CourseB, CourseC, CourseD}
Class: Program {UG_CE, G_CE}
Class: Student {John}

ObjectProperty: is-PartOf (Course,Program)

ObjectProperty: hasEnrolledIn (Student, Course)

对于个人:CourseA 和 CourseB,我断言 属性:

is-PartOf UG_CE

对于个人 John,断言了以下 3 个属性:

hasEnrolledIn CourseA
hasEnrolledIn CourseB
hasEnrolledIn CourseC

我也加了个人类型

hasEnrolledIn only ({CourseA , CourseB , CourseC}) 

解决 OWA 问题。

我想知道约翰是否已经注册了 UG_CE 所需的所有课程,请注意约翰已经注册了所有课程和一门附加课程。

调用 reasoner 后,以下查询不会给我想要的结果:

Student that hasEnrolledIn only (is-PartOf value UG_CE)

由于 "only" 仅限于定义关系的确切数量,因此不能达到预期目的。另外,我不能使用 Max 或 Min,因为课程的数量是推断出来的,事先不知道。

另一种方法可以解决我的问题吗?

虽然关于 类 John 正在接受的东西对 "close" 世界有好处,但关闭它对于 类 需要的东西同样重要 UG_CE。我认为您需要这样的方法:

M 需要 A。
M 需要 B.
M : 需要 {A, B}.

J 就读于 A。
J 就读于 B.
J 就读于 C.
J : enrolledIn only {A, B, C}。

对于个别学生J,可以通过询问M所要求的类集合是否是该集合的子集来判断他是否被M所要求的所有类所录取学生注册人数 类:

inverse(需要)value M)SubClassOf(已注册) J)

或者,在 DL 表示法中,枚举 类(有很多可能的表达方式):

∃ requires-1.{M} ⊑ ∃ enrolledIn-1.{J}

现在,如果 OWL 有 属性 否定,你可以得到一组只有 没有 注册 类 的学生 不是 像这样的表达式所需要的:

(已注册) 反向(需要) M)

要求的事情是,他们 注册的唯一课程是 M 要求的 课程。但是,OWL 没有 属性 否定表达式,所以我不确定它会把我们留在哪里。最简单的做法是添加一个 "not enrolled in" 属性,尽管这看起来并不优雅。