sparql 3.3.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  require 'ebnf'
2
2
  require 'ebnf/ll1/parser'
3
- require 'sparql/grammar/meta'
3
+ require 'sparql/grammar/meta11'
4
4
 
5
5
  module SPARQL::Grammar
6
6
  ##
@@ -8,8 +8,8 @@ module SPARQL::Grammar
8
8
  #
9
9
  # @see https://www.w3.org/TR/sparql11-query/#grammar
10
10
  # @see https://en.wikipedia.org/wiki/LR_parser
11
- class Parser
12
- include SPARQL::Grammar::Meta
11
+ class Parser11
12
+ include SPARQL::Grammar::Meta11
13
13
  include SPARQL::Grammar::Terminals
14
14
  include EBNF::LL1::Parser
15
15
 
@@ -974,6 +974,11 @@ module SPARQL::Grammar
974
974
  add_prod_data :row, [:row]
975
975
  else
976
976
  Array(data[:rowdata]).each do |ds|
977
+ if ds.length < data[:Var].length
978
+ raise Error, "Too few values in a VALUE clause compared to the number of variables"
979
+ elsif ds.length > data[:Var].length
980
+ raise Error, "Too many values in a VALUE clause compared to the number of variables"
981
+ end
977
982
  r = [:row]
978
983
  ds.each_with_index do |d, i|
979
984
  r << [vars[i], d] if d
@@ -2325,6 +2330,8 @@ module SPARQL::Grammar
2325
2330
 
2326
2331
  def ns(prefix, suffix)
2327
2332
  base = prefix(prefix).to_s
2333
+ suffix = suffix.to_s.gsub(PN_LOCAL_ESC) {|esc| esc[1]} if
2334
+ suffix.to_s.match?(PN_LOCAL_ESC)
2328
2335
  suffix = suffix.to_s.sub(/^\#/, "") if base.index("#")
2329
2336
  debug {"ns(#{prefix.inspect}): base: '#{base}', suffix: '#{suffix}'"}
2330
2337
  iri(base + suffix.to_s)
@@ -1,4 +1,4 @@
1
- require 'ebnf/ll1/lexer'
1
+ require 'ebnf/unescape'
2
2
 
3
3
  module SPARQL::Grammar
4
4
  module Terminals
@@ -15,8 +15,6 @@ module SPARQL::Grammar
15
15
  U_CHARS2 = Regexp.compile("\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]").freeze
16
16
  IRI_RANGE = Regexp.compile("[[^<>\"{}|^`\\\\]&&[^\\x00-\\x20]]").freeze
17
17
 
18
- # 26
19
- UCHAR = EBNF::LL1::Lexer::UCHAR
20
18
  # 170s
21
19
  PERCENT = /%[0-9A-Fa-f]{2}/.freeze
22
20
  # 172s
@@ -43,7 +41,7 @@ module SPARQL::Grammar
43
41
  # 149
44
42
  ECHAR = /\\[tbnrf\\"']/.freeze
45
43
  # 18
46
- IRIREF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/.freeze
44
+ IRIREF = /<(?:#{IRI_RANGE})*>/.freeze
47
45
  # 129
48
46
  PNAME_NS = /#{PN_PREFIX}?:/.freeze
49
47
  # 130
@@ -56,6 +54,7 @@ module SPARQL::Grammar
56
54
  VAR2 = /\$#{VARNAME}/.freeze
57
55
  # 134
58
56
  LANGTAG = /@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*/.freeze
57
+ LANG_DIR = /@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*(?:--[a-zA-Z]+)?)/u.freeze
59
58
  # 135
60
59
  INTEGER = /[0-9]+/.freeze
61
60
  # 136
@@ -75,13 +74,13 @@ module SPARQL::Grammar
75
74
  # 143
76
75
  DOUBLE_NEGATIVE = /(\-)([0-9]+\.[0-9]*#{EXPONENT}|\.?[0-9]+#{EXPONENT})/.freeze
77
76
  # 145
78
- STRING_LITERAL1 = /'([^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/.freeze
77
+ STRING_LITERAL1 = /'([^\'\\\n\r]|#{ECHAR})*'/.freeze
79
78
  # 146
80
- STRING_LITERAL2 = /"([^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/.freeze
79
+ STRING_LITERAL2 = /"([^\"\\\n\r]|#{ECHAR})*"/.freeze
81
80
  # 147
82
- STRING_LITERAL_LONG1 = /'''((?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/m.freeze
81
+ STRING_LITERAL_LONG1 = /'''((?:'|'')?(?:[^'\\]|#{ECHAR}))*'''/m.freeze
83
82
  # 148
84
- STRING_LITERAL_LONG2 = /"""((?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/m.freeze
83
+ STRING_LITERAL_LONG2 = /"""((?:"|"")?(?:[^"\\]|#{ECHAR}))*"""/m.freeze
85
84
 
86
85
  # 151
87
86
  WS = /(?:\s|(?:#[^\n\r]*))+/m.freeze
@@ -98,7 +97,7 @@ module SPARQL::Grammar
98
97
  |DESCRIBE|DESC|DISTINCT|DROP|ENCODE_FOR_URI|EXISTS
99
98
  |FILTER|FLOOR|FROM|GRAPH|GROUP_CONCAT|GROUP|HAVING
100
99
  |HOURS|IF|INSERT\s+DATA|INSERT|INTO|IN|IRI
101
- |LANGMATCHES|LANGTAG|LANG|LCASE|LIMIT|LOAD
100
+ |LANGMATCHES|LANGTAG|LANG_DIR|LANG|LCASE|LIMIT|LOAD
102
101
  |MAX|MD5|MINUS|MINUTES|MIN|MONTH|MOVE
103
102
  |NAMED|NOT|NOW|OFFSET|OPTIONAL
104
103
  |ORDER|PREFIX|RAND|REDUCED|REGEX|REPLACE|ROUND|SAMPLE|SECONDS
@@ -111,9 +110,10 @@ module SPARQL::Grammar
111
110
  |isTRIPLE|TRIPLE|SUBJECT|PREDICATE|OBJECT
112
111
  |true
113
112
  |false
113
+ |<<\(|\)>>
114
114
  |<<|>>
115
115
  |\{\||\|\}
116
- |&&|!=|!|<=|>=|\^\^|\|\||[\(\),.;\[\]\{\}\+\-=<>\?\^\|\*\/a]
116
+ |~|&&|!=|!|<=|>=|\^\^|\|\||[\(\),.;\[\]\{\}\+\-=<>\?\^\|\*\/a]
117
117
  )xim.freeze
118
118
 
119
119
  # Map terminals to canonical form
@@ -124,7 +124,7 @@ module SPARQL::Grammar
124
124
  DESCRIBE DESC DISTINCT DROP ENCODE_FOR_URI EXISTS
125
125
  FILTER FLOOR FROM GRAPH GROUP_CONCAT GROUP HAVING
126
126
  HOURS IF INSERT INTO IN IRI
127
- LANGMATCHES LANGTAG LANG LCASE LIMIT LOAD
127
+ LANGMATCHES LANGTAG LANG_DIR LANG LCASE LIMIT LOAD
128
128
  MAX MD5 MINUS MINUTES MIN MONTH MOVE
129
129
  NAMED NOT NOW OFFSET OPTIONAL
130
130
  ORDER PREFIX RAND REDUCED REGEX REPLACE ROUND SAMPLE SECONDS
@@ -167,6 +167,7 @@ module SPARQL
167
167
  # PREFIX : <http://bigdata.com>
168
168
  # PREFIX foaf: <http://xmlns.com/foaf/0.1/>
169
169
  # PREFIX dct: <http://purl.org/dc/elements/1.1/>
170
+ # PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
170
171
  #
171
172
  # SELECT ?age ?src WHERE {
172
173
  # ?bob foaf:name "Bob" .
@@ -176,15 +177,15 @@ module SPARQL
176
177
  # SXP:
177
178
  #
178
179
  # (prefix
179
- # (
180
- # (: <http://bigdata.com>)
181
- # (foaf: <http://xmlns.com/foaf/0.1/>)
182
- # (dct: <http://purl.org/dc/elements/1.1/>))
183
- # (project
184
- # (?age ?src)
185
- # (bgp
186
- # (triple ?bob foaf:name "Bob")
187
- # (triple (qtriple ?bob foaf:age ?age) dct:source ?src)) ))
180
+ # ((: <http://bigdata.com>)
181
+ # (foaf: <http://xmlns.com/foaf/0.1/>)
182
+ # (dct: <http://purl.org/dc/elements/1.1/>)
183
+ # (rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>))
184
+ # (project (?age ?src)
185
+ # (bgp
186
+ # (triple ?bob foaf:name "Bob")
187
+ # (triple ??1 rdf:reifies (qtriple ?bob foaf:age ?age))
188
+ # (triple ??1 dct:source ?src))))
188
189
  #
189
190
  # SPARQL:
190
191
  #
@@ -205,26 +206,25 @@ module SPARQL
205
206
  # SXP:
206
207
  #
207
208
  # (prefix
208
- # (
209
- # (: <http://bigdata.com>)
210
- # (foaf: <http://xmlns.com/foaf/0.1/>)
211
- # (dct: <http://purl.org/dc/elements/1.1/>))
212
- # (construct
213
- # (
214
- # (triple ?bob foaf:name "Bob")
215
- # (triple (qtriple ?bob foaf:age ?age) dct:creator <http://example.com/crawlers#c1>)
216
- # (triple (qtriple ?bob foaf:age ?age) dct:source ?src))
209
+ # ((: <http://bigdata.com>)
210
+ # (foaf: <http://xmlns.com/foaf/0.1/>)
211
+ # (dct: <http://purl.org/dc/elements/1.1/>))
212
+ # (construct
213
+ # ((triple ?bob foaf:name "Bob")
214
+ # (triple _:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> (qtriple ?bob foaf:age ?age))
215
+ # (triple _:b1 dct:creator <http://example.com/crawlers#c1>)
216
+ # (triple _:b1 dct:source ?src))
217
217
  # (bgp
218
- # (triple ?bob foaf:name "Bob")
219
- # (triple (qtriple ?bob foaf:age ?age) dct:source ?src)) ))
220
-
221
-
218
+ # (triple ?bob foaf:name "Bob")
219
+ # (triple ??1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> (qtriple ?bob foaf:age ?age))
220
+ # (triple ??1 dct:source ?src))))
221
+ #
222
222
  # ## Implementation Notes
223
223
  # The parser is driven through a rules table contained in lib/sparql/grammar/meta.rb. This includes branch rules to indicate productions to be taken based on a current production.
224
224
  #
225
225
  # The meta.rb file is generated from etc/sparql11.bnf using the `ebnf` gem.
226
226
  #
227
- # ebnf --ll1 Query --format rb \
227
+ # ebnf --peg --format rb \
228
228
  # --mod-name SPARQL::Grammar::Meta \
229
229
  # --output lib/sparql/grammar/meta.rb \
230
230
  # etc/sparql11.bnf
@@ -232,8 +232,9 @@ module SPARQL
232
232
  # @see http://www.w3.org/TR/sparql11-query/#grammar
233
233
  # @see https://rubygems.org/gems/ebnf
234
234
  module Grammar
235
- autoload :Parser, 'sparql/grammar/parser11'
236
- autoload :Terminals, 'sparql/grammar/terminals11'
235
+ autoload :Parser11, 'sparql/grammar/parser11'
236
+ autoload :Parser, 'sparql/grammar/parser'
237
+ autoload :Terminals, 'sparql/grammar/terminals'
237
238
 
238
239
  # Make all defined non-autoloaded constants immutable:
239
240
  constants.each { |name| const_get(name).freeze unless autoload?(name) }
@@ -248,11 +249,16 @@ module SPARQL
248
249
  # Query may be an array of lexed tokens, a lexer, or a
249
250
  # string or open file.
250
251
  # @param [Hash{Symbol => Object}] options
252
+ # @option options [Boolean] :use11 SPARQL 1.1 version parser
251
253
  # @option options (see SPARQL::Grammar::Parser#initialize)
252
254
  # @return [Parser]
253
255
  # @raise [Parser::Error] on invalid input
254
256
  def self.parse(query, **options, &block)
255
- Parser.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
257
+ if options[:use11]
258
+ Parser11.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
259
+ else
260
+ Parser.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
261
+ end
256
262
  end
257
263
 
258
264
  ##
@@ -262,6 +268,7 @@ module SPARQL
262
268
  # @param [Hash{Symbol => Object}] options
263
269
  # any additional options (see `RDF::Reader#initialize` and `RDF::Format.for`)
264
270
  # @option options [Symbol] :format (:ntriples)
271
+ # @option options [Boolean] :use11 SPARQL 1.1 version parser
265
272
  # @option options (see parse)
266
273
  # @yield [reader]
267
274
  # @yieldparam [RDF::Reader] reader
data/lib/sparql/server.rb CHANGED
@@ -13,6 +13,8 @@ module SPARQL
13
13
  #
14
14
  # @param [RDF::Dataset] dataset (RDF::Repository.new)
15
15
  # @param [Hash{Symbol => Object}] options
16
+ # @option options [Hash] :host_authorization
17
+ # A hash of options to host_authorization, to be used by the Rack::Protection::HostAuthorization middleware.
16
18
  # @return [Sinatra::Base]
17
19
  def application(dataset: RDF::Repository.new, **options)
18
20
  Sinatra.new do
@@ -21,6 +23,10 @@ module SPARQL
21
23
  enable :logging
22
24
  disable :raise_errors, :show_exceptions if settings.production?
23
25
 
26
+ if options[:host_authorization]
27
+ set :host_authorization, options[:host_authorization]
28
+ end
29
+
24
30
  mime_type :jsonld, "application/ld+json"
25
31
  mime_type :normalize, "application/normalized+n-quads"
26
32
  mime_type :sparql, "application/sparql-query"
@@ -43,7 +49,7 @@ module SPARQL
43
49
  rescue SPARQL::Grammar::Parser::Error => e
44
50
  halt 400, "Error parsing query: #{e.message}"
45
51
  end
46
- res = query.execute(repo,
52
+ res = query.execute(repo,
47
53
  logger: request.logger,
48
54
  **options.merge(opts))
49
55
  res.is_a?(RDF::Literal::Boolean) ? [res] : res
@@ -61,8 +67,12 @@ module SPARQL
61
67
  end
62
68
 
63
69
  post '/' do
64
- opts = params.inject({}) {|memo, (k,v)| memo.merge(k.to_sym => v)}
65
- # Note, this depends on the Rack::SPARQL::ContentNegotiation middleware to rewrite application/x-www-form-urlencoded to be conformat with either application/sparql-query or application/sparql-update.
70
+ request_body = request.body.read
71
+ opts = params.inject({}) { |memo, (k,v)| memo.merge(k.to_sym => v) }
72
+ # Note, this depends on the Rack::SPARQL::ContentNegotiation
73
+ # middleware to rewrite application/x-www-form-urlencoded to be
74
+ # conformant with either application/sparql-query or
75
+ # application/sparql-update.
66
76
  query = begin
67
77
  update = case request.content_type
68
78
  when %r(application/sparql-query) then false
@@ -70,12 +80,11 @@ module SPARQL
70
80
  else
71
81
  halt 406, "No query found for #{request.content_type}"
72
82
  end
73
-
74
83
  # XXX Rack always sets input to ASCII-8BIT
75
84
  #unless request.body.external_encoding == Encoding::UTF_8
76
85
  # halt 400, "improper body encoding: #{request.body.external_encoding}"
77
86
  #end
78
- SPARQL.parse(request.body, base_uri: url, update: update)
87
+ SPARQL.parse(request_body, base_uri: url, update: update)
79
88
  rescue SPARQL::Grammar::Parser::Error => e
80
89
  halt 400, "Error parsing #{update ? 'update' : 'query'}: #{e.message}"
81
90
  end
@@ -90,4 +99,4 @@ module SPARQL
90
99
  end
91
100
  module_function :application
92
101
  end
93
- end
102
+ end
data/lib/sparql.rb CHANGED
@@ -24,6 +24,8 @@ module SPARQL
24
24
  #
25
25
  # @param [IO, StringIO, String, #to_s] query
26
26
  # @param [Hash{Symbol => Object}] options
27
+ # @option options [Boolean] :optimize (false)
28
+ # Run query optimizer after parsing.
27
29
  # @option options [Boolean] :update (false)
28
30
  # Parse starting with UpdateUnit production, QueryUnit otherwise.
29
31
  # @option options (see SPARQL::Grammar::Parser#initialize)
@@ -33,7 +35,10 @@ module SPARQL
33
35
  # or RDF::Repository.
34
36
  # @raise [SPARQL::Grammar::Parser::Error] on invalid input
35
37
  def self.parse(query, **options)
36
- Grammar::Parser.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
38
+ parser_class = options[:use11] ? Grammar::Parser11 : Grammar::Parser
39
+ query = parser_class.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
40
+ query = query.optimize if options[:optimize]
41
+ query
37
42
  end
38
43
 
39
44
  ##
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparql
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
@@ -9,98 +9,112 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-08-26 00:00:00.000000000 Z
12
+ date: 2025-05-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rdf
15
+ name: builder
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.3'
20
+ version: '3.2'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 3.2.4
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
28
  - - "~>"
26
29
  - !ruby/object:Gem::Version
27
- version: '3.3'
30
+ version: '3.2'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.4
28
34
  - !ruby/object:Gem::Dependency
29
- name: rdf-aggregate-repo
35
+ name: ebnf
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
38
  - - "~>"
33
39
  - !ruby/object:Gem::Version
34
- version: '3.3'
40
+ version: '2.5'
35
41
  type: :runtime
36
42
  prerelease: false
37
43
  version_requirements: !ruby/object:Gem::Requirement
38
44
  requirements:
39
45
  - - "~>"
40
46
  - !ruby/object:Gem::Version
41
- version: '3.3'
47
+ version: '2.5'
42
48
  - !ruby/object:Gem::Dependency
43
- name: ebnf
49
+ name: logger
44
50
  requirement: !ruby/object:Gem::Requirement
45
51
  requirements:
46
52
  - - "~>"
47
53
  - !ruby/object:Gem::Version
48
- version: '2.4'
54
+ version: '1.5'
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
52
58
  requirements:
53
59
  - - "~>"
54
60
  - !ruby/object:Gem::Version
55
- version: '2.4'
61
+ version: '1.5'
56
62
  - !ruby/object:Gem::Dependency
57
- name: builder
63
+ name: rdf-aggregate-repo
58
64
  requirement: !ruby/object:Gem::Requirement
59
65
  requirements:
60
66
  - - "~>"
61
67
  - !ruby/object:Gem::Version
62
- version: '3.2'
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- version: 3.2.4
68
+ version: '3.3'
66
69
  type: :runtime
67
70
  prerelease: false
68
71
  version_requirements: !ruby/object:Gem::Requirement
69
72
  requirements:
70
73
  - - "~>"
71
74
  - !ruby/object:Gem::Version
72
- version: '3.2'
73
- - - ">="
75
+ version: '3.3'
76
+ - !ruby/object:Gem::Dependency
77
+ name: rdf-xsd
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
74
81
  - !ruby/object:Gem::Version
75
- version: 3.2.4
82
+ version: '3.3'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.3'
76
90
  - !ruby/object:Gem::Dependency
77
- name: logger
91
+ name: rdf
78
92
  requirement: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '1.5'
96
+ version: '3.3'
83
97
  type: :runtime
84
98
  prerelease: false
85
99
  version_requirements: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '1.5'
103
+ version: '3.3'
90
104
  - !ruby/object:Gem::Dependency
91
- name: sxp
105
+ name: readline
92
106
  requirement: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '1.3'
110
+ version: '0.0'
97
111
  type: :runtime
98
112
  prerelease: false
99
113
  version_requirements: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '1.3'
117
+ version: '0.0'
104
118
  - !ruby/object:Gem::Dependency
105
119
  name: sparql-client
106
120
  requirement: !ruby/object:Gem::Requirement
@@ -116,67 +130,103 @@ dependencies:
116
130
  - !ruby/object:Gem::Version
117
131
  version: '3.3'
118
132
  - !ruby/object:Gem::Dependency
119
- name: rdf-xsd
133
+ name: sxp
120
134
  requirement: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '3.3'
138
+ version: '2.0'
125
139
  type: :runtime
126
140
  prerelease: false
127
141
  version_requirements: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '3.3'
145
+ version: '2.0'
132
146
  - !ruby/object:Gem::Dependency
133
- name: sinatra
147
+ name: getoptlong
134
148
  requirement: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '3.1'
152
+ version: '0.2'
139
153
  type: :development
140
154
  prerelease: false
141
155
  version_requirements: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '3.1'
159
+ version: '0.2'
146
160
  - !ruby/object:Gem::Dependency
147
- name: rack
161
+ name: linkeddata
148
162
  requirement: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: '2.2'
153
- - - "<"
154
- - !ruby/object:Gem::Version
155
- version: '4'
166
+ version: '0'
156
167
  type: :development
157
168
  prerelease: false
158
169
  version_requirements: !ruby/object:Gem::Requirement
159
170
  requirements:
160
171
  - - ">="
161
172
  - !ruby/object:Gem::Version
162
- version: '2.2'
163
- - - "<"
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: ostruct
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
164
179
  - !ruby/object:Gem::Version
165
- version: '4'
180
+ version: '0.6'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.6'
166
188
  - !ruby/object:Gem::Dependency
167
189
  name: rack-test
168
190
  requirement: !ruby/object:Gem::Requirement
169
191
  requirements:
170
192
  - - "~>"
171
193
  - !ruby/object:Gem::Version
172
- version: '2.1'
194
+ version: '2.2'
173
195
  type: :development
174
196
  prerelease: false
175
197
  version_requirements: !ruby/object:Gem::Requirement
176
198
  requirements:
177
199
  - - "~>"
178
200
  - !ruby/object:Gem::Version
179
- version: '2.1'
201
+ version: '2.2'
202
+ - !ruby/object:Gem::Dependency
203
+ name: rack
204
+ requirement: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '3.1'
209
+ type: :development
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '3.1'
216
+ - !ruby/object:Gem::Dependency
217
+ name: rackup
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '2.2'
223
+ type: :development
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '2.2'
180
230
  - !ruby/object:Gem::Dependency
181
231
  name: rdf-spec
182
232
  requirement: !ruby/object:Gem::Requirement
@@ -192,47 +242,61 @@ dependencies:
192
242
  - !ruby/object:Gem::Version
193
243
  version: '3.3'
194
244
  - !ruby/object:Gem::Dependency
195
- name: linkeddata
245
+ name: rspec-its
196
246
  requirement: !ruby/object:Gem::Requirement
197
247
  requirements:
198
- - - ">="
248
+ - - "~>"
199
249
  - !ruby/object:Gem::Version
200
- version: '0'
250
+ version: '1.3'
201
251
  type: :development
202
252
  prerelease: false
203
253
  version_requirements: !ruby/object:Gem::Requirement
204
254
  requirements:
205
- - - ">="
255
+ - - "~>"
206
256
  - !ruby/object:Gem::Version
207
- version: '0'
257
+ version: '1.3'
208
258
  - !ruby/object:Gem::Dependency
209
259
  name: rspec
210
260
  requirement: !ruby/object:Gem::Requirement
211
261
  requirements:
212
262
  - - "~>"
213
263
  - !ruby/object:Gem::Version
214
- version: '3.12'
264
+ version: '3.13'
215
265
  type: :development
216
266
  prerelease: false
217
267
  version_requirements: !ruby/object:Gem::Requirement
218
268
  requirements:
219
269
  - - "~>"
220
270
  - !ruby/object:Gem::Version
221
- version: '3.12'
271
+ version: '3.13'
222
272
  - !ruby/object:Gem::Dependency
223
- name: rspec-its
273
+ name: sinatra
224
274
  requirement: !ruby/object:Gem::Requirement
225
275
  requirements:
226
276
  - - "~>"
227
277
  - !ruby/object:Gem::Version
228
- version: '1.3'
278
+ version: '4.1'
229
279
  type: :development
230
280
  prerelease: false
231
281
  version_requirements: !ruby/object:Gem::Requirement
232
282
  requirements:
233
283
  - - "~>"
234
284
  - !ruby/object:Gem::Version
235
- version: '1.3'
285
+ version: '4.1'
286
+ - !ruby/object:Gem::Dependency
287
+ name: webrick
288
+ requirement: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - "~>"
291
+ - !ruby/object:Gem::Version
292
+ version: '1.9'
293
+ type: :development
294
+ prerelease: false
295
+ version_requirements: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - "~>"
298
+ - !ruby/object:Gem::Version
299
+ version: '1.9'
236
300
  - !ruby/object:Gem::Dependency
237
301
  name: yard
238
302
  requirement: !ruby/object:Gem::Requirement
@@ -414,8 +478,10 @@ files:
414
478
  - lib/sparql/extensions.rb
415
479
  - lib/sparql/grammar.rb
416
480
  - lib/sparql/grammar/meta.rb
481
+ - lib/sparql/grammar/meta11.rb
482
+ - lib/sparql/grammar/parser.rb
417
483
  - lib/sparql/grammar/parser11.rb
418
- - lib/sparql/grammar/terminals11.rb
484
+ - lib/sparql/grammar/terminals.rb
419
485
  - lib/sparql/results.rb
420
486
  - lib/sparql/server.rb
421
487
  - lib/sparql/version.rb
@@ -443,7 +509,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
443
509
  - !ruby/object:Gem::Version
444
510
  version: '0'
445
511
  requirements: []
446
- rubygems_version: 3.2.33
512
+ rubygems_version: 3.4.19
447
513
  signing_key:
448
514
  specification_version: 4
449
515
  summary: SPARQL Query and Update library for Ruby.