Connected to OpenLink Virtuoso Driver: 07.00.3202 OpenLink Virtuoso ODBC Driver OpenLink Interactive SQL (Virtuoso), version 0.9849b. Type HELP; for help and EXIT; to exit. SQL> SQL> x LONG VARCHAR _______________________________________________________________________________ sparql {define input:default-graph-uri prefix bsbm: prefix rev: Select ?productType ?reviewCount { { Select ?productType (count(?review) As ?reviewCount) { ?productType a bsbm:ProductType . ?product a ?productType . ?product bsbm:producer ?producer . ?producer bsbm:country . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . ?reviewer bsbm:country . } Group By ?productType } } Order By desc(?reviewCount) ?productType Limit 10 } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 2.3e+04 rows(s_18_7_t0.S) P = ##type , O = #/ProductType G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_18_7_t0.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 6.1e+06 rows(s_18_7_t6.S) P = #/country , O = ##US G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_18_7_t6.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 7.7e+05 rows(s_18_7_t3.S) P = #/country , O = ##AT G = #/bsbm.org Stage 2 Sort hf 72 replicated(s_18_7_t3.S) } } Subquery 78 { { fork Subquery 82 { { fork QF { Stage 1 RDF_QUAD 3.1e+07 rows(s_18_7_t2.O, s_18_7_t2.S) inlined P = #/producer G = #/bsbm.org hash partition+bloom by 76 (tmp)hash join merged always card 0.05 -> () Hash source 72 merged into ts 0.05 rows(cast) -> () RDF_QUAD 2.2 rows(s_18_7_t1.S, s_18_7_t1.O) inlined P = ##type , S = s_18_7_t2.S G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () RDF_QUAD_POGS 10 rows(s_18_7_t4.S) P = #/reviewFor , O = cast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_18_7_t5.O) inlined P = ##reviewer , S = q_s_18_7_t4.S G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.4 -> () Hash source 55 merged into ts 0.4 rows(cast) -> () Precode: 0: s_18_7_t0.S := := artm s_18_7_t1.O 4: BReturn 0 Hash source 38 merged into ts 0.8 rows(k_s_18_7_t1.O) -> () Precode: 0: isnotnull := Call isnotnull (s_18_7_t4.S) 5: BReturn 0 Stage 3 Sort (set_no, q_s_18_7_t0.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_18_7_t0.S, aggregate) qf select node output: (gb_set_no, aggregate, gb_set_no, q_s_18_7_t0.S) } } cl fref read output: (gb_set_no, aggregate, set_no, s_18_7_t0.S) order: 2 2 3 After code: 0: productType := := artm s_18_7_t0.S 4: reviewCount := := artm aggregate 8: BReturn 0 Subquery Select(productType, reviewCount) } Precode: 0: QNode { dpipe productType -> __ID2In -> __id2in } 2: BReturn 0 Sort (reviewCount, __id2in) } top order by read (__id2in, reviewCount) After code: 0: productType := := artm __id2in 4: reviewCount := := artm reviewCount 8: BReturn 0 Subquery Select(productType, reviewCount) } After code: 0: QNode { dpipe reviewCount -> __RO2SQ -> reviewCount productType -> __RO2SQ -> productType } 2: BReturn 0 Select (productType, reviewCount) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?product { { Select ?product { { Select ?product (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . } Group By ?product } } Order By desc(?offerCount) Limit 1000 } FILTER NOT EXISTS { ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?vendor bsbm:country ?country . FILTER(?country=) } } } ; { Subquery 27 { { fork Subquery 30 { { fork QF { Stage 1 RDF_QUAD_POGS 3.9e+07 rows(s_16_2_t0.S) P = ##type , O = #/ProductType1 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_16_2_t1.S) P = #/product , O = lcast G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t1.S) 5: BReturn 0 Sort (s_16_2_t0.S) -> (isnotnull) ssa iterator group by read node (q_s_16_2_t0.S, aggregate) qf select node output: (aggregate, q_s_16_2_t0.S, set_no) } } cl fref read output: (aggregate, s_16_2_t0.S, set_no) order: 2 1 After code: 0: product := := artm s_16_2_t0.S 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(product, offerCount) } Sort (offerCount) -> (product) } top order by read (product) After code: 0: product := := artm product 4: BReturn 0 Subquery Select(product) } END Node After test: 0: if ({ QF { Stage 1 RDF_QUAD_POGS 21 rows(s_27_9_t2.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_27_9_t3.O) inlined P = #/vendor , S = q_s_27_9_t2.S G = #/bsbm.org Stage 3 RDF_QUAD unq 0.4 rows () inlined P = #/country , S = q_s_27_9_t3.O , O = ##US , G = #/bsbm.org qf select node output: (qf_set_no) qf select node output: (qf_set_no) } Subquery Select( ) } ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: QNode { dpipe product -> __ID2In -> product } 2: BReturn 0 Select (product) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?product { { Select ?product { { Select ?product (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . } Group By ?product } } Order By desc(?offerCount) Limit 1000 } FILTER NOT EXISTS { ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?vendor bsbm:country ?country . FILTER(?country=) } } } ; { Subquery 27 { { fork Subquery 30 { { fork QF { Stage 1 RDF_QUAD_POGS 5.3e+05 rows(s_16_2_t0.S) P = ##type , O = #/ProductType15 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_16_2_t1.S) P = #/product , O = lcast G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t1.S) 5: BReturn 0 Sort (s_16_2_t0.S) -> (isnotnull) ssa iterator group by read node (q_s_16_2_t0.S, aggregate) qf select node output: (aggregate, q_s_16_2_t0.S, set_no) } } cl fref read output: (aggregate, s_16_2_t0.S, set_no) order: 2 1 After code: 0: product := := artm s_16_2_t0.S 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(product, offerCount) } Sort (offerCount) -> (product) } top order by read (product) After code: 0: product := := artm product 4: BReturn 0 Subquery Select(product) } END Node After test: 0: if ({ QF { Stage 1 RDF_QUAD_POGS 21 rows(s_27_9_t2.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_27_9_t3.O) inlined P = #/vendor , S = q_s_27_9_t2.S G = #/bsbm.org Stage 3 RDF_QUAD unq 0.4 rows () inlined P = #/country , S = q_s_27_9_t3.O , O = ##US , G = #/bsbm.org qf select node output: (qf_set_no) qf select node output: (qf_set_no) } Subquery Select( ) } ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: QNode { dpipe product -> __ID2In -> product } 2: BReturn 0 Select (product) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?product { { Select ?product { { Select ?product (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . } Group By ?product } } Order By desc(?offerCount) Limit 1000 } FILTER NOT EXISTS { ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?vendor bsbm:country ?country . FILTER(?country=) } } } ; { time 6.4e-05% fanout 1 input 1 rows Subquery 27 { time 9.5e-05% fanout 1 input 1 rows { fork Subquery 30 { time 0.0042% fanout 1 input 1 rows { fork wait time 0.68% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.2% fanout 201209 input 1 rows RDF_QUAD_POGS 2e+05 rows(s_16_2_t0.S) P = ##type , O = #/ProductType84 G = #/bsbm.org time 0.78% fanout 0.496762 input 201209 rows Stage 2 time 47% fanout 19.9521 input 201209 rows RDF_QUAD_POGS 21 rows(s_16_2_t1.S) P = #/product , O = lcast G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t1.S) 5: BReturn 0 time 15% fanout 0 input 4.01454e+06 rows Sort (s_16_2_t0.S) -> (isnotnull) time 6.1e-05% fanout 0 input 0 rows ssa iterator time 0.41% fanout 50279 input 4 rows group by read node (q_s_16_2_t0.S, aggregate) time 0% fanout 0 input 201116 rows qf select node output: (aggregate, q_s_16_2_t0.S, set_no) } } time 0.27% fanout 201116 input 1 rows cl fref read output: (aggregate, s_16_2_t0.S, set_no) order: 2 1 After code: 0: product := := artm s_16_2_t0.S 4: offerCount := := artm aggregate 8: BReturn 0 time 0.00037% fanout 0 input 201116 rows Subquery Select(product, offerCount) } time 1% fanout 0 input 201116 rows Sort (offerCount) -> (product) } time 0.0049% fanout 1000 input 1 rows top order by read (product) After code: 0: product := := artm product 4: BReturn 0 time 2.1e-05% fanout 0 input 1000 rows Subquery Select(product) } time 1.7% fanout 0.008 input 1000 rows END Node After test: 0: if ({ time 0.0007% fanout 1 input 1000 rows wait time 0% of exec real time, fanout 4.615 QF { time 0.061% fanout 0 input 0 rows Stage 1 time 1.1% fanout 47.042 input 1000 rows RDF_QUAD_POGS 21 rows(s_27_9_t2.S) P = #/product , O = lcast G = #/bsbm.org time 1.5% fanout 1 input 47042 rows Stage 2 time 21% fanout 1 input 47042 rows RDF_QUAD 1 rows(s_27_9_t3.O) inlined P = #/vendor , S = q_s_27_9_t2.S G = #/bsbm.org time 6.9% fanout 0.954913 input 47042 rows Stage 3 time 3.1% fanout 0.0981038 input 47042 rows RDF_QUAD unq 0.1 rows () inlined P = #/country , S = q_s_27_9_t3.O , O = ##JP , G = #/bsbm.org time 0.086% fanout 0 input 4615 rows qf select node output: (qf_set_no) time 0% fanout 0 input 0 rows qf select node output: (qf_set_no) } time 0.0016% fanout 0 input 4615 rows Subquery Select( ) } ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe product -> __ID2In -> product } 2: BReturn 0 time 7.7e-05% fanout 0 input 8 rows Select (product) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?product { { Select ?product { { Select ?product (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . } Group By ?product } } Order By desc(?offerCount) Limit 1000 } FILTER NOT EXISTS { ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?vendor bsbm:country ?country . FILTER(?country=) } } } ; { Subquery 27 { { fork Subquery 30 { { fork QF { Stage 1 RDF_QUAD_POGS 2.4e+04 rows(s_16_2_t0.S) P = ##type , O = #/ProductType696 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_16_2_t1.S) P = #/product , O = lcast G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t1.S) 5: BReturn 0 Sort (s_16_2_t0.S) -> (isnotnull) ssa iterator group by read node (q_s_16_2_t0.S, aggregate) qf select node output: (aggregate, q_s_16_2_t0.S, set_no) } } cl fref read output: (aggregate, s_16_2_t0.S, set_no) order: 2 1 After code: 0: product := := artm s_16_2_t0.S 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(product, offerCount) } Sort (offerCount) -> (product) } top order by read (product) After code: 0: product := := artm product 4: BReturn 0 Subquery Select(product) } END Node After test: 0: if ({ QF { Stage 1 RDF_QUAD_POGS 21 rows(s_27_9_t2.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_27_9_t3.O) inlined P = #/vendor , S = q_s_27_9_t2.S G = #/bsbm.org Stage 3 RDF_QUAD unq 0.1 rows () inlined P = #/country , S = q_s_27_9_t3.O , O = ##JP , G = #/bsbm.org qf select node output: (qf_set_no) qf select node output: (qf_set_no) } Subquery Select( ) } ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: QNode { dpipe product -> __ID2In -> product } 2: BReturn 0 Select (product) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?product { { Select ?product { { Select ?product (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . } Group By ?product } } Order By desc(?offerCount) Limit 1000 } FILTER NOT EXISTS { ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?vendor bsbm:country ?country . FILTER(?country=) } } } ; { time 0.00016% fanout 1 input 1 rows Subquery 27 { time 0.0002% fanout 1 input 1 rows { fork Subquery 30 { time 0.0067% fanout 1 input 1 rows { fork wait time 0.88% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.013% fanout 2954 input 1 rows RDF_QUAD_POGS 3e+03 rows(s_16_2_t0.S) P = ##type , O = #/ProductType5591 G = #/bsbm.org time 0.077% fanout 0.501354 input 2954 rows Stage 2 time 6.7% fanout 19.8389 input 2954 rows RDF_QUAD_POGS 21 rows(s_16_2_t1.S) P = #/product , O = lcast G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t1.S) 5: BReturn 0 time 0.61% fanout 0 input 58604 rows Sort (s_16_2_t0.S) -> (isnotnull) time 0.00013% fanout 0 input 0 rows ssa iterator time 0.11% fanout 738 input 4 rows group by read node (q_s_16_2_t0.S, aggregate) time 0.011% fanout 0 input 2952 rows qf select node output: (aggregate, q_s_16_2_t0.S, set_no) } } time 0.1% fanout 2952 input 1 rows cl fref read output: (aggregate, s_16_2_t0.S, set_no) order: 2 1 After code: 0: product := := artm s_16_2_t0.S 4: offerCount := := artm aggregate 8: BReturn 0 time 0.00012% fanout 0 input 2952 rows Subquery Select(product, offerCount) } time 0.33% fanout 0 input 2952 rows Sort (offerCount) -> (product) } time 0.011% fanout 1000 input 1 rows top order by read (product) After code: 0: product := := artm product 4: BReturn 0 time 4.1e-05% fanout 0 input 1000 rows Subquery Select(product) } time 6.9% fanout 0.034 input 1000 rows END Node After test: 0: if ({ time 0.0016% fanout 1 input 1000 rows wait time 0% of exec real time, fanout 3.196 QF { time 0.14% fanout 0 input 0 rows Stage 1 time 2.4% fanout 32.044 input 1000 rows RDF_QUAD_POGS 21 rows(s_27_9_t2.S) P = #/product , O = lcast G = #/bsbm.org time 4.5% fanout 1 input 32044 rows Stage 2 time 38% fanout 1 input 32044 rows RDF_QUAD 1 rows(s_27_9_t3.O) inlined P = #/vendor , S = q_s_27_9_t2.S G = #/bsbm.org time 32% fanout 0.911778 input 32044 rows Stage 3 time 8.2% fanout 0.0997379 input 32044 rows RDF_QUAD unq 0.1 rows () inlined P = #/country , S = q_s_27_9_t3.O , O = ##JP , G = #/bsbm.org time 0.21% fanout 0 input 3196 rows qf select node output: (qf_set_no) time 0% fanout 0 input 0 rows qf select node output: (qf_set_no) } time 0.0029% fanout 0 input 3196 rows Subquery Select( ) } ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe product -> __ID2In -> product } 2: BReturn 0 time 0.00022% fanout 0 input 34 rows Select (product) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?product { { Select ?product { { Select ?product (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . } Group By ?product } } Order By desc(?offerCount) Limit 1000 } FILTER NOT EXISTS { ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?vendor bsbm:country ?country . FILTER(?country=) } } } ; { Subquery 27 { { fork Subquery 30 { { fork QF { Stage 1 RDF_QUAD_POGS 3.1e+03 rows(s_16_2_t0.S) P = ##type , O = #/ProductType11287 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_16_2_t1.S) P = #/product , O = lcast G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t1.S) 5: BReturn 0 Sort (s_16_2_t0.S) -> (isnotnull) ssa iterator group by read node (q_s_16_2_t0.S, aggregate) qf select node output: (aggregate, q_s_16_2_t0.S, set_no) } } cl fref read output: (aggregate, s_16_2_t0.S, set_no) order: 2 1 After code: 0: product := := artm s_16_2_t0.S 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(product, offerCount) } Sort (offerCount) -> (product) } top order by read (product) After code: 0: product := := artm product 4: BReturn 0 Subquery Select(product) } END Node After test: 0: if ({ QF { Stage 1 RDF_QUAD_POGS 21 rows(s_27_9_t2.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_27_9_t3.O) inlined P = #/vendor , S = q_s_27_9_t2.S G = #/bsbm.org Stage 3 RDF_QUAD unq 0.4 rows () inlined P = #/country , S = q_s_27_9_t3.O , O = ##US , G = #/bsbm.org qf select node output: (qf_set_no) qf select node output: (qf_set_no) } Subquery Select( ) } ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: QNode { dpipe product -> __ID2In -> product } 2: BReturn 0 Select (product) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix xsd: Select ?reviewer (avg(xsd:float(?score)) As ?reviewerAvgScore) { { Select (avg(xsd:float(?score)) As ?avgScore) { ?product bsbm:producer . ?review bsbm:reviewFor ?product . { ?review bsbm:rating1 ?score . } UNION { ?review bsbm:rating2 ?score . } UNION { ?review bsbm:rating3 ?score . } UNION { ?review bsbm:rating4 ?score . } } } ?product bsbm:producer . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . { ?review bsbm:rating1 ?score . } UNION { ?review bsbm:rating2 ?score . } UNION { ?review bsbm:rating3 ?score . } UNION { ?review bsbm:rating4 ?score . } } Group By ?reviewer Having (avg(xsd:float(?score)) > min(?avgScore) * 1.5) } ; { Subquery 27 { { fork Subquery 31 { Union { Subquery 37 { { fork Subquery 40 { Union { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u31-c29-u39.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u31-c29-u39.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_12_3_t0-c5-u31-c29-u39.O) inlined P = #/rating1 , S = q_s_18_11_t5-u31-c29-u39.S G = #/bsbm.org After code: 0: score := := artm s_12_3_t0-c5-u31-c29-u39.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u32-c29-u40.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u32-c29-u40.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_13_5_t1-c11-u32-c29-u40.O) inlined P = #/rating2 , S = q_s_18_11_t5-u32-c29-u40.S G = #/bsbm.org After code: 0: score := := artm s_13_5_t1-c11-u32-c29-u40.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u33-c29-u41.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u33-c29-u41.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_14_8_t2-c17-u33-c29-u41.O) inlined P = #/rating3 , S = q_s_18_11_t5-u33-c29-u41.S G = #/bsbm.org After code: 0: score := := artm s_14_8_t2-c17-u33-c29-u41.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-c29.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-c29.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_16_10_t3-c23-c29.O) inlined P = #/rating4 , S = q_s_18_11_t5-c29.S G = #/bsbm.org After code: 0: score := := artm s_16_10_t3-c23-c29.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } } Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } After code: 0: temp := artm sum / count 4: avgScore := := artm temp 8: BReturn 0 Subquery Select(avgScore) } QF { Stage 1 RDF_QUAD_POGS 78 rows(s_29_25_t10.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 19 rows(s_29_25_t11.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_29_25_t12.S, s_29_25_t12.O) inlined P = ##reviewer , S = q_s_29_25_t11.S G = #/bsbm.org RDF_QUAD 1.1 rows(s_21_17_t6-c31.O) inlined P = #/rating1 , S = s_29_25_t12.S G = #/bsbm.org After code: 0: score := := artm s_21_17_t6-c31.O 4: avgScore := := artm avgScore 8: reviewer := := artm s_29_25_t12.O 12: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: BReturn 0 Sort (reviewer) -> (isnotnull, temp, avgScore) } } { Subquery 476 { { fork Subquery 479 { Union { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u31-c37-u42.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u31-c37-u42.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_12_3_t0-c5-u31-c37-u42.O) inlined P = #/rating1 , S = q_s_18_11_t5-u31-c37-u42.S G = #/bsbm.org After code: 0: score := := artm s_12_3_t0-c5-u31-c37-u42.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u32-c37-u43.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u32-c37-u43.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_13_5_t1-c11-u32-c37-u43.O) inlined P = #/rating2 , S = q_s_18_11_t5-u32-c37-u43.S G = #/bsbm.org After code: 0: score := := artm s_13_5_t1-c11-u32-c37-u43.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u33-c37-u44.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u33-c37-u44.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_14_8_t2-c17-u33-c37-u44.O) inlined P = #/rating3 , S = q_s_18_11_t5-u33-c37-u44.S G = #/bsbm.org After code: 0: score := := artm s_14_8_t2-c17-u33-c37-u44.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-c37.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-c37.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_16_10_t3-c23-c37.O) inlined P = #/rating4 , S = q_s_18_11_t5-c37.S G = #/bsbm.org After code: 0: score := := artm s_16_10_t3-c23-c37.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } } Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } After code: 0: temp := artm sum / count 4: avgScore := := artm temp 8: BReturn 0 Subquery Select(avgScore) } QF { Stage 1 RDF_QUAD_POGS 78 rows(s_29_25_t10.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 19 rows(s_29_25_t11.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_29_25_t12.S, s_29_25_t12.O) inlined P = ##reviewer , S = q_s_29_25_t11.S G = #/bsbm.org RDF_QUAD 1.1 rows(s_22_19_t7-c39.O) inlined P = #/rating2 , S = s_29_25_t12.S G = #/bsbm.org After code: 0: score := := artm s_22_19_t7-c39.O 4: avgScore := := artm avgScore 8: reviewer := := artm s_29_25_t12.O 12: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: BReturn 0 Sort (reviewer) -> (isnotnull, temp, avgScore) } } { Subquery 915 { { fork Subquery 918 { Union { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u31-c45-u45.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u31-c45-u45.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_12_3_t0-c5-u31-c45-u45.O) inlined P = #/rating1 , S = q_s_18_11_t5-u31-c45-u45.S G = #/bsbm.org After code: 0: score := := artm s_12_3_t0-c5-u31-c45-u45.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u32-c45-u46.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u32-c45-u46.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_13_5_t1-c11-u32-c45-u46.O) inlined P = #/rating2 , S = q_s_18_11_t5-u32-c45-u46.S G = #/bsbm.org After code: 0: score := := artm s_13_5_t1-c11-u32-c45-u46.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u33-c45-u47.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u33-c45-u47.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_14_8_t2-c17-u33-c45-u47.O) inlined P = #/rating3 , S = q_s_18_11_t5-u33-c45-u47.S G = #/bsbm.org After code: 0: score := := artm s_14_8_t2-c17-u33-c45-u47.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-c45.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-c45.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_16_10_t3-c23-c45.O) inlined P = #/rating4 , S = q_s_18_11_t5-c45.S G = #/bsbm.org After code: 0: score := := artm s_16_10_t3-c23-c45.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } } Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } After code: 0: temp := artm sum / count 4: avgScore := := artm temp 8: BReturn 0 Subquery Select(avgScore) } QF { Stage 1 RDF_QUAD_POGS 78 rows(s_29_25_t10.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 19 rows(s_29_25_t11.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_29_25_t12.S, s_29_25_t12.O) inlined P = ##reviewer , S = q_s_29_25_t11.S G = #/bsbm.org RDF_QUAD 1.2 rows(s_23_22_t8-c47.O) inlined P = #/rating3 , S = s_29_25_t12.S G = #/bsbm.org After code: 0: score := := artm s_23_22_t8-c47.O 4: avgScore := := artm avgScore 8: reviewer := := artm s_29_25_t12.O 12: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: BReturn 0 Sort (reviewer) -> (isnotnull, temp, avgScore) } } { Subquery 1354 { { fork Subquery 1357 { Union { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u31-c53-u48.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u31-c53-u48.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_12_3_t0-c5-u31-c53-u48.O) inlined P = #/rating1 , S = q_s_18_11_t5-u31-c53-u48.S G = #/bsbm.org After code: 0: score := := artm s_12_3_t0-c5-u31-c53-u48.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u32-c53-u49.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u32-c53-u49.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.1 rows(s_13_5_t1-c11-u32-c53-u49.O) inlined P = #/rating2 , S = q_s_18_11_t5-u32-c53-u49.S G = #/bsbm.org After code: 0: score := := artm s_13_5_t1-c11-u32-c53-u49.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-u33-c53-u50.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-u33-c53-u50.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_14_8_t2-c17-u33-c53-u50.O) inlined P = #/rating3 , S = q_s_18_11_t5-u33-c53-u50.S G = #/bsbm.org After code: 0: score := := artm s_14_8_t2-c17-u33-c53-u50.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } { QF { Stage 1 RDF_QUAD_POGS 77 rows(s_18_11_t4-c53.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 19 rows(s_18_11_t5-c53.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1.2 rows(s_16_10_t3-c23-c53.O) inlined P = #/rating4 , S = q_s_18_11_t5-c53.S G = #/bsbm.org After code: 0: score := := artm s_16_10_t3-c23-c53.O 4: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } } } Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: sum countisnotnullset no set_no 21: sum sumtempset no set_no 26: BReturn 0 END Node } After code: 0: temp := artm sum / count 4: avgScore := := artm temp 8: BReturn 0 Subquery Select(avgScore) } QF { Stage 1 RDF_QUAD_POGS 78 rows(s_29_25_t10.S) P = #/producer , O = #/Producer218368 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 19 rows(s_29_25_t11.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_29_25_t12.S, s_29_25_t12.O) inlined P = ##reviewer , S = q_s_29_25_t11.S G = #/bsbm.org RDF_QUAD 1.2 rows(s_25_24_t9-c55.O) inlined P = #/rating4 , S = s_29_25_t12.S G = #/bsbm.org After code: 0: score := := artm s_25_24_t9-c55.O 4: avgScore := := artm avgScore 8: reviewer := := artm s_29_25_t12.O 12: BReturn 0 Precode: 0: QNode { dpipe score -> __RO2SQ -> __ro2sq } 2: _cvt := Call _cvt (, __ro2sq) 7: temp := artm _cvt + 0 11: isnotnull := Call isnotnull (temp) 16: BReturn 0 Sort (reviewer) -> (isnotnull, temp, avgScore) } } } } group by read node (reviewer, aggregate, aggregate, aggregate) Precode: 0: temp := artm aggregate / aggregate 4: BReturn 0 END Node After test: 0: temp := artm aggregate * 1.5 4: if (temp < temp) then 8 else 9 unkn 9 8: BReturn 1 9: BReturn 0 After code: 0: QNode { dpipe reviewer -> __RO2SQ -> __ro2sq } 2: reviewerAvgScore := := artm temp 6: reviewer := := artm __ro2sq 10: BReturn 0 Subquery Select(reviewer, reviewerAvgScore) } After code: 0: QNode { dpipe reviewerAvgScore -> __RO2SQ -> reviewerAvgScore reviewer -> __RO2SQ -> reviewer } 2: BReturn 0 Select (reviewer, reviewerAvgScore) } sparql {define input:default-graph-uri prefix bsbm: SELECT ?otherProduct ?sameFeatures { ?otherProduct a bsbm:Product . FILTER(?otherProduct != ) { SELECT ?otherProduct (count(?otherFeature) As ?sameFeatures) { bsbm:productFeature ?feature . ?otherProduct bsbm:productFeature ?otherFeature . FILTER(?feature=?otherFeature) } Group By ?otherProduct } } Order By desc(?sameFeatures) ?otherProduct Limit 10 } ; { Subquery 27 { { fork Subquery 31 { { fork QF { Stage 1 RDF_QUAD 15 rows(s_16_3_t0.O) inlined P = #/productFeature , S = #/Product18407556 G = #/bsbm.org Precode: 0: isnotnull := Call isnotnull (s_16_3_t0.O) 5: BReturn 0 Stage 2 RDF_QUAD_POGS 8.2e+02 rows(s_16_3_t1.S) P = #/productFeature , O = q_s_16_3_t0.O G = #/bsbm.org Stage 3 Sort (q_s_16_3_t1.S) -> (isnotnull) ssa iterator group by read node (q_s_16_3_t1.S, aggregate) qf select node output: (aggregate, q_s_16_3_t1.S, set_no) } } cl fref read output: (aggregate, s_16_3_t1.S, set_no) order: 2 1 After code: 0: otherProduct := := artm s_16_3_t1.S 4: sameFeatures := := artm aggregate 8: BReturn 0 Subquery Select(otherProduct, sameFeatures) } QF { RDF_QUAD_POGS unq 0.8 rows (s_20_5_t2.S) P = ##type , O = #/Product , S = q_otherProduct , G = #/bsbm.org END Node After test: 0: if (s_20_5_t2.S = #/Product18407556 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Precode: 0: QNode { dpipe s_20_5_t2.S -> __ID2In -> __id2in } 2: BReturn 0 Sort (sameFeatures, __id2in) ssa iterator top order by read (__id2in, sameFeatures) qf select node output: (__id2in, sameFeatures, set_no) } } cl fref read output: (__id2in, sameFeatures, set_no) order: 2 1 desc 0 After code: 0: otherProduct := := artm __id2in 4: sameFeatures := := artm sameFeatures 8: BReturn 0 Subquery Select(otherProduct, sameFeatures) } After code: 0: QNode { dpipe sameFeatures -> __RO2SQ -> sameFeatures otherProduct -> __RO2SQ -> otherProduct } 2: BReturn 0 Select (otherProduct, sameFeatures) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?feature (?sumF*(?countTotal-?countF))/(?countF*(?sumTotal-?sumF)) As ?priceRatio { { Select count(?price) As ?countTotal sum(xsd:float(xsd:string(?price))) As ?sumTotal { ?product a . ?offer bsbm:product ?product ; bsbm:price ?price . } } { Select ?feature count(?price2) As ?countF sum(xsd:float(xsd:string(?price2))) As ?sumF { ?product2 a ; bsbm:productFeature ?feature . ?offer2 bsbm:product ?product2 ; bsbm:price ?price2 . } Group By ?feature } } Order By desc(?priceRatio) ?feature Limit 100 } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 2.5e+06 rows(s_15_3_t0.S) P = ##type , O = #/ProductType7 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_15_3_t0.S) } } Subquery 44 { { fork Subquery 48 { { fork QF { RDF_QUAD 4.8e+08 rows(s_15_3_t1.O, s_15_3_t1.S) inlined P = #/product G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Hash source 38 merged into ts 0.8 rows(k_s_15_3_t1.O) -> () RDF_QUAD 1 rows(s_15_3_t2.O) inlined P = #/price , S = k_s_15_3_t1.S G = #/bsbm.org After code: 0: QNode { dpipe s_15_3_t2.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_15_3_t2.O) 7: sum countisnotnullset no set_no 12: _cvt := Call _cvt (, __ro2sq) 17: __ro2sq := Call __ro2sq (_cvt) 22: _cvt := Call _cvt (, __ro2sq) 27: sum sum_cvtset no set_no 32: BReturn 0 } } After code: 0: countTotal := := artm count 4: sumTotal := := artm sum 8: BReturn 0 Subquery Select(countTotal, sumTotal) } Subquery 110 { { fork QF { Stage 1 RDF_QUAD_POGS 2.5e+06 rows(s_24_9_t3.S) P = ##type , O = #/ProductType7 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_24_9_t5.S, s_24_9_t5.O) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_24_9_t6.O) inlined P = #/price , S = q_s_24_9_t5.S G = #/bsbm.org Precode: 0: QNode { dpipe s_24_9_t6.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_24_9_t6.O) 7: _cvt := Call _cvt (, __ro2sq) 12: __ro2sq := Call __ro2sq (_cvt) 17: _cvt := Call _cvt (, __ro2sq) 22: BReturn 0 Stage 4 RDF_QUAD 18 rows(s_24_9_t4.O) inlined P = #/productFeature , S = q_q_q_s_24_9_t3.S G = #/bsbm.org Stage 5 Sort (set_no, q_s_24_9_t4.O) -> (_cvt, isnotnull) ssa iterator group by read node (gb_set_no, q_s_24_9_t4.O, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, q_s_24_9_t4.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, aggregate, s_24_9_t4.O, set_no) order: 4 4 3 After code: 0: feature := := artm s_24_9_t4.O 4: countF := := artm aggregate 8: sumF := := artm aggregate 12: BReturn 0 Subquery Select(feature, countF, sumF) } Precode: 0: temp := artm countTotal - countF 4: temp := artm sumF * temp 8: temp := artm sumTotal - sumF 12: temp := artm countF * temp 16: temp := artm temp / temp 20: QNode { dpipe feature -> __RO2SQ -> __ro2sq } 22: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: feature := := artm __ro2sq 4: priceRatio := := artm temp 8: BReturn 0 Subquery Select(feature, priceRatio) } After code: 0: QNode { dpipe priceRatio -> __RO2SQ -> priceRatio feature -> __RO2SQ -> feature } 2: BReturn 0 Select (feature, priceRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?feature (?sumF*(?countTotal-?countF))/(?countF*(?sumTotal-?sumF)) As ?priceRatio { { Select count(?price) As ?countTotal sum(xsd:float(xsd:string(?price))) As ?sumTotal { ?product a . ?offer bsbm:product ?product ; bsbm:price ?price . } } { Select ?feature count(?price2) As ?countF sum(xsd:float(xsd:string(?price2))) As ?sumF { ?product2 a ; bsbm:productFeature ?feature . ?offer2 bsbm:product ?product2 ; bsbm:price ?price2 . } Group By ?feature } } Order By desc(?priceRatio) ?feature Limit 100 } ; { Subquery 27 { { fork Subquery 31 { { fork QF { Stage 1 RDF_QUAD_POGS 2.9e+05 rows(s_15_3_t0.S) P = ##type , O = #/ProductType64 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 21 rows(s_15_3_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_15_3_t2.O) inlined P = #/price , S = q_s_15_3_t1.S G = #/bsbm.org After code: 0: QNode { dpipe s_15_3_t2.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_15_3_t2.O) 7: sum countisnotnullset no set_no 12: _cvt := Call _cvt (, __ro2sq) 17: __ro2sq := Call __ro2sq (_cvt) 22: _cvt := Call _cvt (, __ro2sq) 27: sum sum_cvtset no set_no 32: BReturn 0 } } After code: 0: countTotal := := artm count 4: sumTotal := := artm sum 8: BReturn 0 Subquery Select(countTotal, sumTotal) } Subquery 144 { { fork QF { Stage 1 RDF_QUAD_POGS 2.9e+05 rows(s_24_9_t3.S) P = ##type , O = #/ProductType64 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_24_9_t5.S, s_24_9_t5.O) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_24_9_t6.O) inlined P = #/price , S = q_s_24_9_t5.S G = #/bsbm.org Precode: 0: QNode { dpipe s_24_9_t6.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_24_9_t6.O) 7: _cvt := Call _cvt (, __ro2sq) 12: __ro2sq := Call __ro2sq (_cvt) 17: _cvt := Call _cvt (, __ro2sq) 22: BReturn 0 Stage 4 RDF_QUAD 18 rows(s_24_9_t4.O) inlined P = #/productFeature , S = q_q_q_s_24_9_t3.S G = #/bsbm.org Stage 5 Sort (set_no, q_s_24_9_t4.O) -> (_cvt, isnotnull) ssa iterator group by read node (gb_set_no, q_s_24_9_t4.O, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, q_s_24_9_t4.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, aggregate, s_24_9_t4.O, set_no) order: 4 4 3 After code: 0: feature := := artm s_24_9_t4.O 4: countF := := artm aggregate 8: sumF := := artm aggregate 12: BReturn 0 Subquery Select(feature, countF, sumF) } Precode: 0: temp := artm countTotal - countF 4: temp := artm sumF * temp 8: temp := artm sumTotal - sumF 12: temp := artm countF * temp 16: temp := artm temp / temp 20: QNode { dpipe feature -> __RO2SQ -> __ro2sq } 22: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: feature := := artm __ro2sq 4: priceRatio := := artm temp 8: BReturn 0 Subquery Select(feature, priceRatio) } After code: 0: QNode { dpipe priceRatio -> __RO2SQ -> priceRatio feature -> __RO2SQ -> feature } 2: BReturn 0 Select (feature, priceRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?feature (?sumF*(?countTotal-?countF))/(?countF*(?sumTotal-?sumF)) As ?priceRatio { { Select count(?price) As ?countTotal sum(xsd:float(xsd:string(?price))) As ?sumTotal { ?product a . ?offer bsbm:product ?product ; bsbm:price ?price . } } { Select ?feature count(?price2) As ?countF sum(xsd:float(xsd:string(?price2))) As ?sumF { ?product2 a ; bsbm:productFeature ?feature . ?offer2 bsbm:product ?product2 ; bsbm:price ?price2 . } Group By ?feature } } Order By desc(?priceRatio) ?feature Limit 100 } ; { Subquery 27 { { fork Subquery 31 { { fork QF { Stage 1 RDF_QUAD_POGS 8.1e+03 rows(s_15_3_t0.S) P = ##type , O = #/ProductType995 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 21 rows(s_15_3_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_15_3_t2.O) inlined P = #/price , S = q_s_15_3_t1.S G = #/bsbm.org After code: 0: QNode { dpipe s_15_3_t2.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_15_3_t2.O) 7: sum countisnotnullset no set_no 12: _cvt := Call _cvt (, __ro2sq) 17: __ro2sq := Call __ro2sq (_cvt) 22: _cvt := Call _cvt (, __ro2sq) 27: sum sum_cvtset no set_no 32: BReturn 0 } } After code: 0: countTotal := := artm count 4: sumTotal := := artm sum 8: BReturn 0 Subquery Select(countTotal, sumTotal) } Subquery 144 { { fork QF { Stage 1 RDF_QUAD_POGS 8.2e+03 rows(s_24_9_t3.S) P = ##type , O = #/ProductType995 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_24_9_t5.S, s_24_9_t5.O) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_24_9_t6.O) inlined P = #/price , S = q_s_24_9_t5.S G = #/bsbm.org Precode: 0: QNode { dpipe s_24_9_t6.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_24_9_t6.O) 7: _cvt := Call _cvt (, __ro2sq) 12: __ro2sq := Call __ro2sq (_cvt) 17: _cvt := Call _cvt (, __ro2sq) 22: BReturn 0 Stage 4 RDF_QUAD 18 rows(s_24_9_t4.O) inlined P = #/productFeature , S = q_q_q_s_24_9_t3.S G = #/bsbm.org Stage 5 Sort (set_no, q_s_24_9_t4.O) -> (_cvt, isnotnull) ssa iterator group by read node (gb_set_no, q_s_24_9_t4.O, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, q_s_24_9_t4.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, aggregate, s_24_9_t4.O, set_no) order: 4 4 3 After code: 0: feature := := artm s_24_9_t4.O 4: countF := := artm aggregate 8: sumF := := artm aggregate 12: BReturn 0 Subquery Select(feature, countF, sumF) } Precode: 0: temp := artm countTotal - countF 4: temp := artm sumF * temp 8: temp := artm sumTotal - sumF 12: temp := artm countF * temp 16: temp := artm temp / temp 20: QNode { dpipe feature -> __RO2SQ -> __ro2sq } 22: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: feature := := artm __ro2sq 4: priceRatio := := artm temp 8: BReturn 0 Subquery Select(feature, priceRatio) } After code: 0: QNode { dpipe priceRatio -> __RO2SQ -> priceRatio feature -> __RO2SQ -> feature } 2: BReturn 0 Select (feature, priceRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?feature (?sumF*(?countTotal-?countF))/(?countF*(?sumTotal-?sumF)) As ?priceRatio { { Select count(?price) As ?countTotal sum(xsd:float(xsd:string(?price))) As ?sumTotal { ?product a . ?offer bsbm:product ?product ; bsbm:price ?price . } } { Select ?feature count(?price2) As ?countF sum(xsd:float(xsd:string(?price2))) As ?sumF { ?product2 a ; bsbm:productFeature ?feature . ?offer2 bsbm:product ?product2 ; bsbm:price ?price2 . } Group By ?feature } } Order By desc(?priceRatio) ?feature Limit 100 } ; { Subquery 27 { { fork Subquery 31 { { fork QF { Stage 1 RDF_QUAD_POGS 5.4e+03 rows(s_15_3_t0.S) P = ##type , O = #/ProductType3316 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 21 rows(s_15_3_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_15_3_t2.O) inlined P = #/price , S = q_s_15_3_t1.S G = #/bsbm.org After code: 0: QNode { dpipe s_15_3_t2.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_15_3_t2.O) 7: sum countisnotnullset no set_no 12: _cvt := Call _cvt (, __ro2sq) 17: __ro2sq := Call __ro2sq (_cvt) 22: _cvt := Call _cvt (, __ro2sq) 27: sum sum_cvtset no set_no 32: BReturn 0 } } After code: 0: countTotal := := artm count 4: sumTotal := := artm sum 8: BReturn 0 Subquery Select(countTotal, sumTotal) } Subquery 144 { { fork QF { Stage 1 RDF_QUAD_POGS 5.4e+03 rows(s_24_9_t3.S) P = ##type , O = #/ProductType3316 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 21 rows(s_24_9_t5.S, s_24_9_t5.O) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_24_9_t6.O) inlined P = #/price , S = q_s_24_9_t5.S G = #/bsbm.org Precode: 0: QNode { dpipe s_24_9_t6.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_24_9_t6.O) 7: _cvt := Call _cvt (, __ro2sq) 12: __ro2sq := Call __ro2sq (_cvt) 17: _cvt := Call _cvt (, __ro2sq) 22: BReturn 0 Stage 4 RDF_QUAD 18 rows(s_24_9_t4.O) inlined P = #/productFeature , S = q_q_q_s_24_9_t3.S G = #/bsbm.org Stage 5 Sort (set_no, q_s_24_9_t4.O) -> (_cvt, isnotnull) ssa iterator group by read node (gb_set_no, q_s_24_9_t4.O, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, q_s_24_9_t4.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, aggregate, s_24_9_t4.O, set_no) order: 4 4 3 After code: 0: feature := := artm s_24_9_t4.O 4: countF := := artm aggregate 8: sumF := := artm aggregate 12: BReturn 0 Subquery Select(feature, countF, sumF) } Precode: 0: temp := artm countTotal - countF 4: temp := artm sumF * temp 8: temp := artm sumTotal - sumF 12: temp := artm countF * temp 16: temp := artm temp / temp 20: QNode { dpipe feature -> __RO2SQ -> __ro2sq } 22: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: feature := := artm __ro2sq 4: priceRatio := := artm temp 8: BReturn 0 Subquery Select(feature, priceRatio) } After code: 0: QNode { dpipe priceRatio -> __RO2SQ -> priceRatio feature -> __RO2SQ -> feature } 2: BReturn 0 Select (feature, priceRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?feature (?sumF*(?countTotal-?countF))/(?countF*(?sumTotal-?sumF)) As ?priceRatio { { Select count(?price) As ?countTotal sum(xsd:float(xsd:string(?price))) As ?sumTotal { ?product a . ?offer bsbm:product ?product ; bsbm:price ?price . } } { Select ?feature count(?price2) As ?countF sum(xsd:float(xsd:string(?price2))) As ?sumF { ?product2 a ; bsbm:productFeature ?feature . ?offer2 bsbm:product ?product2 ; bsbm:price ?price2 . } Group By ?feature } } Order By desc(?priceRatio) ?feature Limit 100 } ; { time 3.4e-05% fanout 1 input 1 rows Subquery 27 { time 5e-05% fanout 1 input 1 rows { fork Subquery 31 { time 0.046% fanout 1 input 1 rows { fork wait time 0.44% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.0032% fanout 3326 input 1 rows RDF_QUAD_POGS 3.3e+03 rows(s_15_3_t0.S) P = ##type , O = #/ProductType9136 G = #/bsbm.org time 0.00051% fanout 1 input 3326 rows END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 time 0.025% fanout 0.49549 input 3326 rows Stage 2 time 1.8% fanout 19.8524 input 3326 rows RDF_QUAD_POGS 21 rows(s_15_3_t1.S) P = #/product , O = lcast G = #/bsbm.org time 2% fanout 1 input 66029 rows Stage 3 time 31% fanout 0 input 66029 rows RDF_QUAD 1 rows(s_15_3_t2.O) inlined P = #/price , S = q_s_15_3_t1.S G = #/bsbm.org After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe s_15_3_t2.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_15_3_t2.O) 7: sum countisnotnullset no set_no 12: _cvt := Call _cvt (, __ro2sq) 17: __ro2sq := Call __ro2sq (_cvt) 22: _cvt := Call _cvt (, __ro2sq) 27: sum sum_cvtset no set_no 32: BReturn 0 } } After code: 0: countTotal := := artm count 4: sumTotal := := artm sum 8: BReturn 0 time 4e-05% fanout 0 input 1 rows Subquery Select(countTotal, sumTotal) } Subquery 144 { time 0.009% fanout 1 input 1 rows { fork wait time 0.55% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.003% fanout 3326 input 1 rows RDF_QUAD_POGS 3.3e+03 rows(s_24_9_t3.S) P = ##type , O = #/ProductType9136 G = #/bsbm.org time 0.038% fanout 0.49549 input 3326 rows Stage 2 time 1.9% fanout 19.8524 input 3326 rows RDF_QUAD_POGS 21 rows(s_24_9_t5.S, s_24_9_t5.O) P = #/product , O = lcast G = #/bsbm.org time 1.6% fanout 1 input 66029 rows Stage 3 time 20% fanout 1 input 66029 rows RDF_QUAD 1 rows(s_24_9_t6.O) inlined P = #/price , S = q_s_24_9_t5.S G = #/bsbm.org time 16% fanout 0.921156 input 66029 rows Precode: 0: QNode { time 0% fanout 0 input 0 rows dpipe s_24_9_t6.O -> __RO2SQ -> __ro2sq } 2: isnotnull := Call isnotnull (s_24_9_t6.O) 7: _cvt := Call _cvt (, __ro2sq) 12: __ro2sq := Call __ro2sq (_cvt) 17: _cvt := Call _cvt (, __ro2sq) 22: BReturn 0 Stage 4 time 15% fanout 18.6938 input 66029 rows RDF_QUAD 18 rows(s_24_9_t4.O) inlined P = #/productFeature , S = q_q_q_s_24_9_t3.S G = #/bsbm.org time 8.6% fanout 0.9762 input 1.23433e+06 rows Stage 5 time 2.8% fanout 0 input 1.23433e+06 rows Sort (set_no, q_s_24_9_t4.O) -> (_cvt, isnotnull) time 2.6e-05% fanout 0 input 0 rows ssa iterator time 0.0078% fanout 18.75 input 4 rows group by read node (gb_set_no, q_s_24_9_t4.O, aggregate, aggregate) time 0.00052% fanout 0 input 75 rows qf select node output: (gb_set_no, aggregate, aggregate, q_s_24_9_t4.O, gb_set_no) } } time 0.14% fanout 75 input 1 rows cl fref read output: (gb_set_no, aggregate, aggregate, s_24_9_t4.O, set_no) order: 4 4 3 After code: 0: feature := := artm s_24_9_t4.O 4: countF := := artm aggregate 8: sumF := := artm aggregate 12: BReturn 0 time 4.3e-05% fanout 0 input 75 rows Subquery Select(feature, countF, sumF) } time 0.019% fanout 0 input 75 rows Precode: 0: temp := artm countTotal - countF 4: temp := artm sumF * temp 8: temp := artm sumTotal - sumF 12: temp := artm countF * temp 16: temp := artm temp / temp 20: QNode { time 0% fanout 0 input 0 rows dpipe feature -> __RO2SQ -> __ro2sq } 22: BReturn 0 Sort (temp, __ro2sq) } time 0.0006% fanout 75 input 1 rows top order by read (__ro2sq, temp) After code: 0: feature := := artm __ro2sq 4: priceRatio := := artm temp 8: BReturn 0 time 1.3e-05% fanout 0 input 75 rows Subquery Select(feature, priceRatio) } After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe priceRatio -> __RO2SQ -> priceRatio feature -> __RO2SQ -> feature } 2: BReturn 0 time 2.5e-05% fanout 0 input 75 rows Select (feature, priceRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?vendor (xsd:float(?belowAvg)/?offerCount As ?cheapExpensiveRatio) { { Select ?vendor (count(?offer) As ?belowAvg) { { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?offer bsbm:price ?price . { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } } . FILTER (?price < ?avgPrice) } Group By ?vendor } { Select ?vendor (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . } Group By ?vendor } } Order by desc(xsd:float(?belowAvg)/?offerCount) ?vendor limit 10 } ; { time 2.4e-07% fanout 1 input 1 rows time 0.033% fanout 1 input 1 rows { hash filler wait time 0.42% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.0036% fanout 1e+06 input 1 rows RDF_QUAD_POGS 1.1e+06 rows(s_34_15_t7.S) P = ##type , O = #/ProductType12 G = #/bsbm.org time 0.016% fanout 2 input 1.1037e+06 rows Stage 2 time 0.0099% fanout 0 input 4.41481e+06 rows Sort hf 38 replicated(s_34_15_t7.S) } } time 0.033% fanout 1 input 1 rows { hash filler wait time 0.42% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.0036% fanout 1e+06 input 1 rows RDF_QUAD_POGS 1.1e+06 rows(s_21_7_t0.S) P = ##type , O = #/ProductType12 G = #/bsbm.org time 0.017% fanout 2 input 1.1037e+06 rows Stage 2 time 0.01% fanout 0 input 4.41481e+06 rows Sort hf 55 replicated(s_21_7_t0.S) } } Subquery 61 { time 5.1e-07% fanout 1 input 1 rows { fork Subquery 65 { time 4.4e-05% fanout 1 input 1 rows { fork wait time 8.5% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.042% fanout 1.1037e+06 input 1 rows RDF_QUAD_POGS 1.1e+06 rows(s_21_9_t3.S) P = ##type , O = #/ProductType12 G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Subquery 76 { time 0.00054% fanout 1 input 1.1037e+06 rows Precode: 0: s_21_7_t0.S := := artm s_21_9_t3.S 4: BReturn 0 { fork time 2.2e-06% fanout 1 input 1.1037e+06 rows Hash source 55 merged into ts 0.8 rows(s_21_9_t3.S) -> () wait time 0% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.48% fanout 20.0303 input 1.1037e+06 rows RDF_QUAD_POGS 21 rows(s_21_7_t1.S) P = #/product , O = lcast G = #/bsbm.org time 0.83% fanout 0.995171 input 2.21075e+07 rows Stage 2 time 19% fanout 1 input 2.21075e+07 rows RDF_QUAD 1 rows(s_21_7_t2.O) inlined P = #/price , S = q_s_21_7_t1.S G = #/bsbm.org After code: 0: temp := artm s_21_7_t2.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 time 0.86% fanout 0.981137 input 2.21075e+07 rows Stage 3 time 6.8% fanout 0 input 2.21075e+07 rows Sort (set_no, q_q_q_s_21_7_t0.S) -> (isnotnull, temp) time 0% fanout 0 input 0 rows ssa iterator time 0.097% fanout 24428.2 input 16 rows group by read node (gb_set_no, q_q_q_s_21_7_t0.S, aggregate, aggregate) time 0.00025% fanout 0 input 390851 rows qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_21_7_t0.S) } } time 0.19% fanout 0.354127 input 1.1037e+06 rows cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_21_7_t0.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_21_7_t0.S 8: avgPrice := := artm temp 12: BReturn 0 time 1.4e-06% fanout 0 input 390851 rows Subquery Select(product, avgPrice) } time 0.11% fanout 0.362703 input 390851 rows Stage 2 time 0.15% fanout 20.0591 input 390851 rows RDF_QUAD_POGS 21 rows(s_21_9_t4.S) P = #/product , O = lcast G = #/bsbm.org time 0.32% fanout 1 input 7.84011e+06 rows Stage 3 time 1.9% fanout 1 input 7.84011e+06 rows RDF_QUAD 1 rows(s_21_9_t5.S, s_21_9_t5.O) inlined P = #/vendor , S = q_s_21_9_t4.S G = #/bsbm.org time 5.7% fanout 0.500065 input 7.84011e+06 rows RDF_QUAD 1.1 rows(s_21_9_t6.S) P = #/price , S = k_s_21_9_t5.S , O < k_q_q_avgPrice O < k_q_q_avgPrice , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_9_t6.S) 5: BReturn 0 time 0.19% fanout 0.999478 input 3.92057e+06 rows Stage 4 time 0.11% fanout 0 input 3.92057e+06 rows Sort (set_no, q_s_21_9_t5.O) -> (isnotnull) time 1.6e-07% fanout 0 input 0 rows ssa iterator time 0.0049% fanout 71011 input 4 rows group by read node (gb_set_no, q_s_21_9_t5.O, aggregate) time 5.6e-05% fanout 0 input 284044 rows qf select node output: (gb_set_no, aggregate, q_s_21_9_t5.O, gb_set_no) } } time 0.0079% fanout 284044 input 1 rows cl fref read output: (gb_set_no, aggregate, s_21_9_t5.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_21_9_t5.O 4: belowAvg := := artm aggregate 8: BReturn 0 time 9.2e-07% fanout 0 input 284044 rows Subquery Select(vendor, belowAvg) } Precode: 0: _cvt := Call _cvt (, belowAvg) 5: QNode { time 0% fanout 0 input 0 rows dpipe vendor -> __RO2SQ -> __ro2sq } 7: BReturn 0 Subquery 351 { time 7.1e-05% fanout 1 input 284044 rows { fork wait time 26% of exec real time, fanout 0 QF { time 0.00058% fanout 0 input 0 rows Stage 1 time 3% fanout 1600.51 input 284044 rows RDF_QUAD_POGS 1.8e+03 rows(s_34_15_t9.S, s_34_15_t9.O) P = #/vendor , O = q_vendor G = #/bsbm.org time 16% fanout 0.943337 input 5.69492e+08 rows Stage 2 time 41% fanout 0.0388105 input 5.69492e+08 rows RDF_QUAD 1 rows(s_34_15_t8.O, s_34_15_t8.S) inlined P = #/product , S = q_s_34_15_t9.S G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () time 0.006% fanout 1 input 2.21022e+07 rows Hash source 38 merged into ts not partitionable 0.8 rows(cast) -> () time 1.8% fanout 0.997092 input 2.21022e+07 rows Precode: 0: isnotnull := Call isnotnull (s_34_15_t8.S) 5: BReturn 0 Stage 3 time 0.42% fanout 0 input 2.21022e+07 rows Sort (set_no, q_q_s_34_15_t9.O) -> (isnotnull) time 2.7e-07% fanout 0 input 0 rows ssa iterator time 0.0052% fanout 35505.5 input 8 rows group by read node (gb_set_no, q_q_s_34_15_t9.O, aggregate) time 5.8e-05% fanout 0 input 284044 rows qf select node output: (gb_set_no, aggregate, q_q_s_34_15_t9.O, gb_set_no) } } time 0.0038% fanout 1 input 284044 rows cl fref read output: (gb_set_no, aggregate, s_34_15_t9.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_34_15_t9.O 4: offerCount := := artm aggregate 8: BReturn 0 time 4.9e-07% fanout 0 input 284044 rows Subquery Select(vendor, offerCount) } time 0.006% fanout 0 input 284044 rows Precode: 0: temp := artm _cvt / offerCount 4: BReturn 0 Sort (temp, __ro2sq) } time 1.6e-05% fanout 10 input 1 rows top order by read (__ro2sq, temp) After code: 0: vendor := := artm __ro2sq 4: cheapExpensiveRatio := := artm temp 8: BReturn 0 time 9.4e-08% fanout 0 input 10 rows Subquery Select(vendor, cheapExpensiveRatio) } After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe cheapExpensiveRatio -> __RO2SQ -> cheapExpensiveRatio vendor -> __RO2SQ -> vendor } 2: BReturn 0 time 2.4e-07% fanout 0 input 10 rows Select (vendor, cheapExpensiveRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?vendor (xsd:float(?belowAvg)/?offerCount As ?cheapExpensiveRatio) { { Select ?vendor (count(?offer) As ?belowAvg) { { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?offer bsbm:price ?price . { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } } . FILTER (?price < ?avgPrice) } Group By ?vendor } { Select ?vendor (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . } Group By ?vendor } } Order by desc(xsd:float(?belowAvg)/?offerCount) ?vendor limit 10 } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 2e+05 rows(s_34_15_t7.S) P = ##type , O = #/ProductType84 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_34_15_t7.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 2e+05 rows(s_21_7_t0.S) P = ##type , O = #/ProductType84 G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_21_7_t0.S) } } Subquery 61 { { fork Subquery 65 { { fork QF { Stage 1 RDF_QUAD_POGS 2e+05 rows(s_21_9_t3.S) P = ##type , O = #/ProductType84 G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Subquery 76 { Precode: 0: s_21_7_t0.S := := artm s_21_9_t3.S 4: BReturn 0 { fork Hash source 55 merged into ts 0.8 rows(s_21_9_t3.S) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_21_7_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_21_7_t2.O) inlined P = #/price , S = q_s_21_7_t1.S G = #/bsbm.org After code: 0: temp := artm s_21_7_t2.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_21_7_t0.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_21_7_t0.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_21_7_t0.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_21_7_t0.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_21_7_t0.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Stage 2 RDF_QUAD_POGS 21 rows(s_21_9_t4.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_9_t5.S, s_21_9_t5.O) inlined P = #/vendor , S = q_s_21_9_t4.S G = #/bsbm.org RDF_QUAD 1.1 rows(s_21_9_t6.S) P = #/price , S = k_s_21_9_t5.S , O < k_q_q_avgPrice O < k_q_q_avgPrice , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_9_t6.S) 5: BReturn 0 Stage 4 Sort (set_no, q_s_21_9_t5.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_9_t5.O, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_9_t5.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_9_t5.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_21_9_t5.O 4: belowAvg := := artm aggregate 8: BReturn 0 Subquery Select(vendor, belowAvg) } Precode: 0: _cvt := Call _cvt (, belowAvg) 5: QNode { dpipe vendor -> __RO2SQ -> __ro2sq } 7: BReturn 0 Subquery 351 { { fork QF { Stage 1 RDF_QUAD_POGS 1.8e+03 rows(s_34_15_t9.S, s_34_15_t9.O) P = #/vendor , O = q_vendor G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_34_15_t8.O, s_34_15_t8.S) inlined P = #/product , S = q_s_34_15_t9.S G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () Hash source 38 merged into ts not partitionable 0.8 rows(cast) -> () Precode: 0: isnotnull := Call isnotnull (s_34_15_t8.S) 5: BReturn 0 Stage 3 Sort (set_no, q_q_s_34_15_t9.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_q_s_34_15_t9.O, aggregate) qf select node output: (gb_set_no, aggregate, q_q_s_34_15_t9.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_34_15_t9.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_34_15_t9.O 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(vendor, offerCount) } Precode: 0: temp := artm _cvt / offerCount 4: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: vendor := := artm __ro2sq 4: cheapExpensiveRatio := := artm temp 8: BReturn 0 Subquery Select(vendor, cheapExpensiveRatio) } After code: 0: QNode { dpipe cheapExpensiveRatio -> __RO2SQ -> cheapExpensiveRatio vendor -> __RO2SQ -> vendor } 2: BReturn 0 Select (vendor, cheapExpensiveRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?vendor (xsd:float(?belowAvg)/?offerCount As ?cheapExpensiveRatio) { { Select ?vendor (count(?offer) As ?belowAvg) { { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?offer bsbm:price ?price . { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } } . FILTER (?price < ?avgPrice) } Group By ?vendor } { Select ?vendor (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . } Group By ?vendor } } Order by desc(xsd:float(?belowAvg)/?offerCount) ?vendor limit 10 } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 3e+04 rows(s_34_15_t7.S) P = ##type , O = #/ProductType607 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_34_15_t7.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 3e+04 rows(s_21_7_t0.S) P = ##type , O = #/ProductType607 G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_21_7_t0.S) } } Subquery 61 { { fork Subquery 65 { { fork QF { Stage 1 RDF_QUAD_POGS 3e+04 rows(s_21_9_t3.S) P = ##type , O = #/ProductType607 G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Subquery 76 { Precode: 0: s_21_7_t0.S := := artm s_21_9_t3.S 4: BReturn 0 { fork Hash source 55 merged into ts 0.8 rows(s_21_9_t3.S) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_21_7_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_21_7_t2.O) inlined P = #/price , S = q_s_21_7_t1.S G = #/bsbm.org After code: 0: temp := artm s_21_7_t2.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_21_7_t0.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_21_7_t0.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_21_7_t0.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_21_7_t0.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_21_7_t0.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Stage 2 RDF_QUAD_POGS 21 rows(s_21_9_t4.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_9_t5.S, s_21_9_t5.O) inlined P = #/vendor , S = q_s_21_9_t4.S G = #/bsbm.org RDF_QUAD 1.1 rows(s_21_9_t6.S) P = #/price , S = k_s_21_9_t5.S , O < k_q_q_avgPrice O < k_q_q_avgPrice , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_9_t6.S) 5: BReturn 0 Stage 4 Sort (set_no, q_s_21_9_t5.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_9_t5.O, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_9_t5.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_9_t5.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_21_9_t5.O 4: belowAvg := := artm aggregate 8: BReturn 0 Subquery Select(vendor, belowAvg) } Precode: 0: _cvt := Call _cvt (, belowAvg) 5: QNode { dpipe vendor -> __RO2SQ -> __ro2sq } 7: BReturn 0 Subquery 351 { { fork QF { Stage 1 RDF_QUAD_POGS 1.8e+03 rows(s_34_15_t9.S, s_34_15_t9.O) P = #/vendor , O = q_vendor G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_34_15_t8.O, s_34_15_t8.S) inlined P = #/product , S = q_s_34_15_t9.S G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () Hash source 38 merged into ts not partitionable 0.8 rows(cast) -> () Precode: 0: isnotnull := Call isnotnull (s_34_15_t8.S) 5: BReturn 0 Stage 3 Sort (set_no, q_q_s_34_15_t9.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_q_s_34_15_t9.O, aggregate) qf select node output: (gb_set_no, aggregate, q_q_s_34_15_t9.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_34_15_t9.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_34_15_t9.O 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(vendor, offerCount) } Precode: 0: temp := artm _cvt / offerCount 4: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: vendor := := artm __ro2sq 4: cheapExpensiveRatio := := artm temp 8: BReturn 0 Subquery Select(vendor, cheapExpensiveRatio) } After code: 0: QNode { dpipe cheapExpensiveRatio -> __RO2SQ -> cheapExpensiveRatio vendor -> __RO2SQ -> vendor } 2: BReturn 0 Select (vendor, cheapExpensiveRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?vendor (xsd:float(?belowAvg)/?offerCount As ?cheapExpensiveRatio) { { Select ?vendor (count(?offer) As ?belowAvg) { { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?offer bsbm:price ?price . { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } } . FILTER (?price < ?avgPrice) } Group By ?vendor } { Select ?vendor (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . } Group By ?vendor } } Order by desc(xsd:float(?belowAvg)/?offerCount) ?vendor limit 10 } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 3.5e+03 rows(s_34_15_t7.S) P = ##type , O = #/ProductType5085 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_34_15_t7.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 3.5e+03 rows(s_21_7_t0.S) P = ##type , O = #/ProductType5085 G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_21_7_t0.S) } } Subquery 61 { { fork Subquery 65 { { fork QF { Stage 1 RDF_QUAD_POGS 3.5e+03 rows(s_21_9_t3.S) P = ##type , O = #/ProductType5085 G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Subquery 76 { Precode: 0: s_21_7_t0.S := := artm s_21_9_t3.S 4: BReturn 0 { fork Hash source 55 merged into ts 0.8 rows(s_21_9_t3.S) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_21_7_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_21_7_t2.O) inlined P = #/price , S = q_s_21_7_t1.S G = #/bsbm.org After code: 0: temp := artm s_21_7_t2.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_21_7_t0.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_21_7_t0.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_21_7_t0.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_21_7_t0.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_21_7_t0.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Stage 2 RDF_QUAD_POGS 21 rows(s_21_9_t4.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_9_t5.S, s_21_9_t5.O) inlined P = #/vendor , S = q_s_21_9_t4.S G = #/bsbm.org RDF_QUAD 1.1 rows(s_21_9_t6.S) P = #/price , S = k_s_21_9_t5.S , O < k_q_q_avgPrice O < k_q_q_avgPrice , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_9_t6.S) 5: BReturn 0 Stage 4 Sort (set_no, q_s_21_9_t5.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_9_t5.O, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_9_t5.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_9_t5.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_21_9_t5.O 4: belowAvg := := artm aggregate 8: BReturn 0 Subquery Select(vendor, belowAvg) } Precode: 0: _cvt := Call _cvt (, belowAvg) 5: QNode { dpipe vendor -> __RO2SQ -> __ro2sq } 7: BReturn 0 Subquery 351 { { fork QF { Stage 1 RDF_QUAD_POGS 1.8e+03 rows(s_34_15_t9.S, s_34_15_t9.O) P = #/vendor , O = q_vendor G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_34_15_t8.O, s_34_15_t8.S) inlined P = #/product , S = q_s_34_15_t9.S G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () Hash source 38 merged into ts not partitionable 0.8 rows(cast) -> () Precode: 0: isnotnull := Call isnotnull (s_34_15_t8.S) 5: BReturn 0 Stage 3 Sort (set_no, q_q_s_34_15_t9.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_q_s_34_15_t9.O, aggregate) qf select node output: (gb_set_no, aggregate, q_q_s_34_15_t9.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_34_15_t9.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_34_15_t9.O 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(vendor, offerCount) } Precode: 0: temp := artm _cvt / offerCount 4: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: vendor := := artm __ro2sq 4: cheapExpensiveRatio := := artm temp 8: BReturn 0 Subquery Select(vendor, cheapExpensiveRatio) } After code: 0: QNode { dpipe cheapExpensiveRatio -> __RO2SQ -> cheapExpensiveRatio vendor -> __RO2SQ -> vendor } 2: BReturn 0 Select (vendor, cheapExpensiveRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix xsd: Select ?vendor (xsd:float(?belowAvg)/?offerCount As ?cheapExpensiveRatio) { { Select ?vendor (count(?offer) As ?belowAvg) { { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . ?offer bsbm:price ?price . { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } } . FILTER (?price < ?avgPrice) } Group By ?vendor } { Select ?vendor (count(?offer) As ?offerCount) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:vendor ?vendor . } Group By ?vendor } } Order by desc(xsd:float(?belowAvg)/?offerCount) ?vendor limit 10 } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 3.2e+03 rows(s_34_15_t7.S) P = ##type , O = #/ProductType10675 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_34_15_t7.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 3.2e+03 rows(s_21_7_t0.S) P = ##type , O = #/ProductType10675 G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_21_7_t0.S) } } Subquery 61 { { fork Subquery 65 { { fork QF { Stage 1 RDF_QUAD_POGS 3.2e+03 rows(s_21_9_t3.S) P = ##type , O = #/ProductType10675 G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Subquery 76 { Precode: 0: s_21_7_t0.S := := artm s_21_9_t3.S 4: BReturn 0 { fork Hash source 55 merged into ts 0.8 rows(s_21_9_t3.S) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_21_7_t1.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_21_7_t2.O) inlined P = #/price , S = q_s_21_7_t1.S G = #/bsbm.org After code: 0: temp := artm s_21_7_t2.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_21_7_t0.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_21_7_t0.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_21_7_t0.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_21_7_t0.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_21_7_t0.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Stage 2 RDF_QUAD_POGS 21 rows(s_21_9_t4.S) P = #/product , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_9_t5.S, s_21_9_t5.O) inlined P = #/vendor , S = q_s_21_9_t4.S G = #/bsbm.org RDF_QUAD 1.1 rows(s_21_9_t6.S) P = #/price , S = k_s_21_9_t5.S , O < k_q_q_avgPrice O < k_q_q_avgPrice , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_9_t6.S) 5: BReturn 0 Stage 4 Sort (set_no, q_s_21_9_t5.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_9_t5.O, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_9_t5.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_9_t5.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_21_9_t5.O 4: belowAvg := := artm aggregate 8: BReturn 0 Subquery Select(vendor, belowAvg) } Precode: 0: _cvt := Call _cvt (, belowAvg) 5: QNode { dpipe vendor -> __RO2SQ -> __ro2sq } 7: BReturn 0 Subquery 351 { { fork QF { Stage 1 RDF_QUAD_POGS 1.8e+03 rows(s_34_15_t9.S, s_34_15_t9.O) P = #/vendor , O = q_vendor G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_34_15_t8.O, s_34_15_t8.S) inlined P = #/product , S = q_s_34_15_t9.S G = #/bsbm.org hash partition+bloom by 42 (tmp)hash join merged always card 0.8 -> () Hash source 38 merged into ts not partitionable 0.8 rows(cast) -> () Precode: 0: isnotnull := Call isnotnull (s_34_15_t8.S) 5: BReturn 0 Stage 3 Sort (set_no, q_q_s_34_15_t9.O) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_q_s_34_15_t9.O, aggregate) qf select node output: (gb_set_no, aggregate, q_q_s_34_15_t9.O, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_34_15_t9.O, set_no) order: 3 3 2 After code: 0: vendor := := artm s_34_15_t9.O 4: offerCount := := artm aggregate 8: BReturn 0 Subquery Select(vendor, offerCount) } Precode: 0: temp := artm _cvt / offerCount 4: BReturn 0 Sort (temp, __ro2sq) } top order by read (__ro2sq, temp) After code: 0: vendor := := artm __ro2sq 4: cheapExpensiveRatio := := artm temp 8: BReturn 0 Subquery Select(vendor, cheapExpensiveRatio) } After code: 0: QNode { dpipe cheapExpensiveRatio -> __RO2SQ -> cheapExpensiveRatio vendor -> __RO2SQ -> vendor } 2: BReturn 0 Select (vendor, cheapExpensiveRatio) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix xsd: Select ?country ?product ?nrOfReviews ?avgPrice { { Select ?country (max(?nrOfReviews) As ?maxReviews) { { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product ; rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } } Group By ?country } { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } FILTER(?nrOfReviews=?maxReviews) } Order By desc(?nrOfReviews) ?country ?product } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 1.4e+06 rows(s_32_11_t4.S) P = ##type , O = #/ProductType10 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_32_11_t4.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 1.4e+06 rows(s_41_17_t7.S) P = ##type , O = #/ProductType10 G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_41_17_t7.S) } } Subquery 61 { { fork Subquery 67 { { fork Subquery 71 { { fork QF { Stage 1 RDF_QUAD_POGS 1.4e+06 rows(s_21_4_t0.S) P = ##type , O = #/ProductType10 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 10 rows(s_21_4_t1.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_4_t2.O) inlined P = ##reviewer , S = q_s_21_4_t1.S G = #/bsbm.org Stage 4 RDF_QUAD 1 rows(s_21_4_t3.O) inlined P = #/country , S = q_s_21_4_t2.O G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_4_t1.S) 5: BReturn 0 Stage 5 Sort (set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_4_t3.O, s_21_4_t0.S, set_no) order: 4 4 2 3 After code: 0: country := := artm s_21_4_t3.O 4: product := := artm s_21_4_t0.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Sort (set_no, country) -> (nrOfReviews) } group by read node (gb_set_no, country, aggregate) After code: 0: country := := artm country 4: maxReviews := := artm aggregate 8: BReturn 0 Subquery Select(country, maxReviews) } Precode: 0: QNode { dpipe country -> __RO2SQ -> __ro2sq } 2: BReturn 0 Subquery 265 { { fork QF { Stage 1 RDF_QUAD_POGS 1.9e+04 rows(s_41_17_t10.S, s_41_17_t10.O) P = #/country , O = q_country G = #/bsbm.org Stage 2 RDF_QUAD_POGS 22 rows(s_41_17_t9.S) P = ##reviewer , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_41_17_t8.O, s_41_17_t8.S) inlined P = #/reviewFor , S = q_s_41_17_t9.S G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Precode: 0: s_41_17_t7.S := := artm s_41_17_t8.O 4: BReturn 0 Hash source 55 merged into ts not partitionable 0.8 rows(cast) -> () Precode: 0: isnotnull := Call isnotnull (s_41_17_t8.S) 5: BReturn 0 Stage 4 Sort (set_no, q_q_q_s_41_17_t10.O, q_s_41_17_t7.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_q_q_s_41_17_t10.O, q_s_41_17_t7.S, aggregate) qf select node output: (gb_set_no, aggregate, q_q_q_s_41_17_t10.O, gb_set_no, q_s_41_17_t7.S) } } cl fref read output: (gb_set_no, aggregate, s_41_17_t10.O, set_no, s_41_17_t7.S) order: 3 3 2 4 END Node After test: 0: if (aggregate = maxReviews) then 4 else 5 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: country := := artm s_41_17_t10.O 4: product := := artm s_41_17_t7.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Subquery 424 { Precode: 0: s_32_11_t4.S := := artm product 4: BReturn 0 { fork Hash source 38 0.8 rows(cast) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_32_11_t5.S) P = #/product , O = q_s_32_11_t4.S G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_32_11_t6.O) inlined P = #/price , S = q_s_32_11_t5.S G = #/bsbm.org After code: 0: temp := artm s_32_11_t6.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_32_11_t4.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_32_11_t4.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_32_11_t4.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_32_11_t4.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_32_11_t4.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Precode: 0: QNode { dpipe product -> __ID2In -> __id2in } 2: BReturn 0 Sort (maxReviews, __ro2sq, __id2in) -> (avgPrice) } Key from temp (__ro2sq, __id2in, maxReviews, avgPrice) After code: 0: country := := artm __ro2sq 4: product := := artm __id2in 8: nrOfReviews := := artm maxReviews 12: avgPrice := := artm avgPrice 16: BReturn 0 Subquery Select(country, product, nrOfReviews, avgPrice) } After code: 0: QNode { dpipe avgPrice -> __RO2SQ -> avgPrice nrOfReviews -> __RO2SQ -> nrOfReviews product -> __RO2SQ -> product country -> __RO2SQ -> country } 2: BReturn 0 Select (country, product, nrOfReviews, avgPrice) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix xsd: Select ?country ?product ?nrOfReviews ?avgPrice { { Select ?country (max(?nrOfReviews) As ?maxReviews) { { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product ; rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } } Group By ?country } { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } FILTER(?nrOfReviews=?maxReviews) } Order By desc(?nrOfReviews) ?country ?product } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 4.2e+05 rows(s_32_11_t4.S) P = ##type , O = #/ProductType26 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_32_11_t4.S) } } { hash filler QF { Stage 1 RDF_QUAD_POGS 4.2e+05 rows(s_41_17_t7.S) P = ##type , O = #/ProductType26 G = #/bsbm.org Stage 2 Sort hf 55 replicated(s_41_17_t7.S) } } Subquery 61 { { fork Subquery 67 { { fork Subquery 71 { { fork QF { Stage 1 RDF_QUAD_POGS 4.1e+05 rows(s_21_4_t0.S) P = ##type , O = #/ProductType26 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 10 rows(s_21_4_t1.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_4_t2.O) inlined P = ##reviewer , S = q_s_21_4_t1.S G = #/bsbm.org Stage 4 RDF_QUAD 1 rows(s_21_4_t3.O) inlined P = #/country , S = q_s_21_4_t2.O G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_4_t1.S) 5: BReturn 0 Stage 5 Sort (set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_4_t3.O, s_21_4_t0.S, set_no) order: 4 4 2 3 After code: 0: country := := artm s_21_4_t3.O 4: product := := artm s_21_4_t0.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Sort (set_no, country) -> (nrOfReviews) } group by read node (gb_set_no, country, aggregate) After code: 0: country := := artm country 4: maxReviews := := artm aggregate 8: BReturn 0 Subquery Select(country, maxReviews) } Precode: 0: QNode { dpipe country -> __RO2SQ -> __ro2sq } 2: BReturn 0 Subquery 265 { { fork QF { Stage 1 RDF_QUAD_POGS 1.9e+04 rows(s_41_17_t10.S, s_41_17_t10.O) P = #/country , O = q_country G = #/bsbm.org Stage 2 RDF_QUAD_POGS 22 rows(s_41_17_t9.S) P = ##reviewer , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_41_17_t8.O, s_41_17_t8.S) inlined P = #/reviewFor , S = q_s_41_17_t9.S G = #/bsbm.org hash partition+bloom by 59 (tmp)hash join merged always card 0.8 -> () Precode: 0: s_41_17_t7.S := := artm s_41_17_t8.O 4: BReturn 0 Hash source 55 merged into ts not partitionable 0.8 rows(cast) -> () Precode: 0: isnotnull := Call isnotnull (s_41_17_t8.S) 5: BReturn 0 Stage 4 Sort (set_no, q_q_q_s_41_17_t10.O, q_s_41_17_t7.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_q_q_s_41_17_t10.O, q_s_41_17_t7.S, aggregate) qf select node output: (gb_set_no, aggregate, q_q_q_s_41_17_t10.O, gb_set_no, q_s_41_17_t7.S) } } cl fref read output: (gb_set_no, aggregate, s_41_17_t10.O, set_no, s_41_17_t7.S) order: 3 3 2 4 END Node After test: 0: if (aggregate = maxReviews) then 4 else 5 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: country := := artm s_41_17_t10.O 4: product := := artm s_41_17_t7.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Subquery 424 { Precode: 0: s_32_11_t4.S := := artm product 4: BReturn 0 { fork Hash source 38 0.8 rows(cast) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_32_11_t5.S) P = #/product , O = q_s_32_11_t4.S G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_32_11_t6.O) inlined P = #/price , S = q_s_32_11_t5.S G = #/bsbm.org After code: 0: temp := artm s_32_11_t6.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_32_11_t4.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_32_11_t4.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_32_11_t4.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_32_11_t4.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_32_11_t4.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Precode: 0: QNode { dpipe product -> __ID2In -> __id2in } 2: BReturn 0 Sort (maxReviews, __ro2sq, __id2in) -> (avgPrice) } Key from temp (__ro2sq, __id2in, maxReviews, avgPrice) After code: 0: country := := artm __ro2sq 4: product := := artm __id2in 8: nrOfReviews := := artm maxReviews 12: avgPrice := := artm avgPrice 16: BReturn 0 Subquery Select(country, product, nrOfReviews, avgPrice) } After code: 0: QNode { dpipe avgPrice -> __RO2SQ -> avgPrice nrOfReviews -> __RO2SQ -> nrOfReviews product -> __RO2SQ -> product country -> __RO2SQ -> country } 2: BReturn 0 Select (country, product, nrOfReviews, avgPrice) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix xsd: Select ?country ?product ?nrOfReviews ?avgPrice { { Select ?country (max(?nrOfReviews) As ?maxReviews) { { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product ; rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } } Group By ?country } { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } FILTER(?nrOfReviews=?maxReviews) } Order By desc(?nrOfReviews) ?country ?product } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 9.6e+03 rows(s_32_11_t4.S) P = ##type , O = #/ProductType954 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_32_11_t4.S) } } { hash filler QF { Stage 1 RDF_QUAD 1.5e+07 rows(s_41_17_t10.O, s_41_17_t10.S) inlined P = #/country G = #/bsbm.org Stage 2 Sort hf 56 replicated(s_41_17_t10.O, s_41_17_t10.S) } } Subquery 62 { { fork Subquery 68 { { fork Subquery 72 { { fork QF { Stage 1 RDF_QUAD_POGS 9.5e+03 rows(s_21_4_t0.S) P = ##type , O = #/ProductType954 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 10 rows(s_21_4_t1.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_4_t2.O) inlined P = ##reviewer , S = q_s_21_4_t1.S G = #/bsbm.org Stage 4 RDF_QUAD 1 rows(s_21_4_t3.O) inlined P = #/country , S = q_s_21_4_t2.O G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_4_t1.S) 5: BReturn 0 Stage 5 Sort (set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_4_t3.O, s_21_4_t0.S, set_no) order: 4 4 2 3 After code: 0: country := := artm s_21_4_t3.O 4: product := := artm s_21_4_t0.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Sort (set_no, country) -> (nrOfReviews) } group by read node (gb_set_no, country, aggregate) After code: 0: country := := artm country 4: maxReviews := := artm aggregate 8: BReturn 0 Subquery Select(country, maxReviews) } Precode: 0: QNode { dpipe country -> __RO2SQ -> __ro2sq } 2: BReturn 0 Subquery 266 { { fork QF { Stage 1 RDF_QUAD_POGS 9.6e+03 rows(s_41_17_t7.S) P = ##type , O = #/ProductType954 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 10 rows(s_41_17_t8.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_41_17_t9.O) inlined P = ##reviewer , S = q_s_41_17_t8.S G = #/bsbm.org Precode: 0: s_41_17_t10.O := := artm country 4: BReturn 0 Hash source 56 not partitionable 0.0011 rows(k_country, cast) -> () Precode: 0: isnotnull := Call isnotnull (s_41_17_t8.S) 5: BReturn 0 Stage 4 Sort (set_no, q_s_41_17_t10.O, q_q_q_s_41_17_t7.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_41_17_t10.O, q_q_q_s_41_17_t7.S, aggregate) qf select node output: (gb_set_no, aggregate, q_q_q_s_41_17_t7.S, gb_set_no, q_s_41_17_t10.O) } } cl fref read output: (gb_set_no, aggregate, s_41_17_t7.S, set_no, s_41_17_t10.O) order: 3 3 4 2 END Node After test: 0: if (aggregate = maxReviews) then 4 else 5 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: country := := artm s_41_17_t10.O 4: product := := artm s_41_17_t7.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Subquery 423 { Precode: 0: s_32_11_t4.S := := artm product 4: BReturn 0 { fork Hash source 38 0.8 rows(product) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_32_11_t5.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_32_11_t6.O) inlined P = #/price , S = q_s_32_11_t5.S G = #/bsbm.org After code: 0: temp := artm s_32_11_t6.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_32_11_t4.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_32_11_t4.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_32_11_t4.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_32_11_t4.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_32_11_t4.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Precode: 0: QNode { dpipe product -> __ID2In -> __id2in } 2: BReturn 0 Sort (maxReviews, __ro2sq, __id2in) -> (avgPrice) } Key from temp (__ro2sq, __id2in, maxReviews, avgPrice) After code: 0: country := := artm __ro2sq 4: product := := artm __id2in 8: nrOfReviews := := artm maxReviews 12: avgPrice := := artm avgPrice 16: BReturn 0 Subquery Select(country, product, nrOfReviews, avgPrice) } After code: 0: QNode { dpipe avgPrice -> __RO2SQ -> avgPrice nrOfReviews -> __RO2SQ -> nrOfReviews product -> __RO2SQ -> product country -> __RO2SQ -> country } 2: BReturn 0 Select (country, product, nrOfReviews, avgPrice) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix xsd: Select ?country ?product ?nrOfReviews ?avgPrice { { Select ?country (max(?nrOfReviews) As ?maxReviews) { { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product ; rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } } Group By ?country } { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } FILTER(?nrOfReviews=?maxReviews) } Order By desc(?nrOfReviews) ?country ?product } ; { { hash filler QF { Stage 1 RDF_QUAD_POGS 4.2e+03 rows(s_32_11_t4.S) P = ##type , O = #/ProductType4425 G = #/bsbm.org Stage 2 Sort hf 38 replicated(s_32_11_t4.S) } } Subquery 44 { { fork Subquery 50 { { fork Subquery 54 { { fork QF { Stage 1 RDF_QUAD_POGS 4.2e+03 rows(s_21_4_t0.S) P = ##type , O = #/ProductType4425 G = #/bsbm.org END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 Stage 2 RDF_QUAD_POGS 10 rows(s_21_4_t1.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_21_4_t2.O) inlined P = ##reviewer , S = q_s_21_4_t1.S G = #/bsbm.org Stage 4 RDF_QUAD 1 rows(s_21_4_t3.O) inlined P = #/country , S = q_s_21_4_t2.O G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_4_t1.S) 5: BReturn 0 Stage 5 Sort (set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, aggregate) qf select node output: (gb_set_no, aggregate, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_21_4_t3.O, s_21_4_t0.S, set_no) order: 4 4 2 3 After code: 0: country := := artm s_21_4_t3.O 4: product := := artm s_21_4_t0.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Sort (set_no, country) -> (nrOfReviews) } group by read node (gb_set_no, country, aggregate) After code: 0: country := := artm country 4: maxReviews := := artm aggregate 8: BReturn 0 Subquery Select(country, maxReviews) } Subquery 246 { { fork QF { Stage 1 RDF_QUAD_POGS 4.2e+03 rows(s_41_17_t7.S) P = ##type , O = #/ProductType4425 G = #/bsbm.org Stage 2 RDF_QUAD_POGS 10 rows(s_41_17_t8.S) P = #/reviewFor , O = lcast G = #/bsbm.org Stage 3 RDF_QUAD 1 rows(s_41_17_t9.O) inlined P = ##reviewer , S = q_s_41_17_t8.S G = #/bsbm.org Stage 4 RDF_QUAD unq 0.0011 rows (s_41_17_t10.O) inlined P = #/country , S = q_s_41_17_t9.O , O = q_q_q_q_country , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_41_17_t8.S) 5: BReturn 0 Stage 5 Sort (set_no, q_s_41_17_t10.O, q_q_q_q_s_41_17_t7.S) -> (isnotnull) ssa iterator group by read node (gb_set_no, q_s_41_17_t10.O, q_q_q_q_s_41_17_t7.S, aggregate) qf select node output: (gb_set_no, aggregate, q_s_41_17_t10.O, q_q_q_q_s_41_17_t7.S, gb_set_no) } } cl fref read output: (gb_set_no, aggregate, s_41_17_t10.O, s_41_17_t7.S, set_no) order: 4 4 2 3 END Node After test: 0: if (aggregate = maxReviews) then 4 else 5 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: country := := artm s_41_17_t10.O 4: product := := artm s_41_17_t7.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 Subquery Select(country, product, nrOfReviews) } Precode: 0: QNode { dpipe country -> __RO2SQ -> __ro2sq } 2: BReturn 0 Subquery 413 { Precode: 0: s_32_11_t4.S := := artm product 4: BReturn 0 { fork Hash source 38 0.8 rows(product) -> () QF { Stage 1 RDF_QUAD_POGS 21 rows(s_32_11_t5.S) P = #/product , O = lcast G = #/bsbm.org Stage 2 RDF_QUAD 1 rows(s_32_11_t6.O) inlined P = #/price , S = q_s_32_11_t5.S G = #/bsbm.org After code: 0: temp := artm s_32_11_t6.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 Stage 3 Sort (set_no, q_q_q_s_32_11_t4.S) -> (isnotnull, temp) ssa iterator group by read node (gb_set_no, q_q_q_s_32_11_t4.S, aggregate, aggregate) qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_32_11_t4.S) } } cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_32_11_t4.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_32_11_t4.S 8: avgPrice := := artm temp 12: BReturn 0 Subquery Select(product, avgPrice) } Precode: 0: QNode { dpipe product -> __ID2In -> __id2in } 2: BReturn 0 Sort (maxReviews, __ro2sq, __id2in) -> (avgPrice) } Key from temp (__ro2sq, __id2in, maxReviews, avgPrice) After code: 0: country := := artm __ro2sq 4: product := := artm __id2in 8: nrOfReviews := := artm maxReviews 12: avgPrice := := artm avgPrice 16: BReturn 0 Subquery Select(country, product, nrOfReviews, avgPrice) } After code: 0: QNode { dpipe avgPrice -> __RO2SQ -> avgPrice nrOfReviews -> __RO2SQ -> nrOfReviews product -> __RO2SQ -> product country -> __RO2SQ -> country } 2: BReturn 0 Select (country, product, nrOfReviews, avgPrice) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix xsd: Select ?country ?product ?nrOfReviews ?avgPrice { { Select ?country (max(?nrOfReviews) As ?maxReviews) { { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product ; rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } } Group By ?country } { Select ?product (avg(?price) As ?avgPrice) { ?product a . ?offer bsbm:product ?product . ?offer bsbm:price ?price . } Group By ?product } { Select ?country ?product (count(?review) As ?nrOfReviews) { ?product a . ?review bsbm:reviewFor ?product . ?review rev:reviewer ?reviewer . ?reviewer bsbm:country ?country . } Group By ?country ?product } FILTER(?nrOfReviews=?maxReviews) } Order By desc(?nrOfReviews) ?country ?product } ; { time 3.6e-05% fanout 1 input 1 rows time 0.0068% fanout 1 input 1 rows { hash filler wait time 0.5% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.0022% fanout 2802 input 1 rows RDF_QUAD_POGS 2.8e+03 rows(s_32_11_t4.S) P = ##type , O = #/ProductType12712 G = #/bsbm.org time 0.0087% fanout 2 input 2802 rows Stage 2 time 0.0052% fanout 0 input 11208 rows Sort hf 38 replicated(s_32_11_t4.S) } } Subquery 44 { time 5.4e-05% fanout 1 input 1 rows { fork Subquery 50 { time 3.7e-05% fanout 1 input 1 rows { fork Subquery 54 { time 0.0063% fanout 1 input 1 rows { fork wait time 0.37% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.0019% fanout 2802 input 1 rows RDF_QUAD_POGS 2.8e+03 rows(s_21_4_t0.S) P = ##type , O = #/ProductType12712 G = #/bsbm.org time 0.00045% fanout 1 input 2802 rows END Node After test: 0: if ( 0 = 1 ) then 5 else 4 unkn 5 4: BReturn 1 5: BReturn 0 time 0.069% fanout 0.486081 input 2802 rows Stage 2 time 1.2% fanout 10.0103 input 2802 rows RDF_QUAD_POGS 10 rows(s_21_4_t1.S) P = #/reviewFor , O = lcast G = #/bsbm.org time 1.2% fanout 0.976684 input 28049 rows Stage 3 time 6.4% fanout 1 input 28049 rows RDF_QUAD 1 rows(s_21_4_t2.O) inlined P = ##reviewer , S = q_s_21_4_t1.S G = #/bsbm.org time 4% fanout 0.996898 input 28049 rows Stage 4 time 6.3% fanout 1 input 28049 rows RDF_QUAD 1 rows(s_21_4_t3.O) inlined P = #/country , S = q_s_21_4_t2.O G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_21_4_t1.S) 5: BReturn 0 time 11% fanout 0.958893 input 28049 rows Stage 5 time 0.47% fanout 0 input 28049 rows Sort (set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S) -> (isnotnull) time 1.9e-05% fanout 0 input 0 rows ssa iterator time 0.057% fanout 3479 input 4 rows group by read node (gb_set_no, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, aggregate) time 0.014% fanout 0 input 13916 rows qf select node output: (gb_set_no, aggregate, q_s_21_4_t3.O, q_q_q_q_s_21_4_t0.S, gb_set_no) } } time 0.11% fanout 13916 input 1 rows cl fref read output: (gb_set_no, aggregate, s_21_4_t3.O, s_21_4_t0.S, set_no) order: 4 4 2 3 After code: 0: country := := artm s_21_4_t3.O 4: product := := artm s_21_4_t0.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 time 3.8e-05% fanout 0 input 13916 rows Subquery Select(country, product, nrOfReviews) } time 0.021% fanout 0 input 13916 rows Sort (set_no, country) -> (nrOfReviews) } time 0.00048% fanout 10 input 1 rows group by read node (gb_set_no, country, aggregate) After code: 0: country := := artm country 4: maxReviews := := artm aggregate 8: BReturn 0 time 6.8e-06% fanout 0 input 10 rows Subquery Select(country, maxReviews) } Subquery 246 { time 0.0079% fanout 1 input 10 rows { fork wait time 0.99% of exec real time, fanout 0 QF { time 0% fanout 0 input 0 rows Stage 1 time 0.017% fanout 2802 input 10 rows RDF_QUAD_POGS 2.8e+03 rows(s_41_17_t7.S) P = ##type , O = #/ProductType12712 G = #/bsbm.org time 1.3% fanout 0.486081 input 28020 rows Stage 2 time 3.1% fanout 10.0103 input 28020 rows RDF_QUAD_POGS 10 rows(s_41_17_t8.S) P = #/reviewFor , O = lcast G = #/bsbm.org time 5.3% fanout 0.985864 input 280490 rows Stage 3 time 14% fanout 1 input 280490 rows RDF_QUAD 1 rows(s_41_17_t9.O) inlined P = ##reviewer , S = q_s_41_17_t8.S G = #/bsbm.org time 9.7% fanout 0.954793 input 280490 rows Stage 4 time 17% fanout 0.1 input 280490 rows RDF_QUAD unq 0.0011 rows (s_41_17_t10.O) inlined P = #/country , S = q_s_41_17_t9.O , O = q_q_q_q_country , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_41_17_t8.S) 5: BReturn 0 time 16% fanout 0.999644 input 28049 rows Stage 5 time 0.69% fanout 0 input 28049 rows Sort (set_no, q_s_41_17_t10.O, q_q_q_q_s_41_17_t7.S) -> (isnotnull) time 1.7e-05% fanout 0 input 0 rows ssa iterator time 0.059% fanout 3479 input 4 rows group by read node (gb_set_no, q_s_41_17_t10.O, q_q_q_q_s_41_17_t7.S, aggregate) time 0.014% fanout 0 input 13916 rows qf select node output: (gb_set_no, aggregate, q_s_41_17_t10.O, q_q_q_q_s_41_17_t7.S, gb_set_no) } } time 0.033% fanout 1391.6 input 10 rows cl fref read output: (gb_set_no, aggregate, s_41_17_t10.O, s_41_17_t7.S, set_no) order: 4 4 2 3 END Node After test: 0: if (aggregate = maxReviews) then 4 else 5 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: country := := artm s_41_17_t10.O 4: product := := artm s_41_17_t7.S 8: nrOfReviews := := artm aggregate 12: BReturn 0 time 4.2e-05% fanout 0 input 31 rows Subquery Select(country, product, nrOfReviews) } Precode: 0: QNode { time 0% fanout 0 input 0 rows dpipe country -> __RO2SQ -> __ro2sq } 2: BReturn 0 Subquery 413 { time 0.0028% fanout 1 input 31 rows Precode: 0: s_32_11_t4.S := := artm product 4: BReturn 0 { fork time 0.00024% fanout 1 input 31 rows Hash source 38 0.8 rows(product) -> () wait time 1.9% of exec real time, fanout 0 QF { time 0.0051% fanout 0 input 0 rows Stage 1 time 0.022% fanout 30.2258 input 31 rows RDF_QUAD_POGS 21 rows(s_32_11_t5.S) P = #/product , O = lcast G = #/bsbm.org time 0.27% fanout 0.954109 input 937 rows Stage 2 time 0.48% fanout 1 input 937 rows RDF_QUAD 1 rows(s_32_11_t6.O) inlined P = #/price , S = q_s_32_11_t5.S G = #/bsbm.org After code: 0: temp := artm s_32_11_t6.O + 0 4: isnotnull := Call isnotnull (temp) 9: BReturn 0 time 0.25% fanout 0.985059 input 937 rows Stage 3 time 0.036% fanout 0 input 937 rows Sort (set_no, q_q_q_s_32_11_t4.S) -> (isnotnull, temp) time 2.7e-05% fanout 0 input 0 rows ssa iterator time 0.0065% fanout 3.875 input 8 rows group by read node (gb_set_no, q_q_q_s_32_11_t4.S, aggregate, aggregate) time 0.00073% fanout 0 input 31 rows qf select node output: (gb_set_no, aggregate, aggregate, gb_set_no, q_q_q_s_32_11_t4.S) } } time 0.022% fanout 1 input 31 rows cl fref read output: (gb_set_no, aggregate, aggregate, set_no, s_32_11_t4.S) order: 3 3 4 After code: 0: temp := artm aggregate / aggregate 4: product := := artm s_32_11_t4.S 8: avgPrice := := artm temp 12: BReturn 0 time 3.5e-05% fanout 0 input 31 rows Subquery Select(product, avgPrice) } time 0.026% fanout 0 input 31 rows Precode: 0: QNode { time 0% fanout 0 input 0 rows dpipe product -> __ID2In -> __id2in } 2: BReturn 0 Sort (maxReviews, __ro2sq, __id2in) -> (avgPrice) } time 0.00038% fanout 31 input 1 rows Key from temp (__ro2sq, __id2in, maxReviews, avgPrice) After code: 0: country := := artm __ro2sq 4: product := := artm __id2in 8: nrOfReviews := := artm maxReviews 12: avgPrice := := artm avgPrice 16: BReturn 0 time 1.2e-05% fanout 0 input 31 rows Subquery Select(country, product, nrOfReviews, avgPrice) } After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe avgPrice -> __RO2SQ -> avgPrice nrOfReviews -> __RO2SQ -> nrOfReviews product -> __RO2SQ -> product country -> __RO2SQ -> country } 2: BReturn 0 time 2.1e-05% fanout 0 input 31 rows Select (country, product, nrOfReviews, avgPrice) } sparql {define input:default-graph-uri prefix bsbm: prefix bsbm-inst: prefix rev: prefix dc: prefix xsd: Select ?product (xsd:float(?monthCount)/?monthBeforeCount As ?ratio) { { Select ?product (count(?review) As ?monthCount) { ?review bsbm:reviewFor ?product . ?review dc:date ?date . Filter(?date >= "2008-03-10"^^ && ?date < "2008-04-07"^^) } Group By ?product } { Select ?product (count(?review) As ?monthBeforeCount) { ?review bsbm:reviewFor ?product . ?review dc:date ?date . Filter(?date >= "2008-02-11"^^ && ?date < "2008-03-10"^^) # } Group By ?product Having (count(?review)>0) } } Order By desc(xsd:float(?monthCount) / ?monthBeforeCount) ?product Limit 10 } ; { time 2e-07% fanout 1 input 1 rows Subquery 27 { time 3.9e-07% fanout 1 input 1 rows { fork Subquery 31 { time 3.3e-05% fanout 1 input 1 rows { fork wait time 0.33% of exec real time, fanout 0 QF { time 0.0018% fanout 0 input 0 rows Stage 1 time 1.2% fanout 5.93387e+06 input 48 rows RDF_QUAD 2.5e+08 rows(s_26_6_t2.S, s_26_6_t2.O) inlined P = #/reviewFor G = #/bsbm.org time 10% fanout 0.0881385 input 2.84826e+08 rows RDF_QUAD 0.029 rows() P = #/date , S = s_26_6_t2.S , O >= < O >= < , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_26_6_t2.S) 5: BReturn 0 time 0.89% fanout 0.985028 input 2.51041e+07 rows Stage 2 time 1.8% fanout 0 input 2.51041e+07 rows Sort (q_s_26_6_t2.O) -> (isnotnull) time 1.6e-07% fanout 0 input 0 rows ssa iterator time 0.2% fanout 3.89532e+06 input 4 rows group by read node (q_s_26_6_t2.O, aggregate) time 0.00021% fanout 0 input 1.55813e+07 rows qf select node output: (aggregate, q_s_26_6_t2.O, set_no) } } time 0.13% fanout 1.55813e+07 input 1 rows cl fref read output: (aggregate, s_26_6_t2.O, set_no) order: 2 1 END Node After test: 0: if ( 0 < aggregate) then 4 else 5 unkn 5 4: BReturn 1 5: BReturn 0 After code: 0: product := := artm s_26_6_t2.O 4: monthBeforeCount := := artm aggregate 8: BReturn 0 time 8.4e-06% fanout 0 input 1.55813e+07 rows Subquery Select(product, monthBeforeCount) } Subquery 135 { time 0.00052% fanout 1 input 1.55813e+07 rows { fork wait time 2.1% of exec real time, fanout 0 QF { time 0.015% fanout 0 input 0 rows Stage 1 time 3.1% fanout 12.2377 input 1.55813e+07 rows RDF_QUAD_POGS 10 rows(s_16_2_t0.S, s_16_2_t0.O) P = #/reviewFor , O = q_product G = #/bsbm.org time 4.4% fanout 0.903757 input 1.90679e+08 rows Stage 2 time 62% fanout 0.104141 input 1.90679e+08 rows RDF_QUAD 0.16 rows() P = #/date , S = q_s_16_2_t0.S , O >= < O >= < , G = #/bsbm.org After code: 0: isnotnull := Call isnotnull (s_16_2_t0.S) 5: BReturn 0 time 0.92% fanout 0.990032 input 1.98575e+07 rows Stage 3 time 0.94% fanout 0 input 1.98575e+07 rows Sort (set_no, q_q_s_16_2_t0.O) -> (isnotnull) time 4.6e-06% fanout 0 input 0 rows ssa iterator time 0.16% fanout 80804.4 input 132 rows group by read node (gb_set_no, q_q_s_16_2_t0.O, aggregate) time 0.00035% fanout 0 input 1.06662e+07 rows qf select node output: (gb_set_no, aggregate, q_q_s_16_2_t0.O, gb_set_no) } } time 0.13% fanout 0.684551 input 1.55813e+07 rows cl fref read output: (gb_set_no, aggregate, s_16_2_t0.O, set_no) order: 3 3 2 After code: 0: product := := artm s_16_2_t0.O 4: monthCount := := artm aggregate 8: BReturn 0 time 9.2e-06% fanout 0 input 1.06662e+07 rows Subquery Select(product, monthCount) } time 14% fanout 0 input 1.06662e+07 rows Precode: 0: _cvt := Call _cvt (, monthCount) 5: temp := artm _cvt / monthBeforeCount 9: QNode { time 0% fanout 0 input 0 rows dpipe product -> __RO2SQ -> __ro2sq } 11: BReturn 0 Sort (temp, __ro2sq) } time 1.9e-05% fanout 10 input 1 rows top order by read (__ro2sq, temp) After code: 0: product := := artm __ro2sq 4: ratio := := artm temp 8: BReturn 0 time 1.7e-07% fanout 0 input 10 rows Subquery Select(product, ratio) } After code: 0: QNode { time 0% fanout 0 input 0 rows dpipe ratio -> __RO2SQ -> ratio product -> __RO2SQ -> product } 2: BReturn 0 time 2.1e-07% fanout 0 input 10 rows Select (product, ratio) } prof_enable (0) ; { Precode: 0: := Call prof_enable ( 0 ) 5: BReturn 0 END Node } 26 Rows. -- 86 msec. SQL> SQL> SQL> SQL>