在以下背景下不熟悉语义网:
// owl in terms of Java-like syntax
Class Person {}
Class GraduateStudent extends Person {reference takesCourse [*] : GraduateCourse}
Class Student intersect Person {reference takesCourse [*] : Course}
Class UndergradStudent extends Student {}
Class Course{}
Class GraduateCourse extends Course{}
Class CsCourse extends Course{}
我的问题是为什么Q1⊑Q2不成立?特别是,如果我理解正确,Q1
选择本科学生参加CsCourse和研究生学习研究生课程,Q2
选择本科学生参加任何课程和研究生参加任何课程:
// Q1:
SELECT ?x ?y WHERE
{
{ ?x a :UndergradStudent .
?x :takesCourse ?y .
?y a :CsCourse
}
UNION
{ ?x a :GraduateStudent .
?x :takesCourse ?y
}
}
// Q2:
SELECT ?x ?y WHERE
{
{
{
?x a :UndergradStudent .
?x :takesCourse ?y
}
UNION
{
?x a :GraduateStudent .
?x :takesCourse ?y
}
}
?y a :Course .
}
编辑:此示例可在以下位置找到:http://sparql-qc-bench.inrialpes.fr/UCQrdfs.html,Q43b和Q43c。