Hi Rob, thank you for the quick reply. Tbh, I was a bit afraid of creating my own parser, thought it required forking Jena. But if you say that it is perfectly feasible, then I will give that a try. Regards, Sebastian
On Tue, 13 Oct 2026 at 15:48, Rob Vesse <[email protected]> wrote: > > > AFAICT Jena does not provide a way to extend the SPARQL parser. Is there > > any way this could be added? Or can you think of another way to do this > > without the need to fork Jena itself? > > Actually it does, and has done so for a very long time. I was using this in > production SPARQL database systems at a previous day job over a decade ago > now. > > The key APIs/interfaces you want to investigate are as follows: > > - SPARQLParserRegistry which maps Syntax to SPARQLParser instances, register > a custom parser via SPARQLParserRegistry.add() > - SPARQLParser which implements the actual parser. What I did previously > was to use the SPARQL JavaCC grammars from Jena as a base, add the relevant > syntax extensions with their productions and then generate a parser class in > my code base that I can register per the above. > - You may need to extend the Query class in order to capture the syntax > extensions. If you're purely using Jena for validation and then passing the > original query string as-is you can likely skip this. > - When calling QueryFactory.create() pass in your custom Syntax (which maps to > your custom SPARQLParser) directly OR set the Syntax.defaultQuerySyntax to > your > custom syntax > > Unfortunately the code I worked on was all for proprietary product so I can't > share it (and I haven't worked there in nearly 5 years now anyway) but > hopefully > this is enough to get you started. > > Happy to answer any further questions as you dig into this. > > Best Regards, > > Rob Vesse > > On 2026-10-13 08:56 UTC Sebastian Trueg via users wrote: > > Hi Andy (and others), > > > > we are currently in the process of replacing Blazegraph as the backend for > > the Wikidata query service with Qlever. The current version of WDQS > > supports a bunch of non-standard SPARQL features and syntax via > > Blazegraph-plugins. For WDQSv2 we are mostly targetting SPARQL 1.1. > > However, a few additional features will make it into the new version, to > > make the transition easier for users of WDQSv1. One of these features is > > named sub-queries. Qlever recently added support for them (see > > https://docs.qlever.dev/named-subqueries/), which is nice. However, we > > parse each query via Jena for some validation, prefix injection, and custom > > service resolving. > > > > This works fine for most cases, but when it comes to named sub-queries, > > Jena will fail to parse additional syntax like "WITH %something AS { ... > > }". This is expected of course, since it is not valid SPARQL. > > > > AFAICT Jena does not provide a way to extend the SPARQL parser. Is there > > any way this could be added? Or can you think of another way to do this > > without the need to fork Jena itself? > > > > Have a nice day. > > Cheers, > > Sebastian > >
