OK, I could easily spend another month on this beast, but it should be good enough for my current projects and I really have to continue with those now. The v0.2.0 rewriter converts a structure created by the ARC SPARQL Parser to SQL code. This allows pushing SPARQL query processing to a mySQL database engine, thus working around the PHP performance bottleneck on hosted Web servers (well, not only there ;). It supports only a subset of the specification, but I tried to cover the most common cases. The rewriter doesn't make much sense as a stand-alone component (unless you are an RDF infrastructure developer), but I'll keep its revisions separate from the upcoming ARC RDF Store.
Unfortunately, the W3C test cases are provided in n3 only, but I managed to at least scrape the examples from the working draft. As you may be able to see in that document, the rewriter cannot handle multiple/nested UNIONs, combined expressions, some of the built-ins (e.g. lang, langMatches), custom functions, and several other features yet, but it can convert triple patterns, OPTIONALs (simple, grouped, or nested), simple UNIONs, simple REGEXes (translated to LIKEs where possible), GRAPH queries, and dataset restrictions (although I'm still not 100% sure if I completely understood the FROM NAMED stuff). I also included the optimisation stuff I wrote about last week: A list of property alternatives can be provided which will then be rewritten to embedded ORs instead of using UNIONs. And the rewriter is able to create SQL for a split up triple table space (How to split is customisable, I'm going to write more about this when the store is released).
ARC Store design fine-tuning
- All Posts
- FOAF Posts
- Semantic Web Posts