(: -------------------------------------------------------------------------- :)
(: 1 :)
//flight
[@date = "2019-10-18"]
[line = //line[arrival/airport/@country = "DEU"]/@number]
let $a := //flight[@date = "2019-10-18"][line = //line[arrival/airport/@country = "DEU"]/@number]
return $a
let $a := //line[arrival/airport/@country = "DEU"]/@number
return //flight[@date = "2019-10-18"][line = $a]
let $a := //line[arrival/airport/@country = "DEU"]/@number
for $f in //flight[@date = "2019-10-18"][line = $a]
return $f
let $a := //line[arrival/airport/@country = "DEU"]/@number
for $f in //flight
where ($f/@date = "2019-10-18") and ($f/line = $a)
return $f
for $f in /airport/flights/flight
let $country := /airport/lines/line[@number = $f/line]/arrival/airport/@country
where ($f/@date = "2019-10-18") and ($country = "DEU")
return $f
(: -------------------------------------------------------------------------- :)
(: 2A :)
for $n in /airport/lines/line
where $n/duration > 60
return
{ data($n/@number) }{ data($n/departure/time) }{ data($n/arrival/time) }
...
...{ $n/departure/time/text() }
...{ $n/arrival/time/text() }
for $n in /airport/lines/line[duration > 60]
...
(: INCORRECT :)
... { $n/@number }
... { $n/departure/time }
(: -------------------------------------------------------------------------- :)
(: 2B :)
...
return
element line {
attribute origin { $n/departure/airport/@code },
attribute destination { $n/arrival/airport/@code },
element code { data($n/@number) },
element departure { data($n/departure/time) },
element arrival { data($n/arrival/time) }
}
(: -------------------------------------------------------------------------- :)
(: 3 :)
for $a in distinct-values(//airline)
let $n := //line[airline = $a]/@number
where
every $f in //flight[line = $n] satisfies $f/aircraft
return $a
for $a in distinct-values(//airline)
let $n := //line[airline = $a]/@number
where
every $l in $n satisfies
every $f in //flight[line = $l] satisfies $f/aircraft
return $a
for $a in distinct-values(//airline)
let $n := //line[airline = $a]/@number
where
count(//flight[line = $n]) = count(//flight[line = $n][aircraft])
return $a
(: -------------------------------------------------------------------------- :)
(: 4 :)
Date
Time
Number
Aircraft
{
let $n := //line[departure/airport/@code = "PRG"]/@number
for $f in //flight[line = $n]
let $t := //line[@number = $f/line]/departure/time/text()
order by $f/@date descending, $t ascending
return
{ data($f/@date) }
{ $t }
{ $f/line/text() }
{
if ($f/aircraft)
then data($f/aircraft/@registration)
else Unknown
}
}
(: -------------------------------------------------------------------------- :)
(: 5 :)
let $c :=
for $f in //flight[line = "EK140"]
return count($f/tickets/ticket)
let $a := avg($c)
for $f in //flight[line = "EK140"]
where count($f/tickets/ticket) >= $a
return
{ string-join($f/tickets/ticket/text(), ", ") }
...
return
{ $f/@date }
...
let $p :=
for $f in //flight[line = "EK140"]
return
{ string-join($f/tickets/ticket/text(), ", ") }
let $a := avg($p/@tickets)
return $p[@tickets >= $a]
(: -------------------------------------------------------------------------- :)