- From: Richard Newman <r.newman@reading.ac.uk>
- Date: Mon, 10 Oct 2005 09:19:16 -0700
- To: Adrian Walker <adrianw@snet.net>
- Cc: semantic-web@w3.org
- Message-Id: <93FEBAA3-C732-4087-8865-D9EA82762CE5@reading.ac.uk>
That looks like complex SQL but fairly simple logic, based on my scanning... I see no reason why any SPARQL tool (coming to mind are Rasqal, twinql (mine), and ARQ) couldn't do it. The speed of such a query would be dependent on the underlying store, too -- some aren't indexed on each part of a triple, so some queries are slow, and I'm not about to manually translate that SQL to check. One thing you might have difficulty with is grouping; you'll have to carefully think about what you're trying to get back. -R On 10 Oct 2005, at 09:07, Adrian Walker wrote: > Hi All -- > > We have a system [1] that supports business rules in open > vocabulary English. > > From the rules, the system can generate complex SQL, such as the > sample below [2]. > > I'm wondering please whether, if we extend the generator to SPARQL, > there is currently a SPARQL implementation that could handle this > degree of query complexity? > > In any case, your recommendations about the currently most W3C > compliant and stable version of SPARQL would be much appreciated. > > Thanks in advance, -- Adrian > > [1] Online at www.reengineeringllc.com. Shared, community use is > free. > > [2] > select distinct x6,T2.PRODUCT,T1.NAME,T2.AMOUNT,x5 from > T6 tt1,T6 tt2,T5,T4,T3,T2,T1,T6, > (select x3 x6,T6.FINISHED_PRODUCT x7,T6.ID x8,tt1.ID x9,tt2.ID > x10,sum(x4) x5 from > T6,T6 tt1,T6 tt2, > ((select T6.ID x3,T3.PRODUCT1,T1.NAME,T2.AMOUNT x4,T2.PRODUCT from > T1,T2,T3,T4,T5,T6,T6 tt1,T6 tt2 where > T1.NAME=T2.NAME and T1.REGION=T6.REGION and > T2.MONTH1=T4.MONTH1 and > T2.MONTH1=T6.MONTH1 and T2.PRODUCT=T3.PRODUCT2 and > T4.MONTH1=T6.MONTH1 and > T3.PRODUCT1=T6.FINISHED_PRODUCT and T3.SEASON=T4.SEASON and > T3.SEASON=T5.SEASON and > T4.SEASON=T5.SEASON and T6.ID=tt1.ID and T6.ID=tt2.ID and > tt1.ID=tt2.ID) > union > (select T6.ID x3,T2.PRODUCT,T1.NAME,T2.AMOUNT x4,T2.PRODUCT from > T1,T2,T3,T4,T5,T6,T6 tt1,T6 tt2 where > T1.NAME=T2.NAME and T1.REGION=T6.REGION and > T2.MONTH1=T6.MONTH1 and > T2.PRODUCT=T6.FINISHED_PRODUCT and T6.ID=tt1.ID and > T6.ID=tt2.ID and tt1.ID=tt2.ID) > ) group by T6.FINISHED_PRODUCT,T6.ID,tt1.ID,tt2.ID,x3) where > T6.ID=tt2.ID and tt1.ID=T6.ID and T6.FINISHED_PRODUCT=x7 and > T6.ID=x8 and tt1.ID=x8 and > tt2.ID=x8 and T1.NAME=T2.NAME and T1.REGION=tt2.REGION and > T2.MONTH1=T4.MONTH1 and > T2.MONTH1=tt2.MONTH1 and T2.PRODUCT=T3.PRODUCT2 and > T3.PRODUCT1=tt1.FINISHED_PRODUCT and > T3.PRODUCT1=tt2.FINISHED_PRODUCT and > T3.SEASON=T4.SEASON and T3.SEASON=T5.SEASON and > T4.MONTH1=tt2.MONTH1 and > T4.SEASON=T5.SEASON and T6.ID=x6 and > tt1.FINISHED_PRODUCT=tt2.FINISHED_PRODUCT and > tt1.ID=tt2.ID and tt1.ID=x6 and tt2.ID=x6 > order by x6,T2.PRODUCT,T1.NAME,T2.AMOUNT,x5;
Received on Monday, 10 October 2005 16:19:33 UTC