(:######################## START: FLWR ########################:) (:Returns 39 nodes:) <sometag>{for $a in document("j_caesar.xml")//ACT, $s1 in $a//SPEAKER where ($s1/text() eq "CAESAR") return <speaks>{<who>{$s1/text()}</who>, <when>{$a/TITLE/text()}</when>}</speaks>} </sometag>; (:######################## END: FLWR ########################:) (:######################## START: cond_Some ########################:) (:### Should return nothing since the text() compressor isn't provided in the condition:) <result> {for $a in document("j_caesar.xml")//ACT where some $s1 in $a//SPEAKER satisfies $s1 eq "TREBONIUS" return <when>{$a/TITLE/text()}</when>} </result>; (:returns :) (: <RESULT>:) (: <when>ACT II</when>:) (: <when>ACT III</when>:) (: </RESULT>:) <result> {for $a in document("j_caesar.xml")//ACT where some $s1 in $a//SPEAKER satisfies $s1/text() eq "TREBONIUS" return <when>{$a/TITLE/text()}</when>} </result>; (:######################## END: cond_Some ########################:) (:######################## START: Nested ########################:) <result>{ for $s in document("j_caesar.xml")//SPEAKER return <speaks>{<who>{$s/text()}</who>, for $a in document("j_caesar.xml")//ACT where some $s1 in $a//SPEAKER satisfies $s1/text() eq $s return <when>{$a/TITLE/text()}</when>} </speaks> }</result>; (:######################## START: Nested ########################:) for $character in document("j_caesar.xml")//SPEAKER let $check := "CAESAR" where ($character/text() eq $check) return <foo>{<CHARACTER>{$character}</CHARACTER>, <speeches>{$check}</speeches>}</foo>; for $character in document("j_caesar.xml")//SPEAKER let $a := $character/../../..//TITLE where ($character/text() eq "CAESAR") return <foo>{<CHARACTER>{$character}</CHARACTER>, <title>{$a}</title>}</foo>; for $character in distinct-values(//SPEAKER) let $speeches := count(//SPEECH[SPEAKER = $character]) where $speeches > 100 return <CHARACTER name="{$character}" speeches="{$speeches}" />; for $line in //ACT[TITLE = "ACT III"]/SCENE[TITLE = "SCENE II"]/SPEECH[SPEAKER = "BRUTUS"]/LINE return $line; for $act in doc("j_caesar.xml")/PLAY/ACT, $scene in $act/SCENE, $speech in $scene/SPEECH[SPEAKER = 'BRUTUS'] return <speech>{ <title>{$speech/SPEAKER/text()}</title>, <lines>{$speech}</lines> }</speech>; (:The above query is equivalent to the next one. This returns 194 speech nodes:) for $act in doc("j_caesar.xml")/PLAY/ACT, $scene in $act/SCENE, $speaker in $scene/SPEECH/SPEAKER where $speaker = "BRUTUS" return <speech>{ <title>{$speaker/text()}</title>, <vartak>{$speaker/../../TITLE/text()}</vartak> }</speech>; for $line in document("j_caesar.xml")//LINE where $line/../SPEAKER = "BRUTUS" return $line/text(); (:let $speakers := document("j_caesar.xml")//SPEAKER:) (:let $lines := for $speaker in $speakers:) (: return <line>{$speaker/../LINE}</line>:) (:$speakers[$lines/text() = "Et tu, Brute! Then fall, Caesar."]/text();:) (:let $speakers := document("j_caesar.xml")//SPEAKER,:) (:$lines := for $speaker in $speakers:) (: where $speaker/../LINE = "Et tu, Brute! Then fall, Caesar.":) (: return <line>{$speaker/../LINE}</line>:) (:<foo>{$speakers/text()}</foo>;:) for $speaker in document("j_caesar.xml")//SPEAKER, $line in let $k := document("j_caesar.xml")//TITLE for $node in $k return <title>{$k}</title> where $line/text() eq "SCENE II. A public place." and $speaker/text() eq "Soothsayer" return <foo>{$speaker/../LINE}</foo>; (:######################## START: MS2 ########################:) <result>{ for $a in (for $s in doc("j_caesar.xml")//ACT return $s),$sc in (for $t in $a/SCENE return $t), $sp in (for $d in $sc/SPEECH return $d) where $sp/LINE/text() = "Et tu, Brute! Then fall, Caesar." return <who>{$sp/SPEAKER/text()}</who>,<when>{ <act>{$a/TITLE/text()}</act>, <scene>{$sc/TITLE/text()}</scene> }</when> }</result>; <result>{ for $a in doc("j_caesar.xml")//PERSONAE, $b in $a/PERSONA where not (($b/text() = "JULIUS CAESAR") or ($b/text() = "Another Poet") ) return $b }</result>; <acts>{ for $a in doc("j_caesar.xml")//ACT where not empty ( for $sp in $a/SCENE/SPEECH where ($sp/SPEAKER/text() = "FLAVIUS" and $sp/../TITLE/text()="SCENE I. Rome. A street.") return <speaker>{ $sp/text() }</speaker> ) return <act>{$a/TITLE/text()}</act> }</acts>; <result>{ for $a in doc("j_caesar.xml")//ACT where some $s1 in (for $x in $a//SCENE where $x/TITLE/text()="SCENE II. A public place." return $x) satisfies $s1//SPEAKER eq "CAESAR" and $a/TITLE/text() = "ACT I" return <act>{$a/TITLE/text()}</act>}</result>; <result>{for $s in doc("j_caesar.xml")//SCENE where $s//SPEAKER/text()="CAESAR" return <scenes>{ <scene> {$s/TITLE/text()} </scene>}</result> <result>{ for $s in doc("j_caesar.xml")//SCENE where $s//SPEAKER/text()="CAESAR" return <scenes>{ <scene> {$s/TITLE/text()} </scene>, for $a in doc("j_caesar.xml")//ACT where some $s1 in (for $x in $a//SCENE where $x/TITLE/text()="SCENE II. A public place." return $x) satisfies $s1 eq $s and $a/TITLE/text() = "ACT I" return <act>{$a/TITLE/text()}</act>}</scenes>}</result>; <result>{ for $a in (for $s in doc("j_caesar.xml")//ACT where $s/TITLE/text()="ACT I" return $s), $sc in (for $t in $a/SCENE where $t/TITLE/text()="SCENE I. Rome. A street." return $t), $sp in (for $d in $sc/SPEECH where $d/LINE/text()="Upon a labouring day without the sign" return $d) where $sp/SPEAKER/text() = "FLAVIUS" return <who>{$sp/SPEAKER/text()}</who>,<when>{ <act>{$a/TITLE/text()}</act>, <scene>{$sc/TITLE/text()}</scene> }</when> }</result>; <result>{ for $a in (for $s in doc("j_caesar.xml")//ACT return $s), $sc in (for $t in $a/SCENE return $t), $sp in (for $d in $sc/SPEECH return $d) where $sp/LINE/text() = "Et tu, Brute! Then fall, Caesar." return <who>{$sp/SPEAKER/text()}</who>, <when>{ <act>{$a/TITLE/text()}</act>, <scene>{$sc/TITLE/text()}</scene> }</when> }</result>; <acts>{ for $a in doc("j_caesar.xml")//ACT where empty ( for $sp in $a/SCENE/SPEECH/SPEAKER where $sp/text() = "CASCA" return <speaker> {$sp/text()}</speaker>) return <act>{$a/TITLE/text()}</act>}</acts> ; <result>{ for $a in doc("j_caesar.xml")//PERSONAE, $b in $a/PERSONA where ($b/text() = "JULIUS CAESAR") or ($b/text()= "Another Poet") return $b }</result>; <acts>{ for $b in doc("j_caesar.xml")//ACT let $a:= $b/SCENE where $a/SPEECH/SPEAKER/text()="MARULLUS" return <act>{$a}</act> }</acts>; <acts>{ let $a:= doc("j_caesar.xml")//ACT for $b in $a/SCENE where $b/SPEECH/SPEAKER/text()="MARULLUS" return <act>{$b}</act> }</acts>; (:######################## START: Joins ########################:) for $tuple in join (join (for $b2 in doc("j_caesar.xml")//SPEECH, $tb2 in $b2/SPEAKER where $tb2 = "FLAVIUS" return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>, for $b3 in doc("j_caesar.xml")//ACT, $tb3 in $b3//SPEAKER where $b3/TITLE = "ACT I" return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>, [tb2], [tb3]), for $b1 in doc("j_caesar.xml")//PGROUP, $tb1 in $b1/PERSONA return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>, [tb3], [tb1]) return <triplet>{$tuple/b1/*/PERSONA, $tuple/b2/*/SPEAKER, $tuple/b3/*/SCENE/TITLE}</triplet>; for $tuple in join (join (for $b2 in doc("j_caesar.xml")//SPEECH, $tb2 in $b2/SPEAKER where $tb2 = "PUBLIUS" return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>, for $b3 in doc("j_caesar.xml")//ACT, $tb3 in $b3/..//SPEAKER where $b3/TITLE = "ACT II" return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>, [tb2], [tb3]), for $b1 in doc("j_caesar.xml")//PGROUP, $tb1 in $b1/PERSONA return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>, [tb3], [tb1]) return <triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}</triplet>; for $tuple in join (join (join (for $b2 in doc("j_caesar.xml")//SPEECH, $tb2 in $b2/SPEAKER where $tb2 = "PUBLIUS" return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>, for $b3 in doc("j_caesar.xml")//ACT, $tb3 in $b3/..//SPEAKER where $b3/TITLE = "ACT II" return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>, [tb2], [tb3]), for $b1 in doc("j_caesar.xml")//PGROUP, $tb1 in $b1/PERSONA return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>, [tb3], [tb1]), for $b4 in doc("j_caesar.xml")//ACT, $tb4 in $b4/SCENE/TITLE where $tb4 = "SCENE II. CAESAR's house." return <tuple><b4>{$b4}</b4>, <tb4>{$tb4}</tb4></tuple>, [b3], [b4]) return <triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/tb3/*, $tuple/tb4/*}</triplet>; for $tuple in join (join (for $b2 in doc("j_caesar_M3.xml")//SPEECH, $tb2 in $b2/SPEAKER where $tb2 = "FLAVIUS" return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>, for $b3 in doc("j_caesar_M3.xml")//ACT, $tb3 in $b3/..//SPEAKER where $b3/TITLE = "ACT I" return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>, [tb2], [tb3]), for $b1 in doc("j_caesar_M3.xml")//PGROUP, $tb1 in $b1/PERSONA return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>, [tb3], [tb1]) return <triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}</triplet>;