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;