SPARQL查询等价

时间:2018-04-09 13:07:15

标签: sparql

在以下背景下:

// 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: 
SELECT ?x ?y WHERE 
{ 
  {
    { ?x a :UndergradStudent . 
      ?x :takesCourse ?y }
     UNION 
    { ?x a :GraduateStudent .
      ?x :takesCourse ?y } 
  } 
   ?y a :Course .
}

我认为这意味着选择本科学生参加任何课程和研究生参加任何课程,有什么困扰我确认这是以下内容:

  • 是否假设在?y a :Course之前是一个点,这样{...}内的UNION模式可以被视为一个匹配的模式,或者它无关紧要?

  • 我可以将?y a :Course分发到UNION,即将Q1转为Q2

// Q2: 
SELECT ?x ?y WHERE 
{ 
  {
    { ?x a :UndergradStudent . 
      ?x :takesCourse ?y .
      ?y a :Course }
     UNION 
    { ?x a :GraduateStudent .
      ?x :takesCourse ?y .
      ?y a :Course } 
    }
}

0 个答案:

没有答案