xquery-engine / src / main / resources / all_tests.txt
all_tests.txt
Raw
//        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>";