File tree Expand file tree Collapse file tree 3 files changed +14
-6
lines changed Expand file tree Collapse file tree 3 files changed +14
-6
lines changed Original file line number Diff line number Diff line change @@ -24,6 +24,8 @@ module SPARQL
2424 #
2525 # @param [IO, StringIO, String, #to_s] query
2626 # @param [Hash{Symbol => Object}] options
27+ # @option options [Boolean] :optimize (false)
28+ # Run query optimizer after parsing.
2729 # @option options [Boolean] :update (false)
2830 # Parse starting with UpdateUnit production, QueryUnit otherwise.
2931 # @option options (see SPARQL::Grammar::Parser#initialize)
@@ -34,7 +36,9 @@ module SPARQL
3436 # @raise [SPARQL::Grammar::Parser::Error] on invalid input
3537 def self . parse ( query , **options )
3638 parser_class = options [ :use11 ] ? Grammar ::Parser11 : Grammar ::Parser
37- parser_class . new ( query , **options ) . parse ( options [ :update ] ? :UpdateUnit : :QueryUnit )
39+ query = parser_class . new ( query , **options ) . parse ( options [ :update ] ? :UpdateUnit : :QueryUnit )
40+ query = query . optimize if options [ :optimize ]
41+ query
3842 end
3943
4044 ##
Original file line number Diff line number Diff line change @@ -402,9 +402,13 @@ module Algebra
402402 # a SPARQL S-Expression (SSE) string
403403 # @param [Hash{Symbol => Object}] options
404404 # any additional options (see {Operator#initialize})
405+ # @option options [Boolean] :optimize (false)
406+ # Run query optimizer after parsing.
405407 # @return [SPARQL::Algebra::Operator]
406408 def parse ( sse , **options )
407- Expression . parse ( sse , **options )
409+ query = Expression . parse ( sse , **options )
410+ query = query . optimize if options [ :optimize ]
411+ query
408412 end
409413 module_function :parse
410414
Original file line number Diff line number Diff line change @@ -134,10 +134,11 @@ def sparql_query(opts)
134134
135135 query_str = opts [ :query ]
136136 parser_opts = {
137- update : opts [ :form ] == :update ,
138- base_uri : opts [ :base_uri ] ,
139137 all_vars : opts [ :all_vars ] ,
140- use11 : opts [ :use11 ]
138+ base_uri : opts [ :base_uri ] ,
139+ optimize : opts [ :optimize ] ,
140+ update : opts [ :form ] == :update ,
141+ use11 : opts [ :use11 ] ,
141142 }
142143 query_opts = { logger : opts . fetch ( :logger , RDF ::Spec . logger ) }
143144 query_opts [ :base_uri ] = opts [ :base_uri ]
@@ -148,7 +149,6 @@ def sparql_query(opts)
148149 SPARQL . parse ( query_str , **parser_opts )
149150 end
150151
151- query = query . optimize if opts [ :optimize ]
152152 repo . query ( query , logger : opts . fetch ( :logger , RDF ::Spec . logger ) )
153153end
154154
You can’t perform that action at this time.
0 commit comments