1

我想知道属于 A 类的个人是否与 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 问题。

我想知道 John 是否已注册 UG_CE 所需的所有课程,请注意 John 已注册所有课程和附加课程。

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

Student that hasEnrolledIn only (is-PartOf value UG_CE)

由于“仅”仅限于定义关系的确切数量,因此它不符合预期目的。另外,我不能使用 Max 或 Min,因为课程的数量是推断出来的,并且事先不知道。

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

4

1 回答 1

0

虽然关于 John 所学的课程“关闭”世界是件好事,但关于 UG_CE 需要哪些课程来关闭世界同样重要。我认为您需要这样的方法:

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

    J 注册 A.
    J 注册 B.
    J 注册 C.
    J :注册{A, B, C}。

对于单个学生 J,您可以通过询问 M 所需的课程集是否是学生注册的课程集的子集来了解他们是否注册了 M 所需的所有课程:

    ((需要)M)SubClassOf(enrolledIn)J)

或者,在 DL 表示法中,使用枚举类(很多可能的方式来表达这一点):

    ∃ 需要-1 .{M} ⊑ ∃ 注册-1 .{J}

现在,如果 OWL 有属性否定,你可以得到一组学生,他们只是没有参加这样的表达式不需要的课程:

    not (enrolledIn) only not ( inverse (requires) value M)

这要求他们唯一没有注册的课程是 M不需要的课程。但是,OWL 没有属性否定表达式,所以我不确定这会给我们带来什么影响。最简单的做法是添加一个“未注册”属性,尽管这看起来不那么优雅。

于 2015-05-20T12:05:13.253 回答