Hello all,
In the last two weeks I have addressed LIMIT and UNION support in my
database-driven sparql engine. For this, I extended the current sparql
parser to parse LIMITs and convert them into a nice tree. The tree makes
it easily possible to replace the current code in the old, memory based
SparqlEngine limit handling code (which has a barn-door wide security
hole currently by using the evil eval() function to verify limit
clauses) by a secure alternative. I didn't have time to do this yet.
SparqlEngineDb's LIMIT support is nearly finished; the 41 limit unit
tests pass (with the exception of three which are either not possible to
implement, or are not worth the required work [which would be huge] and
would slow down the queries badly. All of them are edge cases.).
Further, I added support for UNIONs so that the custom union unit tests
pass now. This brought changes in the way results needs to be handled,
so if you already have own result renderers, you need to adapt them
(make a cvs diff between the old and the new default renderer code, and
you see that it's trivial changes).
After I got this done this evening, I tries out the arq unit tests. 11
of them fail currently, so that we have a total score of 120 passes and
11 failures. I will try to fix them this weekend.
If they are done, my work is basically done. I will add some new
features currently not in the Sparql standard (e.g. returning datatypes
and languages (and variable renamings needed for this) as well as
grouping functionality. This changes shall be proposed to the W3C for
the inclusion in Sparql standard, if they turn out to work well.
So long,
--=20
Regards/Mit freundlichen Gr=C3=BC=C3=9Fen
Christian Weiske
|