XML Schema
DEEPQ1-Display customer id of order id = 1 DEEP,AF For $a in //customer[//order/@id=”1”] Return $a/@id SHALLOW For $a in //customer For $b in //order[@id=”1”] Where $a/@id = $b/make/@customer_idref Return $a/@id EN,MCMR,DR,UNDR For $a in //{c1}customer[//{c1}order/@id=”1”] Return $a/@id Q2- Group orders with total amount bigger than a certain number (11000.0), by customer id, display user_name and calculate the total number of each group. DEEP,AF For $a in //customer Let $b := $a//order[total > 11000.00] Where count($b) > 0 Return $a/user_name/text(), count($b) SHALLOW For $a in //customer Let $b := //order[total>11000.00] Where $a/@id = $b/make/@customer_idref And count($b) > 0 Return $a/user_name/text(), count($b) EN,MCMR,DR,UNDR For $a in //{c1}customer Let $b := $a//{c1}order[{c1}total > 11000.00] Where count($b) > 0 Return $a/{c1}user_name/text(), count($b) Q6- Return the ids of authors whose biographies contain a certain word (``hockey"). DEEP For $a in distinct-values(//author) Where contains ($a/biography,”hockey”) Return $a/@id AF, SHALLOW For $a in //author Where contains ($a/biography,”hockey”) Return $a/@id EN, MCMR For $a in //{c1}author Where contains ($a/{c1}biography,”hockey”) Return $a/@id DR, UNDR For $a in //{c2}author Where contains ($a/{c2}biography,”hockey”) Return $a/@id Q7- Return All items (display id) that has at least once, quantity ordered each time less than 20 DEEP For $a in distinct-values(//item) Let $b:= //order_line[quantity_of_item < 20] Where $b/item/@id = $a/@id And count($b) > 0 Return $a/@id AF,SHALLOW For $a in //item Let $b := //order_line[quantity_of_item < 20] Where $a/@id = $b/@item_idref and count($b) > 0 Return $a/@id EN,MCMR For $a in //{c2} item Let $b := $a/{c2} order_line[{c2} quantity_of_item < 20] Where count($b) > 0 Return $a/@id DR,UNDR For $a in //{c5} item Let $b := $a/{c5} order_line[{c5} quantity_of_item < 20] Where count($b) > 0 Return $a/@id Q8-return customer where shipping address is in Canada that the order_status is in PENDING DEEP For $a in //customer Let $b:= $a//order Where $b/order_status = “PENDING” and $b/shipping//country/name = “Canada” and count($b) > 0 Return $a AF For $a in //customer Let $b := For $c in $a//order For $d in //country[name=”Canada”]//address Where $c/shipping/@ship_address_idref = $d/@id and $c/order_status = “PENDING” Return $c Where count($b) > 0 Return $a SHALLOW For $a in //customer Let $b := For $c in //order[order_status=”PENDING”] For $d in //country[name=”Canada”] For $e in //address Where $a/@id = $c/make/@customer_idref And $d/@id = $e/in/@country_idref And $c/shipping/@ship_address_idref = $e/@id Return $c Where count($b) > 0 Return $a MCMR, DR,UNDR For $a in //{c1}customer Let $b: = $a//{c1}order[{c1}order_status = “PENDING”]/ {c1}shipping Let $b:= //{c3}country[{c3}name=”Canada”]// {c3}shipping Where count($b) > 0 Return $a EN For $a in //{c1}customer Let $b := For $c in $a//{c1}order[{c1}order_status=”PENDING”] /{c1}shipping For $d in //{c2}address For $d in //{c1}country[{c1}name=”Canada”]//{c1}address Where $c = $d/{c2}shipping Return $c Where count($b) > 0 Return $a Q9- Return order id that has shipping address in the city "Honolulu" DEEP For $a in //order[shipping//name_of_city = “Honolulu”] Return $a/@id AF,SHALLOW For $a in //order $b in //address[name_of_city = “Honolulu”] Where $a/shipping/@ship_address_idref = $b/@id Return $a/@id DR,UNDR For $a in //{c3}address[{c3}name_of_city = “Honolulu]//{c3}order Return $a/@id EN,MCMR For $a in //{c1}order For $b //{c2}address[{c2}name_of_city = “Honolulu”] Where $a/{c1}shipping = $b/{c2}shipping Return $a/@id Q10- Return cost of item that has ISBN = 6AOIESSCVMHXRZ (item1) DEEP For $c in distinct-values(//item[ISBN =”6AOIESSCVMHXRZ”]) Return $c/cost AF,SHALLOW,EN,DR,MCMR,UNDR For $c in //item[ISBN=”6AOIESSCVMHXRZ”] Return $c/cost EN,MCMR For $c in //{c1}item[ISBN=”6AOIESSCVMHXRZ”] Return $c/{c1}cost DR, UNDR For $c in //{c5}item[ISBN=”6AOIESSCVMHXRZ”] Return $c/{c5}cost Q11- Return shipping and billing address of an order (id 1) DEEP For $a in //order[@id=“1”] Return $a/shipping/address, $a/billing/address UNDR For $a in //{c1}order[@id=“1”] Return $a/{c1}shipping/{c1}address, $a/{c1}billing/{c1}address AF,SHALLOW For $a in //order[@id=”1] For $b in //address For $c in //address Where $a/shipping/@ship_address_idref = $b/@id And $a/billing/@bill_address_idref = $c/@id Return $b, $c DR For $a in //{c2}address[//order/@id=”1”] For $b in //{c3}address[//order/@id=”1”] Return $a, $b EN For $a in //{c1}order[@id=”1”] For $b in //{c2}address For $c in //{c2}address Where $a/{c1}shipping = $b/{c2}shipping And $a/{c1}billing = $c/{c2}billing Return $b, $c MCMR For $a in //{c1}order[@id=”1”] For $b in //{c2}address[//order/@id=”1”] For $c in //{c2}address Where $a/{c1}shipping = $c/{c2}shipping Return $b, $c Q12- Return shipping, billing address , and customer info of all the orders of customer customer775 DEEP For $a in //customer[@id=”775”] For $b in $a//order Return $a, $b/billing/address, $b/shipping/address AF For $a in //customer[@id = “775”] For $b in $a//order For $c in //address For $d in //address Where $c/@id = $b/ billing/@bill_address_idref And $d/@id = $b/shipping/@ship_address_idref Return $a, $c, $d SHALLOW For $a in //order For $b in //customer[@id=”775”] For $c in //address For $d in //address Where $b/@id = $a/make/@customer_idref And $c/@id = $a/billing/@bill_address_idref And $d/@id = $a/shipping/@ship_address_idref Return $b, $c, $d DR For $a in //{c1}customer[@id=”775”] For $b in $a//{c1}order For $c in //{c2}address[{c2}billing = $b/{c1}billing] For $d in //{c3}address[{c3}shipping = $b/{c1}shipping] Return $a, $c, $d UNDR For $a in //{c1}customer[@id=”775”] For $b in $a//{c1}order Return $a, $b/{c1}billing/{c1}address, $b/{c1}shipping/{c1}address EN For $a in //{c1}customer[@id=”775”] For $b in $a//{c1}order For $c in //{c2}address For $d in //{c2}address Where $b/{c1}billing = $c/{c2}billing And $b/{c1}shipping = $d/{c2}shipping Return $a, $c, $d MCMR For $a in //{c1}customer[@id=”775”] For $b in $a//{c1}order For $c in //{c2}address For $d in //{c2}address Where $d/{c2}shipping = $b/{c1}shipping And $b = $c/{c2}billing Return $a, $c, $d U1-Modify the description of id1 to id10 DEEP, AF, SHALLOW For $a in //item[@id in range {1-10}]/description Modify $a/text() to “N/A” EN, MCMR For $a in //{c1}item[@id in range {1-10}]/{c1}description Modify $a/text() to “N/A” DR, UNDR For $a in //{c5}item[@id in range {1-10}]/{c5}description Modify $a/text() to “N/A” U2-Modify zip code of address (id = 5004) 01111 DEEP, AF, SHALLOW For $a in //address[@id=”5004”] Modify $a/zipcode/text() to “01111” EN, MCMR, DR, UNDR For $a in //{c1}address[@id=”5004”] Modify $a/{c1}zipcode/text() to “01111” U3-Insert district of billing address of order id = 1 DEEP For $a in //order[@id=”1”]/billing/address For $b in //address Where $b/@id = $a/@id Insert $b withMakkasan AF, SHALLOW For $a in //order[@id=”1”]/billing For $b in //address Where $a/@bill_address_idref = $b/@id Insert $b withMakkasan DR, MCMR For $a in //{c2}address[{c2}order/@id=”1”] Insert $a withMakkasan UNDR For $a in //{c1}order[@id=”1”]/{c1}billing/{c1}address For $b in //{c1}address Where $b/@id = $a/@id Insert $b withMakkasan EN For $a in //{c1}order[@id=”1”]/{c1}billing For $b in //{c2}address Where $a = $b/{c2}billing Insert $b withMakkasan