sparql 3.1.8 → 3.2.3

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.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -60
  3. data/VERSION +1 -1
  4. data/bin/sparql +15 -35
  5. data/lib/rack/sparql/conneg.rb +22 -1
  6. data/lib/sinatra/sparql/extensions.rb +1 -1
  7. data/lib/sinatra/sparql.rb +57 -12
  8. data/lib/sparql/algebra/expression.rb +63 -10
  9. data/lib/sparql/algebra/extensions.rb +110 -46
  10. data/lib/sparql/algebra/operator/abs.rb +22 -2
  11. data/lib/sparql/algebra/operator/add.rb +21 -2
  12. data/lib/sparql/algebra/operator/adjust.rb +69 -0
  13. data/lib/sparql/algebra/operator/alt.rb +26 -2
  14. data/lib/sparql/algebra/operator/and.rb +25 -3
  15. data/lib/sparql/algebra/operator/asc.rb +20 -1
  16. data/lib/sparql/algebra/operator/ask.rb +17 -1
  17. data/lib/sparql/algebra/operator/avg.rb +19 -1
  18. data/lib/sparql/algebra/operator/base.rb +18 -1
  19. data/lib/sparql/algebra/operator/bgp.rb +13 -1
  20. data/lib/sparql/algebra/operator/bnode.rb +33 -10
  21. data/lib/sparql/algebra/operator/bound.rb +22 -1
  22. data/lib/sparql/algebra/operator/ceil.rb +25 -2
  23. data/lib/sparql/algebra/operator/clear.rb +26 -2
  24. data/lib/sparql/algebra/operator/coalesce.rb +33 -11
  25. data/lib/sparql/algebra/operator/compare.rb +9 -0
  26. data/lib/sparql/algebra/operator/concat.rb +26 -2
  27. data/lib/sparql/algebra/operator/construct.rb +29 -6
  28. data/lib/sparql/algebra/operator/contains.rb +24 -2
  29. data/lib/sparql/algebra/operator/copy.rb +19 -2
  30. data/lib/sparql/algebra/operator/count.rb +52 -6
  31. data/lib/sparql/algebra/operator/create.rb +20 -2
  32. data/lib/sparql/algebra/operator/dataset.rb +37 -2
  33. data/lib/sparql/algebra/operator/datatype.rb +25 -6
  34. data/lib/sparql/algebra/operator/day.rb +25 -7
  35. data/lib/sparql/algebra/operator/delete.rb +29 -2
  36. data/lib/sparql/algebra/operator/delete_data.rb +23 -2
  37. data/lib/sparql/algebra/operator/delete_where.rb +24 -2
  38. data/lib/sparql/algebra/operator/desc.rb +20 -1
  39. data/lib/sparql/algebra/operator/describe.rb +27 -4
  40. data/lib/sparql/algebra/operator/distinct.rb +20 -3
  41. data/lib/sparql/algebra/operator/divide.rb +26 -2
  42. data/lib/sparql/algebra/operator/drop.rb +27 -3
  43. data/lib/sparql/algebra/operator/encode_for_uri.rb +22 -2
  44. data/lib/sparql/algebra/operator/equal.rb +12 -2
  45. data/lib/sparql/algebra/operator/exists.rb +28 -4
  46. data/lib/sparql/algebra/operator/exprlist.rb +15 -2
  47. data/lib/sparql/algebra/operator/extend.rb +95 -7
  48. data/lib/sparql/algebra/operator/filter.rb +27 -5
  49. data/lib/sparql/algebra/operator/floor.rb +25 -2
  50. data/lib/sparql/algebra/operator/function_call.rb +64 -0
  51. data/lib/sparql/algebra/operator/graph.rb +69 -6
  52. data/lib/sparql/algebra/operator/greater_than.rb +12 -3
  53. data/lib/sparql/algebra/operator/greater_than_or_equal.rb +12 -2
  54. data/lib/sparql/algebra/operator/group.rb +133 -8
  55. data/lib/sparql/algebra/operator/group_concat.rb +43 -7
  56. data/lib/sparql/algebra/operator/hours.rb +25 -7
  57. data/lib/sparql/algebra/operator/if.rb +20 -3
  58. data/lib/sparql/algebra/operator/in.rb +18 -1
  59. data/lib/sparql/algebra/operator/insert.rb +24 -2
  60. data/lib/sparql/algebra/operator/insert_data.rb +23 -2
  61. data/lib/sparql/algebra/operator/iri.rb +21 -4
  62. data/lib/sparql/algebra/operator/is_blank.rb +20 -3
  63. data/lib/sparql/algebra/operator/is_iri.rb +20 -3
  64. data/lib/sparql/algebra/operator/is_literal.rb +20 -3
  65. data/lib/sparql/algebra/operator/is_numeric.rb +22 -5
  66. data/lib/sparql/algebra/operator/is_triple.rb +32 -0
  67. data/lib/sparql/algebra/operator/join.rb +58 -3
  68. data/lib/sparql/algebra/operator/lang.rb +25 -0
  69. data/lib/sparql/algebra/operator/lang_matches.rb +22 -1
  70. data/lib/sparql/algebra/operator/lcase.rb +22 -2
  71. data/lib/sparql/algebra/operator/left_join.rb +44 -3
  72. data/lib/sparql/algebra/operator/less_than.rb +12 -3
  73. data/lib/sparql/algebra/operator/less_than_or_equal.rb +12 -2
  74. data/lib/sparql/algebra/operator/load.rb +25 -2
  75. data/lib/sparql/algebra/operator/max.rb +19 -1
  76. data/lib/sparql/algebra/operator/md5.rb +22 -5
  77. data/lib/sparql/algebra/operator/min.rb +21 -3
  78. data/lib/sparql/algebra/operator/minus.rb +65 -7
  79. data/lib/sparql/algebra/operator/minutes.rb +25 -7
  80. data/lib/sparql/algebra/operator/modify.rb +62 -5
  81. data/lib/sparql/algebra/operator/month.rb +25 -7
  82. data/lib/sparql/algebra/operator/move.rb +20 -2
  83. data/lib/sparql/algebra/operator/multiply.rb +26 -3
  84. data/lib/sparql/algebra/operator/negate.rb +23 -3
  85. data/lib/sparql/algebra/operator/not.rb +24 -3
  86. data/lib/sparql/algebra/operator/not_equal.rb +13 -0
  87. data/lib/sparql/algebra/operator/notexists.rb +30 -6
  88. data/lib/sparql/algebra/operator/notin.rb +20 -3
  89. data/lib/sparql/algebra/operator/notoneof.rb +21 -2
  90. data/lib/sparql/algebra/operator/now.rb +24 -5
  91. data/lib/sparql/algebra/operator/object.rb +32 -0
  92. data/lib/sparql/algebra/operator/or.rb +26 -3
  93. data/lib/sparql/algebra/operator/order.rb +64 -1
  94. data/lib/sparql/algebra/operator/path.rb +29 -2
  95. data/lib/sparql/algebra/operator/path_opt.rb +28 -65
  96. data/lib/sparql/algebra/operator/path_plus.rb +37 -10
  97. data/lib/sparql/algebra/operator/path_range.rb +178 -0
  98. data/lib/sparql/algebra/operator/path_star.rb +25 -4
  99. data/lib/sparql/algebra/operator/path_zero.rb +110 -0
  100. data/lib/sparql/algebra/operator/plus.rb +49 -8
  101. data/lib/sparql/algebra/operator/predicate.rb +32 -0
  102. data/lib/sparql/algebra/operator/prefix.rb +24 -3
  103. data/lib/sparql/algebra/operator/project.rb +111 -6
  104. data/lib/sparql/algebra/operator/rand.rb +30 -2
  105. data/lib/sparql/algebra/operator/reduced.rb +20 -3
  106. data/lib/sparql/algebra/operator/regex.rb +26 -18
  107. data/lib/sparql/algebra/operator/replace.rb +26 -6
  108. data/lib/sparql/algebra/operator/reverse.rb +31 -2
  109. data/lib/sparql/algebra/operator/round.rb +25 -2
  110. data/lib/sparql/algebra/operator/same_term.rb +24 -6
  111. data/lib/sparql/algebra/operator/sample.rb +32 -8
  112. data/lib/sparql/algebra/operator/seconds.rb +25 -7
  113. data/lib/sparql/algebra/operator/seq.rb +23 -5
  114. data/lib/sparql/algebra/operator/sequence.rb +14 -11
  115. data/lib/sparql/algebra/operator/sha1.rb +18 -1
  116. data/lib/sparql/algebra/operator/sha256.rb +18 -1
  117. data/lib/sparql/algebra/operator/sha384.rb +18 -1
  118. data/lib/sparql/algebra/operator/sha512.rb +18 -1
  119. data/lib/sparql/algebra/operator/slice.rb +27 -5
  120. data/lib/sparql/algebra/operator/str.rb +21 -1
  121. data/lib/sparql/algebra/operator/strafter.rb +25 -2
  122. data/lib/sparql/algebra/operator/strbefore.rb +25 -2
  123. data/lib/sparql/algebra/operator/strdt.rb +22 -1
  124. data/lib/sparql/algebra/operator/strends.rb +25 -3
  125. data/lib/sparql/algebra/operator/strlang.rb +24 -6
  126. data/lib/sparql/algebra/operator/strlen.rb +23 -2
  127. data/lib/sparql/algebra/operator/strstarts.rb +25 -2
  128. data/lib/sparql/algebra/operator/struuid.rb +29 -9
  129. data/lib/sparql/algebra/operator/subject.rb +32 -0
  130. data/lib/sparql/algebra/operator/substr.rb +23 -2
  131. data/lib/sparql/algebra/operator/subtract.rb +37 -7
  132. data/lib/sparql/algebra/operator/sum.rb +24 -6
  133. data/lib/sparql/algebra/operator/table.rb +85 -4
  134. data/lib/sparql/algebra/operator/timezone.rb +25 -7
  135. data/lib/sparql/algebra/operator/triple.rb +24 -0
  136. data/lib/sparql/algebra/operator/tz.rb +24 -7
  137. data/lib/sparql/algebra/operator/ucase.rb +23 -2
  138. data/lib/sparql/algebra/operator/union.rb +29 -6
  139. data/lib/sparql/algebra/operator/update.rb +46 -4
  140. data/lib/sparql/algebra/operator/using.rb +49 -2
  141. data/lib/sparql/algebra/operator/uuid.rb +27 -8
  142. data/lib/sparql/algebra/operator/with.rb +38 -4
  143. data/lib/sparql/algebra/operator/year.rb +25 -7
  144. data/lib/sparql/algebra/operator.rb +150 -12
  145. data/lib/sparql/algebra/query.rb +5 -3
  146. data/lib/sparql/algebra/sxp_extensions.rb +3 -3
  147. data/lib/sparql/algebra.rb +42 -6
  148. data/lib/sparql/grammar/meta.rb +1367 -267
  149. data/lib/sparql/grammar/parser11.rb +829 -331
  150. data/lib/sparql/grammar/terminals11.rb +2 -2
  151. data/lib/sparql/grammar.rb +6 -4
  152. data/lib/sparql/results.rb +3 -2
  153. data/lib/sparql/server.rb +93 -0
  154. data/lib/sparql.rb +8 -5
  155. metadata +57 -35
@@ -91,7 +91,7 @@ module SPARQL::Grammar
91
91
  ANON = /\[#{WS}*\]/m.freeze
92
92
 
93
93
  # String terminals, case insensitive
94
- STR_EXPR = %r(ABS|ADD|ALL|ASC|ASK|AS|AVG|BASE|BINDINGS|BIND
94
+ STR_EXPR = %r(ABS|ADD|ADJUST|ALL|ASC|ASK|AS|AVG|BASE|BINDINGS|BIND
95
95
  |BNODE|BOUND|BY|CEIL|CLEAR|COALESCE|CONCAT
96
96
  |CONSTRUCT|CONTAINS|COPY|COUNT|CREATE|DATATYPE|DAY
97
97
  |DEFAULT|DELETE#{WS}DATA|DELETE#{WS}WHERE|DELETE
@@ -117,7 +117,7 @@ module SPARQL::Grammar
117
117
  )xim.freeze
118
118
 
119
119
  # Map terminals to canonical form
120
- STR_MAP = (%w{ABS ADD ALL ASC ASK AS AVG BASE BINDINGS BIND
120
+ STR_MAP = (%w{ABS ADD ADJUST ALL ASC ASK AS AVG BASE BINDINGS BIND
121
121
  BNODE BOUND BY CEIL CLEAR COALESCE CONCAT
122
122
  CONSTRUCT CONTAINS COPY COUNT CREATE DATATYPE DAY
123
123
  DEFAULT DELETE
@@ -184,7 +184,7 @@ module SPARQL
184
184
  # (?age ?src)
185
185
  # (bgp
186
186
  # (triple ?bob foaf:name "Bob")
187
- # (triple (triple ?bob foaf:age ?age) dct:source ?src)) ))
187
+ # (triple (qtriple ?bob foaf:age ?age) dct:source ?src)) ))
188
188
  #
189
189
  # SPARQL:
190
190
  #
@@ -212,11 +212,11 @@ module SPARQL
212
212
  # (construct
213
213
  # (
214
214
  # (triple ?bob foaf:name "Bob")
215
- # (triple (triple ?bob foaf:age ?age) dct:creator <http://example.com/crawlers#c1>)
216
- # (triple (triple ?bob foaf:age ?age) dct:source ?src))
215
+ # (triple (qtriple ?bob foaf:age ?age) dct:creator <http://example.com/crawlers#c1>)
216
+ # (triple (qtriple ?bob foaf:age ?age) dct:source ?src))
217
217
  # (bgp
218
218
  # (triple ?bob foaf:name "Bob")
219
- # (triple (triple ?bob foaf:age ?age) dct:source ?src)) ))
219
+ # (triple (qtriple ?bob foaf:age ?age) dct:source ?src)) ))
220
220
 
221
221
 
222
222
  # ## Implementation Notes
@@ -248,6 +248,7 @@ module SPARQL
248
248
  # Query may be an array of lexed tokens, a lexer, or a
249
249
  # string or open file.
250
250
  # @param [Hash{Symbol => Object}] options
251
+ # @option options (see SPARQL::Grammar::Parser#initialize)
251
252
  # @return [Parser]
252
253
  # @raise [Parser::Error] on invalid input
253
254
  def self.parse(query, **options, &block)
@@ -261,6 +262,7 @@ module SPARQL
261
262
  # @param [Hash{Symbol => Object}] options
262
263
  # any additional options (see `RDF::Reader#initialize` and `RDF::Format.for`)
263
264
  # @option options [Symbol] :format (:ntriples)
265
+ # @option options (see parse)
264
266
  # @yield [reader]
265
267
  # @yieldparam [RDF::Reader] reader
266
268
  # @yieldreturn [void] ignored
@@ -10,7 +10,7 @@ module SPARQL
10
10
  csv: 'text/csv',
11
11
  tsv: 'text/tab-separated-values'
12
12
  }
13
-
13
+
14
14
  ##
15
15
  # Generate Solutions as JSON
16
16
  # @return [String]
@@ -234,12 +234,13 @@ module SPARQL
234
234
  case format
235
235
  when :json
236
236
  require 'json' unless defined?(::JSON)
237
- {boolean: solutions}.to_json
237
+ {head: {}, boolean: solutions}.to_json
238
238
  when :xml
239
239
  require 'builder' unless defined?(::Builder)
240
240
  xml = ::Builder::XmlMarkup.new(indent: 2)
241
241
  xml.instruct!
242
242
  xml.sparql(xmlns: "http://www.w3.org/2005/sparql-results#") do
243
+ xml.head
243
244
  xml.boolean(solutions.to_s)
244
245
  end
245
246
  when :html
@@ -0,0 +1,93 @@
1
+ require 'sinatra/sparql'
2
+
3
+ module SPARQL
4
+ module Server
5
+ # A SPARQL Protocol and Graph Store server.
6
+ #
7
+ # Note, this is a trivial server and implementations may consider implementing integrating it into their own Rack or Sinatra server using {Rack::SPARQL} or {Sinatra::SPARQL}.
8
+ #
9
+ # Implements [SPARQL 1.1 Protocol](https://www.w3.org/TR/2013/REC-sparql11-protocol-20130321/)
10
+ # and [SPARQL 1.1 Graph Store HTTP Protocol](https://www.w3.org/TR/2013/REC-sparql11-http-rdf-update-20130321/).
11
+ #
12
+ # Protocol-specified dataset parameters create a merged repository as described in {Sinatra::SPARQL::Helpers#dataset} and {SPARQL::Algebra::Operator::Dataset}.
13
+ #
14
+ # @param [RDF::Dataset] dataset (RDF::Repository.new)
15
+ # @param [Hash{Symbol => Object}] options
16
+ # @return [Sinatra::Base]
17
+ def application(dataset: RDF::Repository.new, **options)
18
+ Sinatra.new do
19
+ register Sinatra::SPARQL
20
+ set :repository, dataset
21
+ enable :logging
22
+ disable :raise_errors, :show_exceptions if settings.production?
23
+
24
+ mime_type :jsonld, "application/ld+json"
25
+ mime_type :normalize, "application/normalized+n-quads"
26
+ mime_type :sparql, "application/sparql-query"
27
+ mime_type :ttl, "text/turtle"
28
+ mime_type :sse, "application/sse+sparql-query"
29
+
30
+ configure :development, :test do
31
+ set :logging, 0
32
+ end
33
+
34
+ get '/' do
35
+ opts = params.inject({}) {|memo, (k,v)| memo.merge(k.to_sym => v)}
36
+ if opts[:query]
37
+ query = opts[:query]
38
+ halt 403, "Update not possible using GET" if opts[:update]
39
+ repo = dataset(logger: request.logger, **opts)
40
+ url = RDF::URI(request.url).tap {|u| u.query = nil}
41
+ query = begin
42
+ SPARQL.parse(query, base_uri: url)
43
+ rescue SPARQL::Grammar::Parser::Error => e
44
+ halt 400, "Error parsing query: #{e.message}"
45
+ end
46
+ res = query.execute(repo,
47
+ logger: request.logger,
48
+ **options.merge(opts))
49
+ res.is_a?(RDF::Literal::Boolean) ? [res] : res
50
+ elsif opts[:update]
51
+ halt 406, "Inappropriate update option using GET"
52
+ else
53
+ settings.sparql_options.replace(standard_prefixes: true)
54
+ settings.sparql_options.merge!(prefixes: {
55
+ ssd: "http://www.w3.org/ns/sparql-service-description#",
56
+ void: "http://rdfs.org/ns/void#"
57
+ })
58
+ repo = dataset(logger: request.logger, **options)
59
+ service_description(repo: repo, endpoint: url)
60
+ end
61
+ end
62
+
63
+ 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.
66
+ query = begin
67
+ update = case request.content_type
68
+ when %r(application/sparql-query) then false
69
+ when %r(application/sparql-update) then true
70
+ else
71
+ halt 406, "No query found for #{request.content_type}"
72
+ end
73
+
74
+ # XXX Rack always sets input to ASCII-8BIT
75
+ #unless request.body.external_encoding == Encoding::UTF_8
76
+ # halt 400, "improper body encoding: #{request.body.external_encoding}"
77
+ #end
78
+ SPARQL.parse(request.body, base_uri: url, update: update)
79
+ rescue SPARQL::Grammar::Parser::Error => e
80
+ halt 400, "Error parsing #{update ? 'update' : 'query'}: #{e.message}"
81
+ end
82
+ repo = dataset(logger: request.logger, **opts)
83
+ url = RDF::URI(request.url).tap {|u| u.query = nil}
84
+ res = query.execute(repo,
85
+ logger: request.logger,
86
+ **options.merge(opts))
87
+ res.is_a?(RDF::Literal::Boolean) ? [res] : res
88
+ end
89
+ end
90
+ end
91
+ module_function :application
92
+ end
93
+ end
data/lib/sparql.rb CHANGED
@@ -10,6 +10,7 @@ module SPARQL
10
10
  autoload :Algebra, 'sparql/algebra'
11
11
  autoload :Grammar, 'sparql/grammar'
12
12
  autoload :Results, 'sparql/results'
13
+ autoload :Server, 'sparql/server'
13
14
  autoload :VERSION, 'sparql/version'
14
15
 
15
16
  # @see https://rubygems-client
@@ -25,13 +26,14 @@ module SPARQL
25
26
  # @param [Hash{Symbol => Object}] options
26
27
  # @option options [Boolean] :update (false)
27
28
  # Parse starting with UpdateUnit production, QueryUnit otherwise.
28
- # @return [SPARQL::Query]
29
+ # @option options (see SPARQL::Grammar::Parser#initialize)
30
+ # @return [RDF::Queryable]
29
31
  # The resulting query may be executed against
30
32
  # a `queryable` object such as an RDF::Graph
31
33
  # or RDF::Repository.
32
- # @raise [Parser::Error] on invalid input
34
+ # @raise [SPARQL::Grammar::Parser::Error] on invalid input
33
35
  def self.parse(query, **options)
34
- query = Grammar::Parser.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
36
+ Grammar::Parser.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
35
37
  end
36
38
 
37
39
  ##
@@ -63,11 +65,12 @@ module SPARQL
63
65
  # One or more URIs used to initialize a new instance of `queryable` in the default graph. One or more URIs used to initialize a new instance of `queryable` in the default graph.
64
66
  # @option options [RDF::URI, String, Array<RDF::URI, String>] :named_graph_uri
65
67
  # One or more URIs used to initialize the `queryable` as a named graph.
68
+ # @option options (see parse)
66
69
  # @yield [solution]
67
70
  # each matching solution, statement or boolean
68
71
  # @yieldparam [RDF::Statement, RDF::Query::Solution, Boolean] solution
69
72
  # @yieldreturn [void] ignored
70
- # @return [RDF::Graph, Boolean, RDF::Query::Solutions::Enumerator]
73
+ # @return [RDF::Graph, Boolean, RDF::Query::Solutions]
71
74
  # Note, results may be used with {SPARQL.serialize_results} to obtain appropriate output encoding.
72
75
  # @raise [SPARQL::MalformedQuery] on invalid input
73
76
  def self.execute(query, queryable, **options, &block)
@@ -88,7 +91,7 @@ module SPARQL
88
91
  queryable.load(uri, graph_name: uri)
89
92
  end
90
93
  end
91
- query.execute(queryable, &block)
94
+ query.execute(queryable, **options, &block)
92
95
  rescue SPARQL::Grammar::Parser::Error => e
93
96
  raise MalformedQuery, e.message
94
97
  rescue TypeError => e
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.1.8
4
+ version: 3.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-08-25 00:00:00.000000000 Z
12
+ date: 2022-05-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdf
@@ -17,48 +17,54 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.1'
20
+ version: '3.2'
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 3.1.14
23
+ version: 3.2.7
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - "~>"
29
29
  - !ruby/object:Gem::Version
30
- version: '3.1'
30
+ version: '3.2'
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.14
33
+ version: 3.2.7
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdf-aggregate-repo
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.1'
40
+ version: '3.2'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.1'
47
+ version: '3.2'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: ebnf
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.1'
54
+ version: '2.2'
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 2.3.1
55
58
  type: :runtime
56
59
  prerelease: false
57
60
  version_requirements: !ruby/object:Gem::Requirement
58
61
  requirements:
59
62
  - - "~>"
60
63
  - !ruby/object:Gem::Version
61
- version: '2.1'
64
+ version: '2.2'
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.3.1
62
68
  - !ruby/object:Gem::Dependency
63
69
  name: builder
64
70
  requirement: !ruby/object:Gem::Requirement
@@ -79,90 +85,96 @@ dependencies:
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '1.4'
88
+ version: '1.5'
83
89
  type: :runtime
84
90
  prerelease: false
85
91
  version_requirements: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '1.4'
95
+ version: '1.5'
90
96
  - !ruby/object:Gem::Dependency
91
97
  name: sxp
92
98
  requirement: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '1.1'
102
+ version: '1.2'
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: 1.2.2
97
106
  type: :runtime
98
107
  prerelease: false
99
108
  version_requirements: !ruby/object:Gem::Requirement
100
109
  requirements:
101
110
  - - "~>"
102
111
  - !ruby/object:Gem::Version
103
- version: '1.1'
112
+ version: '1.2'
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 1.2.2
104
116
  - !ruby/object:Gem::Dependency
105
117
  name: sparql-client
106
118
  requirement: !ruby/object:Gem::Requirement
107
119
  requirements:
108
120
  - - "~>"
109
121
  - !ruby/object:Gem::Version
110
- version: '3.1'
122
+ version: '3.2'
111
123
  - - ">="
112
124
  - !ruby/object:Gem::Version
113
- version: 3.1.2
125
+ version: 3.2.1
114
126
  type: :runtime
115
127
  prerelease: false
116
128
  version_requirements: !ruby/object:Gem::Requirement
117
129
  requirements:
118
130
  - - "~>"
119
131
  - !ruby/object:Gem::Version
120
- version: '3.1'
132
+ version: '3.2'
121
133
  - - ">="
122
134
  - !ruby/object:Gem::Version
123
- version: 3.1.2
135
+ version: 3.2.1
124
136
  - !ruby/object:Gem::Dependency
125
137
  name: rdf-xsd
126
138
  requirement: !ruby/object:Gem::Requirement
127
139
  requirements:
128
140
  - - "~>"
129
141
  - !ruby/object:Gem::Version
130
- version: '3.1'
142
+ version: '3.2'
131
143
  type: :runtime
132
144
  prerelease: false
133
145
  version_requirements: !ruby/object:Gem::Requirement
134
146
  requirements:
135
147
  - - "~>"
136
148
  - !ruby/object:Gem::Version
137
- version: '3.1'
149
+ version: '3.2'
138
150
  - !ruby/object:Gem::Dependency
139
151
  name: sinatra
140
152
  requirement: !ruby/object:Gem::Requirement
141
153
  requirements:
142
154
  - - "~>"
143
155
  - !ruby/object:Gem::Version
144
- version: '2.0'
156
+ version: '2.2'
145
157
  type: :development
146
158
  prerelease: false
147
159
  version_requirements: !ruby/object:Gem::Requirement
148
160
  requirements:
149
161
  - - "~>"
150
162
  - !ruby/object:Gem::Version
151
- version: '2.0'
163
+ version: '2.2'
152
164
  - !ruby/object:Gem::Dependency
153
165
  name: rack
154
166
  requirement: !ruby/object:Gem::Requirement
155
167
  requirements:
156
168
  - - "~>"
157
169
  - !ruby/object:Gem::Version
158
- version: '2.0'
170
+ version: '2.2'
159
171
  type: :development
160
172
  prerelease: false
161
173
  version_requirements: !ruby/object:Gem::Requirement
162
174
  requirements:
163
175
  - - "~>"
164
176
  - !ruby/object:Gem::Version
165
- version: '2.0'
177
+ version: '2.2'
166
178
  - !ruby/object:Gem::Dependency
167
179
  name: rack-test
168
180
  requirement: !ruby/object:Gem::Requirement
@@ -183,56 +195,56 @@ dependencies:
183
195
  requirements:
184
196
  - - "~>"
185
197
  - !ruby/object:Gem::Version
186
- version: '3.1'
198
+ version: '3.2'
187
199
  type: :development
188
200
  prerelease: false
189
201
  version_requirements: !ruby/object:Gem::Requirement
190
202
  requirements:
191
203
  - - "~>"
192
204
  - !ruby/object:Gem::Version
193
- version: '3.1'
205
+ version: '3.2'
194
206
  - !ruby/object:Gem::Dependency
195
207
  name: linkeddata
196
208
  requirement: !ruby/object:Gem::Requirement
197
209
  requirements:
198
210
  - - "~>"
199
211
  - !ruby/object:Gem::Version
200
- version: '3.1'
212
+ version: '3.2'
201
213
  type: :development
202
214
  prerelease: false
203
215
  version_requirements: !ruby/object:Gem::Requirement
204
216
  requirements:
205
217
  - - "~>"
206
218
  - !ruby/object:Gem::Version
207
- version: '3.1'
219
+ version: '3.2'
208
220
  - !ruby/object:Gem::Dependency
209
221
  name: rspec
210
222
  requirement: !ruby/object:Gem::Requirement
211
223
  requirements:
212
224
  - - "~>"
213
225
  - !ruby/object:Gem::Version
214
- version: '3.10'
226
+ version: '3.11'
215
227
  type: :development
216
228
  prerelease: false
217
229
  version_requirements: !ruby/object:Gem::Requirement
218
230
  requirements:
219
231
  - - "~>"
220
232
  - !ruby/object:Gem::Version
221
- version: '3.10'
233
+ version: '3.11'
222
234
  - !ruby/object:Gem::Dependency
223
235
  name: rspec-its
224
236
  requirement: !ruby/object:Gem::Requirement
225
237
  requirements:
226
238
  - - "~>"
227
239
  - !ruby/object:Gem::Version
228
- version: '1.2'
240
+ version: '1.3'
229
241
  type: :development
230
242
  prerelease: false
231
243
  version_requirements: !ruby/object:Gem::Requirement
232
244
  requirements:
233
245
  - - "~>"
234
246
  - !ruby/object:Gem::Version
235
- version: '1.2'
247
+ version: '1.3'
236
248
  - !ruby/object:Gem::Dependency
237
249
  name: yard
238
250
  requirement: !ruby/object:Gem::Requirement
@@ -274,6 +286,7 @@ files:
274
286
  - lib/sparql/algebra/operator.rb
275
287
  - lib/sparql/algebra/operator/abs.rb
276
288
  - lib/sparql/algebra/operator/add.rb
289
+ - lib/sparql/algebra/operator/adjust.rb
277
290
  - lib/sparql/algebra/operator/alt.rb
278
291
  - lib/sparql/algebra/operator/and.rb
279
292
  - lib/sparql/algebra/operator/asc.rb
@@ -311,6 +324,7 @@ files:
311
324
  - lib/sparql/algebra/operator/extend.rb
312
325
  - lib/sparql/algebra/operator/filter.rb
313
326
  - lib/sparql/algebra/operator/floor.rb
327
+ - lib/sparql/algebra/operator/function_call.rb
314
328
  - lib/sparql/algebra/operator/graph.rb
315
329
  - lib/sparql/algebra/operator/greater_than.rb
316
330
  - lib/sparql/algebra/operator/greater_than_or_equal.rb
@@ -357,7 +371,9 @@ files:
357
371
  - lib/sparql/algebra/operator/path.rb
358
372
  - lib/sparql/algebra/operator/path_opt.rb
359
373
  - lib/sparql/algebra/operator/path_plus.rb
374
+ - lib/sparql/algebra/operator/path_range.rb
360
375
  - lib/sparql/algebra/operator/path_star.rb
376
+ - lib/sparql/algebra/operator/path_zero.rb
361
377
  - lib/sparql/algebra/operator/plus.rb
362
378
  - lib/sparql/algebra/operator/predicate.rb
363
379
  - lib/sparql/algebra/operator/prefix.rb
@@ -412,11 +428,17 @@ files:
412
428
  - lib/sparql/grammar/parser11.rb
413
429
  - lib/sparql/grammar/terminals11.rb
414
430
  - lib/sparql/results.rb
431
+ - lib/sparql/server.rb
415
432
  - lib/sparql/version.rb
416
433
  homepage: https://github.com/ruby-rdf/sparql
417
434
  licenses:
418
435
  - Unlicense
419
- metadata: {}
436
+ metadata:
437
+ documentation_uri: https://ruby-rdf.github.io/sparql
438
+ bug_tracker_uri: https://github.com/ruby-rdf/sparql/issues
439
+ homepage_uri: https://github.com/ruby-rdf/sparql
440
+ mailing_list_uri: https://lists.w3.org/Archives/Public/public-rdf-ruby/
441
+ source_code_uri: https://github.com/ruby-rdf/sparql
420
442
  post_install_message:
421
443
  rdoc_options: []
422
444
  require_paths:
@@ -425,14 +447,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
425
447
  requirements:
426
448
  - - ">="
427
449
  - !ruby/object:Gem::Version
428
- version: '2.4'
450
+ version: '2.6'
429
451
  required_rubygems_version: !ruby/object:Gem::Requirement
430
452
  requirements:
431
453
  - - ">="
432
454
  - !ruby/object:Gem::Version
433
455
  version: '0'
434
456
  requirements: []
435
- rubygems_version: 3.2.15
457
+ rubygems_version: 3.3.3
436
458
  signing_key:
437
459
  specification_version: 4
438
460
  summary: SPARQL Query and Update library for Ruby.