Skip to content

Commit 828569f

Browse files
committed
Use optimize option in SPARQL.parse and SPARQL::Algebra.parse to run optimizer, if specified.
1 parent d9420ad commit 828569f

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

lib/sparql.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff 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
##

lib/sparql/algebra.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff 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

spec/spec_helper.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff 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))
153153
end
154154

0 commit comments

Comments
 (0)