我想知道属于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,因为课程数量是推断的,而且事先不知道。
另一种方法可以解决我的问题吗?
答案 0 :(得分:0)
虽然关于约翰正在采取的课程“关闭”世界是好的,但关于UG_CE所需的课程,关闭它同样重要。我想你需要这样的方法:
M要求A.
M要求B.
M:仅需要 {A,B}。
J注册了A.
J注册了B.
J注册了C.
J:注册仅 {A,B,C}。
对于个别学生J,您可以通过询问M所要求的课程集是否是学生注册的课程集的子集来确定他们是否已注册M所需的所有课程:
(反向(需要)值 M) SubClassOf (反向(已注册)值< / strong> J)
或者,在DL表示法中,使用枚举类(许多可能的表达方式):
∃需要 -1 。{M}⊑⊑inrolledIn -1 。{J}
现在,如果OWL有财产否定,你可以得到一组学生,他们只是不注册的课程而不是这样的表达式需要
不(已注册)仅 不(反向(要求)值 M)
这就要求他们不注册的唯一课程是M要求的课程 但是,OWL没有属性否定表达,所以我不确定离开我们的地方。最简单的做法是添加一个“未注册”属性,尽管这看起来并不优雅。