在 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" 属性,尽管这看起来并不优雅。
我想知道属于 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" 属性,尽管这看起来并不优雅。