Kim Ahlstrøm Jakobsen, Alex B. Andersen, Katja Hose, Torben Bach Pedersen
In: Proceedings of the 6th International Workshop on Consuming Linked Data (COLD 2015) co-located with the 14th International Semantic Web Conference (ISWC 2015)
In today's data-driven world, analytical querying, typically based on the data cube concept, is the cornerstone of answering important business questions and making data-driven decisions. Traditionally, the underlying analytical data was mostly internal to the organization and stored in relational data ware houses and data cubes. Today, external data sources are essential for analytics and, as the Semantic Web gains popularity, more and more external sources are available in native RDF. With the recent SPARQL 1.1 standard, performing analytical queries over RDF data sources has finally become feasible. However, unlike their relational counterparts, RDF data cubes stores lack optimizations that enable fast querying. In this paper, we present an approach to optimizing RDF data cubes that is based on three novel cube patterns that optimize RDF data cubes, as well as associated algorithms that transform the RDF data cube. An extensive experimental evaluation shows that the approach allows trading additional storage and/or load times in return for significantly increased query performance. We further provide guidelines for which patterns to apply for specific scenarios and systems.
The implementation and the code for running the experiments are available at the following two GitHub projects.
This program generates a series of SPARQL construct queries that create the snowflake pattern and fully denormalized pattern cubes.
This Java program uses Apache Maven to manage dependencies.
The SWOD Tools project contains generated SPARQL queries, thus it is not necessary to run the SWOD program in order to run the experiments.
These tools will allow you to generate the TPC-H data in triples (generate.sh), load the data into Virtuoso and Apache Jena (load.sh), run the TPC-H queries on the triple stores (query.sh), and analyse the results by comparing the queries (extractQueryTimes.py, compareResults.py).
All scripts are written in bash and Python, which might result in some problem on windows systems.
The batch scripts take a series of "sources" as input, these modular configurations files are located in the "source" folder. Be aware the these configuration files need to be set up manually before running any of the programs.
The Python scripts have a help flag (--help) that displays the allowed parameters.
Download and install the following program
Create configuration files (source files) that match your system (source/machine/) and wanted configuration (scale factor etc.)
Generate or download the dataset
Generation requires Virtuoso for running the construct queries
Install Virtuoso or Apache Jena
Load the data into the Jena TDB or Virtuoso by using the appropriate configuration files
Change the querymix configuration (source/) to match which queries you want to execute, run the querymix.sh program to propagate these settings.
Run the query.sh script with the appropriate configuration files to start the experiments
Use the extractQueryTimes.py on the generated logfiles (logs/) to extract and aggregate the query times.
The experiments can now be compare using the compareResults.py script
Feel free to post bug report and ask questions.
| Scale 0.1 | Scale 0.2 | Scale 0.3 | Scale 0.5 | |
|---|---|---|---|---|
| Snowflake | Download | Download | Download | Download |
| Star | Download | Download | Download | Download |
| Denormalized | Download | Download | Download | Download |
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix ltpch: <http://extbi.lab.aau.dk/ontology/ltpch/>
select
?l_returnflag
?l_linestatus
(sum(xsd:decimal(?l_linequantity)) as ?sum_qty)
(ROUND(sum(xsd:decimal(?l_lineextendedprice))*100)/100 as ?sum_base_price)
(ROUND(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount)))*100)/100 as ?sum_disc_price)
(ROUND(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))*(1 + xsd:decimal(?l_linetax)))*100)/100 as ?sum_charge)
(ROUND(avg(xsd:decimal(?l_linequantity))*100)/100 as ?avg_qty)
(ROUND(avg(xsd:decimal(?l_lineextendedprice))*100)/100 as ?avg_price)
(ROUND(avg(xsd:decimal(?l_linediscount))*100)/100 as ?avg_disc)
(count(1) as ?count_order)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_linestatus ?l_linestatus ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linetax ?l_linetax ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linediscount ?l_linediscount .
filter (xsd:boolean(xsd:dateTime(?l_shipdate) <= xsd:dateTime(bif:dateadd ("day", -%DELTA%, "1998-12-01"^^xsd:date))))
}
group by
?l_returnflag
?l_linestatus
order by
?l_returnflag
?l_linestatus
select
?s_acctbal,
?s_name,
?nation_name,
?p_partkey,
?p_mfgr,
?s_address,
?s_phone,
?s_comment
where {
?ps a ltpch:partsupp;
ltpch:ps_has_supplier ?supp;
ltpch:ps_has_part ?part ;
ltpch:ps_supplycost ?minsc .
?supp a ltpch:supplier ;
ltpch:s_acctbal ?s_acctbal ;
ltpch:s_name ?s_name ;
ltpch:s_has_nation ?s_has_nation ;
ltpch:s_address ?s_address ;
ltpch:s_phone ?s_phone ;
ltpch:s_comment ?s_comment .
?s_has_nation ltpch:n_name ?nation_name ;
ltpch:n_has_region ?s_has_region .
?s_has_region ltpch:r_name "%REGION%" .
?part a ltpch:part ;
ltpch:p_partkey ?p_partkey ;
ltpch:p_mfgr ?p_mfgr ;
ltpch:p_size "%SIZE%" ;
ltpch:p_type ?p_type .
{ select ?part min(?s_cost) as ?minsc
where {
?ps a ltpch:partsupp;
ltpch:ps_has_part ?part;
ltpch:ps_has_supplier ?ms;
ltpch:ps_supplycost ?s_cost .
?ms ltpch:s_has_nation ?m_has_nation .
?m_has_nation ltpch:n_has_region ?m_has_region .
?m_has_region ltpch:r_name "%REGION%" .
}
}
filter (?p_type like "%%TYPE%")
}
order by
desc (?s_acctbal)
?nation_name
?s_name
?p_partkey
limit 100
select
?o_orderkey
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?revenue)
?o_orderdate
?o_shippriority
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_has_order ?ord ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:o_orderdate ?o_orderdate ;
ltpch:o_shippriority ?o_shippriority ;
ltpch:o_orderkey ?o_orderkey ;
ltpch:o_has_customer ?cust .
?cust ltpch:c_mktsegment ?c_mktsegment .
filter ((xsd:dateTime(?o_orderdate) < xsd:dateTime("%DATE%"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) > xsd:dateTime("%DATE%"^^xsd:date)) &&
(?c_mktsegment = "%SEGMENT%") )
}
group by
?o_orderkey
?o_orderdate
?o_shippriority
order by
desc (sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
?o_orderdate
limit 10
select
?o_orderpriority
(count(*) as ?order_count)
where
{
{
select distinct
?o_orderpriority
?ord
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate .
?ord ltpch:o_orderpriority ?o_orderpriority ;
ltpch:o_orderdate ?o_orderdate .
filter (
(xsd:boolean(xsd:dateTime(?l_commitdate) < xsd:dateTime(?l_receiptdate))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date))))
)
}
}
}
group by
?o_orderpriority
order by
?o_orderpriority
select
?nation
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:o_has_customer ?cust ;
ltpch:o_orderdate ?o_orderdate .
?ps ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?s_nation .
?s_nation ltpch:n_has_region ?s_region ;
ltpch:n_name ?nation .
?s_region ltpch:r_name ?r_name .
?cust ltpch:c_has_nation ?c_nation.
filter ((?c_nation = ?s_nation) &&
(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("year", 1,"%YEAR%-01-01" ^^xsd:date))) &&
(?r_name = "%REGION%") )
}
group by
?nation
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
select
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipdate ?l_shipdate .
filter ( (xsd:dateTime(?l_shipdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date))) &&
(xsd:decimal(?l_linediscount) >= %DISCOUNT% - 0.01) &&
(xsd:decimal(?l_linediscount) <= %DISCOUNT% + 0.01) &&
(xsd:decimal(?l_linequantity) < %QUANTITY%) )
}
select
?supp_nation
?cust_nation
?li_year
(sum (?volume) as ?revenue)
where {
{
select
?supp_nation
?cust_nation
?li_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:o_has_customer ?cust .
?cust ltpch:c_has_nation ?custn .
?custn ltpch:n_name ?cust_nation .
?ps ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?suppn .
?suppn ltpch:n_name ?supp_nation .
BIND (SUBSTR(STR(?l_shipdate), 1,4) as ?li_year)
filter ((
(?cust_nation = "%NATION1%" && ?supp_nation = "%NATION2%") ||
(?cust_nation = "%NATION2%" && ?supp_nation = "%NATION1%") ) &&
(xsd:dateTime(?l_shipdate) >= xsd:dateTime("1995-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) <= xsd:dateTime("1996-12-31"^^xsd:date)) )
}
}
}
group by
?supp_nation
?cust_nation
?li_year
order by
?supp_nation
?cust_nation
?li_year
select
?o_year
((?sum1 / ?sum2) as ?mkt_share)
where {
{ select
?o_year
(sum (?volume * bif:equ (?nation, "%NATION%")) as ?sum1)
(sum (?volume) as ?sum2)
where {
{ select
((YEAR (xsd:dateTime(?o_orderdate))) as ?o_year)
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
?nation
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:ps_has_supplier ?s_supplier .
?s_supplier ltpch:s_has_nation ?n2 .
?n2 ltpch:n_name ?nation .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_type ?type .
?ord ltpch:o_orderdate ?o_orderdate ;
ltpch:o_has_customer ?c_customer .
?c_customer ltpch:c_has_nation ?n_nation .
?n_nation ltpch:n_has_region ?r_region .
?r_region ltpch:r_name ?region.
filter ((xsd:dateTime(?o_orderdate) >= xsd:dateTime("1995-01-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) <= xsd:dateTime("1996-12-31"^^xsd:date) &&
?region = "%REGION%" &&
?type = "%TYPE%")
)
}
}
}
group by
?o_year
}
}
order by
?o_year
select
?nation
?o_year
(sum(?amount) as ?sum_profit)
where {
{ select
?nation
?o_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) - xsd:decimal(?ps_supplycost) * xsd:decimal(?l_linequantity)) as ?amount)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:ps_has_part ?part ;
ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?s_nation .
?s_nation ltpch:n_name ?nation .
?ord ltpch:o_orderdate ?o_orderdate .
?ps ltpch:ps_supplycost ?ps_supplycost .
?part ltpch:p_name ?p_name .
filter (REGEX (?p_name, "%COLOR%"))
BIND (SUBSTR(STR(?o_orderdate), 1,4) as ?o_year)
}
}
}
group by
?nation
?o_year
order by
?nation
desc (?o_year)
select
?c_custkey
?c_companyName
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_has_order ?ord ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:o_has_customer ?cust ;
ltpch:o_orderdate ?o_orderdate .
?cust ltpch:c_address ?c_address ;
ltpch:c_phone ?c_phone ;
ltpch:c_comment ?c_comment ;
ltpch:c_acctbal ?c_acctbal ;
ltpch:c_custkey ?c_custkey ;
ltpch:c_has_nation ?c_nation ;
ltpch:c_name ?c_companyName .
?c_nation ltpch:n_name ?nation .
filter ((xsd:boolean(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)))) &&
(xsd:boolean(?l_returnflag = "R"))
)
}
group by
?c_custkey
?c_companyName
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
limit 20
select
?bigpspart,
?bigpsvalue
where {
{ select
?bigpspart,
sum(xsd:decimal(?b_supplycost) * xsd:decimal(?b_availqty)) as ?bigpsvalue
where
{
?bigps a ltpch:partsupp ;
ltpch:ps_has_part ?bigpspart ;
ltpch:ps_supplycost ?b_supplycost ;
ltpch:ps_availqty ?b_availqty ;
ltpch:ps_has_supplier ?b_supplier .
?b_supplier ltpch:s_has_nation ?b_nation .
?b_nation ltpch:n_name "%NATION%" .
}
}
filter (?bigpsvalue > (
select
(sum(xsd:decimal(?t_supplycost) * xsd:decimal(?t_availqty) * %FRACTION%)) as ?threshold
where
{
?thr_ps a ltpch:partsupp ;
ltpch:ps_has_part ?t_part ;
ltpch:ps_supplycost ?t_supplycost ;
ltpch:ps_availqty ?t_availqty ;
ltpch:ps_has_supplier ?t_supplier .
?t_supplier ltpch:s_has_nation ?t_nation .
?t_nation ltpch:n_name "%NATION%" .
}
)
)
}
order by
desc (?bigpsvalue)
select
?l_shipmode
(sum (
bif:__or (
bif:equ (?o_orderpriority, "1-URGENT"),
bif:equ (?o_orderpriority, "2-HIGH") ) ) as ?high_line_count)
(sum (1 -
bif:__or (
bif:equ (?o_orderpriority, "1-URGENT"),
bif:equ (?o_orderpriority, "2-HIGH") ) ) as ?low_line_count)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:o_orderpriority ?o_orderpriority .
filter (xsd:boolean(?l_shipmode in ("%SHIPMODE1%", "%SHIPMODE2%")) &&
(xsd:boolean(xsd:dateTime(?l_commitdate) < xsd:dateTime(?l_receiptdate))) &&
(xsd:boolean(xsd:dateTime(?l_shipdate) < xsd:dateTime(?l_commitdate))) &&
(xsd:boolean(xsd:dateTime(?l_receiptdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?l_receiptdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date)))) )
}
group by
?l_shipmode
order by
?l_shipmode
select
?c_count
(count(1) as ?custdist)
where {
{ select
?c_custkey
(count (?ord) as ?c_count)
where
{
?cust ltpch:c_custkey ?c_custkey .
optional {
?ord a ltpch:orders ;
ltpch:o_has_customer ?cust ;
ltpch:o_comment ?o_comment .
filter (!( REGEX (?o_comment , "%WORD1%.*%WORD2%" ) ) ) .
}
}
group by
?c_custkey
}
}
group by
?c_count
order by
desc (count(1))
desc (?c_count)
select
(100 * sum(bif:equ(bif:LEFT(?p_type, 5), "PROMO") * xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount))) / sum(xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount)))) as ?promo_revenue
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_type ?p_type .
filter (xsd:dateTime(?l_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd("month", 1, "%MONTH%-01"^^xsd:date))) )
}
select
?s_suppkey
?s_name
?s_address
?s_phone
?total_revenue
where {
?supplier a ltpch:supplier ;
ltpch:s_suppkey ?s_suppkey ;
ltpch:s_name ?s_name ;
ltpch:s_address ?s_address ;
ltpch:s_phone ?s_phone .
{ select
?supplier
(sum(xsd:decimal(?l_extendedprice) * (1 - xsd:decimal(?l_discount))) as ?total_revenue)
where {
?li1 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_extendedprice ;
ltpch:l_linediscount ?l_discount ;
ltpch:l_has_partsupplier ?ps1 .
?ps1 ltpch:ps_has_supplier ?supplier .
filter (
xsd:dateTime(?l_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)) )
}
group by
?supplier
}
{ select (max (?l2_total_revenue) as ?maxtotal)
where {
{ select
?supplier2
(sum(xsd:decimal(?l2_extendedprice) * (1 - xsd:decimal(?l2_discount))) as ?l2_total_revenue)
where {
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l2_shipdate ;
ltpch:l_lineextendedprice ?l2_extendedprice ;
ltpch:l_linediscount ?l2_discount ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:ps_has_supplier ?supplier2 .
filter (
xsd:dateTime(?l2_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
xsd:dateTime(?l2_shipdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)) )
}
group by
?supplier2
}
}
}
filter (?total_revenue = ?maxtotal)
}
order by
?supplier
select
?p_brand,
?p_type,
?p_size,
(count(distinct ?supp)) as ?supplier_cnt
where {
?ps a ltpch:partsupp ;
ltpch:ps_has_part ?part ;
ltpch:ps_has_supplier ?supp .
?part ltpch:p_brand ?p_brand ;
ltpch:p_type ?p_type ;
ltpch:p_size ?p_size .
filter (
(?p_brand != "%BRAND%") &&
!(?p_type like "%TYPE%%") &&
(xsd:integer(?p_size) in (%SIZE1%, %SIZE2%, %SIZE3%, %SIZE4%, %SIZE5%, %SIZE6%, %SIZE7%, %SIZE8%))
)
filter NOT EXISTS {
?supp a ltpch:supplier;
ltpch:s_comment ?badcomment .
filter (?badcomment like "%Customer%Complaints%")
}
}
group by
?p_brand
?p_type
?p_size
order by
desc ((count(distinct ?supp)))
?p_brand
?p_type
?p_size
select
((sum(xsd:decimal(?l_lineextendedprice)) / 7.0) as ?avg_yearly)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_brand ?p_brand ;
ltpch:p_container ?p_container .
{
select
?part
((0.2 * avg(xsd:decimal(?l2_linequantity))) as ?threshold)
where {
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:ps_has_part ?part .
}
group by
?part
}
filter (xsd:decimal(?l_linequantity) < ?threshold && REGEX(?p_brand,"%BRAND%","i") && ?p_container = "%CONTAINER%")
}
select
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
(sum(xsd:decimal(?l_linequantity)) as ?l_quantity)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_order ?ord .
?ord ltpch:o_orderkey ?o_orderkey ;
ltpch:o_orderdate ?o_orderdate ;
ltpch:o_ordertotalprice ?o_ordertotalprice ;
ltpch:o_has_customer ?cust .
?cust ltpch:c_custkey ?c_custkey ;
ltpch:c_name ?c_name .
{ select
?sum_order
(sum (xsd:decimal(?l2_linequantity)) as ?sum_q)
where {
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_order ?sum_order .
}
group by ?sum_order
} .
filter (?sum_order = ?ord && xsd:decimal(?sum_q) > xsd:decimal(%QUANTITY%))
}
group by
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
order by
desc (?o_ordertotalprice)
?o_orderdate
limit 100
select
((sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipinstruct ?l_shipinstruct ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_brand ?p_brand ;
ltpch:p_size ?p_size ;
ltpch:p_container ?p_container .
filter (?l_shipmode in ("AIR", "AIR REG") &&
?l_shipinstruct = "DELIVER IN PERSON" &&
( ( (REGEX(?p_brand,"^%BRAND1%$","i")) &&
(?p_container in ("SM CASE", "SM BOX", "SM PACK", "SM PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY1%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY1% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 5) ) ||
( (REGEX(?p_brand,"^%BRAND2%$","i")) &&
(?p_container in ("MED BAG", "MED BOX", "MED PKG", "MED PACK")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY2%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY2% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 10) ) ||
( (REGEX(?p_brand,"^%BRAND3%$","i")) &&
(?p_container in ("LG CASE", "LG BOX", "LG PACK", "LG PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY3%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY3% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 15) ) ) )
}
select
?s_name
?s_address
where
{
?supp ltpch:s_name ?s_name ;
ltpch:s_address ?s_address .
{
select distinct
?supp
where
{
?big_ps ltpch:ps_has_part ?part ;
ltpch:ps_availqty ?big_ps_availqty ;
ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?s_nation .
?s_nation ltpch:n_name ?n_name .
?part ltpch:p_name ?p_name .
filter (REGEX (?p_name , "^%COLOR%") &&
?n_name = "%NATION%" &&
xsd:decimal(?big_ps_availqty) > ?qty_threshold)
{
select
((0.5 * sum(xsd:decimal(?l_linequantity))) as ?qty_threshold)
?big_ps
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?big_ps .
filter ((xsd:dateTime(?l_shipdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date)))
)
}
group by
?big_ps
}
}
}
}
order by ?s_name
select
?s_name
(count(1) as ?numwait)
where {
?li1 qb:dataSet ltpch:lineitemCube;
ltpch:l_receiptdate ?l1_receiptdate ;
ltpch:l_commitdate ?l1_commitdate ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord .
?ps ltpch:ps_has_supplier ?supp .
?supp ltpch:s_name ?s_name ;
ltpch:s_has_nation ?s_nation .
?ord ltpch:o_orderstatus ?orderstatus .
?s_nation ltpch:n_name ?name
filter (
xsd:boolean(xsd:dateTime(?l1_receiptdate) > xsd:dateTime(?l1_commitdate)) &&
?name = "%NATION%" &&
?orderstatus = "F"
)
filter exists {
?li2 ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:ps_has_supplier ?supp2 .
filter (?supp != ?supp2)
}
filter not exists {
?li3 ltpch:l_has_order ?ord ;
ltpch:l_receiptdate ?l3_receiptdate ;
ltpch:l_commitdate ?l3_commitdate ;
ltpch:l_has_partsupplier ?ps3 .
?ps3 ltpch:ps_has_supplier ?supp3 .
filter (
xsd:boolean(xsd:dateTime(?l3_receiptdate) > xsd:dateTime(?l3_commitdate)) &&
?supp3 != ?supp
)
}
}
group by
?s_name
order by
desc (count(1))
?s_name
limit 100
select
(bif:LEFT (?c_phone, 2)) as ?cntrycode,
(count (1)) as ?numcust,
sum (xsd:decimal(?c_acctbal)) as ?totacctbal
where {
?cust a ltpch:customer ;
ltpch:c_acctbal ?c_acctbal ;
ltpch:c_phone ?c_phone .
{
select (avg (xsd:decimal(?c_acctbal2))) as ?acctbal_threshold
where
{
?cust2 a ltpch:customer ;
ltpch:c_acctbal ?c_acctbal2 ;
ltpch:c_phone ?c_phone2 .
filter ((xsd:decimal(?c_acctbal2) > 0.00) &&
bif:LEFT (?c_phone2, 2) in (%COUNTRY_CODE_SET%) )
}
}
filter (
bif:LEFT (?c_phone, 2) in (%COUNTRY_CODE_SET%) &&
(xsd:decimal(?c_acctbal) > ?acctbal_threshold )
)
filter not exists { ?ord ltpch:o_has_customer ?cust }
}
group by (bif:LEFT (?c_phone, 2))
order by (bif:LEFT (?c_phone, 2))
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix ltpch: <http://extbi.lab.aau.dk/ontology/ltpch/>
select
?l_returnflag
?l_linestatus
(sum(xsd:decimal(?l_linequantity)) as ?sum_qty)
(ROUND(sum(xsd:decimal(?l_lineextendedprice))*100)/100 as ?sum_base_price)
(ROUND(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount)))*100)/100 as ?sum_disc_price)
(ROUND(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))*(1 + xsd:decimal(?l_linetax)))*100)/100 as ?sum_charge)
(ROUND(avg(xsd:decimal(?l_linequantity))*100)/100 as ?avg_qty)
(ROUND(avg(xsd:decimal(?l_lineextendedprice))*100)/100 as ?avg_price)
(ROUND(avg(xsd:decimal(?l_linediscount))*100)/100 as ?avg_disc)
(count(1) as ?count_order)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_linestatus ?l_linestatus ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linetax ?l_linetax ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linediscount ?l_linediscount .
filter (xsd:dateTime(?l_shipdate) <= xsd:dateTime(bif:dateadd ("day", -%DELTA%, "1998-12-01"^^xsd:date)))
}
group by
?l_returnflag
?l_linestatus
order by
?l_returnflag
?l_linestatus
select
?s_acctbal,
?s_name,
?nation_name,
?p_partkey,
?p_mfgr,
?s_address,
?s_phone,
?s_comment
where {
?ps ltpch:supplier_acctbal ?s_acctbal ;
ltpch:supplier_name ?s_name ;
ltpch:partsupplier_supplycost ?minsc ;
ltpch:supplier_address ?s_address ;
ltpch:supplier_phone ?s_phone ;
ltpch:supplier_comment ?s_comment ;
ltpch:nation_name ?nation_name ;
ltpch:region_name "%REGION%" ;
ltpch:part_partkey ?p_partkey ;
ltpch:part_mfgr ?p_mfgr ;
ltpch:part_size ?size ;
ltpch:part_type ?p_type .
FILTER (?size = str(%SIZE%) && contains(?p_type, "%TYPE%"))
{ select ?p_partkey min(?s_cost) as ?minsc
where {
?ps ltpch:part_partkey ?p_partkey;
ltpch:partsupplier_supplycost ?s_cost ;
ltpch:region_name ?region2 .
filter (?region2 = "%REGION%")
}
}
}
order by
desc (?s_acctbal)
?nation_name
?s_name
?p_partkey
limit 100
select
?o_orderkey
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?revenue)
?o_orderdate
?o_shippriority
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_has_order ?ord ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:order_shippriority ?o_shippriority ;
ltpch:order_orderkey ?o_orderkey ;
ltpch:customer_mktsegment ?c_mktsegment .
filter ((xsd:dateTime(?o_orderdate) < xsd:dateTime("%DATE%"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) > xsd:dateTime("%DATE%"^^xsd:date)) &&
(?c_mktsegment = "%SEGMENT%") )
}
group by
?o_orderkey
?o_orderdate
?o_shippriority
order by
desc (sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
?o_orderdate
limit 10
select
?o_orderpriority
(count(*) as ?order_count)
where
{
{
select distinct
?o_orderpriority
?ord
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate .
?ord ltpch:order_orderpriority ?o_orderpriority ;
ltpch:order_orderdate ?o_orderdate .
filter (
(xsd:boolean(xsd:dateTime(?l_commitdate) < xsd:dateTime(?l_receiptdate))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date))))
)
}
}
}
group by
?o_orderpriority
order by
?o_orderpriority
select
?nation
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:nation_name ?c_nation .
?ps ltpch:nation_name ?nation ;
ltpch:region_name ?r_name .
filter ((?c_nation = ?nation) &&
(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("year", 1,"%YEAR%-01-01" ^^xsd:date))) &&
(?r_name = "%REGION%") )
}
group by
?nation
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
select
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipdate ?l_shipdate .
filter ( (xsd:dateTime(?l_shipdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date))) &&
(xsd:decimal(?l_linediscount) >= %DISCOUNT% - 0.01) &&
(xsd:decimal(?l_linediscount) <= %DISCOUNT% + 0.01) &&
(xsd:decimal(?l_linequantity) < %QUANTITY%) )
}
select
?supp_nation
?cust_nation
?li_year
(sum (xsd:decimal(?volume)) as ?revenue)
where {
{
select
?supp_nation
?cust_nation
?li_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:nation_name ?cust_nation .
?ps ltpch:nation_name ?supp_nation .
BIND (SUBSTR(STR(?l_shipdate), 1,4) as ?li_year)
filter ((
(?cust_nation = "%NATION1%" && ?supp_nation = "%NATION2%") ||
(?cust_nation = "%NATION2%" && ?supp_nation = "%NATION1%") ) &&
(xsd:dateTime(?l_shipdate) >= xsd:dateTime("1995-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) <= xsd:dateTime("1996-12-31"^^xsd:date)) )
}
}
}
group by
?supp_nation
?cust_nation
?li_year
order by
?supp_nation
?cust_nation
?li_year
select
?o_year
((?sum1 / ?sum2) as ?mkt_share)
where {
{ select
?o_year
(sum (?volume * bif:equ (?nation, "%NATION%")) as ?sum1)
(sum (?volume) as ?sum2)
where {
{ select
((YEAR(xsd:dateTime(?o_orderdate))) as ?o_year)
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
?nation
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:nation_name ?nation ;
ltpch:part_type ?type .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:region_name ?region .
filter ((xsd:dateTime(?o_orderdate) >= xsd:dateTime("1995-01-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) <= xsd:dateTime("1996-12-31"^^xsd:date) &&
?region = "%REGION%" &&
?type = "%TYPE%")
)
}
}
}
group by
?o_year
}
}
order by
?o_year
select
?nation
?o_year
(sum(?amount) as ?sum_profit)
where {
{ select
?nation
?o_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) - xsd:decimal(?ps_supplycost) * xsd:decimal(?l_linequantity)) as ?amount)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:nation_name ?nation ;
ltpch:partsupplier_supplycost ?ps_supplycost ;
ltpch:part_name ?p_name .
?ord ltpch:order_orderdate ?o_orderdate .
filter (REGEX (?p_name, "%COLOR%"))
BIND (SUBSTR(STR(?o_orderdate), 1,4) as ?o_year)
}
}
}
group by
?nation
?o_year
order by
?nation
desc (?o_year)
select
?c_custkey
?c_companyName
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_has_order ?ord ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:customer_address ?c_address ;
ltpch:customer_phone ?c_phone ;
ltpch:customer_comment ?c_comment ;
ltpch:customer_acctbal ?c_acctbal ;
ltpch:customer_custkey ?c_custkey ;
ltpch:customer_name ?c_companyName ;
ltpch:nation_name ?nation .
filter ((xsd:dateTime(?o_orderdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date))) &&
(?l_returnflag = "R")
)
}
group by
?c_custkey
?c_companyName
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
limit 20
select
?bigpspart,
?bigpsvalue
where {
{ select
?bigpspart,
sum(xsd:decimal(?b_supplycost) * xsd:decimal(?b_availqty)) as ?bigpsvalue
where
{
?bigps ltpch:part_partkey ?bigpspart ;
ltpch:partsupplier_supplycost ?b_supplycost ;
ltpch:partsupplier_availqty ?b_availqty ;
ltpch:nation_name "%NATION%" .
}
}
filter (?bigpsvalue > (
select
(sum(xsd:decimal(?t_supplycost) * xsd:decimal(?t_availqty)) * %FRACTION%) as ?threshold
where
{
?thr_ps ltpch:partsupplier_supplycost ?t_supplycost ;
ltpch:partsupplier_availqty ?t_availqty ;
ltpch:nation_name "%NATION%" .
}
))
}
order by
desc (?bigpsvalue)
select
?l_shipmode
(sum (
bif:__or (
bif:equ (?o_orderpriority, "1-URGENT"),
bif:equ (?o_orderpriority, "2-HIGH") ) ) as ?high_line_count)
(sum (1 -
bif:__or (
bif:equ (?o_orderpriority, "1-URGENT"),
bif:equ (?o_orderpriority, "2-HIGH") ) ) as ?low_line_count)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:order_orderpriority ?o_orderpriority .
filter (xsd:boolean(?l_shipmode in ("%SHIPMODE1%", "%SHIPMODE2%")) &&
(xsd:boolean(xsd:dateTime(?l_commitdate) < xsd:dateTime(?l_receiptdate))) &&
(xsd:boolean(xsd:dateTime(?l_shipdate) < xsd:dateTime(?l_commitdate))) &&
(xsd:boolean(xsd:dateTime(?l_receiptdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?l_receiptdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date)))) )
}
group by
?l_shipmode
order by
?l_shipmode
select
?c_count
(count(1) as ?custdist)
where {
{ select
?c_custkey
(count (?o_comment) as ?c_count)
where
{
?ord ltpch:customer_custkey ?c_custkey .
optional {
?ord ltpch:order_comment ?o_comment .
filter (!( REGEX (?o_comment , "%WORD1%.*%WORD2%" ) ) ) .
}
}
group by
?c_custkey
}
}
group by
?c_count
order by
desc (count(1))
desc (?c_count)
select
((100 * ?sum1 / ?sum2 ) as ?promo_revenue)
where
{
select
(sum (
bif:equ(SUBSTR(?p_type, 1, 5), "PROMO") *
xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) ) as ?sum1)
(sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) ) as ?sum2)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_has_partsupplier ?part .
?part ltpch:part_type ?p_type .
filter ((xsd:dateTime(?l_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd("month", 1, "%MONTH%-01"^^xsd:date))) )
}
}
select distinct
?s_suppkey
?s_name
?s_address
?s_phone
?total_revenue
where
{
?partsupp ltpch:supplier_suppkey ?s_suppkey ;
ltpch:supplier_name ?s_name ;
ltpch:supplier_address ?s_address ;
ltpch:supplier_phone ?s_phone .
{
select
?s_suppkey
((sum(xsd:decimal(?l_extendedprice) * (1 - xsd:decimal(?l_discount)))) as ?total_revenue)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_extendedprice ;
ltpch:l_linediscount ?l_discount ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:supplier_suppkey ?s_suppkey .
filter (
xsd:dateTime(?l_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)) )
}
group by
?s_suppkey
} .
{
select
(max (?l2_total_revenue) as ?maxtotal)
where
{
{
select
((sum(xsd:decimal(?l2_extendedprice) * (1 - xsd:decimal(?l2_discount)))) as ?l2_total_revenue)
where
{
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l2_shipdate ;
ltpch:l_lineextendedprice ?l2_extendedprice ;
ltpch:l_linediscount ?l2_discount ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:supplier_suppkey ?s_suppkey2 .
filter (
xsd:dateTime(?l2_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
xsd:dateTime(?l2_shipdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)) )
}
group by
?s_suppkey2
}
}
}
filter (?total_revenue = ?maxtotal)
}
order by
?s_suppkey
select
?p_brand,
?p_type,
?p_size,
(count(distinct ?supp)) as ?supplier_cnt
where {
?ps ltpch:part_brand ?p_brand ;
ltpch:part_type ?p_type ;
ltpch:part_size ?p_size ;
ltpch:supplier_suppkey ?supp .
filter (
(?p_brand != "%BRAND%") &&
!(?p_type like "%TYPE%%") &&
(xsd:integer(?p_size) in (%SIZE1%, %SIZE2%, %SIZE3%, %SIZE4%, %SIZE5%, %SIZE6%, %SIZE7%, %SIZE8%))
)
filter NOT EXISTS {
?ps ltpch:supplier_comment ?badcomment .
filter (?badcomment like "%Customer%Complaints%")
}
}
group by
?p_brand
?p_type
?p_size
order by
desc ((count(distinct ?supp)))
?p_brand
?p_type
?p_size
select
((sum(xsd:decimal(?l_lineextendedprice)) / 7.0) as ?avg_yearly)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:part_partkey ?p_partkey.
{
select
?p_partkey
((0.2 * avg(xsd:decimal(?l2_linequantity))) as ?threshold)
where {
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:part_partkey ?p_partkey ;
ltpch:part_container ?p_container ;
ltpch:part_brand ?p_brand .
filter (REGEX(?p_brand,"%BRAND%","i") && ?p_container = "%CONTAINER%" )
}
group by
?p_partkey
}
filter (xsd:decimal(?l_linequantity) < xsd:decimal(?threshold))
}
select
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
(sum(xsd:decimal(?l_linequantity)) as ?l_quantity)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_order ?ord .
?ord ltpch:order_orderkey ?o_orderkey ;
ltpch:order_orderdate ?o_orderdate ;
ltpch:order_ordertotalprice ?o_ordertotalprice ;
ltpch:customer_custkey ?c_custkey ;
ltpch:customer_name ?c_name .
{
select
?ord
(sum (xsd:decimal(?l2_linequantity)) as ?sum_q)
where
{
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_order ?ord .
}
group by
?ord
} .
filter (?sum_q > %QUANTITY%)
}
group by
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
order by
desc (?o_ordertotalprice)
?o_orderdate
limit 100
select
((sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipinstruct ?l_shipinstruct .
?ps ltpch:part_brand ?p_brand ;
ltpch:part_size ?p_size ;
ltpch:part_container ?p_container .
filter (?l_shipmode in ("AIR", "AIR REG") &&
?l_shipinstruct = "DELIVER IN PERSON" &&
( ( (REGEX(?p_brand,"^%BRAND1%$","i")) &&
(?p_container in ("SM CASE", "SM BOX", "SM PACK", "SM PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY1%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY1% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 5) ) ||
( (REGEX(?p_brand,"^%BRAND2%$","i")) &&
(?p_container in ("MED BAG", "MED BOX", "MED PKG", "MED PACK")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY2%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY2% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 10) ) ||
( (REGEX(?p_brand,"^%BRAND3%$","i")) &&
(?p_container in ("LG CASE", "LG BOX", "LG PACK", "LG PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY3%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY3% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 15) ) ) )
}
select distinct
?s_name
?s_address
where
{
?supp ltpch:supplier_name ?s_name ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:supplier_address ?s_address .
{
select
distinct ?suppkey
where
{
?big_ps ltpch:partsupplier_availqty ?big_ps_availqty ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:nation_name ?n_name ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:part_partkey ?partkey ;
ltpch:part_name ?p_name .
FILTER(REGEX (?p_name , "^%COLOR%") && ?n_name = "%NATION%") .
{
select
?partkey ?suppkey
((0.5 * sum(xsd:decimal(?l_linequantity))) as ?qty_threshold)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?big_ps .
?big_ps ltpch:part_partkey ?partkey ;
ltpch:supplier_suppkey ?suppkey .
FILTER ((xsd:dateTime(?l_shipdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date)))
)
}
group by
?partkey ?suppkey
} .
FILTER(xsd:decimal(?big_ps_availqty) > ?qty_threshold) .
}
}
}
order by ?s_name
select
?s_name
((count(1)) as ?numwait)
where {
?li1 qb:dataSet ltpch:lineitemCube ;
ltpch:l_receiptdate ?l1_receiptdate ;
ltpch:l_commitdate ?l1_commitdate ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord .
?ps ltpch:supplier_name ?s_name ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:nation_name ?n_name .
?ord ltpch:order_orderstatus ?o_orderstatus .
filter ( xsd:boolean(xsd:dateTime(?l1_receiptdate) > xsd:dateTime(?l1_commitdate)) && ?n_name = "%NATION%" && ?o_orderstatus = "F")
filter exists {
?li2 ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:supplier_suppkey ?suppkey2 .
filter (?suppkey != ?suppkey2)
}
filter not exists {
?li3 ltpch:l_has_order ?ord ;
ltpch:l_receiptdate ?l3_receiptdate ;
ltpch:l_commitdate ?l3_commitdate ;
ltpch:l_has_partsupplier ?ps3 .
?ps3 ltpch:supplier_suppkey ?suppkey3 .
filter (
xsd:boolean(xsd:dateTime(?l3_receiptdate) > xsd:dateTime(?l3_commitdate)) &&
?suppkey3 != ?suppkey
)
}
}
group by
?s_name
order by
desc (count(1))
?s_name
limit 100
select
(bif:LEFT (?c_phone, 2)) as ?cntrycode,
(count (1)) as ?numcust,
sum (xsd:decimal(?c_acctbal)) as ?totacctbal
where {
?cust ltpch:customer_acctbal ?c_acctbal ;
ltpch:customer_phone ?c_phone .
{
select (avg (?acctbal2)) as ?acctbal_threshold
where {
select (avg (xsd:decimal(?c_acctbal2))) as ?acctbal2
where
{
?cust2 ltpch:customer_acctbal ?c_acctbal2 ;
ltpch:customer_custkey ?custkey2 ;
ltpch:customer_phone ?c_phone2 .
filter ((xsd:decimal(?c_acctbal2) > 0.00) &&
bif:LEFT (?c_phone2, 2) in (%COUNTRY_CODE_SET%) )
}
group by ?custkey2
}
}
filter (
bif:LEFT (?c_phone, 2) in (%COUNTRY_CODE_SET%) &&
(xsd:decimal(?c_acctbal) > ?acctbal_threshold )
)
filter not exists { ?cust ltpch:order_orderkey ?orderkey }
}
group by (bif:LEFT (?c_phone, 2))
order by (bif:LEFT (?c_phone, 2))
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix ltpch: <http://extbi.lab.aau.dk/ontology/ltpch/>
select
?l_returnflag
?l_linestatus
(sum(xsd:decimal(?l_linequantity)) as ?sum_qty)
(ROUND(sum(xsd:decimal(?l_lineextendedprice))*100)/100 as ?sum_base_price)
(ROUND(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount)))*100)/100 as ?sum_disc_price)
(ROUND(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))*(1 + xsd:decimal(?l_linetax)))*100)/100 as ?sum_charge)
(ROUND(avg(xsd:decimal(?l_linequantity))*100)/100 as ?avg_qty)
(ROUND(avg(xsd:decimal(?l_lineextendedprice))*100)/100 as ?avg_price)
(ROUND(avg(xsd:decimal(?l_linediscount))*100)/100 as ?avg_disc)
(count(1) as ?count_order)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_linestatus ?l_linestatus ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linetax ?l_linetax ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linediscount ?l_linediscount .
filter (xsd:boolean(xsd:dateTime(?l_shipdate) <= xsd:dateTime(bif:dateadd ("day", -%DELTA%, "1998-12-01"^^xsd:date))))
}
group by
?l_returnflag
?l_linestatus
order by
?l_returnflag
?l_linestatus
select distinct
?s_acctbal,
?s_name,
?nation_name,
?p_partkey,
?p_mfgr,
?s_address,
?s_phone,
?s_comment
where {
?ps ltpch:partsupplier_supplier_acctbal ?s_acctbal ;
ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_partsupplier_supplycost ?minsc ;
ltpch:partsupplier_supplier_address ?s_address ;
ltpch:partsupplier_supplier_phone ?s_phone ;
ltpch:partsupplier_supplier_comment ?s_comment ;
ltpch:partsupplier_nation_name ?nation_name ;
ltpch:partsupplier_region_name "%REGION%" ;
ltpch:partsupplier_part_partkey ?p_partkey ;
ltpch:partsupplier_part_mfgr ?p_mfgr ;
ltpch:partsupplier_part_size ?size ;
ltpch:partsupplier_part_type ?p_type .
FILTER (?size = str(%SIZE%) && contains(?p_type, "%TYPE%"))
{ select ?p_partkey min(?s_cost) as ?minsc
where {
?ps ltpch:partsupplier_part_partkey ?p_partkey;
ltpch:partsupplier_partsupplier_supplycost ?s_cost ;
ltpch:partsupplier_region_name ?region2 .
filter (?region2 = "%REGION%")
}
}
}
order by
desc (?s_acctbal)
?nation_name
?s_name
?p_partkey
limit 100
select
?o_orderkey
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?revenue)
?o_orderdate
?o_shippriority
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_order_shippriority ?o_shippriority ;
ltpch:order_order_orderkey ?o_orderkey ;
ltpch:order_customer_mktsegment ?c_mktsegment .
filter ((xsd:dateTime(?o_orderdate) < xsd:dateTime("%DATE%"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) > xsd:dateTime("%DATE%"^^xsd:date)) &&
(?c_mktsegment = "%SEGMENT%") )
}
group by
?o_orderkey
?o_orderdate
?o_shippriority
order by
desc (sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
?o_orderdate
limit 10
select
?o_orderpriority
(count(*) as ?order_count)
where
{
{
select distinct
?o_orderpriority
?ordkey
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:order_order_orderpriority ?o_orderpriority ;
ltpch:order_order_orderkey ?ordkey ;
ltpch:order_order_orderdate ?o_orderdate .
filter (
(xsd:boolean(xsd:dateTime(?l_commitdate) < xsd:dateTime(?l_receiptdate))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date))))
)
}
}
}
group by
?o_orderpriority
order by
?o_orderpriority
select
?nation
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_nation_name ?c_nation ;
ltpch:partsupplier_nation_name ?nation ;
ltpch:partsupplier_region_name ?r_name .
filter ((?c_nation = ?nation) &&
(xsd:dateTime(?o_orderdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("year", 1,"%YEAR%-01-01" ^^xsd:date))) &&
(?r_name = "%REGION%") )
}
group by
?nation
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
select
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipdate ?l_shipdate .
filter ( (xsd:dateTime(?l_shipdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date))) &&
(xsd:decimal(?l_linediscount) >= %DISCOUNT% - 0.01) &&
(xsd:decimal(?l_linediscount) <= %DISCOUNT% + 0.01) &&
(xsd:decimal(?l_linequantity) < %QUANTITY%) )
}
select
?supp_nation
?cust_nation
?li_year
(sum (xsd:decimal(?volume)) as ?revenue)
where {
{
select
?supp_nation
?cust_nation
?li_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:order_nation_name ?cust_nation ;
ltpch:partsupplier_nation_name ?supp_nation .
BIND (SUBSTR(STR(?l_shipdate), 1,4) as ?li_year)
filter ((
(?cust_nation = "%NATION1%" && ?supp_nation = "%NATION2%") ||
(?cust_nation = "%NATION2%" && ?supp_nation = "%NATION1%") ) &&
(xsd:dateTime(?l_shipdate) >= xsd:dateTime("1995-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) <= xsd:dateTime("1996-12-31"^^xsd:date)) )
}
}
}
group by
?supp_nation
?cust_nation
?li_year
order by
?supp_nation
?cust_nation
?li_year
select
?o_year
((?sum1 / ?sum2) as ?mkt_share)
where {
{ select
?o_year
(sum (?volume * bif:equ (?nation, "%NATION%")) as ?sum1)
(sum (?volume) as ?sum2)
where {
{ select
((YEAR(xsd:dateTime(?o_orderdate))) as ?o_year)
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
?nation
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:partsupplier_nation_name ?nation ;
ltpch:partsupplier_part_type ?type ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_region_name ?region .
filter ((xsd:dateTime(?o_orderdate) >= xsd:dateTime("1995-01-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) <= xsd:dateTime("1996-12-31"^^xsd:date) &&
?region = "%REGION%" &&
?type = "%TYPE%")
)
}
}
}
group by
?o_year
}
}
order by
?o_year
select
?nation
?o_year
(sum(?amount) as ?sum_profit)
where {
{ select
?nation
?o_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) - xsd:decimal(?ps_supplycost) * xsd:decimal(?l_linequantity)) as ?amount)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:partsupplier_nation_name ?nation ;
ltpch:partsupplier_partsupplier_supplycost ?ps_supplycost ;
ltpch:partsupplier_part_name ?p_name ;
ltpch:order_order_orderdate ?o_orderdate .
filter (REGEX (?p_name, "%COLOR%"))
BIND (SUBSTR(STR(?o_orderdate), 1,4) as ?o_year)
}
}
}
group by
?nation
?o_year
order by
?nation
desc (?o_year)
select
?c_custkey
?c_companyName
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_customer_address ?c_address ;
ltpch:order_customer_phone ?c_phone ;
ltpch:order_customer_comment ?c_comment ;
ltpch:order_customer_acctbal ?c_acctbal ;
ltpch:order_customer_custkey ?c_custkey ;
ltpch:order_customer_name ?c_companyName ;
ltpch:order_nation_name ?nation .
filter ((xsd:dateTime(?o_orderdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date)) &&
(xsd:dateTime(?o_orderdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date))) &&
(?l_returnflag = "R")
)
}
group by
?c_custkey
?c_companyName
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
limit 20
select
?bigpspart,
?bigpsvalue
where {
{
select
?bigpspart,
sum(xsd:decimal(?b_supplycost) * xsd:decimal(?b_availqty)) as ?bigpsvalue
where
{
{
select
?bigpspart,
?b_supplycost,
?b_availqty
where
{
?bigps ltpch:partsupplier_part_partkey ?bigpspart ;
ltpch:partsupplier_partsupplier_supplycost ?b_supplycost ;
ltpch:partsupplier_supplier_suppkey ?b_suppkey ;
ltpch:partsupplier_partsupplier_availqty ?b_availqty ;
ltpch:partsupplier_nation_name "%NATION%" .
}
group by ?bigpspart ?b_suppkey
}
}
}
filter (?bigpsvalue > (
select
(sum(xsd:decimal(?t_supplycost) * xsd:decimal(?t_availqty)) * %FRACTION%) as ?threshold
where
{
{
select
?t_partkey,
?t_supplycost,
?t_availqty
where
{
?thr_ps ltpch:partsupplier_partsupplier_supplycost ?t_supplycost ;
ltpch:partsupplier_partsupplier_availqty ?t_availqty ;
ltpch:partsupplier_nation_name "%NATION%" ;
ltpch:partsupplier_supplier_suppkey ?t_suppkey ;
ltpch:partsupplier_part_partkey ?t_partkey .
}
group by ?t_partkey ?t_suppkey
}
}
))
}
order by
desc (?bigpsvalue)
select
?l_shipmode
(sum (
bif:__or (
bif:equ (?o_orderpriority, "1-URGENT"),
bif:equ (?o_orderpriority, "2-HIGH") ) ) as ?high_line_count)
(sum (1 -
bif:__or (
bif:equ (?o_orderpriority, "1-URGENT"),
bif:equ (?o_orderpriority, "2-HIGH") ) ) as ?low_line_count)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:order_order_orderpriority ?o_orderpriority .
filter (xsd:boolean(?l_shipmode in ("%SHIPMODE1%", "%SHIPMODE2%")) &&
(xsd:boolean(xsd:dateTime(?l_commitdate) < xsd:dateTime(?l_receiptdate))) &&
(xsd:boolean(xsd:dateTime(?l_shipdate) < xsd:dateTime(?l_commitdate))) &&
(xsd:boolean(xsd:dateTime(?l_receiptdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date))) &&
(xsd:boolean(xsd:dateTime(?l_receiptdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date)))) )
}
group by
?l_shipmode
order by
?l_shipmode
select
?c_count
(count(1) as ?custdist)
where {
{ select
?c_custkey
(count (distinct ?o_comment) as ?c_count)
where
{
?li2 ltpch:order_customer_custkey ?c_custkey .
optional {
?li2 ltpch:order_order_comment ?o_comment .
filter (!( REGEX (?o_comment , "%WORD1%.*%WORD2%" ) ) ) .
}
}
group by
?c_custkey
order by
?c_custkey
}
}
group by
?c_count
order by
desc (count(1))
desc (?c_count)
select
((100 * ?sum1 / ?sum2 ) as ?promo_revenue)
where
{
select
(sum (
bif:equ(SUBSTR(?p_type, 1, 5), "PROMO") *
xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) ) as ?sum1)
(sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) ) as ?sum2)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:partsupplier_part_type ?p_type .
filter ((xsd:dateTime(?l_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd("month", 1, "%MONTH%-01"^^xsd:date))) )
}
}
select distinct
?s_suppkey
?s_name
?s_address
?s_phone
?total_revenue
where
{
?partsupp ltpch:partsupplier_supplier_suppkey ?s_suppkey ;
ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_address ?s_address ;
ltpch:partsupplier_supplier_phone ?s_phone .
{
select
?s_suppkey
((sum(xsd:decimal(?l_extendedprice) * (1 - xsd:decimal(?l_discount)))) as ?total_revenue)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_extendedprice ;
ltpch:l_linediscount ?l_discount ;
ltpch:l_has_partsupplier ?ps ;
ltpch:partsupplier_supplier_suppkey ?s_suppkey .
filter (
xsd:dateTime(?l_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)) )
}
group by
?s_suppkey
} .
{
select
(max (?l2_total_revenue) as ?maxtotal)
where
{
{
select
((sum(xsd:decimal(?l2_extendedprice) * (1 - xsd:decimal(?l2_discount)))) as ?l2_total_revenue)
where
{
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l2_shipdate ;
ltpch:l_lineextendedprice ?l2_extendedprice ;
ltpch:l_linediscount ?l2_discount ;
ltpch:l_has_partsupplier ?ps2 ;
ltpch:partsupplier_supplier_suppkey ?s_suppkey2 .
filter (
xsd:dateTime(?l2_shipdate) >= xsd:dateTime("%MONTH%-01"^^xsd:date) &&
xsd:dateTime(?l2_shipdate) < xsd:dateTime(bif:dateadd ("month", 3, "%MONTH%-01"^^xsd:date)) )
}
group by
?s_suppkey2
}
}
}
filter (?total_revenue = ?maxtotal)
}
order by
?s_suppkey
select
?p_brand,
?p_type,
?p_size,
(count(distinct ?supp)) as ?supplier_cnt
where {
?ps ltpch:partsupplier_part_brand ?p_brand ;
ltpch:partsupplier_part_type ?p_type ;
ltpch:partsupplier_part_size ?p_size ;
ltpch:partsupplier_supplier_suppkey ?supp .
filter (
(?p_brand != "%BRAND%") &&
!(?p_type like "%TYPE%%") &&
(xsd:integer(?p_size) in (%SIZE1%, %SIZE2%, %SIZE3%, %SIZE4%, %SIZE5%, %SIZE6%, %SIZE7%, %SIZE8%))
)
filter NOT EXISTS {
?ps ltpch:partsupplier_supplier_comment ?badcomment .
filter (?badcomment like "%Customer%Complaints%")
}
}
group by
?p_brand
?p_type
?p_size
order by
desc ((count(distinct ?supp)))
?p_brand
?p_type
?p_size
select
((sum(xsd:decimal(?l_lineextendedprice)) / 7.0) as ?avg_yearly)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?ps ;
ltpch:partsupplier_part_partkey ?p_partkey.
{
select
?p_partkey
((0.2 * avg(xsd:decimal(?l2_linequantity))) as ?threshold)
where {
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:partsupplier_part_partkey ?p_partkey ;
ltpch:partsupplier_part_container ?p_container ;
ltpch:partsupplier_part_brand ?p_brand .
filter (REGEX(?p_brand,"%BRAND%","i") && ?p_container = "%CONTAINER%" )
}
group by
?p_partkey
}
filter (xsd:decimal(?l_linequantity) < xsd:decimal(?threshold))
}
select
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
(sum(xsd:decimal(?l_linequantity)) as ?l_quantity)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:order_order_orderkey ?o_orderkey ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_order_ordertotalprice ?o_ordertotalprice ;
ltpch:order_customer_custkey ?c_custkey ;
ltpch:order_customer_name ?c_name .
{
select
?o_orderkey
(sum (xsd:decimal(?l2_linequantity)) as ?sum_q)
where
{
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:order_order_orderkey ?o_orderkey .
}
group by
?o_orderkey
} .
filter (?sum_q > %QUANTITY%)
}
group by
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
order by
desc (?o_ordertotalprice)
?o_orderdate
limit 100
select
((sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipinstruct ?l_shipinstruct ;
ltpch:partsupplier_part_brand ?p_brand ;
ltpch:partsupplier_part_size ?p_size ;
ltpch:partsupplier_part_container ?p_container .
filter (?l_shipmode in ("AIR", "AIR REG") &&
?l_shipinstruct = "DELIVER IN PERSON" &&
( ( (REGEX(?p_brand,"^%BRAND1%$","i")) &&
(?p_container in ("SM CASE", "SM BOX", "SM PACK", "SM PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY1%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY1% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 5) ) ||
( (REGEX(?p_brand,"^%BRAND2%$","i")) &&
(?p_container in ("MED BAG", "MED BOX", "MED PKG", "MED PACK")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY2%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY2% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 10) ) ||
( (REGEX(?p_brand,"^%BRAND3%$","i")) &&
(?p_container in ("LG CASE", "LG BOX", "LG PACK", "LG PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY3%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY3% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 15) ) ) )
}
select distinct
?s_name
?s_address
where
{
?supp ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_supplier_address ?s_address .
{
select
distinct ?suppkey
where
{
?li ltpch:partsupplier_partsupplier_availqty ?big_ps_availqty ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_part_partkey ?partkey ;
ltpch:partsupplier_nation_name ?n_name ;
ltpch:partsupplier_part_name ?p_name .
FILTER(REGEX (?p_name , "^%COLOR%") && ?n_name = "%NATION%") .
{
select
?suppkey ?partkey
((0.5 * sum(xsd:decimal(?l_linequantity))) as ?qty_threshold)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_part_partkey ?partkey ;
ltpch:l_linequantity ?l_linequantity .
FILTER ((xsd:dateTime(?l_shipdate) >= xsd:dateTime("%YEAR%-01-01"^^xsd:date)) &&
(xsd:dateTime(?l_shipdate) < xsd:dateTime(bif:dateadd ("year", 1, "%YEAR%-01-01"^^xsd:date)))
)
}
group by
?suppkey ?partkey
} .
FILTER(xsd:decimal(?big_ps_availqty) > ?qty_threshold) .
}
}
}
order by ?s_name
select
?s_name
((count(1)) as ?numwait)
where {
?li1 qb:dataSet ltpch:lineitemCube ;
ltpch:l_receiptdate ?l1_receiptdate ;
ltpch:l_commitdate ?l1_commitdate ;
ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_nation_name ?n_name ;
ltpch:order_order_orderkey ?orderkey ;
ltpch:order_order_orderstatus ?o_orderstatus .
filter (
xsd:boolean(xsd:dateTime(?l1_receiptdate) > xsd:dateTime(?l1_commitdate)) &&
?n_name = "%NATION%" &&
?o_orderstatus = "F"
)
filter exists {
?li2 ltpch:order_order_orderkey ?orderkey ;
ltpch:partsupplier_supplier_suppkey ?suppkey2 .
filter (?suppkey != ?suppkey2)
}
filter not exists {
?li3 ltpch:order_order_orderkey ?orderkey ;
ltpch:l_receiptdate ?l3_receiptdate ;
ltpch:l_commitdate ?l3_commitdate ;
ltpch:partsupplier_supplier_suppkey ?suppkey3 .
filter (
xsd:boolean(xsd:dateTime(?l3_receiptdate) > xsd:dateTime(?l3_commitdate)) &&
?suppkey3 != ?suppkey
)
}
}
group by
?s_name
order by
desc (count(1))
?s_name
limit 100
select
(bif:LEFT (?c_phone, 2)) as ?cntrycode,
(count (1)) as ?numcust,
sum (xsd:decimal(?c_acctbal)) as ?totacctbal
where {
?cust ltpch:order_customer_acctbal ?c_acctbal ;
ltpch:order_customer_phone ?c_phone .
{
select (avg(?acctbal2)) as ?acctbal_threshold
where
{
select (avg (xsd:decimal(?c_acctbal2))) as ?acctbal2
where
{
?li ltpch:order_customer_acctbal ?c_acctbal2 ;
ltpch:order_customer_custkey ?custkey2 ;
ltpch:order_customer_phone ?c_phone2 .
filter ((xsd:decimal(?c_acctbal2) > 0.00) &&
bif:LEFT (?c_phone2, 2) in (%COUNTRY_CODE_SET%) )
}
group by ?custkey2
}
}
filter (
bif:LEFT (?c_phone, 2) in (%COUNTRY_CODE_SET%) &&
(xsd:decimal(?c_acctbal) > ?acctbal_threshold )
)
filter not exists { ?cust ltpch:order_order_orderkey ?orderkey }
}
group by (bif:LEFT (?c_phone, 2))
order by (bif:LEFT (?c_phone, 2))
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix ltpch: <http://extbi.lab.aau.dk/ontology/ltpch/>
select
?l_returnflag
?l_linestatus
(sum(xsd:decimal(?l_linequantity)) as ?sum_qty)
(sum(xsd:decimal(?l_lineextendedprice)) as ?sum_base_price)
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?sum_disc_price)
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))*(1 + xsd:decimal(?l_linetax))) as ?sum_charge)
(avg(xsd:decimal(?l_linequantity)) as ?avg_qty)
(avg(xsd:decimal(?l_lineextendedprice)) as ?avg_price)
(avg(xsd:decimal(?l_linediscount)) as ?avg_disc)
(count(1) as ?count_order)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_linestatus ?l_linestatus ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linetax ?l_linetax ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linediscount ?l_linediscount .
filter (xsd:date(?l_shipdate) <= ("1998-12-01"^^xsd:date + "-P%DELTA%D"^^xsd:duration))
}
group by
?l_returnflag
?l_linestatus
order by
?l_returnflag
?l_linestatus
select
?s_acctbal
?s_name
?nation_name
?p_partkey
?p_mfgr
?s_address
?s_phone
?s_comment
where {
?ps a ltpch:partsupp;
ltpch:ps_has_supplier ?supp;
ltpch:ps_has_part ?part ;
ltpch:ps_supplycost ?minsc .
?supp a ltpch:supplier ;
ltpch:s_acctbal ?s_acctbal ;
ltpch:s_name ?s_name ;
ltpch:s_has_nation ?s_has_nation ;
ltpch:s_address ?s_address ;
ltpch:s_phone ?s_phone ;
ltpch:s_comment ?s_comment .
?s_has_nation ltpch:n_name ?nation_name ;
ltpch:n_has_region ?s_has_region .
?s_has_region ltpch:r_name "%REGION%" .
?part a ltpch:part ;
ltpch:p_partkey ?p_partkey ;
ltpch:p_mfgr ?p_mfgr ;
ltpch:p_size ?size ;
ltpch:p_type ?p_type .
FILTER (?size = str(%SIZE%) && fn:contains(?p_type, "%TYPE%"))
{ select ?part (min(?s_cost) as ?minsc)
where {
?ps a ltpch:partsupp;
ltpch:ps_has_part ?part;
ltpch:ps_has_supplier ?ms;
ltpch:ps_supplycost ?s_cost .
?ms ltpch:s_has_nation ?m_has_nation .
?m_has_nation ltpch:n_has_region ?m_has_region .
?m_has_region ltpch:r_name "%REGION%" .
}
group by ?part
}
}
order by
desc (?s_acctbal)
?nation_name
?s_name
?p_partkey
limit 100
select
?o_orderkey
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?revenue)
?o_orderdate
?o_shippriority
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_has_order ?ord ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:o_orderdate ?o_orderdate ;
ltpch:o_shippriority ?o_shippriority ;
ltpch:o_orderkey ?o_orderkey ;
ltpch:o_has_customer ?cust .
?cust ltpch:c_mktsegment ?c_mktsegment .
filter ((xsd:date(?o_orderdate) < "%DATE%"^^xsd:date) &&
(xsd:date(?l_shipdate) > "%DATE%"^^xsd:date) &&
(?c_mktsegment = "%SEGMENT%") )
}
group by
?o_orderkey
?o_orderdate
?o_shippriority
order by
desc (sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
?o_orderdate
limit 10
select
?o_orderpriority
(count(*) as ?order_count)
where
{
{
select distinct
?o_orderpriority
?ord
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate .
?ord ltpch:o_orderpriority ?o_orderpriority ;
ltpch:o_orderdate ?o_orderdate .
filter (
(xsd:date(?l_commitdate) < xsd:date(?l_receiptdate)) &&
(xsd:date(?o_orderdate) >= "%MONTH%-01"^^xsd:date) &&
(xsd:date(?o_orderdate) < ("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration))
)
}
}
}
group by
?o_orderpriority
order by
?o_orderpriority
select
?nation
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:o_has_customer ?cust ;
ltpch:o_orderdate ?o_orderdate .
?ps ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?s_nation .
?s_nation ltpch:n_has_region ?s_region ;
ltpch:n_name ?nation .
?s_region ltpch:r_name ?r_name .
?cust ltpch:c_has_nation ?c_nation.
filter ((?c_nation = ?s_nation) &&
(xsd:date(?o_orderdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?o_orderdate) < ("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) &&
(?r_name = "%REGION%") )
}
group by
?nation
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
select
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipdate ?l_shipdate .
filter ( (xsd:date(?l_shipdate) >= xsd:date("%YEAR%-01-01"^^xsd:date)) &&
(xsd:date(?l_shipdate) < xsd:date("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration )) &&
(xsd:decimal(?l_linediscount) >= %DISCOUNT% - 0.01) &&
(xsd:decimal(?l_linediscount) <= %DISCOUNT% + 0.01) &&
(xsd:decimal(?l_linequantity) < %QUANTITY%) )
}
select
?supp_nation
?cust_nation
?li_year
(sum (?volume) as ?revenue)
where {
{
select
?supp_nation
?cust_nation
?li_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:o_has_customer ?cust .
?cust ltpch:c_has_nation ?custn .
?custn ltpch:n_name ?cust_nation .
?ps ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?suppn .
?suppn ltpch:n_name ?supp_nation .
BIND (SUBSTR(STR(?l_shipdate), 1,4) as ?li_year)
filter (xsd:boolean(
(?cust_nation = "%NATION1%" && ?supp_nation = "%NATION2%") ||
(?cust_nation = "%NATION2%" && ?supp_nation = "%NATION1%") ) &&
xsd:boolean(xsd:date(?l_shipdate) >= xsd:date("1995-01-01"^^xsd:date)) &&
xsd:boolean(xsd:date(?l_shipdate) <= xsd:date("1996-12-31"^^xsd:date)) )
}
}
}
group by
?supp_nation
?cust_nation
?li_year
order by
?supp_nation
?cust_nation
?li_year
select
?o_year
((?sum1 / ?sum2) as ?mkt_share)
where {
{ select
?o_year
(sum (?volume * xsd:integer(fn:starts-with(?nation, "%NATION%"))) as ?sum1)
(sum (?volume) as ?sum2)
where {
{ select
((YEAR (xsd:date(?o_orderdate))) as ?o_year)
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
?nation
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:ps_has_supplier ?s_supplier .
?s_supplier ltpch:s_has_nation ?n2 .
?n2 ltpch:n_name ?nation .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_type ?type .
?ord ltpch:o_orderdate ?o_orderdate ;
ltpch:o_has_customer ?c_customer .
?c_customer ltpch:c_has_nation ?n_nation .
?n_nation ltpch:n_has_region ?r_region .
?r_region ltpch:r_name ?region.
filter ((xsd:date(?o_orderdate) >= xsd:date("1995-01-01"^^xsd:date)) &&
(xsd:date(?o_orderdate) <= xsd:date("1996-12-31"^^xsd:date)) &&
(?region = "%REGION%") &&
(?type = "%TYPE%")
)
}
}
}
group by
?o_year
}
}
order by
?o_year
select
?nation
?o_year
(sum(?amount) as ?sum_profit)
where {
{ select
?nation
?o_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) - xsd:decimal(?ps_supplycost) * xsd:decimal(?l_linequantity)) as ?amount)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:ps_has_part ?part ;
ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?s_nation .
?s_nation ltpch:n_name ?nation .
?ord ltpch:o_orderdate ?o_orderdate .
?ps ltpch:ps_supplycost ?ps_supplycost .
?part ltpch:p_name ?p_name .
filter (REGEX (?p_name, "%COLOR%"))
BIND (SUBSTR(STR(?o_orderdate), 1,4) as ?o_year)
}
}
}
group by
?nation
?o_year
order by
?nation
desc (?o_year)
select
?c_custkey
?c_companyName
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_has_order ?ord ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:o_has_customer ?cust ;
ltpch:o_orderdate ?o_orderdate .
?cust ltpch:c_address ?c_address ;
ltpch:c_phone ?c_phone ;
ltpch:c_comment ?c_comment ;
ltpch:c_acctbal ?c_acctbal ;
ltpch:c_custkey ?c_custkey ;
ltpch:c_has_nation ?c_nation ;
ltpch:c_name ?c_companyName .
?c_nation ltpch:n_name ?nation .
filter ((xsd:date(?o_orderdate) >= xsd:date("%MONTH%-01"^^xsd:date)) &&
(xsd:date(?o_orderdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration)) &&
(?l_returnflag = "R")
)
}
group by
?c_custkey
?c_companyName
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
limit 20
select
?bigpspart
?bigpsvalue
where {
{ select
?bigpspart
(sum(xsd:decimal(?b_supplycost) * xsd:decimal(?b_availqty)) as ?bigpsvalue)
where
{
?bigps a ltpch:partsupp ;
ltpch:ps_has_part ?bigpspart ;
ltpch:ps_supplycost ?b_supplycost ;
ltpch:ps_availqty ?b_availqty ;
ltpch:ps_has_supplier ?b_supplier .
?b_supplier ltpch:s_has_nation ?b_nation .
?b_nation ltpch:n_name "%NATION%" .
}
group by ?bigpspart
}
{
select
(sum(xsd:decimal(?t_supplycost) * xsd:decimal(?t_availqty)) * %FRACTION% as ?threshold)
where
{
?thr_ps a ltpch:partsupp ;
ltpch:ps_supplycost ?t_supplycost ;
ltpch:ps_availqty ?t_availqty ;
ltpch:ps_has_supplier ?t_supplier .
?t_supplier ltpch:s_has_nation ?t_nation .
?t_nation ltpch:n_name "%NATION%" .
}
}
filter (?bigpsvalue > ?threshold )
}
order by
desc (?bigpsvalue)
select
?l_shipmode
(sum (
xsd:integer(fn:starts-with(?o_orderpriority, "1-URGENT") ||
fn:starts-with(?o_orderpriority, "2-HIGH") ) ) as ?high_line_count)
(sum (1 -
xsd:integer(fn:starts-with(?o_orderpriority, "1-URGENT") ||
fn:starts-with(?o_orderpriority, "2-HIGH") ) ) as ?low_line_count)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:o_orderpriority ?o_orderpriority .
filter (?l_shipmode in ("%SHIPMODE1%", "%SHIPMODE2%") &&
(xsd:date(?l_commitdate) < xsd:date(?l_receiptdate)) &&
(xsd:date(?l_shipdate) < xsd:date(?l_commitdate)) &&
(xsd:date(?l_receiptdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?l_receiptdate) < ("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) )
}
group by
?l_shipmode
order by
?l_shipmode
select
?c_count
(count(1) as ?custdist)
where {
{ select
?c_custkey
(count (?ord) as ?c_count)
where
{
?cust ltpch:c_custkey ?c_custkey .
optional {
?ord a ltpch:orders ;
ltpch:o_has_customer ?cust ;
ltpch:o_comment ?o_comment .
filter (!( REGEX (?o_comment , "%WORD1%.*%WORD2%" ) ) ) .
}
}
group by
?c_custkey
}
}
group by
?c_count
order by
desc (count(1))
desc (?c_count)
select
((100 * sum(xsd:integer(fn:starts-with(?p_type, "PROMO")) * xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount))) / sum(xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount)))) as ?promo_revenue)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_type ?p_type .
filter (xsd:date(?l_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
(xsd:date(?l_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P1M"^^xsd:duration)) )
}
select
?s_suppkey
?s_name
?s_address
?s_phone
?total_revenue
where {
?supplier a ltpch:supplier ;
ltpch:s_suppkey ?s_suppkey ;
ltpch:s_name ?s_name ;
ltpch:s_address ?s_address ;
ltpch:s_phone ?s_phone .
{ select
?supplier
(sum(xsd:decimal(?l_extendedprice) * (1 - xsd:decimal(?l_discount))) as ?total_revenue)
where {
?li1 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_extendedprice ;
ltpch:l_linediscount ?l_discount ;
ltpch:l_has_partsupplier ?ps1 .
?ps1 ltpch:ps_has_supplier ?supplier .
filter (
xsd:date(?l_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
xsd:date(?l_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration) )
}
group by
?supplier
}
{ select (max (?l2_total_revenue) as ?maxtotal)
where {
{ select
?supplier2
(sum(xsd:decimal(?l2_extendedprice) * (1 - xsd:decimal(?l2_discount))) as ?l2_total_revenue)
where {
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l2_shipdate ;
ltpch:l_lineextendedprice ?l2_extendedprice ;
ltpch:l_linediscount ?l2_discount ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:ps_has_supplier ?supplier2 .
filter (
xsd:date(?l2_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
xsd:date(?l2_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration) )
}
group by
?supplier2
}
}
}
filter (?total_revenue = ?maxtotal)
}
order by
?supplier
select
?p_brand
?p_type
?p_size
(count(distinct ?supp) as ?supplier_cnt)
where {
?ps a ltpch:partsupp ;
ltpch:ps_has_part ?part ;
ltpch:ps_has_supplier ?supp .
?part ltpch:p_brand ?p_brand ;
ltpch:p_type ?p_type ;
ltpch:p_size ?p_size .
filter (
(?p_brand != "%BRAND%") &&
!(fn:starts-with(?p_type,"%TYPE%")) &&
(xsd:integer(?p_size) in (%SIZE1%, %SIZE2%, %SIZE3%, %SIZE4%, %SIZE5%, %SIZE6%, %SIZE7%, %SIZE8%))
)
filter NOT EXISTS {
?supp a ltpch:supplier;
ltpch:s_comment ?badcomment .
filter ( fn:matches (?badcomment ,"Customer.*Complaints") )
}
}
group by
?p_brand
?p_type
?p_size
order by
desc ((count(distinct ?supp)))
?p_brand
?p_type
?p_size
select
((sum(xsd:decimal(?l_lineextendedprice)) / 7.0) as ?avg_yearly)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_brand ?p_brand ;
ltpch:p_container ?p_container .
{
select
?part
((0.2 * avg(xsd:decimal(?l2_linequantity))) as ?threshold)
where {
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:ps_has_part ?part .
}
group by
?part
}
filter (xsd:decimal(?l_linequantity) < ?threshold && REGEX(?p_brand,"%BRAND%","i") && ?p_container = "%CONTAINER%")
}
select
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
(sum(xsd:decimal(?l_linequantity)) as ?l_quantity)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_order ?ord .
?ord ltpch:o_orderkey ?o_orderkey ;
ltpch:o_orderdate ?o_orderdate ;
ltpch:o_ordertotalprice ?o_ordertotalprice ;
ltpch:o_has_customer ?cust .
?cust ltpch:c_custkey ?c_custkey ;
ltpch:c_name ?c_name .
{ select
?ord
(sum (xsd:decimal(?l2_linequantity)) as ?sum_q)
where {
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_order ?ord .
}
group by ?ord
} .
filter (xsd:decimal(?sum_q) > xsd:decimal(%QUANTITY%))
}
group by
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
order by
desc (?o_ordertotalprice)
?o_orderdate
limit 100
select
((sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipinstruct ?l_shipinstruct ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:ps_has_part ?part .
?part ltpch:p_brand ?p_brand ;
ltpch:p_size ?p_size ;
ltpch:p_container ?p_container .
filter (?l_shipmode in ("AIR", "AIR REG") &&
?l_shipinstruct = "DELIVER IN PERSON" &&
( ( (REGEX(?p_brand,"^%BRAND1%$","i")) &&
(?p_container in ("SM CASE", "SM BOX", "SM PACK", "SM PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY1%) &&
(xsd:integer(?l_linequantity) <= (%QUANTITY1% + 10)) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 5) ) ||
( (REGEX(?p_brand,"^%BRAND2%$","i")) &&
(?p_container in ("MED BAG", "MED BOX", "MED PKG", "MED PACK")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY2%) &&
(xsd:integer(?l_linequantity) <= (%QUANTITY2% + 10)) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 10) ) ||
( (REGEX(?p_brand,"^%BRAND3%$","i")) &&
(?p_container in ("LG CASE", "LG BOX", "LG PACK", "LG PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY3%) &&
(xsd:integer(?l_linequantity) <= (%QUANTITY3% + 10)) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 15) ) ) )
}
select
?s_name
?s_address
where
{
?supp ltpch:s_name ?s_name ;
ltpch:s_address ?s_address .
{
select distinct
?supp
where
{
?big_ps ltpch:ps_has_part ?part ;
ltpch:ps_availqty ?big_ps_availqty ;
ltpch:ps_has_supplier ?supp .
?supp ltpch:s_has_nation ?s_nation .
?s_nation ltpch:n_name ?n_name .
?part ltpch:p_name ?p_name .
filter (REGEX (?p_name , "^%COLOR%") &&
?n_name = "%NATION%" &&
xsd:decimal(?big_ps_availqty) > ?qty_threshold)
{
select
((0.5 * sum(xsd:decimal(?l_linequantity))) as ?qty_threshold)
?big_ps
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?big_ps .
filter ((xsd:date(?l_shipdate) >= xsd:date("%YEAR%-01-01"^^xsd:date)) &&
(xsd:date(?l_shipdate) < xsd:date("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration))
)
}
group by
?big_ps
}
}
}
}
order by ?s_name
select
?s_name
(count(1) as ?numwait)
where {
?li1 qb:dataSet ltpch:lineitemCube;
ltpch:l_receiptdate ?l1_receiptdate ;
ltpch:l_commitdate ?l1_commitdate ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord .
?ps ltpch:ps_has_supplier ?supp .
?supp ltpch:s_name ?s_name ;
ltpch:s_has_nation ?s_nation .
?ord ltpch:o_orderstatus ?orderstatus .
?s_nation ltpch:n_name ?name
filter (
xsd:date(?l1_receiptdate) > xsd:date(?l1_commitdate) &&
?name = "%NATION%" &&
?orderstatus = "F"
)
filter exists {
?li2 ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:ps_has_supplier ?supp2 .
filter (?supp != ?supp2)
}
filter not exists {
?li3 ltpch:l_has_order ?ord ;
ltpch:l_receiptdate ?l3_receiptdate ;
ltpch:l_commitdate ?l3_commitdate ;
ltpch:l_has_partsupplier ?ps3 .
?ps3 ltpch:ps_has_supplier ?supp3 .
filter (
xsd:date(?l3_receiptdate) > xsd:date(?l3_commitdate) &&
?supp3 != ?supp
)
}
}
group by
?s_name
order by
desc (count(1))
?s_name
limit 100
select
?cntrycode
(count (1) as ?numcust)
(sum (xsd:decimal(?c_acctbal)) as ?totacctbal)
where {
?cust a ltpch:customer ;
ltpch:c_acctbal ?c_acctbal ;
ltpch:c_phone ?c_phone .
BIND (fn:substring(?c_phone,0, 3) as ?cntrycode)
{
select (avg (xsd:decimal(?c_acctbal2)) as ?acctbal_threshold)
where
{
?cust2 a ltpch:customer ;
ltpch:c_acctbal ?c_acctbal2 ;
ltpch:c_phone ?c_phone2 .
filter ((xsd:decimal(?c_acctbal2) > 0.00) &&
fn:substring(?c_phone2,0, 3) in (%COUNTRY_CODE_SET%) )
}
}
filter (
?cntrycode in (%COUNTRY_CODE_SET%) &&
(xsd:decimal(?c_acctbal) > ?acctbal_threshold ) )
filter not exists { ?ord ltpch:o_has_customer ?cust }
}
group by ?cntrycode
order by ?cntrycode
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix ltpch: <http://extbi.lab.aau.dk/ontology/ltpch/>
select
?l_returnflag
?l_linestatus
(sum(xsd:decimal(?l_linequantity)) as ?sum_qty)
(sum(xsd:decimal(?l_lineextendedprice)) as ?sum_base_price)
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?sum_disc_price)
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))*(1 + xsd:decimal(?l_linetax))) as ?sum_charge)
(avg(xsd:decimal(?l_linequantity)) as ?avg_qty)
(avg(xsd:decimal(?l_lineextendedprice)) as ?avg_price)
(avg(xsd:decimal(?l_linediscount)) as ?avg_disc)
(count(1) as ?count_order)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_linestatus ?l_linestatus ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linetax ?l_linetax ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linediscount ?l_linediscount .
filter (xsd:date(?l_shipdate) <= ("1998-12-01"^^xsd:date + "-P%DELTA%D"^^xsd:duration))
}
group by
?l_returnflag
?l_linestatus
order by
?l_returnflag
?l_linestatus
select
?s_acctbal
?s_name
?nation_name
?p_partkey
?p_mfgr
?s_address
?s_phone
?s_comment
where {
?ps ltpch:supplier_acctbal ?s_acctbal ;
ltpch:supplier_name ?s_name ;
ltpch:supplier_address ?s_address ;
ltpch:supplier_phone ?s_phone ;
ltpch:supplier_comment ?s_comment ;
ltpch:nation_name ?nation_name ;
ltpch:region_name "%REGION%" ;
ltpch:part_partkey ?p_partkey ;
ltpch:part_mfgr ?p_mfgr ;
ltpch:part_size ?size ;
ltpch:part_type ?p_type .
FILTER (?size = str(%SIZE%) && fn:contains(?p_type, "%TYPE%"))
{ select ?p_partkey (min(?s_cost) as ?minsc)
where {
?ps ltpch:part_partkey ?p_partkey;
ltpch:partsupplier_supplycost ?s_cost ;
ltpch:region_name ?region2 .
filter (?region2 = "%REGION%")
}
group by ?p_partkey
}
}
order by
desc (?s_acctbal)
?nation_name
?s_name
?p_partkey
limit 100
select
?o_orderkey
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?revenue)
?o_orderdate
?o_shippriority
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_has_order ?ord ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:order_shippriority ?o_shippriority ;
ltpch:order_orderkey ?o_orderkey ;
ltpch:customer_mktsegment ?c_mktsegment .
filter ((xsd:date(?o_orderdate) < "%DATE%"^^xsd:date) &&
(xsd:date(?l_shipdate) > "%DATE%"^^xsd:date) &&
(?c_mktsegment = "%SEGMENT%") )
}
group by
?o_orderkey
?o_orderdate
?o_shippriority
order by
desc (sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
?o_orderdate
limit 10
select
?o_orderpriority
(count(*) as ?order_count)
where
{
{
select distinct
?o_orderpriority
?ordkey
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate .
?ord ltpch:order_orderpriority ?o_orderpriority ;
ltpch:order_orderkey ?ordkey ;
ltpch:order_orderdate ?o_orderdate .
filter (
(xsd:date(?l_commitdate) < xsd:date(?l_receiptdate)) &&
(xsd:date(?o_orderdate) >= "%MONTH%-01"^^xsd:date) &&
(xsd:date(?o_orderdate) < ("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration))
)
}
}
}
group by
?o_orderpriority
order by
?o_orderpriority
select
?nation
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:nation_name ?c_nation .
?ps ltpch:nation_name ?nation ;
ltpch:region_name ?r_name .
filter ((?c_nation = ?nation) &&
(xsd:date(?o_orderdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?o_orderdate) < ("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) &&
(?r_name = "%REGION%") )
}
group by
?nation
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
select
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipdate ?l_shipdate .
filter ( (xsd:date(?l_shipdate) >= ("%YEAR%-01-01"^^xsd:date)) &&
(xsd:date(?l_shipdate) < xsd:date("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) &&
(xsd:decimal(?l_linediscount) >= %DISCOUNT% - 0.01) &&
(xsd:decimal(?l_linediscount) <= %DISCOUNT% + 0.01) &&
(xsd:decimal(?l_linequantity) < %QUANTITY%) )
}
select
?supp_nation
?cust_nation
?li_year
(sum (xsd:decimal(?volume)) as ?revenue)
where {
{
select
?supp_nation
?cust_nation
?li_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:nation_name ?cust_nation .
?ps ltpch:nation_name ?supp_nation .
BIND (SUBSTR(STR(?l_shipdate), 1,4) as ?li_year)
filter (xsd:boolean(
(?cust_nation = "%NATION1%" && ?supp_nation = "%NATION2%") ||
(?cust_nation = "%NATION2%" && ?supp_nation = "%NATION1%") ) &&
xsd:boolean(xsd:date(?l_shipdate) >= xsd:date("1995-01-01"^^xsd:date)) &&
xsd:boolean(xsd:date(?l_shipdate) <= xsd:date("1996-12-31"^^xsd:date)) )
}
}
}
group by
?supp_nation
?cust_nation
?li_year
order by
?supp_nation
?cust_nation
?li_year
select
?o_year
((?sum1 / ?sum2) as ?mkt_share)
where {
{ select
?o_year
(sum (?volume * xsd:integer(fn:starts-with(?nation, "%NATION%"))) as ?sum1)
(sum (?volume) as ?sum2)
where {
{ select
((YEAR(xsd:date(?o_orderdate))) as ?o_year)
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
?nation
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:nation_name ?nation ;
ltpch:part_type ?type .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:region_name ?region .
filter ((xsd:date(?o_orderdate) >= "1995-01-01"^^xsd:date) &&
(xsd:date(?o_orderdate) <= "1996-12-31"^^xsd:date) &&
(?region = "%REGION%") &&
(?type = "%TYPE%")
)
}
}
}
group by
?o_year
}
}
order by
?o_year
select
?nation
?o_year
(sum(?amount) as ?sum_profit)
where {
{ select
?nation
?o_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) - xsd:decimal(?ps_supplycost) * xsd:decimal(?l_linequantity)) as ?amount)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ps ltpch:nation_name ?nation ;
ltpch:partsupplier_supplycost ?ps_supplycost ;
ltpch:part_name ?p_name .
?ord ltpch:order_orderdate ?o_orderdate .
filter (REGEX (?p_name, "%COLOR%"))
BIND (SUBSTR(STR(?o_orderdate), 1,4) as ?o_year)
}
}
}
group by
?nation
?o_year
order by
?nation
desc (?o_year)
select
?c_custkey
?c_companyName
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_has_order ?ord ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount .
?ord ltpch:order_orderdate ?o_orderdate ;
ltpch:customer_address ?c_address ;
ltpch:customer_phone ?c_phone ;
ltpch:customer_comment ?c_comment ;
ltpch:customer_acctbal ?c_acctbal ;
ltpch:customer_custkey ?c_custkey ;
ltpch:customer_name ?c_companyName ;
ltpch:nation_name ?nation .
filter ((xsd:date(?o_orderdate) >= xsd:date("%MONTH%-01"^^xsd:date)) &&
(xsd:date(?o_orderdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration)) &&
(?l_returnflag = "R")
) }
group by
?c_custkey
?c_companyName
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
limit 20
select
?bigpspart
?bigpsvalue
where {
{ select
?bigpspart
(sum(xsd:decimal(?b_supplycost) * xsd:decimal(?b_availqty)) as ?bigpsvalue)
where
{
?bigps ltpch:part_partkey ?bigpspart ;
ltpch:partsupplier_supplycost ?b_supplycost ;
ltpch:partsupplier_availqty ?b_availqty ;
ltpch:nation_name "%NATION%" .
}
group by ?bigpspart
}
{
select
(sum(xsd:decimal(?t_supplycost) * xsd:decimal(?t_availqty)) * %FRACTION% as ?threshold)
where
{
?thr_ps ltpch:partsupplier_supplycost ?t_supplycost ;
ltpch:partsupplier_availqty ?t_availqty ;
ltpch:nation_name "%NATION%" .
}
}
filter (?bigpsvalue > ?threshold )
}
order by
desc (?bigpsvalue)
select
?l_shipmode
(sum (
xsd:integer(fn:starts-with(?o_orderpriority, "1-URGENT") ||
fn:starts-with(?o_orderpriority, "2-HIGH") ) ) as ?high_line_count)
(sum (1 -
xsd:integer(fn:starts-with(?o_orderpriority, "1-URGENT") ||
fn:starts-with(?o_orderpriority, "2-HIGH") ) ) as ?low_line_count)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_order ?ord ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipdate ?l_shipdate .
?ord ltpch:order_orderpriority ?o_orderpriority .
filter (?l_shipmode in ("%SHIPMODE1%", "%SHIPMODE2%") &&
(xsd:date(?l_commitdate) < xsd:date(?l_receiptdate)) &&
(xsd:date(?l_shipdate) < xsd:date(?l_commitdate)) &&
(xsd:date(?l_receiptdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?l_receiptdate) < ("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) )
}
group by
?l_shipmode
order by
?l_shipmode
select
?c_count
(count(1) as ?custdist)
where {
{ select
?c_custkey
(count (?o_comment) as ?c_count)
where
{
?ord ltpch:customer_custkey ?c_custkey .
optional {
?ord ltpch:order_comment ?o_comment .
filter (!( REGEX (?o_comment , "%WORD1%.*%WORD2%" ) ) ) .
}
}
group by
?c_custkey
}
}
group by
?c_count
order by
desc (count(1))
desc (?c_count)
select
((100 * sum(xsd:integer(fn:starts-with(?p_type, "PROMO")) * xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount))) / sum(xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount)))) as ?promo_revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_has_partsupplier ?part .
?part ltpch:part_type ?p_type .
filter (xsd:date(?l_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
(xsd:date(?l_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P1M"^^xsd:duration)) )
}
select distinct
?s_suppkey
?s_name
?s_address
?s_phone
?total_revenue
where
{
?partsupp ltpch:supplier_suppkey ?s_suppkey ;
ltpch:supplier_name ?s_name ;
ltpch:supplier_address ?s_address ;
ltpch:supplier_phone ?s_phone .
{
select
?s_suppkey
((sum(xsd:decimal(?l_extendedprice) * (1 - xsd:decimal(?l_discount)))) as ?total_revenue)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_extendedprice ;
ltpch:l_linediscount ?l_discount ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:supplier_suppkey ?s_suppkey .
filter (
xsd:date(?l_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
xsd:date(?l_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration) )
}
group by
?s_suppkey
} .
{
select
(max (?l2_total_revenue) as ?maxtotal)
where
{
{
select
((sum(xsd:decimal(?l2_extendedprice) * (1 - xsd:decimal(?l2_discount)))) as ?l2_total_revenue)
where
{
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l2_shipdate ;
ltpch:l_lineextendedprice ?l2_extendedprice ;
ltpch:l_linediscount ?l2_discount ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:supplier_suppkey ?s_suppkey2 .
filter (
xsd:date(?l2_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
xsd:date(?l2_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration) )
}
group by
?s_suppkey2
}
}
}
filter (?total_revenue = ?maxtotal)
}
order by
?s_suppkey
select
?p_brand
?p_type
?p_size
(count(distinct ?supp) as ?supplier_cnt)
where {
?ps ltpch:part_brand ?p_brand ;
ltpch:part_type ?p_type ;
ltpch:part_size ?p_size ;
ltpch:supplier_suppkey ?supp .
filter (
(?p_brand != "%BRAND%") &&
!(fn:starts-with(?p_type,"%TYPE%")) &&
(xsd:integer(?p_size) in (%SIZE1%, %SIZE2%, %SIZE3%, %SIZE4%, %SIZE5%, %SIZE6%, %SIZE7%, %SIZE8%))
)
filter NOT EXISTS {
?supp a ltpch:supplier;
ltpch:s_comment ?badcomment .
filter ( fn:matches (?badcomment ,"Customer.*Complaints") )
}
}
group by
?p_brand
?p_type
?p_size
order by
desc ((count(distinct ?supp)))
?p_brand
?p_type
?p_size
select
((sum(xsd:decimal(?l_lineextendedprice)) / 7.0) as ?avg_yearly)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?ps .
?ps ltpch:part_partkey ?p_partkey.
{
select
?p_partkey
((0.2 * avg(xsd:decimal(?l2_linequantity))) as ?threshold)
where {
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:part_partkey ?p_partkey ;
ltpch:part_container ?p_container ;
ltpch:part_brand ?p_brand .
}
group by
?p_partkey
}
filter (xsd:decimal(?l_linequantity) < ?threshold && REGEX(?p_brand,"%BRAND%","i") && ?p_container = "%CONTAINER%")
}
select
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
(sum(xsd:decimal(?l_linequantity)) as ?l_quantity)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_order ?ord .
?ord ltpch:order_orderkey ?o_orderkey ;
ltpch:order_orderdate ?o_orderdate ;
ltpch:order_ordertotalprice ?o_ordertotalprice ;
ltpch:customer_custkey ?c_custkey ;
ltpch:customer_name ?c_name .
{
select
?ord
(sum (xsd:decimal(?l2_linequantity)) as ?sum_q)
where
{
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:l_has_order ?ord .
}
group by
?ord
} .
filter (xsd:decimal(?sum_q) > xsd:decimal(%QUANTITY%))
}
group by
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
order by
desc (?o_ordertotalprice)
?o_orderdate
limit 100
select
((sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipinstruct ?l_shipinstruct .
?ps ltpch:part_brand ?p_brand ;
ltpch:part_size ?p_size ;
ltpch:part_container ?p_container .
filter (?l_shipmode in ("AIR", "AIR REG") &&
?l_shipinstruct = "DELIVER IN PERSON" &&
( ( (REGEX(?p_brand,"^%BRAND1%$","i")) &&
(?p_container in ("SM CASE", "SM BOX", "SM PACK", "SM PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY1%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY1% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 5) ) ||
( (REGEX(?p_brand,"^%BRAND2%$","i")) &&
(?p_container in ("MED BAG", "MED BOX", "MED PKG", "MED PACK")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY2%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY2% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 10) ) ||
( (REGEX(?p_brand,"^%BRAND3%$","i")) &&
(?p_container in ("LG CASE", "LG BOX", "LG PACK", "LG PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY3%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY3% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 15) ) ) )
}
select distinct
?s_name
?s_address
where
{
?supp ltpch:supplier_name ?s_name ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:supplier_address ?s_address .
{
select
distinct ?suppkey
where
{
?big_ps ltpch:partsupplier_availqty ?big_ps_availqty ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:nation_name ?n_name ;
ltpch:part_name ?p_name .
filter (REGEX (?p_name , "^%COLOR%") &&
?n_name = "%NATION%" &&
xsd:decimal(?big_ps_availqty) > ?qty_threshold)
{
select
?big_ps
((0.5 * sum(xsd:decimal(?l_linequantity))) as ?qty_threshold)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?big_ps .
filter ((xsd:date(?l_shipdate) >= xsd:date("%YEAR%-01-01"^^xsd:date)) &&
(xsd:date(?l_shipdate) < xsd:date("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration))
)
}
group by
?big_ps
} .
}
}
}
order by ?s_name
select
?s_name
((count(1)) as ?numwait)
where {
?li1 qb:dataSet ltpch:lineitemCube ;
ltpch:l_receiptdate ?l1_receiptdate ;
ltpch:l_commitdate ?l1_commitdate ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_has_order ?ord .
?ps ltpch:supplier_name ?s_name ;
ltpch:supplier_suppkey ?suppkey ;
ltpch:nation_name ?n_name .
?ord ltpch:order_orderstatus ?o_orderstatus .
filter (
xsd:date(?l1_receiptdate) > xsd:date(?l1_commitdate) &&
?n_name = "%NATION%" &&
?o_orderstatus = "F"
)
filter exists {
?li2 ltpch:l_has_order ?ord ;
ltpch:l_has_partsupplier ?ps2 .
?ps2 ltpch:supplier_suppkey ?suppkey2 .
filter (?suppkey != ?suppkey2)
}
filter not exists {
?li3 ltpch:l_has_order ?ord ;
ltpch:l_receiptdate ?l3_receiptdate ;
ltpch:l_commitdate ?l3_commitdate ;
ltpch:l_has_partsupplier ?ps3 .
?ps3 ltpch:supplier_suppkey ?suppkey3 .
filter (
xsd:date(?l3_receiptdate) > xsd:date(?l3_commitdate) &&
?suppkey3 != ?suppkey
)
}
}
group by
?s_name
order by
desc (count(1))
?s_name
limit 100
select
?cntrycode
(count (1) as ?numcust)
(sum (xsd:decimal(?c_acctbal)) as ?totacctbal)
where {
?cust ltpch:customer_acctbal ?c_acctbal ;
ltpch:customer_phone ?c_phone .
BIND (fn:substring(?c_phone,0, 3) as ?cntrycode)
{
select (avg (xsd:decimal(?c_acctbal2)) as ?acctbal_threshold)
where
{
?cust2 ltpch:customer_acctbal ?c_acctbal2 ;
ltpch:customer_phone ?c_phone2 .
filter ((xsd:decimal(?c_acctbal2) > 0.00) &&
fn:substring(?c_phone2,0, 3) in (%COUNTRY_CODE_SET%) )
}
}
filter (
?cntrycode in (%COUNTRY_CODE_SET%) &&
(xsd:decimal(?c_acctbal) > ?acctbal_threshold ) )
filter not exists { ?cust ltpch:order_orderkey ?orderkey }
}
group by ?cntrycode
order by ?cntrycode
prefix qb4o: <http://publishing-multidimensional-data.googlecode.com/git/index.html#ref_qbplus_>
prefix qb: <http://purl.org/linked-data/cube#>
prefix ltpch: <http://extbi.lab.aau.dk/ontology/ltpch/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix fn: <http://www.w3.org/2005/xpath-functions#>
select
?l_returnflag
?l_linestatus
(sum(xsd:decimal(?l_linequantity)) as ?sum_qty)
(sum(xsd:decimal(?l_lineextendedprice)) as ?sum_base_price)
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?sum_disc_price)
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))*(1 + xsd:decimal(?l_linetax))) as ?sum_charge)
(avg(xsd:decimal(?l_linequantity)) as ?avg_qty)
(avg(xsd:decimal(?l_lineextendedprice)) as ?avg_price)
(avg(xsd:decimal(?l_linediscount)) as ?avg_disc)
(count(1) as ?count_order)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_linestatus ?l_linestatus ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linetax ?l_linetax ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linediscount ?l_linediscount .
filter (xsd:date(?l_shipdate) <= ("1998-12-01"^^xsd:date + "-P%DELTA%D"^^xsd:duration))
}
group by
?l_returnflag
?l_linestatus
order by
?l_returnflag
?l_linestatus
select distinct
?s_acctbal
?s_name
?nation_name
?p_partkey
?p_mfgr
?s_address
?s_phone
?s_comment
where {
?li ltpch:partsupplier_partsupplier_supplycost ?minsc ;
ltpch:partsupplier_supplier_acctbal ?s_acctbal ;
ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_address ?s_address ;
ltpch:partsupplier_supplier_phone ?s_phone ;
ltpch:partsupplier_supplier_comment ?s_comment ;
ltpch:partsupplier_nation_name ?nation_name ;
ltpch:partsupplier_region_name "%REGION%" ;
ltpch:partsupplier_part_partkey ?p_partkey ;
ltpch:partsupplier_part_mfgr ?p_mfgr ;
ltpch:partsupplier_part_size ?size ;
ltpch:partsupplier_part_type ?p_type .
FILTER (?size = str(%SIZE%) && fn:contains(?p_type, "%TYPE%"))
{ select ?p_partkey (min(?s_cost) as ?minsc)
where {
?li ltpch:partsupplier_part_partkey ?p_partkey;
ltpch:partsupplier_partsupplier_supplycost ?s_cost ;
ltpch:partsupplier_region_name ?region2 .
filter (?region2 = "%REGION%")
}
group by ?p_partkey
}
}
order by
desc (?s_acctbal)
?nation_name
?s_name
?p_partk
select
?o_orderkey
(sum(xsd:decimal(?l_lineextendedprice)*(1 - xsd:decimal(?l_linediscount))) as ?revenue)
?o_orderdate
?o_shippriority
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_order_shippriority ?o_shippriority ;
ltpch:order_order_orderkey ?o_orderkey ;
ltpch:order_customer_mktsegment ?c_mktsegment .
filter ((xsd:date(?o_orderdate) < "%DATE%"^^xsd:date) &&
(xsd:date(?l_shipdate) > "%DATE%"^^xsd:date) &&
(?c_mktsegment = "%SEGMENT%") )
}
group by
?o_orderkey
?o_orderdate
?o_shippriority
order by
desc (sum (xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
?o_orderdate
limit 10
select
?o_orderpriority
(count(*) as ?order_count)
where
{
{
select distinct
?o_orderpriority
?ordkey
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:order_order_orderpriority ?o_orderpriority ;
ltpch:order_order_orderkey ?ordkey ;
ltpch:order_order_orderdate ?o_orderdate .
filter (
(xsd:date(?l_commitdate) < xsd:date(?l_receiptdate)) &&
(xsd:date(?o_orderdate) >= "%MONTH%-01"^^xsd:date) &&
(xsd:date(?o_orderdate) < ("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration))
)
}
}
}
group by
?o_orderpriority
order by
?o_orderpriority
select
?nation
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_nation_name ?c_nation ;
ltpch:partsupplier_nation_name ?nation ;
ltpch:partsupplier_region_name ?r_name .
filter ((?c_nation = ?nation) &&
(xsd:date(?o_orderdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?o_orderdate) < ("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) &&
(?r_name = "%REGION%") )
}
group by
?nation
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
select
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipdate ?l_shipdate .
filter ( (xsd:date(?l_shipdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?l_shipdate) < xsd:date("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) &&
(xsd:decimal(?l_linediscount) >= %DISCOUNT% - 0.01) &&
(xsd:decimal(?l_linediscount) <= %DISCOUNT% + 0.01) &&
(xsd:decimal(?l_linequantity) < %QUANTITY%) )
}
select
?supp_nation
?cust_nation
?li_year
(sum (xsd:decimal(?volume)) as ?revenue)
where {
{
select
?supp_nation
?cust_nation
?li_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:order_nation_name ?cust_nation ;
ltpch:partsupplier_nation_name ?supp_nation .
BIND (SUBSTR(STR(?l_shipdate), 1,4) as ?li_year)
filter (xsd:boolean(
(?cust_nation = "%NATION1%" && ?supp_nation = "%NATION2%") ||
(?cust_nation = "%NATION2%" && ?supp_nation = "%NATION1%") ) &&
xsd:boolean(xsd:date(?l_shipdate) >= xsd:date("1995-01-01"^^xsd:date)) &&
xsd:boolean(xsd:date(?l_shipdate) <= xsd:date("1996-12-31"^^xsd:date)) )
}
}
}
group by
?supp_nation
?cust_nation
?li_year
order by
?supp_nation
?cust_nation
?li_year
select
?o_year
((?sum1 / ?sum2) as ?mkt_share)
where {
{ select
?o_year
(sum (?volume * xsd:integer(fn:starts-with(?nation, "%NATION%"))) as ?sum1)
(sum (?volume) as ?sum2)
where {
{ select
((YEAR(xsd:date(?o_orderdate))) as ?o_year)
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?volume)
?nation
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_has_partsupplier ?ps ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:partsupplier_nation_name ?nation ;
ltpch:partsupplier_part_type ?type ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_region_name ?region .
filter ((xsd:date(?o_orderdate) >= xsd:date("1995-01-01"^^xsd:date)) &&
(xsd:date(?o_orderdate) <= xsd:date("1996-12-31"^^xsd:date)) &&
(?region = "%REGION%") &&
(?type = "%TYPE%")
)
}
}
}
group by
?o_year
}
}
order by
?o_year
select
?nation
?o_year
(sum(?amount) as ?sum_profit)
where {
{ select
?nation
?o_year
((xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)) - xsd:decimal(?ps_supplycost) * xsd:decimal(?l_linequantity)) as ?amount)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:partsupplier_nation_name ?nation ;
ltpch:partsupplier_partsupplier_supplycost ?ps_supplycost ;
ltpch:partsupplier_part_name ?p_name ;
ltpch:order_order_orderdate ?o_orderdate .
filter (REGEX (?p_name, "%COLOR%"))
BIND (SUBSTR(STR(?o_orderdate), 1,4) as ?o_year)
}
}
}
group by
?nation
?o_year
order by
?nation
desc (?o_year)
select
?c_custkey
?c_companyName
(sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))) as ?revenue)
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_returnflag ?l_returnflag ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_customer_address ?c_address ;
ltpch:order_customer_phone ?c_phone ;
ltpch:order_customer_comment ?c_comment ;
ltpch:order_customer_acctbal ?c_acctbal ;
ltpch:order_customer_custkey ?c_custkey ;
ltpch:order_customer_name ?c_companyName ;
ltpch:order_nation_name ?nation .
filter ((xsd:date(?o_orderdate) >= xsd:date("%MONTH%-01"^^xsd:date)) &&
(xsd:date(?o_orderdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration)) &&
(?l_returnflag = "R")
)
}
group by
?c_custkey
?c_companyName
?c_acctbal
?nation
?c_address
?c_phone
?c_comment
order by
desc (sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount))))
limit 20
select
?bigpspart
?bigpsvalue
where {
{ select
?bigpspart
(sum(xsd:decimal(?b_supplycost) * xsd:decimal(?b_availqty)) as ?bigpsvalue)
where
{
?bigps ltpch:partsupplier_part_partkey ?bigpspart ;
ltpch:partsupplier_partsupplier_supplycost ?b_supplycost ;
ltpch:partsupplier_partsupplier_availqty ?b_availqty ;
ltpch:partsupplier_nation_name "%NATION%" .
}
group by ?bigpspart
}
{
select
(sum(xsd:decimal(?t_supplycost) * xsd:decimal(?t_availqty)) * %FRACTION% as ?threshold)
where
{
?thr_ps ltpch:partsupplier_partsupplier_supplycost ?t_supplycost ;
ltpch:partsupplier_partsupplier_availqty ?t_availqty ;
ltpch:partsupplier_nation_name "%NATION%" .
}
}
filter (?bigpsvalue > ?threshold )
}
order by
desc (?bigpsvalue)
select
?l_shipmode
(sum (
xsd:integer(fn:starts-with(?o_orderpriority, "1-URGENT") ||
fn:starts-with(?o_orderpriority, "2-HIGH") ) ) as ?high_line_count)
(sum (1 -
xsd:integer(fn:starts-with(?o_orderpriority, "1-URGENT") ||
fn:starts-with(?o_orderpriority, "2-HIGH") ) ) as ?low_line_count)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_commitdate ?l_commitdate ;
ltpch:l_receiptdate ?l_receiptdate ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:order_order_orderpriority ?o_orderpriority .
filter (?l_shipmode in ("%SHIPMODE1%", "%SHIPMODE2%") &&
(xsd:date(?l_commitdate) < xsd:date(?l_receiptdate)) &&
(xsd:date(?l_shipdate) < xsd:date(?l_commitdate)) &&
(xsd:date(?l_receiptdate) >= "%YEAR%-01-01"^^xsd:date) &&
(xsd:date(?l_receiptdate) < ("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration)) )
}
group by
?l_shipmode
order by
?l_shipmode
select
?c_count
(count(1) as ?custdist)
where {
{ select
?c_custkey
(count (?orderkey) as ?c_count)
where
{
{
select distinct ?c_custkey
where
{
?li ltpch:order_customer_custkey ?c_custkey .
}
}
optional {
{
select ?orderkey
where {
?li2 ltpch:order_customer_custkey ?c_custkey ;
ltpch:order_order_orderkey ?orderkey ;
ltpch:order_order_comment ?o_comment .
filter (!( REGEX (?o_comment , "%WORD1%.*%WORD2%" ) ) ) .
}
group by ?orderkey
}
}
}
group by
?c_custkey
}
}
group by
?c_count
order by
desc (count(1))
desc (?c_count)
select
((100 * sum(xsd:integer(fn:starts-with(?p_type, "PROMO")) * xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount))) / sum(xsd:decimal(?l_lineextendedprice) * (xsd:decimal(1) - xsd:decimal(?l_linediscount)))) as ?promo_revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:partsupplier_part_type ?p_type .
filter (xsd:date(?l_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
(xsd:date(?l_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P1M"^^xsd:duration)) )
}
select distinct
?s_suppkey
?s_name
?s_address
?s_phone
?total_revenue
where
{
?partsupp ltpch:partsupplier_supplier_suppkey ?s_suppkey ;
ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_address ?s_address ;
ltpch:partsupplier_supplier_phone ?s_phone .
{
select
?s_suppkey
((sum(xsd:decimal(?l_extendedprice) * (1 - xsd:decimal(?l_discount)))) as ?total_revenue)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_lineextendedprice ?l_extendedprice ;
ltpch:l_linediscount ?l_discount ;
ltpch:l_has_partsupplier ?ps ;
ltpch:partsupplier_supplier_suppkey ?s_suppkey .
filter (
xsd:date(?l_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
xsd:date(?l_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration) )
}
group by
?s_suppkey
} .
{
select
(max (?l2_total_revenue) as ?maxtotal)
where
{
{
select
((sum(xsd:decimal(?l2_extendedprice) * (1 - xsd:decimal(?l2_discount)))) as ?l2_total_revenue)
where
{
?li2 qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l2_shipdate ;
ltpch:l_lineextendedprice ?l2_extendedprice ;
ltpch:l_linediscount ?l2_discount ;
ltpch:l_has_partsupplier ?ps2 ;
ltpch:partsupplier_supplier_suppkey ?s_suppkey2 .
filter (
xsd:date(?l2_shipdate) >= xsd:date("%MONTH%-01"^^xsd:date) &&
xsd:date(?l2_shipdate) < xsd:date("%MONTH%-01"^^xsd:date + "P3M"^^xsd:duration) )
}
group by
?s_suppkey2
}
}
}
filter (?total_revenue = ?maxtotal)
}
order by
?s_suppkey
select
?p_brand
?p_type
?p_size
(count(distinct ?supp) as ?supplier_cnt)
where {
?ps ltpch:partsupplier_part_brand ?p_brand ;
ltpch:partsupplier_part_type ?p_type ;
ltpch:partsupplier_part_size ?p_size ;
ltpch:partsupplier_supplier_suppkey ?supp .
filter (
(?p_brand != "%BRAND%") &&
!(fn:starts-with(?p_type,"%TYPE%")) &&
(xsd:integer(?p_size) in (%SIZE1%, %SIZE2%, %SIZE3%, %SIZE4%, %SIZE5%, %SIZE6%, %SIZE7%, %SIZE8%))
)
filter NOT EXISTS {
?supp a ltpch:supplier;
ltpch:s_comment ?badcomment .
filter ( fn:matches (?badcomment ,"Customer.*Complaints") )
}
}
group by
?p_brand
?p_type
?p_size
order by
desc ((count(distinct ?supp)))
?p_brand
?p_type
?p_size
select
((sum(xsd:decimal(?l_lineextendedprice)) / 7.0) as ?avg_yearly)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_has_partsupplier ?ps ;
ltpch:partsupplier_part_partkey ?p_partkey.
{
select
?p_partkey
((0.2 * avg(xsd:decimal(?l2_linequantity))) as ?threshold)
where {
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:partsupplier_part_partkey ?p_partkey ;
ltpch:partsupplier_part_container ?p_container ;
ltpch:partsupplier_part_brand ?p_brand .
}
group by
?p_partkey
}
filter (xsd:decimal(?l_linequantity) < ?threshold && REGEX(?p_brand,"%BRAND%","i") && ?p_container = "%CONTAINER%")
}
select
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
(sum(xsd:decimal(?l_linequantity)) as ?l_quantity)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:order_order_orderkey ?o_orderkey ;
ltpch:order_order_orderdate ?o_orderdate ;
ltpch:order_order_ordertotalprice ?o_ordertotalprice ;
ltpch:order_customer_custkey ?c_custkey ;
ltpch:order_customer_name ?c_name .
{
select
?o_orderkey
(sum (xsd:decimal(?l2_linequantity)) as ?sum_q)
where
{
?li2 a ltpch:lineitem ;
ltpch:l_linequantity ?l2_linequantity ;
ltpch:order_order_orderkey ?o_orderkey .
}
group by
?o_orderkey
} .
filter (xsd:decimal(?sum_q) > xsd:decimal(%QUANTITY%))
}
group by
?c_name
?c_custkey
?o_orderkey
?o_orderdate
?o_ordertotalprice
order by
desc (?o_ordertotalprice)
?o_orderdate
limit 100
select
((sum(xsd:decimal(?l_lineextendedprice) * (1 - xsd:decimal(?l_linediscount)))) as ?revenue)
where {
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_lineextendedprice ?l_lineextendedprice ;
ltpch:l_linediscount ?l_linediscount ;
ltpch:l_linequantity ?l_linequantity ;
ltpch:l_shipmode ?l_shipmode ;
ltpch:l_shipinstruct ?l_shipinstruct ;
ltpch:partsupplier_part_brand ?p_brand ;
ltpch:partsupplier_part_size ?p_size ;
ltpch:partsupplier_part_container ?p_container .
filter (?l_shipmode in ("AIR", "AIR REG") &&
?l_shipinstruct = "DELIVER IN PERSON" &&
( ( (REGEX(?p_brand,"^%BRAND1%$","i")) &&
(?p_container in ("SM CASE", "SM BOX", "SM PACK", "SM PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY1%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY1% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 5) ) ||
( (REGEX(?p_brand,"^%BRAND2%$","i")) &&
(?p_container in ("MED BAG", "MED BOX", "MED PKG", "MED PACK")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY2%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY2% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 10) ) ||
( (REGEX(?p_brand,"^%BRAND3%$","i")) &&
(?p_container in ("LG CASE", "LG BOX", "LG PACK", "LG PKG")) &&
(xsd:integer(?l_linequantity) >= %QUANTITY3%) &&
(xsd:integer(?l_linequantity) <= %QUANTITY3% + 10) &&
(xsd:integer(?p_size) >= 1) && (xsd:integer(?p_size) <= 15) ) ) )
}
select distinct
?s_name
?s_address
where
{
?supp ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_supplier_address ?s_address .
{
select
distinct ?suppkey
where
{
?li ltpch:partsupplier_partsupplier_availqty ?big_ps_availqty ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_nation_name ?n_name ;
ltpch:partsupplier_part_name ?p_name .
filter (REGEX (?p_name , "^%COLOR%") &&
?n_name = "%NATION%" &&
xsd:decimal(?big_ps_availqty) > ?qty_threshold)
{
select
?li
((0.5 * sum(xsd:decimal(?l_linequantity))) as ?qty_threshold)
where
{
?li qb:dataSet ltpch:lineitemCube ;
ltpch:l_shipdate ?l_shipdate ;
ltpch:l_linequantity ?l_linequantity .
filter ((xsd:date(?l_shipdate) >= xsd:date("%YEAR%-01-01"^^xsd:date)) &&
(xsd:date(?l_shipdate) < xsd:date("%YEAR%-01-01"^^xsd:date + "P1Y"^^xsd:duration))
)
}
group by
?li
} .
}
}
}
order by ?s_name
select
?s_name
((count(1)) as ?numwait)
where {
?li1 qb:dataSet ltpch:lineitemCube ;
ltpch:l_receiptdate ?l1_receiptdate ;
ltpch:l_commitdate ?l1_commitdate ;
ltpch:partsupplier_supplier_name ?s_name ;
ltpch:partsupplier_supplier_suppkey ?suppkey ;
ltpch:partsupplier_nation_name ?n_name ;
ltpch:order_order_orderkey ?orderkey ;
ltpch:order_order_orderstatus ?o_orderstatus .
filter (
xsd:date(?l1_receiptdate) > xsd:date(?l1_commitdate) &&
?n_name = "%NATION%" &&
?o_orderstatus = "F"
)
filter exists {
?li2 ltpch:order_order_orderkey ?orderkey ;
ltpch:partsupplier_supplier_suppkey ?suppkey2 .
filter (?suppkey != ?suppkey2)
}
filter not exists {
?li3 ltpch:order_order_orderkey ?orderkey ;
ltpch:l_receiptdate ?l3_receiptdate ;
ltpch:l_commitdate ?l3_commitdate ;
ltpch:partsupplier_supplier_suppkey ?suppkey3 .
filter (
xsd:date(?l3_receiptdate) > xsd:date(?l3_commitdate) &&
?suppkey3 != ?suppkey
)
}
}
group by
?s_name
order by
desc (count(1))
?s_name
limit 100
select
?cntrycode
(count (1) as ?numcust)
(sum (xsd:decimal(?c_acctbal)) as ?totacctbal)
where {
?cust ltpch:order_customer_acctbal ?c_acctbal ;
ltpch:order_customer_phone ?c_phone .
BIND (fn:substring(?c_phone,0, 3) as ?cntrycode)
{ select (avg (xsd:decimal(?c_acctbal2)) as ?acctbal_threshold)
where
{
?li ltpch:order_customer_acctbal ?c_acctbal2 ;
ltpch:order_customer_phone ?c_phone2 .
filter ((xsd:decimal(?c_acctbal2) > 0.00) &&
fn:substring(?c_phone2,0, 3) in (%COUNTRY_CODE_SET%) )
}
}
filter (
?cntrycode in (%COUNTRY_CODE_SET%) &&
(xsd:decimal(?c_acctbal) > ?acctbal_threshold ) )
filter not exists { ?cust ltpch:order_order_orderkey ?orderkey }
}
group by ?cntrycode
order by ?cntrycode
© Copyright 2015- by QWeb. All Rights Reserved.