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.
- checksums.yaml +4 -4
- data/README.md +19 -17
- data/VERSION +1 -1
- data/bin/sparql +33 -24
- data/lib/sparql/algebra/aggregate.rb +1 -1
- data/lib/sparql/algebra/expression.rb +2 -2
- data/lib/sparql/algebra/extensions.rb +29 -2
- data/lib/sparql/algebra/operator/bgp.rb +7 -3
- data/lib/sparql/algebra/operator/concat.rb +5 -0
- data/lib/sparql/algebra/operator/group_concat.rb +5 -1
- data/lib/sparql/algebra/operator/join.rb +11 -5
- data/lib/sparql/algebra/operator/left_join.rb +13 -12
- data/lib/sparql/algebra/operator/minus.rb +1 -1
- data/lib/sparql/algebra/operator/path.rb +38 -0
- data/lib/sparql/algebra/operator/regex.rb +41 -3
- data/lib/sparql/algebra/operator/sequence.rb +1 -1
- data/lib/sparql/algebra/operator/table.rb +1 -1
- data/lib/sparql/algebra/operator/union.rb +1 -1
- data/lib/sparql/algebra/operator.rb +8 -0
- data/lib/sparql/algebra.rb +5 -1
- data/lib/sparql/grammar/meta.rb +568 -51294
- data/lib/sparql/grammar/meta11.rb +51297 -0
- data/lib/sparql/grammar/parser.rb +3115 -0
- data/lib/sparql/grammar/parser11.rb +10 -3
- data/lib/sparql/grammar/{terminals11.rb → terminals.rb} +11 -11
- data/lib/sparql/grammar.rb +33 -26
- data/lib/sparql/server.rb +15 -6
- data/lib/sparql.rb +6 -1
- metadata +119 -53
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'ebnf'
|
2
2
|
require 'ebnf/ll1/parser'
|
3
|
-
require 'sparql/grammar/
|
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
|
12
|
-
include SPARQL::Grammar::
|
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/
|
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}
|
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}
|
77
|
+
STRING_LITERAL1 = /'([^\'\\\n\r]|#{ECHAR})*'/.freeze
|
79
78
|
# 146
|
80
|
-
STRING_LITERAL2 = /"([^\"\\\n\r]|#{ECHAR}
|
79
|
+
STRING_LITERAL2 = /"([^\"\\\n\r]|#{ECHAR})*"/.freeze
|
81
80
|
# 147
|
82
|
-
STRING_LITERAL_LONG1 = /'''((?:'|'')?(?:[^'\\]|#{ECHAR}
|
81
|
+
STRING_LITERAL_LONG1 = /'''((?:'|'')?(?:[^'\\]|#{ECHAR}))*'''/m.freeze
|
83
82
|
# 148
|
84
|
-
STRING_LITERAL_LONG2 = /"""((?:"|"")?(?:[^"\\]|#{ECHAR}
|
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
|
-
|
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
|
data/lib/sparql/grammar.rb
CHANGED
@@ -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
|
-
#
|
181
|
-
#
|
182
|
-
#
|
183
|
-
#
|
184
|
-
#
|
185
|
-
#
|
186
|
-
#
|
187
|
-
#
|
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
|
-
#
|
210
|
-
#
|
211
|
-
# (
|
212
|
-
#
|
213
|
-
#
|
214
|
-
#
|
215
|
-
#
|
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
|
-
#
|
219
|
-
#
|
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 --
|
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 :
|
236
|
-
autoload :
|
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
|
-
|
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
|
-
|
65
|
-
|
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(
|
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
|
-
|
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.
|
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:
|
12
|
+
date: 2025-05-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: builder
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '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.
|
30
|
+
version: '3.2'
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.2.4
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
35
|
+
name: ebnf
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
31
37
|
requirements:
|
32
38
|
- - "~>"
|
33
39
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
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: '
|
47
|
+
version: '2.5'
|
42
48
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
49
|
+
name: logger
|
44
50
|
requirement: !ruby/object:Gem::Requirement
|
45
51
|
requirements:
|
46
52
|
- - "~>"
|
47
53
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
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: '
|
61
|
+
version: '1.5'
|
56
62
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
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.
|
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.
|
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.
|
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:
|
91
|
+
name: rdf
|
78
92
|
requirement: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
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: '
|
103
|
+
version: '3.3'
|
90
104
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
105
|
+
name: readline
|
92
106
|
requirement: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
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: '
|
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:
|
133
|
+
name: sxp
|
120
134
|
requirement: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
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: '
|
145
|
+
version: '2.0'
|
132
146
|
- !ruby/object:Gem::Dependency
|
133
|
-
name:
|
147
|
+
name: getoptlong
|
134
148
|
requirement: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
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: '
|
159
|
+
version: '0.2'
|
146
160
|
- !ruby/object:Gem::Dependency
|
147
|
-
name:
|
161
|
+
name: linkeddata
|
148
162
|
requirement: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
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: '
|
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: '
|
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.
|
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.
|
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:
|
245
|
+
name: rspec-its
|
196
246
|
requirement: !ruby/object:Gem::Requirement
|
197
247
|
requirements:
|
198
|
-
- - "
|
248
|
+
- - "~>"
|
199
249
|
- !ruby/object:Gem::Version
|
200
|
-
version: '
|
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: '
|
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.
|
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.
|
271
|
+
version: '3.13'
|
222
272
|
- !ruby/object:Gem::Dependency
|
223
|
-
name:
|
273
|
+
name: sinatra
|
224
274
|
requirement: !ruby/object:Gem::Requirement
|
225
275
|
requirements:
|
226
276
|
- - "~>"
|
227
277
|
- !ruby/object:Gem::Version
|
228
|
-
version: '1
|
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
|
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/
|
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.
|
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.
|