sparql 3.3.1 → 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
 
@@ -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.1
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: 2024-02-17 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.5'
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.5'
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: '2.0'
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: '2.0'
117
+ version: '0.0'
104
118
  - !ruby/object:Gem::Dependency
105
119
  name: sparql-client
106
120
  requirement: !ruby/object:Gem::Requirement
@@ -116,19 +130,19 @@ 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
147
  name: getoptlong
134
148
  requirement: !ruby/object:Gem::Requirement
@@ -144,53 +158,75 @@ dependencies:
144
158
  - !ruby/object:Gem::Version
145
159
  version: '0.2'
146
160
  - !ruby/object:Gem::Dependency
147
- name: sinatra
161
+ name: linkeddata
162
+ requirement: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: ostruct
148
176
  requirement: !ruby/object:Gem::Requirement
149
177
  requirements:
150
178
  - - "~>"
151
179
  - !ruby/object:Gem::Version
152
- version: '3.1'
180
+ version: '0.6'
153
181
  type: :development
154
182
  prerelease: false
155
183
  version_requirements: !ruby/object:Gem::Requirement
156
184
  requirements:
157
185
  - - "~>"
158
186
  - !ruby/object:Gem::Version
159
- version: '3.1'
187
+ version: '0.6'
160
188
  - !ruby/object:Gem::Dependency
161
- name: rack
189
+ name: rack-test
162
190
  requirement: !ruby/object:Gem::Requirement
163
191
  requirements:
164
- - - ">="
192
+ - - "~>"
165
193
  - !ruby/object:Gem::Version
166
194
  version: '2.2'
167
- - - "<"
168
- - !ruby/object:Gem::Version
169
- version: '4'
170
195
  type: :development
171
196
  prerelease: false
172
197
  version_requirements: !ruby/object:Gem::Requirement
173
198
  requirements:
174
- - - ">="
199
+ - - "~>"
175
200
  - !ruby/object:Gem::Version
176
201
  version: '2.2'
177
- - - "<"
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
+ - - "~>"
178
214
  - !ruby/object:Gem::Version
179
- version: '4'
215
+ version: '3.1'
180
216
  - !ruby/object:Gem::Dependency
181
- name: rack-test
217
+ name: rackup
182
218
  requirement: !ruby/object:Gem::Requirement
183
219
  requirements:
184
220
  - - "~>"
185
221
  - !ruby/object:Gem::Version
186
- version: '2.1'
222
+ version: '2.2'
187
223
  type: :development
188
224
  prerelease: false
189
225
  version_requirements: !ruby/object:Gem::Requirement
190
226
  requirements:
191
227
  - - "~>"
192
228
  - !ruby/object:Gem::Version
193
- version: '2.1'
229
+ version: '2.2'
194
230
  - !ruby/object:Gem::Dependency
195
231
  name: rdf-spec
196
232
  requirement: !ruby/object:Gem::Requirement
@@ -206,47 +242,61 @@ dependencies:
206
242
  - !ruby/object:Gem::Version
207
243
  version: '3.3'
208
244
  - !ruby/object:Gem::Dependency
209
- name: linkeddata
245
+ name: rspec-its
210
246
  requirement: !ruby/object:Gem::Requirement
211
247
  requirements:
212
- - - ">="
248
+ - - "~>"
213
249
  - !ruby/object:Gem::Version
214
- version: '0'
250
+ version: '1.3'
215
251
  type: :development
216
252
  prerelease: false
217
253
  version_requirements: !ruby/object:Gem::Requirement
218
254
  requirements:
219
- - - ">="
255
+ - - "~>"
220
256
  - !ruby/object:Gem::Version
221
- version: '0'
257
+ version: '1.3'
222
258
  - !ruby/object:Gem::Dependency
223
259
  name: rspec
224
260
  requirement: !ruby/object:Gem::Requirement
225
261
  requirements:
226
262
  - - "~>"
227
263
  - !ruby/object:Gem::Version
228
- version: '3.12'
264
+ version: '3.13'
229
265
  type: :development
230
266
  prerelease: false
231
267
  version_requirements: !ruby/object:Gem::Requirement
232
268
  requirements:
233
269
  - - "~>"
234
270
  - !ruby/object:Gem::Version
235
- version: '3.12'
271
+ version: '3.13'
236
272
  - !ruby/object:Gem::Dependency
237
- name: rspec-its
273
+ name: sinatra
238
274
  requirement: !ruby/object:Gem::Requirement
239
275
  requirements:
240
276
  - - "~>"
241
277
  - !ruby/object:Gem::Version
242
- version: '1.3'
278
+ version: '4.1'
243
279
  type: :development
244
280
  prerelease: false
245
281
  version_requirements: !ruby/object:Gem::Requirement
246
282
  requirements:
247
283
  - - "~>"
248
284
  - !ruby/object:Gem::Version
249
- 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'
250
300
  - !ruby/object:Gem::Dependency
251
301
  name: yard
252
302
  requirement: !ruby/object:Gem::Requirement
@@ -428,8 +478,10 @@ files:
428
478
  - lib/sparql/extensions.rb
429
479
  - lib/sparql/grammar.rb
430
480
  - lib/sparql/grammar/meta.rb
481
+ - lib/sparql/grammar/meta11.rb
482
+ - lib/sparql/grammar/parser.rb
431
483
  - lib/sparql/grammar/parser11.rb
432
- - lib/sparql/grammar/terminals11.rb
484
+ - lib/sparql/grammar/terminals.rb
433
485
  - lib/sparql/results.rb
434
486
  - lib/sparql/server.rb
435
487
  - lib/sparql/version.rb