// query = "{\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" +
// " {$sp/SPEAKER/text()},{ {$a/TITLE/text()}, \n" +
// " {$sc/TITLE/text()} } }";
//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 = " {\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" +
"";
*/
///*
// query = "{\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 {$sp/SPEAKER/text()},\n" +
// " {{$a/TITLE/text()},\n" +
// " {$sc/TITLE/text()}}\n" +
// " \n" +
// "}";
//concatenated new queries -> doesn't work -> this is because the second query needs to construct a brand new NodeObj (figure this out)
// query = "{\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 {$sp/SPEAKER/text()},\n" +
// "{{$a/TITLE/text()},\n" +
// "{$sc/TITLE/text()}}\n" +
// "\n" +
// "},document(\"j_caesar.xml\")//ACT\n";
// */
/*
query = "{\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 }";
*/
/*
query = "{\n" +
"for $a in doc(\"j_caesar.xml\")//PERSONAE, $b in $a/PERSONA where not ($b/text() = \"JULIUS CAESAR\")\n" +
"return $b }";
*/
/*
query = "{\n" +
"for $a in document(\"j_caesar.xml\")//ACT,\n" +
" $sc in $a//SCENE//SPEAKER[./text() = \"PUBLIUS\"],\n"+
"return {$sc/.}\n"+
"}";
*/
// query = "document(\"j_caesar.xml\")//ACT//SCENE//SPEAKER[./text() = \"PUBLIUS\"]";
// query = "{\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" +
// " {$sp/SPEAKER/text()},{ {$a/TITLE/text()},\n" +
// " {$sc/TITLE/text()} } }";
// query = "document(\"j_caesar.xml\")//ACT//SCENE/SPEECH";
/*
{
for $a in document("j_caesar.xml")//ACT,
$sc in $a//SCENE//SPEAKER[./text() = "MARULLUS"]
return {$sc//LINE/text()}
}
*/
//query = "document(\"j_caesar.xml\")//ACT//SCENE//SPEAKER[./text() = \"PUBLIUS\"]";
//query = "doc(\"j_caesar.xml\")/PLAY/TITLE[../TITLE = \"The Tragedy of Julius Caesar\"]";
// query = " {doc(\"j_caesar.xml\")//(ACT/SCENE/SPEECH)/(SPEAKER)/../.[not (./../TITLE==./LINE) and (./../*/SPEAKER==./SPEAKER)\n" +
// "]/../TITLE} ";
// query = "for $a in document(\"j_caesar.xml\")//ACT\n, $s1 in $a//SPEAKER " +
// " where ($s1/text() eq \"CAESAR\")\n" +
// " return {$a/TITLE/text()}";
// query = "{ \n" +
// "for $s in document(\"j_caesar.xml\")//SPEAKER \n" +
// "return {{$s/text()}, \n" +
// " for $a in document(\"j_caesar.xml\")//ACT \n" +
// " where some $s1 in $a//SPEAKER satisfies $s1 eq $s \n" +
// " return {$a/TITLE/text()}} \n" +
// " \n" +
// "} ";
//Logically equivalent to?:
// query = "document(\"j_caesar.xml\")//SPEAKER";
// query = " {\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 {$s/TITLE/text()} \n" +
// " }";
// query = "for $character in document(\"j_caesar.xml\")//SPEAKER\n" +
// " let $check := \"CAESAR\"\n" +
// " where ($character/text() eq $check)\n" +
// " return {{$character/text()},\n" +
// " {$check}}";
//
// query = "for $character in document(\"j_caesar.xml\")//SPEAKER\n" +
// " where ($character/text() eq \"CAESAR\")\n" +
// " return {{$character}\n" +
// " }";
// 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" +
// " {\n" +
// " {$speech/SPEAKER/text()},\n" +
// " {$speech/../TITLE}\n" +
// " }";
// 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" +
// " {\n" +
// " {$speaker/text()},\n" +
// " {$speaker/../../TITLE/text()}\n" +
// " }";
// 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 {$speaker/../LINE}\n" +
// "{$lines}";
//{$speaker/../LINE}
// query = "for $speaker in document(\"j_caesar.xml\")//SPEAKER\n" +
// " where $speaker/../LINE/text() = \"Et tu, Brute! Then fall, Caesar.\"\n" +
// " return {$speaker/../LINE}\n";
// query = "for $speakers in document(\"j_caesar.xml\")//SPEAKER\n" +
// "let $lines := for $speaker in $speakers\n" +
// " return {$speaker/../LINE}\n" +
//// "for $line in $lines\n" +
// "where $lines = \"Et tu, Brute! Then fall, Caesar.\"\n" +
// "return {$line}";
// 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 {$line/text()}";
// *****************************************
// 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" +
// "
{$node}\n" +
// " where $speaker/text() eq \"Soothsayer\" and $line/TITLE/text() eq \"SCENE II. A public place.\"\n" +
// " return {$speaker/../LINE}," +
// " {$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" +
// " {$node}\n" +
// " where $line/TITLE/text() eq \"SCENE II. A public place.\"" +
// " return {$line/TITLE}";
// query = "for $line in let $k := document(\"j_caesar.xml\")//TITLE\n" +
// " for $node in $k\n" +
// " return\n" +
// " {$node}\n " +
// " return {$line/../SPEAKER}";
// query = "{\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 {$sp/SPEAKER/text()},\n" +
// "{{$a/TITLE/text()},\n" +
// "{$sc/TITLE/text()}}\n" +
// "\n" +
// "}";
// query = "{\n" +
// "for $s in document(\"j_caesar.xml\")//SPEAKER\n" +
// "return {{$s/text()},\n" +
// "for $a in document(\"j_caesar.xml\")//ACT\n" +
// "where some $s1 in $a//SPEAKER satisfies $s1 eq $s\n" +
// "return {$a/TITLE/text()}}\n" +
// "\n" +
// "}";
// query = "for $tuple in join (join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" +
// "\t\t\t\treturn {$b2}, {$tb2},\n" +
// "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" +
// "\t\t\t\treturn {$b3}, {$tb3},\n" +
// "\t\t\t[tb2], [tb3]),\n" +
// "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "\t\t\treturn {$b1}, {$tb1},\n" +
// "\t\t[tb1], [tb3]),\n" +
// "\t\tfor $b4 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "\t\t\treturn {$b4}, {$tb4},\n" +
// "\t\t[tb1], [tb4])\n" +
// "\treturn\n" +
// "\t{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*, $tuple/b4/*}";
// 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 {$b2}, {$tb2},\n" +
// "for $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" +
// "return {$b3}, {$tb3},\n" +
// "[tb2], [tb3]),\n" +
// "for $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "return {$b1}, {$tb1},\n" +
// "[tb1], [tb3])\n" +
// "return\n" +
// "{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}";
// query = "for $tuple in join ( for $s in doc(\"j_caesar.xml\")//SPEAKER,\n" +
// "$stxt in $s/text()\n" +
// "where $stxt = \"CAESAR\"\n" +
// "return { {$s} ,\n" +
// " {$stxt} } ,\n" +
// "\n" +
// "for $a in doc(\"j_caesar.xml\")//ACT,\n" +
// "$sp in $a//SPEAKER\n" +
// "return { {$a} ,\n" +
// " {$sp} } ,\n" +
// "[ s ], [ sp ]) \n" +
// "\n" +
// "return{$tuple/a/*/TITLE/text()}";
// 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 {$b2}, {$tb2},\n" +
// "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" +
// "\t\t\t\treturn {$b3}, {$tb3},\n" +
// "\t\t\t[tb2], [tb3]),\n" +
// "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "\t\t\treturn {$b1}, {$tb1},\n" +
// "\t\t[tb3], [tb1])\n" +
// "\treturn\n" +
// "\t{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}";
// 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 {$b2}, {$tb2},\n" +
// "\t\t\tfor $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3//SPEAKER\n" +
// "\t\t\t\treturn {$b3}, {$tb3},\n" +
// "\t\t\t[tb2], [tb3]),\n" +
// "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "\t\t\treturn {$b1}, {$tb1},\n" +
// "\t\t[tb3], [tb1])\n" +
// "\treturn\n" +
// "\t{$tuple/b1/*//PERSONA, $tuple/b2/*//SPEAKER, $tuple/b3/*//SPEAKER}";
// 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 {$b2}, {$tb2},\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 {$b3}, {$tb3},\n" +
// "\t\t\t[tb2], [tb3]),\n" +
// "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "\t\t\treturn {$b1}, {$tb1},\n" +
// "\t\t[tb3], [tb1])\n" +
// "\treturn\n" +
// "\t{($tuple/b1/*), ($tuple/b2/*), ($tuple/b3/*)}";
// 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 {$b2}, {$tb2},\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 {$b3}, {$tb3},\n" +
// "\t\t\t[tb2], [tb3]),\n" +
// "\t\tfor $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// "\t\t\treturn {$b1}, {$tb1},\n" +
// "\t\t[tb3], [tb1])\n" +
// "\treturn\n" +
// "\t{$tuple/b1/*, $tuple/b2/*, $tuple/b3/*}";
// query = "for $tuple in join (join (for $b2 in doc(\"j_caesar.xml\")//SPEECH, $tb2 in $b2/SPEAKER\n" +
// " where $tb2 = \"PUBLIUS\"\n" +
// " return {$b2}, {$tb2},\n" +
// " for $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3/..//SPEAKER\n" +
// " where $b3/TITLE = \"ACT II\"\n" +
// " return {$b3}, {$tb3},\n" +
// " [tb2], [tb3]),\n" +
// " for $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// " return {$b1}, {$tb1},\n" +
// " [tb3], [tb1])\n" +
// " return\n" +
// " {$tuple/b1/*, $tuple/b2/*, $tuple/b3/*/TITLE}";
// 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 {$b2}, {$tb2},\n" +
// " for $b3 in doc(\"j_caesar.xml\")//ACT, $tb3 in $b3/..//SPEAKER\n" +
// " where $b3/TITLE = \"ACT II\"\n" +
// " return {$b3}, {$tb3},\n" +
// " [tb2], [tb3]),\n" +
// " for $b1 in doc(\"j_caesar.xml\")//PGROUP, $tb1 in $b1/PERSONA\n" +
// " return {$b1}, {$tb1},\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 {$b4}, {$tb4},\n" +
// " [b3], [b4])\n" +
// " return\n" +
// " {$tuple/b1/*, $tuple/b2/*, $tuple/tb3/*, $tuple/tb4/*}";
// 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 { $a/TITLE/text()} ";
// 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 { $a/TITLE/text()} ";