{
for $b in document("http://www.bn.com")/bib/book
where $b/publisher = "Addison-Wesley" and $b/@year > 1991
return
{ $b/title }
}
;
{
for $b in document("http://www.bn.com")/bib/book,
$t in $b/title,
$a in $b/author
return
{ $t }
{ $a }
}
;
{
for $b in document("http://www.bn.com")/bib/book
return
{ $b/title }
{ $b/author }
}
;
{
for $a in distinct-values(document("http://www.bn.com")//author)
return
{ $a }
{
for $b in document("http://www.bn.com")/bib/book
where some $ba in $b/author satisfies deep-equal($ba,$a)
return $b/title
}
}
;
{
for $b in document("www.bn.com/bib.xml")//book,
$a in document("www.amazon.com/reviews.xml")//entry
where $b/title = $a/title
return
{ $b/title }
{ $a/price/text() }
{ $b/price/text() }
}
;
{
for $b in document("www.bn.com/bib.xml")//book
where count($b/author) > 0
return
{ $b/title }
{
for $a in $b/author[position()<=2]
return $a
}
{
if (count($b/author) > 2)
then
else ()
}
}
;
{
for $b in document("www.bn.com/bib.xml")//book
where $b/publisher = "Addison-Wesley" and $b/@year > 1991
return
{ $b/@year }
{ $b/title }
sortby (title)
}
;
for $b in document("www.bn.com/bib.xml")//book
let $e := $b/*[contains(string(.), "Suciu")
and ends-with(local-name(.), "or")]
where exists($e)
return
{ $b/title }
{ $e }
;
{
for $t in document("books.xml")//(chapter | section)/title
where contains($t/text(), "XML")
return $t
}
;
{
let $doc := document("www.bn.com/bib.xml")
for $t in distinct-values($doc//book/title)
let $p := for $x in $doc//book[title = $t]/price
return decimal($x)
return
{ min($p) }
}
;
{
for $b in document("www.bn.com/bib.xml")//book[author]
return
{ $b/title }
{ $b/author }
}
{
for $b in document("www.bn.com/bib.xml")//book[editor]
return
{ $b/title }
{$b/editor/affiliation}
}
;
{
for $book1 in document("www.bn.com/bib.xml")//book,
$book2 in document("www.bn.com/bib.xml")//book
let $aut1 := $book1/author sortby(last, first),
$aut2 := $book2/author sortby(last, first)
where $book1 precedes $book2
and not($book1/title = $book2/title)
and sequence-deep-equal($aut1, $aut2)
return
{ $book1/title }
{ $book2/title }
}
;
{
let $b := document("book1.xml")
return
filter($b//section | $b//section/title | $b//section/title/text())
}
;
{
for $f in document("book1.xml")//figure
return
{ $f/@* }
{ $f/title }
}
;
{ count(document("book1.xml")//section) },
{ count(document("book1.xml")//figure) }
;
{
count(document("book1.xml")/book/section)
}
;
{
for $s in document("book1.xml")//section
let $f := $s/figure
return
}
;
define function section_summary(element $s) returns element
{
{ $s/@* }
{ $s/title }
{ count($s/figure) }
{
for $ss in $s/section
return section_summary($ss)
}
}
{
for $s in document("book.xml")/book/section
return section_summary($s)
}
;
for $s in document("report1.xml")//section[section.title = "Procedure"]
return ($s//incision)[2]/instrument
;
for $s in document("report1.xml")//section[section.title = "Procedure"]
return ($s//instrument)[position()<=2]
;
let $i2 := (document("report1.xml")//incision)[2]
for $a in (document("report1.xml")//action)[. follows $i2][position()<=2]
return $a//instrument
;
for $p in document("report1.xml")//section[section.title = "Procedure"]
where not(some $a in $p//anesthesia satisfies
$a precedes ($p//incision)[1] )
return $p
;
{
let $proc := document("report1.xml")//section[section.title="Procedure"][1]
for $n in $proc//node()
where $n follows ($proc//incision)[1]
and $n precedes ($proc//incision)[2]
return $n
}
;
{
for $i in document("items.xml")//item_tuple
where $i/start_date <= date()
and $i/end_date >= date()
and contains($i/description, "Bicycle")
return
{ $i/itemno }
{ $i/description }
sortby (itemno)
}
;
{
for $i in document("items.xml")//item_tuple
let $b := document("bids.xml")//bid_tuple[itemno = $i/itemno]
where contains($i/description, "Bicycle")
return
{ $i/itemno }
{ $i/description }
{ max(for $z in $b/bid return decimal($z)) }
sortby(itemno)
}
;
{
for $u in document("users.xml")//user_tuple
for $i in document("items.xml")//item_tuple
where $u/rating > "C"
and $i/reserve_price > 1000
and $i/offered_by = $u/userid
return
{ $u/name }
{ $u/rating }
{ $i/description }
{ $i/reserve_price }
}
;
{
for $i in document("items.xml")//item_tuple
where empty(document("bids.xml")//bid_tuple[itemno = $i/itemno])
return
{ $i/itemno }
{ $i/description }
}
;
{
for $seller in document("users.xml")//user_tuple,
$buyer in document("users.xml")//user_tuple,
$item in document("items.xml")//item_tuple,
$highbid in document("bids.xml")//bid_tuple
where $seller/name = "Tom Jones"
and $seller/userid = $item/offered_by
and contains($item/description , "Bicycle")
and $item/itemno = $highbid/itemno
and $highbid/userid = $buyer/userid
and $highbid/bid = max(
for $x in document("bids.xml")//bid_tuple
[itemno = $item/itemno]/bid
return decimal($x)
)
return
{ $item/itemno }
{ $item/description }
{ $highbid/bid }
{ $buyer/name }
sortby(itemno)
}
;
{
for $seller in unordered(document("users.xml")//user_tuple),
$buyer in unordered(document("users.xml")//user_tuple),
$item in unordered(document("items.xml")//item_tuple),
$highbid in document("bids.xml")//bid_tuple
where $seller/name = "Tom Jones"
and $seller/userid = $item/offered_by
and contains($item/description , "Bicycle")
and $item/itemno = $highbid/itemno
and $highbid/userid = $buyer/userid
and $highbid/bid = max(for $x in unordered(document("bids.xml")//bid_tuple)
[itemno = $item/itemno]/bid
return decimal(data($x))
return
{ $item/itemno }
{ $item/description }
{ $highbid/bid }
{ $buyer/name }
sortby(itemno)
}
;
{
for $item in document("items.xml")//item_tuple
let $b := document("bids.xml")//bid_tuple[itemno = $item/itemno]
let $z := max(for $x in $b/bid return decimal($x))
where $item/reserve_price * 2 < $z
return
{ $item/itemno }
{ $item/description }
{ $item/reserve_price }
{$z }
}
;
let $allbikes := document("items.xml")//item_tuple
[contains(description, "Bicycle")
or contains(description, "Tricycle")]
let $bikebids := document("bids.xml")//bid_tuple[itemno = $allbikes/itemno]
return
{
max(for $x in $bikebids/bid return decimal($x))
}
;
let $item := document("items.xml")//item_tuple
[end_date >= date("1999-03-01") and end_date <= date("1999-03-31")]
return
{
count($item)
}
;
{
let $end_dates := document("items.xml")//item_tuple/end_date
for $m in distinct-values(for $e in $end_dates
return get-month-from-date($e))
let $item := document("items.xml")
//item_tuple[get-year-from-date(end_date) = 1999
and get-month-from-date(end_date) = $m]
return
{ $m }
{ count($item) }
sortby(month)
}
;
{
for $highbid in document("bids.xml")//bid_tuple,
$user in document("users.xml")//user_tuple
where $user/userid = $highbid/userid
and $highbid/bid = max(for $x in document("bids.xml")//bid_tuple
[itemno=$highbid/itemno]/bid return decimal($x))
return
{ $highbid/itemno }
{ $highbid/bid }
{ $user/name/text() }
sortby(itemno)
}
;
let $highbid := max(for $x in document("bids.xml")//bid_tuple/bid
return decimal($x))
return
{
for $item in document("items.xml")//item_tuple,
$b in document("bids.xml")//bid_tuple[itemno = $item/itemno]
where $b/bid = $highbid
return
{ $item/itemno }
{ $item/description }
{ $highbid }
}
;
define function bid_summary ()
{
for $i in distinct-values(document("bids.xml")//itemno)
let $b := document("bids.xml")//bid_tuple[itemno = $i]
return
{ $i }
{ count($b) }
}
{
let $bid_counts := bid_summary(),
$maxbids := max(for $x in $bid_counts/nbids return decimal($x)),
$maxitemnos := $bid_counts[nbids = $maxbids]
for $item in document("items.xml")//item_tuple,
$bc in $bid_counts
where $bc/nbids = $maxbids and $item/itemno = $bc/itemno
return
{ $item/itemno }
{ $item/description }
{ $bc/nbids/text() }
}
;
{
for $uid in distinct-values(document("bids.xml")//userid),
$u in document("users.xml")//user_tuple[userid = $uid]
let $b := document("bids.xml")//bid_tuple[userid = $uid]
return
{ $u/userid }
{ $u/name }
{ count($b) }
{ avg(for $x in $b/bid return decimal($x)) }
sortby(userid)
}
;
{
for $i in distinct-values(document("bids.xml")//itemno)
let $b := document("bids.xml")//bid_tuple[itemno = $i]
where count($b) >= 3
return
{ $i }
{ avg(for $x in $b/bid return decimal($x)) }
sortby(decimal(avgbid)) descending)
}
;
{
for $u in document("users.xml")//user_tuple
let $b := document("bids.xml")//bid_tuple[userid=$u/userid and bid>=100]
where count($b) > 1
return
{ $u/name/text() }
}
;
{
for $u in document("users.xml")//user_tuple
let $b := document("bids.xml")//bid_tuple[userid = $u/userid]
return
{ $u/userid }
{ $u/name }
{
if (empty($b))
then inactive
else active
}
sortby(userid)
}
;
{
for $u in document("users.xml")//user_tuple
where
every $item in document("items.xml")//item_tuple satisfies
some $b in document("bids.xml")//bid_tuple satisfies
($item/itemno = $b/itemno and $u/userid = $b/userid)
return
$u/name
}
;
{
for $u in document("users.xml")//user_tuple
return
{ $u/name }
{
for $b in distinct-values(document("bids.xml")//bid_tuple
[userid = $u/userid]/itemno),
$i in document("items.xml")//item_tuple[itemno = $b]
return
{ $i/description/text() }
sortby(.)
}
sortby(name)
}
;
{
input()//report//para
}
;
{
input()//intro/para
}
;
{
for $c in input()//chapter
where empty($c/intro)
return $c/section/intro/para
}
;
{
(((input()//chapter)[2]//section)[3]//para)[2]
}
;
{
input()//para[@security = "c"]
}
;
{
for $s in input()//section/@shorttitle
return { $s }
}
;
{
for $i in input()//intro/para[1]
return
{ substring(string($i), 1, 1) }
}
;
{
input()//section[contains(string(.//title), "is SGML")]
}
;
{
input()//section[contains(.//title/text(), "is SGML")]
}
;
{
for $id in input()//xref/@xrefid
return input()//topic[@topicid = $id]
}
;
{
let $x := input()//xref[@xrefid = "top4"],
$t := input()//title[. precedes $x]
return $t[last()]
}
;
input()//news_item/title[contains(./text(), "Foobar Corporation")]
;
define function partners(string $company) returns element*
{
let $c := document("company-data.xml")//company[name = $company]
return $c//partner
}
let $foobar_partners := partners("Foobar Corporation")
for $item in input()//news_item
where
some $t in $item//title satisfies
(contains($t/text(), "Foobar Corporation")
and some $partner in $foobar_partners satisfies
contains($t/text(), $partner/text()))
or some $par in $item//par satisfies
(contains(string($par), "Foobar Corporation")
and some $partner in $foobar_partners satisfies
contains(string($par), $partner/text()))
return
{ $item/title }
{ $item/date }
;
define function partners(string $company) returns element*
{
let $c := document("company-data.xml")//company[name = $company]
return $c//partner
}
define function competitors(string $company) returns element*
{
let $c := document("company-data.xml")//company[name = $company]
return $c//competitor
}
define function sentences(string $text) returns string*
{
if (contains($text, "."))
then (substring-before($text, "."),
sentences(substring-after($text, ".")))
else $text
}
define function contains-in-same-sentence(element $e, string $s1, string $s2)
returns boolean
{
let $r :=
for $i in sentences(string($e))
return
if (contains(string($i), $s1) and contains(string($i), $s2))
then 1
else ()
return
if (empty($r))
then false()
else true()
}
let $foobar_partners := partners("Foobar Corporation"),
$foobar_competitors := competitors("Foobar Corporation")
for $item in input()//news_item
where some $partner in $foobar_partners satisfies
contains-in-same-sentence(string($item/content),
"Foobar Corporation",
$partner/text())
and not(some $competitor in $foobar_competitors satisfies
contains(string($item/content), $competitor/text()))
return
$item/title
;
define function partners(string $company) returns element*
{
let $c := document("company-data.xml")//company[name = $company]
return $c//partner
}
for $item in input()//news_item,
$c in document("company-data.xml")//company
let $partners := partners($c/name)
where contains(string($item), $c/name)
and some $p in $partners satisfies
contains(string($item), $p) and $item/news_agent != $c/name
return
$item
;
for $item in input()//news_item
where contains(string($item/content), "Gorilla Corporation")
return
{ $item/title/text() }.
{ $item/date/text() }.
{ string(($item//par)[1]) }
;
define function sentences(string $text) returns string*
{
if (contains($text, "."))
then(substring-before($text, "."),
sentences(substring-after($text, ".")))
else $text
}
define function contains-stems-in-same-sentence(element $e, string $s1, string $s2, string $s)
returns boolean
{
let $r :=
for $i in sentences(string($e))
return
if (contains(string($i), $s1)
and contains(string($i), $s2)
and contains-some-form-of(string($i), $s))
then 1
else ()
return
if (empty($r))
then false()
else true()
}
define function companies() returns string
{
let $companies := document("company-data.xml")//company
return distinct-values($companies/name/text()
union $companies//partner/text()
union $companies//competitor/text())
}
let $companies := companies()
return distinct-values (
for $item in input()//news_item,
$item_title in $item/title,
$item_para in $item//par,
$c1 in $companies,
$c2 in $companies
where $c1 != $c2
and contains-stems-in-same-sentence($item_title, $c1, $c2, "acquire")
or contains-stems-in-same-sentence($item_para, $c1, $c2, "acquire")
return $item
)
;
{
for $n in distinct-values(
for $i in (input()//* | input()//@*)
return namespace-uri($i)
)
return
{$n}
}
;
namespace music = "http://www.example.org/music/records"
{
input()//music:title
}
;
namespace dt = "http://www.w3.org/2001/XMLSchema"
{
input()//*[@dt:*]
}
;
namespace xlink = "http://www.w3.org/1999/xlink"
{
for $hr in input()//@xlink:href
return { $hr }
}
;
namespace music = "http://www.example.org/music/records"
{
input()//music:record[music:remark/@xml:lang = "de"]
}
;
namespace ma = "http://www.example.com/AuctionWatch"
namespace anyzone = "http://www.example.com/auctioneers#anyzone"
{
input()//ma:Auction[@anyzone:ID]/ma:Schedule/ma:Close
}
;
namespace ma = "http://www.example.com/AuctionWatch"
{
for $a in document("data/ns-data.xml")//ma:Auction
let $seller_id := $a/ma:Trading_Partners/ma:Seller/*:ID,
$buyer_id := $a/ma:Trading_Partners/ma:High_Bidder/*:ID
where namespace-uri($seller_id) = namespace-uri($buyer_id)
return
$a/ma:AuctionHomepage
}
;
namespace ma = "http://www.example.com/AuctionWatch"
{
for $s in input()//ma:Trading_Partners/(ma:Seller | ma:High_Bidder)
where $s/*:NegativeComments = 0
return $s
}
;
define function one_level (element $p) returns element
{
{
for $s in document("partlist.xml")//part
where $s/@partof = $p/@partid
return one_level($s)
}
}
{
for $p in document("partlist.xml")//part[empty(@partof)]
return one_level($p)
}
;
{
for $m in document("census.xml")//person[@name = "Martha"]
return shallow($m/@spouse=>person)
}
;
define function children(element $p) returns element*
{
shallow($p/person) union shallow($p/@spouse=>person/person)
}
{
for $j in document("census.xml")//person[@name = "Joe"]
return children($j)
}
;
{
for $p in document("census.xml")//person
where $p/person/@job = "Athlete"
or $p/@spouse=>person/person/@job = "Athlete"
return shallow($p)
}
;
{
for $p in document("census.xml")//person,
$c in $p/person
where $p/@job = $c/@job or $p/@spouse=>person/@job = $c/@job
return shallow($c)
}
;
{
for $p in document("census.xml")//person,
$c in ($p/person | $p/@spouse=>person/person)
where $c/@job = $p/@job
return
}
;
{
for $b in document("census.xml")//person[@name = "Bill"],
$c in $b/person | $b/@spouse=>person/person,
$g in $c/person | $c/@spouse=>person/person
return shallow($g)
}
;
{
for $b in document("census.xml")//person,
$c in $b/person | $b/@spouse=>person/person,
$g in $c/person | $c/@spouse=>person/person
return
}
;
{
for $s in document("census.xml")//person[@name = "Dave"]/@spouse=>person,
$sp in $s/.. | $s/../@spouse=>person
return
shallow($sp)
}
;
{
for $p in document("census.xml")//person
where empty(children($p))
return shallow($p)
}
;
{
for $p in document("census.xml")//person[person]
where empty($p/@spouse=>person)
return shallow($p)
}
;
define function descrip (element $e) returns element
{
let $kids := $e/* union $e/@spouse=>person/*
let $mstatus := if ($e[@spouse]) then "Yes" else "No"
return
{ $e/@name/text() }
}
define function descendants (element* $e) returns element*
{
if (empty($e/* union $e/@spouse=>person/*))
then $e
else $e union descendants($e/* union $e/@spouse=>person/*)
}
descrip(descendants(//person[@name = "Joe"])) sortby(@nkids descending, .)
;
define function code(element of type ipo:Address $a) returns string
{
typeswitch ($a)
case element of type ipo:USAddress
return (treat as element of type ipo:USAddress($a))/zip/data()
case element of type ipo:UKAddress
return (treat as element of type ipo:UKAddress($a))/postcode/data()
default return "none"
}