// query = "<result>{\n" + // " 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) \n" + // "where $sp/LINE/text() = \"Et tu, Brute! Then fall, Caesar.\" \n" + // " return \n" + // " <who>{$sp/SPEAKER/text()}</who>,<when>{ <act>{$a/TITLE/text()}</act>, \n" + // " <scene>{$sc/TITLE/text()}</scene> }</when> }</result>"; //all of these queries working except query 3 -looks like a problem with the filter //query0 below doesn't work (space doesn't accept the space for the string eq condition) // String query1 = "doc(\"j_caesar.xml\")//(ACT,PERSONAE)/TITLE/text()/../../TITLE[not((./ACT)and(./ACT))]/.././PERSONA/./.."; // String query2 = "doc(\"j_caesar.xml\")/PLAY/ACT[not(SCENE=ACT)]/TITLE/."; // String query3 = "doc(\"j_caesar.xml\")/PLAY/(ACT,PERSONAE)/PGROUP[not(PERSONA)or(GRPDESCR)]/../."; //should return nothing // String query4 = "doc(\"j_caesar.xml\")//(ACT/SCENE/SPEECH)/(SPEAKER)/../.[not (./../TITLE==./LINE) and (./../*/SPEAKER==./SPEAKER)]/../TITLE"; // String query5 = "doc(\"j_caesar.xml\")//ACT[./TITLE]/*/SPEECH/../*/.././TITLE"; // String query0 = "doc(\"j_caesar.xml\")/PLAY/TITLE[../TITLE = \"The Tragedy of Julius Caesar\"]"; // String queryNew = "doc(\"j_caesar.xml\")//SPEECH/SPEAKER[not(./text()==./*/text())]/../../../../TITLE"; // String queryNew2 = "doc(\"j_caesar.xml\")//SPEECH/SPEAKER"; /* query = "<result> {\n" + " for $a in doc(\"j_caesar.xml\")//PERSONAE, $b in $a/PERSONA\n" + " where not ($b/text() = \"JULIUS CAESAR\") or ($b/text() = \"Another Poet\")\n" + " return $b\n" + "}\n" + "</result>"; */ ///* // query = "<result>{\n" + // "for $a in document(\"j_caesar.xml\")//ACT,\n" + // " $sc in $a//SCENE,\n" + // " $sp in $sc/SPEECH\n" + // "where $sp/LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" + // "return <who>{$sp/SPEAKER/text()}</who>,\n" + // " <when>{<act>{$a/TITLE/text()}</act>,\n" + // " <scene>{$sc/TITLE/text()}</scene>}\n" + // " </when>\n" + // "}</result>"; //concatenated new queries -> doesn't work -> this is because the second query needs to construct a brand new NodeObj (figure this out) // query = "<result>{\n" + // "for $a in document(\"j_caesar.xml\")//ACT,\n" + // "$sc in $a//SCENE,\n" + // "$sp in $sc/SPEECH\n" + // "where $sp/LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" + // "return <who>{$sp/SPEAKER/text()}</who>,\n" + // "<when>{<act>{$a/TITLE/text()}</act>,\n" + // "<scene>{$sc/TITLE/text()}</scene>}\n" + // "</when>\n" + // "}</result>,document(\"j_caesar.xml\")//ACT\n"; // */ /* query = "<result>{\n" + "for $a in doc(\"j_caesar.xml\")//PERSONAE, $b in $a/PERSONA where not (($b/text() = \"JULIUS CAESAR\") or ($b/text() = \"Another Poet\") )\n" + "return $b }</result>"; */ /* query = "<result>{\n" + "for $a in doc(\"j_caesar.xml\")//PERSONAE, $b in $a/PERSONA where not ($b/text() = \"JULIUS CAESAR\")\n" + "return $b }</result>"; */ /* query = "<result>{\n" + "for $a in document(\"j_caesar.xml\")//ACT,\n" + " $sc in $a//SCENE//SPEAKER[./text() = \"PUBLIUS\"],\n"+ "return <who>{$sc/.}</who>\n"+ "}</result>"; */ // query = "document(\"j_caesar.xml\")//ACT//SCENE//SPEAKER[./text() = \"PUBLIUS\"]"; // query = "<result>{\n" + // " 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)\n" + // " where $sp/LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" + // " return\n" + // " <who>{$sp/SPEAKER/text()}</who>,<when>{ <act>{$a/TITLE/text()}</act>,\n" + // " <scene>{$sc/TITLE/text()}</scene> }</when> }</result>"; // query = "document(\"j_caesar.xml\")//ACT//SCENE/SPEECH"; /* <result>{ for $a in document("j_caesar.xml")//ACT, $sc in $a//SCENE//SPEAKER[./text() = "MARULLUS"] return <who>{$sc//LINE/text()}</who> }</result> */ //query = "document(\"j_caesar.xml\")//ACT//SCENE//SPEAKER[./text() = \"PUBLIUS\"]"; //query = "doc(\"j_caesar.xml\")/PLAY/TITLE[../TITLE = \"The Tragedy of Julius Caesar\"]"; // query = "<result> {doc(\"j_caesar.xml\")//(ACT/SCENE/SPEECH)/(SPEAKER)/../.[not (./../TITLE==./LINE) and (./../*/SPEAKER==./SPEAKER)\n" + // "]/../TITLE} </result>"; // query = "for $a in document(\"j_caesar.xml\")//ACT\n, $s1 in $a//SPEAKER " + // " where ($s1/text() eq \"CAESAR\")\n" + // " return <when>{$a/TITLE/text()}</when>"; // query = "<result>{ \n" + // "for $s in document(\"j_caesar.xml\")//SPEAKER \n" + // "return <speaks>{<who>{$s/text()}</who>, \n" + // " for $a in document(\"j_caesar.xml\")//ACT \n" + // " where some $s1 in $a//SPEAKER satisfies $s1 eq $s \n" + // " return <when>{$a/TITLE/text()}</when>} \n" + // " </speaks> \n" + // "}</result> "; //Logically equivalent to?: // query = "document(\"j_caesar.xml\")//SPEAKER"; // query = " <result> {\n" + // " for $s in document(\"j_caesar.xml\")//ACT,\n" + // " let $t := $s//SPEECH,\n" + // " where some $s1 in $t//SPEAKER satisfies $s1/text() eq $s\n" + // " return <when> {$s/TITLE/text()} </when>\n" + // " }</result>"; // query = "for $character in document(\"j_caesar.xml\")//SPEAKER\n" + // " let $check := \"CAESAR\"\n" + // " where ($character/text() eq $check)\n" + // " return <foo>{<CHARACTER>{$character/text()}</CHARACTER>,\n" + // " <speeches>{$check}</speeches>}</foo>"; // // query = "for $character in document(\"j_caesar.xml\")//SPEAKER\n" + // " where ($character/text() eq \"CAESAR\")\n" + // " return <foo>{<CHARACTER>{$character}</CHARACTER>\n" + // " }</foo>"; // query = "for $act in doc(\"j_caesar.xml\")/PLAY/ACT,\n" + // "$scene in $act/SCENE,\n" + // "$speech in $scene/SPEECH[SPEAKER = 'BRUTUS']\n" + // "return\n" + // " <speech>{\n" + // " <title>{$speech/SPEAKER/text()}</title>,\n" + // " <lines>{$speech/../TITLE}</lines>\n" + // " }</speech>"; // query = "for $act in doc(\"j_caesar.xml\")/PLAY/ACT,\n" + // "$scene in $act/SCENE,\n" + // "$speaker in $scene/SPEECH/SPEAKER\n" + // "where $speaker/text() = \"BRUTUS\"\n" + // "return\n" + // " <speech>{\n" + // " <title>{$speaker/text()}</title>,\n" + // " <vartak>{$speaker/../../TITLE/text()}</vartak>\n" + // " }</speech>"; // query = "let $speakers := document(\"j_caesar.xml\")//SPEAKER,\n" + // "$lines := for $speaker in $speakers\n" + // " where $speaker/../LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" + // " return <l>{$speaker/../LINE}</l>\n" + // "<foo>{$lines}</foo>"; //<line>{$speaker/../LINE}</line> // query = "for $speaker in document(\"j_caesar.xml\")//SPEAKER\n" + // " where $speaker/../LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" + // " return <l>{$speaker/../LINE}</l>\n"; // query = "for $speakers in document(\"j_caesar.xml\")//SPEAKER\n" + // "let $lines := for $speaker in $speakers\n" + // " return <line>{$speaker/../LINE}</line>\n" + //// "for $line in $lines\n" + // "where $lines = \"Et tu, Brute! Then fall, Caesar.\"\n" + // "return <foo>{$line}</foo>"; // query = "for $line in document(\"j_caesar.xml\")//LINE\n" + // " where ($line/../SPEAKER/text() = \"CAESAR\"\n" + // " and $line/text() = \"Et tu, Brute! Then fall, Caesar.\")" + // " return <blah>{$line/text()}</blah>"; // ***************************************** // query = "for $speaker in document(\"j_caesar.xml\")//SPEAKER,\n" + // " $line in let $k := document(\"j_caesar.xml\")//TITLE\n" + // " for $node in $k\n" + // " return \n" + // " <title>{$node}</title>\n" + // " where $speaker/text() eq \"Soothsayer\" and $line/TITLE/text() eq \"SCENE II. A public place.\"\n" + // " return <foo>{$speaker/../LINE}</foo>," + // " <speaker>{$speaker}</speaker>"; // query = "for $speaker in document(\"j_caesar.xml\")//SPEAKER,\n" + // " $line in let $k := document(\"j_caesar.xml\")//TITLE\n" + // " for $node in $k\n" + // " return\n" + // " <title>{$node}</title>\n" + // " where $line/TITLE/text() eq \"SCENE II. A public place.\"" + // " return <foo>{$line/TITLE}</foo>"; // query = "for $line in let $k := document(\"j_caesar.xml\")//TITLE\n" + // " for $node in $k\n" + // " return\n" + // " <title>{$node}</title>\n " + // " return <foo>{$line/../SPEAKER}</foo>"; // query = "<result>{\n" + // "for $a in document(\"j_caesar.xml\")//ACT,\n" + // "$sc in $a//SCENE,\n" + // "$sp in $sc/SPEECH\n" + // "where $sp/LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" + // "return <who>{$sp/SPEAKER/text()}</who>,\n" + // "<when>{<act>{$a/TITLE/text()}</act>,\n" + // "<scene>{$sc/TITLE/text()}</scene>}\n" + // "</when>\n" + // "}</result>"; // query = "<result>{\n" + // "for $s in document(\"j_caesar.xml\")//SPEAKER\n" + // "return <speaks>{<who>{$s/text()}</who>,\n" + // "for $a in document(\"j_caesar.xml\")//ACT\n" + // "where some $s1 in $a//SPEAKER satisfies $s1 eq $s\n" + // "return <when>{$a/TITLE/text()}</when>}\n" + // "</speaks>\n" + // "}</result>"; // query = "for $tuple in join (join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // "\t\t\t\treturn <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" + // "\t\t\t\treturn <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // "\t\t\t[tb2], [tb3]),\n" + // "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "\t\t\treturn <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // "\t\t[tb1], [tb3]),\n" + // "\t\tfor $b4 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "\t\t\treturn <tuple><b4>{$b4}</b4>, <tb4>{$tb4}</tb4></tuple>,\n" + // "\t\t[tb1], [tb4])\n" + // "\treturn\n" + // "\t<triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*, $tuple/b4/*}</triplet>"; // TODO: Added todo just to highlight this query between all the other comments // Out of memory since hash table doesn't fit in RAM // query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // "return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // "for $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" + // "return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // "[tb2], [tb3]),\n" + // "for $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // "[tb1], [tb3])\n" + // "return\n" + // "<triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}</triplet>"; // query = "for $tuple in join ( for $s in doc(\"j_caesar.xml\")//SPEAKER,\n" + // "$stxt in $s/text()\n" + // "where $stxt = \"CAESAR\"\n" + // "return <tuple>{ <s> {$s} </s>,\n" + // "<stxt> {$stxt} </stxt> } </tuple>,\n" + // "\n" + // "for $a in doc(\"j_caesar.xml\")//ACT,\n" + // "$sp in $a//SPEAKER\n" + // "return <tuple>{ <a> {$a} </a>,\n" + // "<sp> {$sp} </sp> } </tuple>,\n" + // "[ s ], [ sp ]) \n" + // "\n" + // "return<act>{$tuple/a/*/TITLE/text()}</act>"; // query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // "\t\t\t\twhere $tb2 = \"CASCA\"\n" + // "\t\t\t\treturn <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" + // "\t\t\t\treturn <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // "\t\t\t[tb2], [tb3]),\n" + // "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "\t\t\treturn <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // "\t\t[tb3], [tb1])\n" + // "\treturn\n" + // "\t<triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}</triplet>"; // query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // "\t\t\t\twhere $tb2 = \"CASCA\"\n" + // "\t\t\t\treturn <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" + // "\t\t\t\treturn <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // "\t\t\t[tb2], [tb3]),\n" + // "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "\t\t\treturn <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // "\t\t[tb3], [tb1])\n" + // "\treturn\n" + // "\t<triplet>{$tuple/b1/*//PERSONA, $tuple/b2/*//SPEAKER, $tuple/b3/*//SPEAKER}</triplet>"; // query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // "\t\t\t\twhere $tb2 = \"PUBLIUS\"\n" + // "\t\t\t\treturn <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT/TITLE, $tb3 in $b3/..//SPEAKER\n" + // "\t\t\t\twhere $b3 = \"ACT II\"\n" + // "\t\t\t\treturn <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // "\t\t\t[tb2], [tb3]),\n" + // "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "\t\t\treturn <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // "\t\t[tb3], [tb1])\n" + // "\treturn\n" + // "\t<triplet>{($tuple/b1/*), ($tuple/b2/*), ($tuple/b3/*)}</triplet>"; // query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // "\t\t\t\twhere $tb2/text() = \"PUBLIUS\"\n" + // "\t\t\t\treturn <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT/TITLE, $tb3 in $b3/..//SPEAKER\n" + // "\t\t\t\twhere $b3 = \"ACT II\"\n" + // "\t\t\t\treturn <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // "\t\t\t[tb2], [tb3]),\n" + // "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // "\t\t\treturn <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // "\t\t[tb3], [tb1])\n" + // "\treturn\n" + // "\t<triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}</triplet>"; // query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // " where $tb2 = \"PUBLIUS\"\n" + // " return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // " for $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3/..//SPEAKER\n" + // " where $b3/TITLE = \"ACT II\"\n" + // " return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // " [tb2], [tb3]),\n" + // " for $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // " return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // " [tb3], [tb1])\n" + // " return\n" + // " <triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*/TITLE}</triplet>"; // query = "for $tuple in join (join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" + // " where $tb2 = \"PUBLIUS\"\n" + // " return <tuple><b2>{$b2}</b2>, <tb2>{$tb2}</tb2></tuple>,\n" + // " for $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3/..//SPEAKER\n" + // " where $b3/TITLE = \"ACT II\"\n" + // " return <tuple><b3>{$b3}</b3>, <tb3>{$tb3}</tb3></tuple>,\n" + // " [tb2], [tb3]),\n" + // " for $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" + // " return <tuple><b1>{$b1}</b1>, <tb1>{$tb1}</tb1></tuple>,\n" + // " [tb3], [tb1]),\n" + // "\t\tfor $b4 in doc(\"j_caesar.xml\")//ACT, $tb4 in $b4/SCENE/TITLE\n" + // "\t\twhere $tb4 = \"SCENE II. CAESAR's house.\"\n" + // " return <tuple><b4>{$b4}</b4>, <tb4>{$tb4}</tb4></tuple>,\n" + // " [b3], [b4])\n" + // " return\n" + // " <triplet>{$tuple/b1/*, $tuple/b2/*, $tuple/tb3/*, $tuple/tb4/*}</triplet>"; // query = "for $s in doc(\"j_caesar.xml\")//SPEAKER, $a in doc(\"j_caesar.xml\")//ACT,\n" + // "\n" + // "$sp in $a//SPEAKER, $stxt in $s/text()\n" + // "\n" + // "where $sp eq $s and $stxt = \"CAESAR\"\n" + // "\n" + // "return <act> { $a/TITLE/text()} </act>"; // Implicit join // query = "for $s in doc(\"j_caesar.xml\")//SPEAKER, $a in doc(\"j_caesar.xml\")//ACT,\n" + // "\n" + // "$sp in $a//SPEAKER, $stxt in $s/text()\n" + // "\n" + // "where $sp eq $s and $stxt = \"CAESAR\"\n" + // "\n" + // "return <act> { $a/TITLE/text()} </act>";