- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Tue, 5 Mar 2013 17:16:30 -0800
- To: "public-rdf-dawg-comments@w3.org" <public-rdf-dawg-comments@w3.org>
This should be of general interest to the SPARQL community. Note, that to parse the grammar as LL(1), I needed to re-write a couple of rules, e.g.: [7] SelectQuery ::= SelectClause DatasetClause* WhereClause SolutionModifier? In the original rule SolutionModifier is not optional, but all of it's productions are optional. Unfortunately, the standard LL(1) rules don't propagate this optionally to SelectQuery. Making that rule optional solved my problem, at least. Gregg Begin forwarded message: > From: Gregg Kellogg <gregg@greggkellogg.net> > Subject: SPARQL 1.0.3 and EBNF gems released > Date: March 5, 2013 5:10:04 PM PST > To: "public-rdf-ruby@w3.org" <public-rdf-ruby@w3.org> > > I've updated the SPARQL gem [1], which works with RDF.rb 1.0 and greater in pure Ruby (>= 1.8.7). This version has no new functionality, but is based on the SPARQL 1.1 grammar, rather than the SPARQL 1.0 grammar. In order to get the SPARQL 1.1 grammar to compile, I needed to re-create my LL(1) toolchain, which used some custom components along with some old SWAP rules. The new version uses a new EBNF gem [2], which parses W3C EBNF and generates LL(1) parser tables (first/follow and branch). It also includes a generic LL(1) parser core, which is used both by Turtle and TriG parser gems as well as SPARQL. > > The EBNF gem will probably be of more interest to spec writers in the future, as it can validate EBNF grammars, turn them into BNF grammars and create generally usable parser tables. It will also be useful as a web service for generating grammar documentation, providing formatted HTML output of compliant grammars. > > Having the SPARQL gem use the 1.1 grammar now enables the generation of more algebra operators to support more the more advanced features of SPARQL 1.1 query and update. > > [1] https://rubygems.org/gems/sparql > [2] https://rubygems.org/gems/ebnf
Received on Wednesday, 6 March 2013 01:17:01 UTC