--- /dev/null
+../docs/Treebank.srx
\ No newline at end of file
--- /dev/null
+T01%/descendant::NP
+#%/descendant::*/child::NP
+#T03%/descendant::NP/descendant::VBZ
+T02%/descendant::S[descendant::VP and descendant::NP]/child::VP/child::PP[child::IN]/child::NP/child::VBN
+T03%/descendant::NP[descendant::JJ or descendant::CC]
+T04%/descendant::CC[ not(descendant::JJ) ]
+#%/descendant::S/child::VP/child::PP[child::NP/child::VBN]/child::IN
+T05%/descendant::NN[descendant::VBZ or descendant::IN]/child::*[descendant::NN or descendant::_QUOTE_]
+#T06%/descendant::EMPTY[descendant::VP and descendant::S]/descendant::PP[descendant::S and descendant::VGN]
\ No newline at end of file
--- /dev/null
+/descendant::promoter[contains(., "PSSM 5000 8 1 0 19 20 18 1 20 7 1 0 1 0 1 18 0 2 17 0 0 0 1 0 0 3 1 20 0 0 0 1 0 8")]
+/descendant::promoter[contains(., "PSSM 100000 12 6 19 19 20 5 0 1 20 19 20 1 1 4 0 0 0 3 10 1 0 1 0 13 13 10 1 0 0 11 0 18 0 0 0 6 1 0 0 1 0 1 10 0 0 0 0 0 5") ]
+/descendant::promoter[contains(., "PSSM 300000 14 0 1 12 6 0 0 0 1 2 6 6 1 3 0 0 0 0 7 13 3 2 0 0 4 5 10 6 3 2 12 1 0 0 0 0 0 11 3 1 1 0 3 11 0 0 0 0 10 11 12 0 0 1 1 4 7") ]
+/descendant::exon[ descendant::sequence[ contains(., "PSSM 5000 8 1 0 19 20 18 1 20 7 1 0 1 0 1 18 0 2 17 0 0 0 1 0 0 3 1 20 0 0 0 1 0 8")] ]
+/descendant::exon[ descendant::sequence[ contains( ., "PSSM 100000 12 6 19 19 20 5 0 1 20 19 20 1 1 4 0 0 0 3 10 1 0 1 0 13 13 10 1 0 0 11 0 18 0 0 0 6 1 0 0 1 0 1 10 0 0 0 0 0 5") ] ]
+/descendant::exon[ descendant::sequence[ contains(., "PSSM 300000 14 0 1 12 6 0 0 0 1 2 6 6 1 3 0 0 0 0 7 13 3 2 0 0 4 5 10 6 3 2 12 1 0 0 0 0 0 11 3 1 1 0 3 11 0 0 0 0 10 11 12 0 0 1 1 4 7") ] ]
+/descendant::*[contains(., "PSSM 5000 8 1 0 19 20 18 1 20 7 1 0 1 0 1 18 0 2 17 0 0 0 1 0 0 3 1 20 0 0 0 1 0 8")]
+/descendant::*[contains(., "PSSM 100000 12 6 19 19 20 5 0 1 20 19 20 1 1 4 0 0 0 3 10 1 0 1 0 13 13 10 1 0 0 11 0 18 0 0 0 6 1 0 0 1 0 1 10 0 0 0 0 0 5") ]
+/descendant::*[contains(., "PSSM 300000 14 0 1 12 6 0 0 0 1 2 6 6 1 3 0 0 0 0 7 13 3 2 0 0 4 5 10 6 3 2 12 1 0 0 0 0 0 11 3 1 1 0 3 11 0 0 0 0 10 11 12 0 0 1 1 4 7") ]
--- /dev/null
+/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "plus" ]
+/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") or contains ( . , "for") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "plus" ftor "for" ]
+/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") and not(contains ( . , "for")) ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "plus" ftand ftnot "for" ]
+/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName[starts-with( ., "Bar")]]%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName ftcontains "Bar" at start ]
+/descendant::*[ descendant::LastName[ contains( ., "Nguyen") ] ]%/descendant::*[ descendant::LastName ftcontains "Nguyen" entire content ]
+/descendant::*/descendant::*[ contains( ., "epididymis") ]%/descendant::*/descendant::*[ . ftcontains "epididymis" ]
+/descendant::*[ descendant::PublicationType[ ends-with( ., "Article") ]]%/descendant::*[ descendant::PublicationType ftcontains "Article" at end ]
+/descendant::MedlineCitation[ descendant::Country[ contains( ., "AUSTRALIA") ] ]%/descendant::MedlineCitation[ descendant::Country ftcontains "AUSTRALIA" ]
--- /dev/null
+/raid0/kn/docs/medline/xml/medline_full_wordbased.srx
\ No newline at end of file
--- /dev/null
+W1%/descendant::Article[ descendant::AbstractText[ contains ( . , "blood sample") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "blood sample" all words ordered ]
+W2%/descendant::Article[ descendant::AbstractText[ contains ( . , "is such that") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "is such that" all words ordered ]
+W3%/descendant::Article[ descendant::AbstractText[ contains( . , "various types of") and contains( . , "immune cells") ] ]%/descendant::Article[descendant::AbstractText[ . ftcontains "various types of" all words ordered ftand "immune cells" all words ordered ]]
+W4%/descendant::Article[ descendant::AbstractText[ contains( . , "of the bone marrow") ] ]%/descendant::Article[descendant::AbstractText[ . ftcontains "of the bone marrow" all words ordered ]]
+W5%/descendant::Article[ descendant::AbstractText[ contains( . , "cell") and not(contains( ., "blood")) ] ]%/descendant::Article[descendant::AbstractText[ . ftcontains "cell" ftand ftnot "blood" ]]
+#W5%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName[starts-with( ., "Bar")]]%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName ftcontains "Bar" at start ]
+#W6%/descendant::*[ descendant::LastName[ contains( ., "Nguyen") ] ]%/descendant::*[ descendant::LastName ftcontains "Nguyen" entire content ]
+#W7%/descendant::*/descendant::*[ contains( ., "epididymis") ]%/descendant::*/descendant::*[ . ftcontains "epididymis" ]
+#W8%/descendant::*[ descendant::PublicationType[ ends-with( ., "Article") ]]%/descendant::*[ descendant::PublicationType ftcontains "Article" at end ]
+#W9%/descendant::MedlineCitation[ descendant::Country[ contains( ., "AUSTRALIA") ] ]%/descendant::MedlineCitation[ descendant::Country ftcontains "AUSTRALIA" ]
--- /dev/null
+M1%/descendant::Article[ descendant::AbstractText[ contains (., "foot") or contains( ., "feet") ] ]
+M2%/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") ] ]
+M3%/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") or contains ( . , "for") ] ]
+M4%/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") and not(contains ( . , "for")) ] ]
+M5%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName[starts-with( ., "Bar")]]
+M6%/descendant::*[ descendant::LastName[ contains( ., "Nguyen") ] ]
+M7%/descendant::*/descendant::*[ contains( ., "epididymis") ]
+M8%/descendant::*[ descendant::PublicationType[ ends-with( ., "Article") ]]
+M9%/descendant::MedlineCitation[ descendant::Country[ contains( ., "AUSTRALIA") ] ]
--- /dev/null
+#!/bin/bash
+source utils.sh
+#Mserver and killall must be in /etc/sudoers
+function kmonet() {
+ sudo killall -TERM Mserver
+ sleep 2
+ sudo killall -9 Mserver
+}
+trap kmonet INT TERM
+
+function do_monet(){
+ while pidof Mserver >/dev/null
+ do
+
+ sudo killall -TERM Mserver
+ sleep 3
+ done
+
+ while ! pidof Mserver >/dev/null
+ do
+ sudo /usr/local/bin/alarm 600 22000000 Mserver --dbinit="module(pathfinder);" >/dev/null 2>&1 &
+ sleep 3
+ done
+ sync
+
+ query="$1"
+ doc="$2"
+ repeat="$3"
+ TIME_MAT=""
+ TIME_COUNT=""
+ TIME_PRINT=""
+ NUM_RESULTS=""
+ for i in `seq 1 "$repeat"`
+ do
+ {
+ read foo
+ read foo
+ read num
+ read foo
+ read foo
+ read tquery
+ read foo
+ read foo
+ } < <(echo "fn:count(fn:doc(\"$doc\")$query)
+" | mclient -t --interactive 2>&1 | grep -o '[0-9.]*' )
+
+ TIME_COUNT="$TIME_COUNT
+$tquery"
+
+ NUM_RESULTS="$num"
+ done
+
+ if [ -z "$4" ]
+ then
+ for i in `seq 1 "$repeat"`
+ do
+ {
+ read foo
+ read foo
+ read tquery
+ read tprint
+ read foo
+ } < <(echo "\>/dev/null
+fn:doc(\"$doc\")$query
+" | mclient -t --interactive 2>&1 | grep -o '[0-9.]*' )
+
+ TIME_MAT="$TIME_MAT
+$tquery"
+
+ TIME_PRINT="$TIME_PRINT
+$tprint"
+
+ done
+ else
+ TIME_MAT="999999"
+ TIME_PRINT="0"
+ fi
+ while pidof Mserver >/dev/null
+ do
+
+ sudo killall -TERM Mserver
+ sleep 3
+ done
+
+ echo "$TIME_COUNT" | tail -n +2 | average
+ echo "$TIME_MAT" | tail -n +2 | average
+ echo "$TIME_PRINT" | tail -n +2 | average
+ echo $NUM_RESULTS
+}
+
+do_monet "$@"
--- /dev/null
+#!/bin/bash
+QIZX="/raid0/kn/qizx/qizx-fe-4.1p1/bin/qizx.alarm"
+
+source utils.sh
+
+function stop_qizx() {
+ sleep 2
+# rm -rf mat.xq count.xq
+ QIZXPIDS=`ps xwww --format "%p,%a" | grep java | grep qizx | cut -f 1 -d ' '`
+ for i in $QIZXPIDS
+ do
+ kill -TERM "$i"
+ sleep 2
+ KILLED=`ps aux | grep '^'$i`
+ if [ "$KILLED" ]
+ then
+ kill -9 "$i"
+ fi
+ sleep 3
+ rm -f /raid0/kn/qizxlib/*/lock
+ while true
+ do
+ o=/raid0/kn/qizx/qizx-fe-4.1p1/bin/qizx -g /raid0/kn/qizxlib/ -l xmark -check /tmp/log >/dev/null 2>&1
+ sleep 2
+ if [ -z "$o" ]
+ then
+ break
+ fi
+ done
+ done
+
+}
+
+trap stop_qizx INT TERM
+
+function do_qizx() {
+
+ stop_qizx
+
+ query="$1"
+ doc=`basename "$2"`
+ repeat="$3"
+ count="$4"
+ echo 'let $doc := collection("'"$doc"'") return count($doc'"$query"')' > count.xq
+ echo 'let $doc := collection("'"$doc"'") return $doc'"$query" > mat.xq
+
+ IT=0
+ while true
+ do
+ OUTPUT=`$QIZX -g /raid0/kn/qizxlib/ -l xmark count.xq 2>&1`
+ if echo "$OUTPUT" | grep -q 'java' >/dev/null 2>&1
+ then
+ if [ "$IT" = 5 ]
+ then
+ break
+ fi
+ IT=$(($IT + 1))
+ continue
+ fi
+
+ {
+ read count;
+ } < <(echo "$OUTPUT")
+
+ stop_qizx
+ sleep 3
+ tmp=`echo "$count" | grep -o '[0-9.]\+'`
+ if [ "$tmp" = "$count" ]
+ then
+ break
+ fi
+ done
+
+ IT=0
+ while true
+ do
+
+ OUTPUT=`$QIZX -g /raid0/kn/qizxlib/ -l xmark -r "$repeat" count.xq 2>&1`
+ if echo "$OUTPUT" | grep -q 'java' >/dev/null 2>&1
+ then
+ if [ "$IT" = 5 ]
+ then
+ break
+ fi
+ IT=$(($IT + 1))
+ continue
+ fi
+
+ {
+ read time_count;
+ } < <(echo "$OUTPUT" | grep 'display time' | cut -f 3 -d : | grep -o '[0-9]\+'| tail -n +1 | average )
+
+
+ stop_qizx
+ sleep 3
+ if [ -z "$time_count" ]
+ then
+ break
+ fi
+ tmp=`echo "$time_count" | grep -o '[0-9.]\+'`
+ if [ "$tmp" = "$time_count" ]
+ then
+ break
+ fi
+ done
+
+ IT=0
+ if [ -z "$count" ]
+ then
+
+ while true
+ do
+ OUTPUT=`$QIZX -g /raid0/kn/qizxlib/ -l xmark -r "$repeat" mat.xq -out /dev/null 2>&1`
+ if echo "$OUTPUT" | grep -q 'java' >/dev/null 2>&1
+ then
+ if [ "$IT" = 5 ]
+ then
+ break
+ fi
+ IT=$(($IT + 1))
+ continue
+ fi
+
+ {
+ read time_mat;
+ } < <(echo "$OUTPUT" 2>&1 | grep 'display time' | cut -f 3 -d : | grep -o '[0-9]\+'| tail -n +1 | average)
+
+ stop_qizx
+ sleep 3
+ if [ -z "$time_mat" ]
+ then
+ break
+ fi
+
+
+ tmp=`echo "$time_mat" | grep -o '[0-9.]\+'`
+ if [ "$tmp" = "$time_mat" ]
+ then
+ break
+ fi
+ done
+ else
+ time_mat="999999"
+ fi
+
+ echo $time_count
+ echo 0
+ echo $time_mat
+ echo $count
+
+}
+
+#UGLY HACK TO TRICK QIZX EVALUATION VERSION
+# OLD_DATE=`date +"%m/%d/%Y"`
+
+# function reset_time() {
+# CUR_TIME=`date +"%H:%M:%S"`
+# sudo date -s "$OLD_DATE $CUR_TIME" >/dev/null 2>&1
+# }
+# trap reset_time INT TERM
+
+#CUR_TIME=`date +"%H:%M:%S"`
+#sudo date -s "03/11/2011 $CUR_TIME" >/dev/null 2>&1
+do_qizx "$@"
+#reset_time
--- /dev/null
+#!/bin/sh
+
+cat "$1" | sed -e 's/,/ /g' | (
+COUNT=""
+MAT=""
+SER=""
+while read q num count mat ser
+do
+COUNT="$COUNT","$count"
+MAT="$MAT","$mat"
+SER="$SER","$ser"
+done
+echo "$COUNT"
+echo "$MAT"
+echo "$SER"
+)
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+source utils.sh
+
+function do_sxsi() {
+ query="$1"
+ count="$4"
+ doc=`basename "$2" .xml`.srx
+ repeat="$3"
+ TIME_MAT=""
+ TIME_COUNT=""
+ TIME_PRINT=""
+ NUM_RESULTS=""
+ output=`./main.native -r "$3" -c -b "$doc" "$query" 2>&1`
+ echo "$output" >> sxsi_debug.log
+ NUM_RESULT=`echo "$output" | grep "Number of results" | grep -o '[0-9]*'`
+ time=`echo "$output" | grep "Execution time" | cut -f 2 -d',' | cut -f1 -d ':' | grep -o '[0-9.]*'`
+ TIME_COUNT=`echo "$time" | tail -n +2 | average`
+ if [ -z "$count" ]
+ then
+ output=`./main.native -b -r "$3" "$doc" "$query" /dev/null 2>&1`
+ mtime=`echo "$output" | grep "Execution time" | cut -f 2 -d',' | cut -f1 -d ':'| grep -o '[0-9.]*'`
+ ptime=`echo "$output" | grep 'Serialization time' | cut -f 3 -d ' ' | grep -o '[0-9.]*'`
+ TIME_MAT=`echo "$mtime" | tail -n +2 | average`
+ TIME_PRINT="$ptime"
+ else
+ TIME_MAT="999999"
+ TIME_PRINT="0"
+ fi
+
+ echo "$TIME_COUNT"
+ echo "$TIME_MAT"
+ echo "$TIME_PRINT"
+ echo $NUM_RESULT
+}
+
+do_sxsi "$@"
--- /dev/null
+#!/bin/bash
+I=1
+
+function cecho() {
+ case "$1" in
+ green)
+ START="\033[0;32m"
+ END="\033[0m"
+ ;;
+ yellow)
+ START="\033[1;33m"
+ END="\033[0m"
+ ;;
+ red)
+ START="\033[0;31m"
+ END="\033[0m"
+ ;;
+ *)
+ START=""
+ END=""
+ ;;
+ esac
+ echo -n -e "${START}${2}${END}"
+}
+
+function lessthan() {
+ echo '5k 1 st 0 sf' "$2" "$1" '<t ' "$2" "$1" '!<f p' | dc
+}
+
+
+if [ "$1" = "fast" ]
+then
+ repeat_monet=1
+ repeat_sxsi=1
+ repeat_qizx=2
+else
+ repeat_monet=1
+ repeat_sxsi=10
+ repeat_qizx=4
+fi
+
+
+for TESTDOC in medline_full.xml #"xmark_10.xml" #"medline.xml" "xmark_01.04.xml"
+do
+echo
+echo "$TESTDOC"
+echo
+
+MLOG="$TESTDOC"_monet.log
+SLOG="$TESTDOC"_sxsi.log
+QLOG="$TESTDOC"_qizx.log
+rm -f "$MLOG" "$SLOG" "$QLOG"
+cat "$TESTDOC".queries | grep -v '^#' | while read line
+do
+
+ qname=`echo "$line" | cut -f 1 -d "%"`
+ query=`echo "$line" | cut -f 2 -d "%"`
+ query_qizx=`echo "$line" | cut -f 3 -d "%"`
+ if [ -z "$query_qizx" ]
+ then
+ query_qizx="$query"
+ fi
+ echo Test $I "... "
+ echo "$query" | sed -e 's|/descendant::|//|g' | sed -e 's|child::||g'
+ echo -n Running SXSI
+ {
+ read sxsi_count_time
+ read sxsi_mat_time
+ read sxsi_print_time
+ read sxsi_count
+ } < <(`pwd`/sxsi.sh "$query" "$TESTDOC" "$repeat_sxsi" "$2")
+
+ echo " ok"
+ echo -n Running MonetBD/XQuery
+
+ if [ "$query" = '/descendant::people[ descendant::person[not(child::address)] and descendant::person[not(child::watches)]]/child::person[child::watches]' ]
+ then
+ #Quick work around since MonetBD fails on q11
+ monet_count_time=1000000
+ monet_mat_time=1000000
+ monet_print_time=1000000
+ monet_count="$sxsi_count"
+ else
+ {
+ read monet_count_time
+ read monet_mat_time
+ read monet_print_time
+ read monet_count
+ } < <(`pwd`/monet.sh "$query" "$TESTDOC" "$repeat_monet" "$2")
+
+ fi
+ echo " ok"
+
+ echo -n Running Qizx/XQuery
+ {
+ read qizx_count_time
+ read qizx_mat_time
+ read qizx_print_time
+ read qizx_count
+ } < <(`pwd`/qizx.sh "$query_qizx" "$TESTDOC" "$repeat_qizx" "$2")
+
+ echo " ok"
+
+ if [ "$monet_count" = "" ]
+ then
+ monet_count="$sxsi_count"
+ fi
+ if [ "$sxsi_count" = "" ]
+ then
+ sxsi_count="$monet_count"
+ fi
+ for v in sxsi_count_time sxsi_mat_time sxsi_print_time \
+ monet_count_time monet_mat_time monet_print_time \
+ qizx_count_time qizx_mat_time qizx_print_time
+ do
+ if [ "${!v}" = "" ]
+ then
+ { read "$v"; } < <( echo 7200000 )
+ fi
+ done
+
+
+
+ echo "$I,$sxsi_count,$sxsi_count_time,$sxsi_mat_time,$sxsi_print_time" >> "$SLOG"
+ echo "$I,$monet_count,$monet_count_time,$monet_mat_time,$monet_print_time" >>"$MLOG"
+ echo "$I,$qizx_count,$qizx_count_time,$qizx_mat_time,$qizx_print_time" >>"$QLOG"
+ echo -n "Correctness: "
+ if [ "$monet_count" = "$sxsi_count" ]
+ then
+ cecho green "count ok ($monet_count) "
+ else
+ cecho red "count error (monetdb: $monet_count, sxsi: $sxsi_count) "
+ fi
+ echo
+ echo -n "Timing: "
+ CTIME="SXSI: $sxsi_count_time
+MONET: $monet_count_time
+QIZX: $qizx_count_time"
+ SORTED_CTIME=`echo "$CTIME" | sort --key=2 -g`
+ STR_CTIME=`echo "$SORTED_CTIME" | xargs echo -n`
+ first=`echo "$STR_CTIME" | cut -f1 -d':'`
+ if [ "$first" = "SXSI" ]
+ then
+ cecho green "$STR_CTIME"
+ else
+ cecho yellow "$STR_CTIME"
+ fi
+ I=$(( $I + 1))
+ echo
+done
+done
--- /dev/null
+#!/bin/bash
+source utils.sh
+DOC="$2"
+cat "$1" | grep -v '^#' | while read line
+do
+ QNAME=`echo "$line" | cut -f 1 -d '%'`
+ QUERY=`echo "$line" | cut -f 2 -d '%'`
+ echo -n "$QNAME",
+ for mode in "-nc -nj" "-nc" "-nj" ""
+ do
+ output=`../../main.native -r "4" $mode -c "$DOC" "$QUERY" 2>&1`
+ #echo "$output"
+ time=`echo "$output" | grep "Execution time" | cut -f 2 -d',' | cut -f1 -d ':' | grep -o '[0-9.]*'`
+ TIME_COUNT=`echo "$time" | tail -n +2 | average`
+ echo -n "$TIME_COUNT"
+ if [ -z "$mode" ]
+ then
+ echo
+ else
+ echo -n ","
+ fi
+ done
+done
--- /dev/null
+#!/bin/bash
+function average() {
+ N="0"
+ I=0
+ while read x
+ do
+ if [ -z "$x" ]
+ then
+ I=0
+ break
+ fi
+ N="$N + $x"
+ I=$(($I+1))
+ done
+ if [ "$I" = "0" ]
+ then
+ echo
+ else
+ echo "scale=3; 1+(( $N ) / $I)" | bc -q
+ fi
+}
--- /dev/null
+../docs/xmark_01.04.srx
\ No newline at end of file
--- /dev/null
+xmark_all.xml.queries
\ No newline at end of file
--- /dev/null
+../docs/xmark_10.srx
\ No newline at end of file
--- /dev/null
+xmark_all.xml.queries
\ No newline at end of file
--- /dev/null
+X01%/child::site/child::regions
+#%/child::site/child::closed_auctions
+X02%/child::site/child::regions/child::*/child::item
+X03%/child::site/child::closed_auctions/child::closed_auction/child::annotation/child::description/child::text/child::keyword
+X04%/descendant::listitem/descendant::keyword
+#%/descendant::closed_auction/descendant::keyword
+#%/site/closed_auctions/closed_auction/descendant::keyword
+X05%/child::site/child::closed_auctions/child::closed_auction[child::annotation/child::description/child::text/child::keyword]/child::date
+X06%/child::site/child::closed_auctions/child::closed_auction[descendant::keyword]/child::date
+X07%/child::site/child::people/child::person[child::profile/child::gender and child::profile/child::age]/child::name
+X08%/child::site/child::people/child::person[child::phone or child::homepage]/child::name
+X09%/child::site/child::people/child::person[child::address and (child::phone or child::homepage) and (child::creditcard or child::profile)]/child::name
+X10%/descendant::listitem[not(descendant::keyword/child::emph)]/descendant::parlist
+X11%/descendant::listitem[ (descendant::keyword or descendant::emph) and (descendant::emph or descendant::bold)]/child::parlist
+X12%/descendant::people[ descendant::person[not(child::address)] and descendant::person[not(child::watches)]]/child::person[child::watches]
+#%/site/regions/europe/item/mailbox/mail/text/keyword
+#%/site/closed_auctions/closed_auction/annotation/description/parlist/listitem
+#%/site/closed_auctions/closed_auction/annotation/description/parlist/listitem/parlist/listitem/*/descendant::keyword
+#%/site/regions/*/item/descendant::keyword
+#%/site/regions/*/person[ address and (phone or homepage) ]
+#%/descendant::listitem[ descendant::keyword and descendant::emph]/descendant::parlist
+#%/site/regions/*/item[ mailbox/mail/date ]/mailbox/mail
+X13%/child::*[ descendant::* ]
+X14%/descendant::*
+X15%/descendant::*/descendant::*
+X16%/descendant::*/descendant::*/descendant::*
+X17%/descendant::*/descendant::*/descendant::*/descendant::*
+#%/descendant::*/descendant::*/descendant::*/descendant::*/descendant::*/descendant::*
+#%/descendant::*/descendant::*
+++ /dev/null
-../docs/Treebank.srx
\ No newline at end of file
+++ /dev/null
-T01%/descendant::NP
-#%/descendant::*/child::NP
-#T03%/descendant::NP/descendant::VBZ
-T02%/descendant::S[descendant::VP and descendant::NP]/child::VP/child::PP[child::IN]/child::NP/child::VBN
-T03%/descendant::NP[descendant::JJ or descendant::CC]
-T04%/descendant::CC[ not(descendant::JJ) ]
-#%/descendant::S/child::VP/child::PP[child::NP/child::VBN]/child::IN
-T05%/descendant::NN[descendant::VBZ or descendant::IN]/child::*[descendant::NN or descendant::_QUOTE_]
-#T06%/descendant::EMPTY[descendant::VP and descendant::S]/descendant::PP[descendant::S and descendant::VGN]
\ No newline at end of file
+++ /dev/null
-/descendant::promoter[contains(., "PSSM 5000 8 1 0 19 20 18 1 20 7 1 0 1 0 1 18 0 2 17 0 0 0 1 0 0 3 1 20 0 0 0 1 0 8")]
-/descendant::promoter[contains(., "PSSM 100000 12 6 19 19 20 5 0 1 20 19 20 1 1 4 0 0 0 3 10 1 0 1 0 13 13 10 1 0 0 11 0 18 0 0 0 6 1 0 0 1 0 1 10 0 0 0 0 0 5") ]
-/descendant::promoter[contains(., "PSSM 300000 14 0 1 12 6 0 0 0 1 2 6 6 1 3 0 0 0 0 7 13 3 2 0 0 4 5 10 6 3 2 12 1 0 0 0 0 0 11 3 1 1 0 3 11 0 0 0 0 10 11 12 0 0 1 1 4 7") ]
-/descendant::exon[ descendant::sequence[ contains(., "PSSM 5000 8 1 0 19 20 18 1 20 7 1 0 1 0 1 18 0 2 17 0 0 0 1 0 0 3 1 20 0 0 0 1 0 8")] ]
-/descendant::exon[ descendant::sequence[ contains( ., "PSSM 100000 12 6 19 19 20 5 0 1 20 19 20 1 1 4 0 0 0 3 10 1 0 1 0 13 13 10 1 0 0 11 0 18 0 0 0 6 1 0 0 1 0 1 10 0 0 0 0 0 5") ] ]
-/descendant::exon[ descendant::sequence[ contains(., "PSSM 300000 14 0 1 12 6 0 0 0 1 2 6 6 1 3 0 0 0 0 7 13 3 2 0 0 4 5 10 6 3 2 12 1 0 0 0 0 0 11 3 1 1 0 3 11 0 0 0 0 10 11 12 0 0 1 1 4 7") ] ]
-/descendant::*[contains(., "PSSM 5000 8 1 0 19 20 18 1 20 7 1 0 1 0 1 18 0 2 17 0 0 0 1 0 0 3 1 20 0 0 0 1 0 8")]
-/descendant::*[contains(., "PSSM 100000 12 6 19 19 20 5 0 1 20 19 20 1 1 4 0 0 0 3 10 1 0 1 0 13 13 10 1 0 0 11 0 18 0 0 0 6 1 0 0 1 0 1 10 0 0 0 0 0 5") ]
-/descendant::*[contains(., "PSSM 300000 14 0 1 12 6 0 0 0 1 2 6 6 1 3 0 0 0 0 7 13 3 2 0 0 4 5 10 6 3 2 12 1 0 0 0 0 0 11 3 1 1 0 3 11 0 0 0 0 10 11 12 0 0 1 1 4 7") ]
+++ /dev/null
-/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "plus" ]
-/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") or contains ( . , "for") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "plus" ftor "for" ]
-/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") and not(contains ( . , "for")) ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "plus" ftand ftnot "for" ]
-/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName[starts-with( ., "Bar")]]%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName ftcontains "Bar" at start ]
-/descendant::*[ descendant::LastName[ contains( ., "Nguyen") ] ]%/descendant::*[ descendant::LastName ftcontains "Nguyen" entire content ]
-/descendant::*/descendant::*[ contains( ., "epididymis") ]%/descendant::*/descendant::*[ . ftcontains "epididymis" ]
-/descendant::*[ descendant::PublicationType[ ends-with( ., "Article") ]]%/descendant::*[ descendant::PublicationType ftcontains "Article" at end ]
-/descendant::MedlineCitation[ descendant::Country[ contains( ., "AUSTRALIA") ] ]%/descendant::MedlineCitation[ descendant::Country ftcontains "AUSTRALIA" ]
+++ /dev/null
-/raid0/kn/docs/medline/xml/medline_full_wordbased.srx
\ No newline at end of file
+++ /dev/null
-W1%/descendant::Article[ descendant::AbstractText[ contains ( . , "blood sample") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "blood sample" all words ordered ]
-W2%/descendant::Article[ descendant::AbstractText[ contains ( . , "is such that") ] ]%/descendant::Article/descendant::AbstractText[ . ftcontains "is such that" all words ordered ]
-W3%/descendant::Article[ descendant::AbstractText[ contains( . , "various types of") and contains( . , "immune cells") ] ]%/descendant::Article[descendant::AbstractText[ . ftcontains "various types of" all words ordered ftand "immune cells" all words ordered ]]
-W4%/descendant::Article[ descendant::AbstractText[ contains( . , "of the bone marrow") ] ]%/descendant::Article[descendant::AbstractText[ . ftcontains "of the bone marrow" all words ordered ]]
-W5%/descendant::Article[ descendant::AbstractText[ contains( . , "cell") and not(contains( ., "blood")) ] ]%/descendant::Article[descendant::AbstractText[ . ftcontains "cell" ftand ftnot "blood" ]]
-#W5%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName[starts-with( ., "Bar")]]%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName ftcontains "Bar" at start ]
-#W6%/descendant::*[ descendant::LastName[ contains( ., "Nguyen") ] ]%/descendant::*[ descendant::LastName ftcontains "Nguyen" entire content ]
-#W7%/descendant::*/descendant::*[ contains( ., "epididymis") ]%/descendant::*/descendant::*[ . ftcontains "epididymis" ]
-#W8%/descendant::*[ descendant::PublicationType[ ends-with( ., "Article") ]]%/descendant::*[ descendant::PublicationType ftcontains "Article" at end ]
-#W9%/descendant::MedlineCitation[ descendant::Country[ contains( ., "AUSTRALIA") ] ]%/descendant::MedlineCitation[ descendant::Country ftcontains "AUSTRALIA" ]
+++ /dev/null
-M1%/descendant::Article[ descendant::AbstractText[ contains (., "foot") or contains( ., "feet") ] ]
-M2%/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") ] ]
-M3%/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") or contains ( . , "for") ] ]
-M4%/descendant::Article[ descendant::AbstractText[ contains ( . , "plus") and not(contains ( . , "for")) ] ]
-M5%/descendant::MedlineCitation/child::Article/child::AuthorList/child::Author[ child::LastName[starts-with( ., "Bar")]]
-M6%/descendant::*[ descendant::LastName[ contains( ., "Nguyen") ] ]
-M7%/descendant::*/descendant::*[ contains( ., "epididymis") ]
-M8%/descendant::*[ descendant::PublicationType[ ends-with( ., "Article") ]]
-M9%/descendant::MedlineCitation[ descendant::Country[ contains( ., "AUSTRALIA") ] ]
+++ /dev/null
-#!/bin/bash
-source utils.sh
-#Mserver and killall must be in /etc/sudoers
-function kmonet() {
- sudo killall -TERM Mserver
- sleep 2
- sudo killall -9 Mserver
-}
-trap kmonet INT TERM
-
-function do_monet(){
- while pidof Mserver >/dev/null
- do
-
- sudo killall -TERM Mserver
- sleep 3
- done
-
- while ! pidof Mserver >/dev/null
- do
- sudo /usr/local/bin/alarm 600 22000000 Mserver --dbinit="module(pathfinder);" >/dev/null 2>&1 &
- sleep 3
- done
- sync
-
- query="$1"
- doc="$2"
- repeat="$3"
- TIME_MAT=""
- TIME_COUNT=""
- TIME_PRINT=""
- NUM_RESULTS=""
- for i in `seq 1 "$repeat"`
- do
- {
- read foo
- read foo
- read num
- read foo
- read foo
- read tquery
- read foo
- read foo
- } < <(echo "fn:count(fn:doc(\"$doc\")$query)
-" | mclient -t --interactive 2>&1 | grep -o '[0-9.]*' )
-
- TIME_COUNT="$TIME_COUNT
-$tquery"
-
- NUM_RESULTS="$num"
- done
-
- if [ -z "$4" ]
- then
- for i in `seq 1 "$repeat"`
- do
- {
- read foo
- read foo
- read tquery
- read tprint
- read foo
- } < <(echo "\>/dev/null
-fn:doc(\"$doc\")$query
-" | mclient -t --interactive 2>&1 | grep -o '[0-9.]*' )
-
- TIME_MAT="$TIME_MAT
-$tquery"
-
- TIME_PRINT="$TIME_PRINT
-$tprint"
-
- done
- else
- TIME_MAT="999999"
- TIME_PRINT="0"
- fi
- while pidof Mserver >/dev/null
- do
-
- sudo killall -TERM Mserver
- sleep 3
- done
-
- echo "$TIME_COUNT" | tail -n +2 | average
- echo "$TIME_MAT" | tail -n +2 | average
- echo "$TIME_PRINT" | tail -n +2 | average
- echo $NUM_RESULTS
-}
-
-do_monet "$@"
+++ /dev/null
-#!/bin/bash
-QIZX="/raid0/kn/qizx/qizx-fe-4.1p1/bin/qizx.alarm"
-
-source utils.sh
-
-function stop_qizx() {
- sleep 2
-# rm -rf mat.xq count.xq
- QIZXPIDS=`ps xwww --format "%p,%a" | grep java | grep qizx | cut -f 1 -d ' '`
- for i in $QIZXPIDS
- do
- kill -TERM "$i"
- sleep 2
- KILLED=`ps aux | grep '^'$i`
- if [ "$KILLED" ]
- then
- kill -9 "$i"
- fi
- sleep 3
- rm -f /raid0/kn/qizxlib/*/lock
- while true
- do
- o=/raid0/kn/qizx/qizx-fe-4.1p1/bin/qizx -g /raid0/kn/qizxlib/ -l xmark -check /tmp/log >/dev/null 2>&1
- sleep 2
- if [ -z "$o" ]
- then
- break
- fi
- done
- done
-
-}
-
-trap stop_qizx INT TERM
-
-function do_qizx() {
-
- stop_qizx
-
- query="$1"
- doc=`basename "$2"`
- repeat="$3"
- count="$4"
- echo 'let $doc := collection("'"$doc"'") return count($doc'"$query"')' > count.xq
- echo 'let $doc := collection("'"$doc"'") return $doc'"$query" > mat.xq
-
- IT=0
- while true
- do
- OUTPUT=`$QIZX -g /raid0/kn/qizxlib/ -l xmark count.xq 2>&1`
- if echo "$OUTPUT" | grep -q 'java' >/dev/null 2>&1
- then
- if [ "$IT" = 5 ]
- then
- break
- fi
- IT=$(($IT + 1))
- continue
- fi
-
- {
- read count;
- } < <(echo "$OUTPUT")
-
- stop_qizx
- sleep 3
- tmp=`echo "$count" | grep -o '[0-9.]\+'`
- if [ "$tmp" = "$count" ]
- then
- break
- fi
- done
-
- IT=0
- while true
- do
-
- OUTPUT=`$QIZX -g /raid0/kn/qizxlib/ -l xmark -r "$repeat" count.xq 2>&1`
- if echo "$OUTPUT" | grep -q 'java' >/dev/null 2>&1
- then
- if [ "$IT" = 5 ]
- then
- break
- fi
- IT=$(($IT + 1))
- continue
- fi
-
- {
- read time_count;
- } < <(echo "$OUTPUT" | grep 'display time' | cut -f 3 -d : | grep -o '[0-9]\+'| tail -n +1 | average )
-
-
- stop_qizx
- sleep 3
- if [ -z "$time_count" ]
- then
- break
- fi
- tmp=`echo "$time_count" | grep -o '[0-9.]\+'`
- if [ "$tmp" = "$time_count" ]
- then
- break
- fi
- done
-
- IT=0
- if [ -z "$count" ]
- then
-
- while true
- do
- OUTPUT=`$QIZX -g /raid0/kn/qizxlib/ -l xmark -r "$repeat" mat.xq -out /dev/null 2>&1`
- if echo "$OUTPUT" | grep -q 'java' >/dev/null 2>&1
- then
- if [ "$IT" = 5 ]
- then
- break
- fi
- IT=$(($IT + 1))
- continue
- fi
-
- {
- read time_mat;
- } < <(echo "$OUTPUT" 2>&1 | grep 'display time' | cut -f 3 -d : | grep -o '[0-9]\+'| tail -n +1 | average)
-
- stop_qizx
- sleep 3
- if [ -z "$time_mat" ]
- then
- break
- fi
-
-
- tmp=`echo "$time_mat" | grep -o '[0-9.]\+'`
- if [ "$tmp" = "$time_mat" ]
- then
- break
- fi
- done
- else
- time_mat="999999"
- fi
-
- echo $time_count
- echo 0
- echo $time_mat
- echo $count
-
-}
-
-#UGLY HACK TO TRICK QIZX EVALUATION VERSION
-# OLD_DATE=`date +"%m/%d/%Y"`
-
-# function reset_time() {
-# CUR_TIME=`date +"%H:%M:%S"`
-# sudo date -s "$OLD_DATE $CUR_TIME" >/dev/null 2>&1
-# }
-# trap reset_time INT TERM
-
-#CUR_TIME=`date +"%H:%M:%S"`
-#sudo date -s "03/11/2011 $CUR_TIME" >/dev/null 2>&1
-do_qizx "$@"
-#reset_time
+++ /dev/null
-#!/bin/sh
-
-cat "$1" | sed -e 's/,/ /g' | (
-COUNT=""
-MAT=""
-SER=""
-while read q num count mat ser
-do
-COUNT="$COUNT","$count"
-MAT="$MAT","$mat"
-SER="$SER","$ser"
-done
-echo "$COUNT"
-echo "$MAT"
-echo "$SER"
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/bash
-
-source utils.sh
-
-function do_sxsi() {
- query="$1"
- count="$4"
- doc=`basename "$2" .xml`.srx
- repeat="$3"
- TIME_MAT=""
- TIME_COUNT=""
- TIME_PRINT=""
- NUM_RESULTS=""
- output=`./main.native -r "$3" -c -b "$doc" "$query" 2>&1`
- echo "$output" >> sxsi_debug.log
- NUM_RESULT=`echo "$output" | grep "Number of results" | grep -o '[0-9]*'`
- time=`echo "$output" | grep "Execution time" | cut -f 2 -d',' | cut -f1 -d ':' | grep -o '[0-9.]*'`
- TIME_COUNT=`echo "$time" | tail -n +2 | average`
- if [ -z "$count" ]
- then
- output=`./main.native -b -r "$3" "$doc" "$query" /dev/null 2>&1`
- mtime=`echo "$output" | grep "Execution time" | cut -f 2 -d',' | cut -f1 -d ':'| grep -o '[0-9.]*'`
- ptime=`echo "$output" | grep 'Serialization time' | cut -f 3 -d ' ' | grep -o '[0-9.]*'`
- TIME_MAT=`echo "$mtime" | tail -n +2 | average`
- TIME_PRINT="$ptime"
- else
- TIME_MAT="999999"
- TIME_PRINT="0"
- fi
-
- echo "$TIME_COUNT"
- echo "$TIME_MAT"
- echo "$TIME_PRINT"
- echo $NUM_RESULT
-}
-
-do_sxsi "$@"
+++ /dev/null
-#!/bin/bash
-I=1
-
-function cecho() {
- case "$1" in
- green)
- START="\033[0;32m"
- END="\033[0m"
- ;;
- yellow)
- START="\033[1;33m"
- END="\033[0m"
- ;;
- red)
- START="\033[0;31m"
- END="\033[0m"
- ;;
- *)
- START=""
- END=""
- ;;
- esac
- echo -n -e "${START}${2}${END}"
-}
-
-function lessthan() {
- echo '5k 1 st 0 sf' "$2" "$1" '<t ' "$2" "$1" '!<f p' | dc
-}
-
-
-if [ "$1" = "fast" ]
-then
- repeat_monet=1
- repeat_sxsi=1
- repeat_qizx=2
-else
- repeat_monet=1
- repeat_sxsi=10
- repeat_qizx=4
-fi
-
-
-for TESTDOC in medline_full.xml #"xmark_10.xml" #"medline.xml" "xmark_01.04.xml"
-do
-echo
-echo "$TESTDOC"
-echo
-
-MLOG="$TESTDOC"_monet.log
-SLOG="$TESTDOC"_sxsi.log
-QLOG="$TESTDOC"_qizx.log
-rm -f "$MLOG" "$SLOG" "$QLOG"
-cat "$TESTDOC".queries | grep -v '^#' | while read line
-do
-
- qname=`echo "$line" | cut -f 1 -d "%"`
- query=`echo "$line" | cut -f 2 -d "%"`
- query_qizx=`echo "$line" | cut -f 3 -d "%"`
- if [ -z "$query_qizx" ]
- then
- query_qizx="$query"
- fi
- echo Test $I "... "
- echo "$query" | sed -e 's|/descendant::|//|g' | sed -e 's|child::||g'
- echo -n Running SXSI
- {
- read sxsi_count_time
- read sxsi_mat_time
- read sxsi_print_time
- read sxsi_count
- } < <(`pwd`/sxsi.sh "$query" "$TESTDOC" "$repeat_sxsi" "$2")
-
- echo " ok"
- echo -n Running MonetBD/XQuery
-
- if [ "$query" = '/descendant::people[ descendant::person[not(child::address)] and descendant::person[not(child::watches)]]/child::person[child::watches]' ]
- then
- #Quick work around since MonetBD fails on q11
- monet_count_time=1000000
- monet_mat_time=1000000
- monet_print_time=1000000
- monet_count="$sxsi_count"
- else
- {
- read monet_count_time
- read monet_mat_time
- read monet_print_time
- read monet_count
- } < <(`pwd`/monet.sh "$query" "$TESTDOC" "$repeat_monet" "$2")
-
- fi
- echo " ok"
-
- echo -n Running Qizx/XQuery
- {
- read qizx_count_time
- read qizx_mat_time
- read qizx_print_time
- read qizx_count
- } < <(`pwd`/qizx.sh "$query_qizx" "$TESTDOC" "$repeat_qizx" "$2")
-
- echo " ok"
-
- if [ "$monet_count" = "" ]
- then
- monet_count="$sxsi_count"
- fi
- if [ "$sxsi_count" = "" ]
- then
- sxsi_count="$monet_count"
- fi
- for v in sxsi_count_time sxsi_mat_time sxsi_print_time \
- monet_count_time monet_mat_time monet_print_time \
- qizx_count_time qizx_mat_time qizx_print_time
- do
- if [ "${!v}" = "" ]
- then
- { read "$v"; } < <( echo 7200000 )
- fi
- done
-
-
-
- echo "$I,$sxsi_count,$sxsi_count_time,$sxsi_mat_time,$sxsi_print_time" >> "$SLOG"
- echo "$I,$monet_count,$monet_count_time,$monet_mat_time,$monet_print_time" >>"$MLOG"
- echo "$I,$qizx_count,$qizx_count_time,$qizx_mat_time,$qizx_print_time" >>"$QLOG"
- echo -n "Correctness: "
- if [ "$monet_count" = "$sxsi_count" ]
- then
- cecho green "count ok ($monet_count) "
- else
- cecho red "count error (monetdb: $monet_count, sxsi: $sxsi_count) "
- fi
- echo
- echo -n "Timing: "
- CTIME="SXSI: $sxsi_count_time
-MONET: $monet_count_time
-QIZX: $qizx_count_time"
- SORTED_CTIME=`echo "$CTIME" | sort --key=2 -g`
- STR_CTIME=`echo "$SORTED_CTIME" | xargs echo -n`
- first=`echo "$STR_CTIME" | cut -f1 -d':'`
- if [ "$first" = "SXSI" ]
- then
- cecho green "$STR_CTIME"
- else
- cecho yellow "$STR_CTIME"
- fi
- I=$(( $I + 1))
- echo
-done
-done
+++ /dev/null
-#!/bin/bash
-source utils.sh
-DOC="$2"
-cat "$1" | grep -v '^#' | while read line
-do
- QNAME=`echo "$line" | cut -f 1 -d '%'`
- QUERY=`echo "$line" | cut -f 2 -d '%'`
- echo -n "$QNAME",
- for mode in "-nc -nj" "-nc" "-nj" ""
- do
- output=`../../main.native -r "4" $mode -c "$DOC" "$QUERY" 2>&1`
- #echo "$output"
- time=`echo "$output" | grep "Execution time" | cut -f 2 -d',' | cut -f1 -d ':' | grep -o '[0-9.]*'`
- TIME_COUNT=`echo "$time" | tail -n +2 | average`
- echo -n "$TIME_COUNT"
- if [ -z "$mode" ]
- then
- echo
- else
- echo -n ","
- fi
- done
-done
+++ /dev/null
-#!/bin/bash
-function average() {
- N="0"
- I=0
- while read x
- do
- if [ -z "$x" ]
- then
- I=0
- break
- fi
- N="$N + $x"
- I=$(($I+1))
- done
- if [ "$I" = "0" ]
- then
- echo
- else
- echo "scale=3; 1+(( $N ) / $I)" | bc -q
- fi
-}
+++ /dev/null
-../docs/xmark_01.04.srx
\ No newline at end of file
+++ /dev/null
-xmark_all.xml.queries
\ No newline at end of file
+++ /dev/null
-../docs/xmark_10.srx
\ No newline at end of file
+++ /dev/null
-xmark_all.xml.queries
\ No newline at end of file
+++ /dev/null
-X01%/child::site/child::regions
-#%/child::site/child::closed_auctions
-X02%/child::site/child::regions/child::*/child::item
-X03%/child::site/child::closed_auctions/child::closed_auction/child::annotation/child::description/child::text/child::keyword
-X04%/descendant::listitem/descendant::keyword
-#%/descendant::closed_auction/descendant::keyword
-#%/site/closed_auctions/closed_auction/descendant::keyword
-X05%/child::site/child::closed_auctions/child::closed_auction[child::annotation/child::description/child::text/child::keyword]/child::date
-X06%/child::site/child::closed_auctions/child::closed_auction[descendant::keyword]/child::date
-X07%/child::site/child::people/child::person[child::profile/child::gender and child::profile/child::age]/child::name
-X08%/child::site/child::people/child::person[child::phone or child::homepage]/child::name
-X09%/child::site/child::people/child::person[child::address and (child::phone or child::homepage) and (child::creditcard or child::profile)]/child::name
-X10%/descendant::listitem[not(descendant::keyword/child::emph)]/descendant::parlist
-X11%/descendant::listitem[ (descendant::keyword or descendant::emph) and (descendant::emph or descendant::bold)]/child::parlist
-X12%/descendant::people[ descendant::person[not(child::address)] and descendant::person[not(child::watches)]]/child::person[child::watches]
-#%/site/regions/europe/item/mailbox/mail/text/keyword
-#%/site/closed_auctions/closed_auction/annotation/description/parlist/listitem
-#%/site/closed_auctions/closed_auction/annotation/description/parlist/listitem/parlist/listitem/*/descendant::keyword
-#%/site/regions/*/item/descendant::keyword
-#%/site/regions/*/person[ address and (phone or homepage) ]
-#%/descendant::listitem[ descendant::keyword and descendant::emph]/descendant::parlist
-#%/site/regions/*/item[ mailbox/mail/date ]/mailbox/mail
-X13%/child::*[ descendant::* ]
-X14%/descendant::*
-X15%/descendant::*/descendant::*
-X16%/descendant::*/descendant::*/descendant::*
-X17%/descendant::*/descendant::*/descendant::*/descendant::*
-#%/descendant::*/descendant::*/descendant::*/descendant::*/descendant::*/descendant::*
-#%/descendant::*/descendant::*