On 22/02/12 11:18, elem güzel wrote:
Hello;

I have been studying about join ordering problems at SPARQL queries and i
have been using ARQ for that. I aim to change order of triple patterns at
algebra level.
But i have some problems and i need to ask you.

1 -   Which kind of algorithms are used for join operation? (Nested-loop,
merge-join ...etc.) (Especially at "Algebra.exec(op, model)" function)

It depends on the storage layer's execution.

The ARQ high level optimizer has functions to reorg the join patterns - it introduces (sequence) and (conditional) which flag that the execution can be done with an unscoped index join. If the query is not amenable to that reordering it uses a fairly dumb inner loop join; but such queries are not that common, excpt in test cases!

If you see improvements to make, I hope you will submit the improvements to the project?

The TDB storage layer uses that transformation set and also does stats based reordering of BGPs.

The memory execution executes the algebra after high-level optimization fairly directly.

What SDB does depends on the database.

2-    Is ARQ using bushy trees or left-deep trees at execution of query?

(sequence) is basically trying to make things left-deep.

Could you answer these questions or send related articles?

The code for OpExecutorTDB and (in ARQ) OpExecutor.

        Andy


Thank you very much,
Best regards.


Reply via email to