sparql 3.2.0 → 3.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +59 -38
  3. data/VERSION +1 -1
  4. data/bin/sparql +2 -31
  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 +39 -35
  10. data/lib/sparql/algebra/operator/abs.rb +1 -1
  11. data/lib/sparql/algebra/operator/adjust.rb +69 -0
  12. data/lib/sparql/algebra/operator/alt.rb +1 -1
  13. data/lib/sparql/algebra/operator/avg.rb +3 -1
  14. data/lib/sparql/algebra/operator/bgp.rb +9 -1
  15. data/lib/sparql/algebra/operator/clear.rb +13 -3
  16. data/lib/sparql/algebra/operator/construct.rb +1 -1
  17. data/lib/sparql/algebra/operator/count.rb +36 -6
  18. data/lib/sparql/algebra/operator/create.rb +5 -4
  19. data/lib/sparql/algebra/operator/dataset.rb +29 -11
  20. data/lib/sparql/algebra/operator/day.rb +2 -2
  21. data/lib/sparql/algebra/operator/delete.rb +3 -1
  22. data/lib/sparql/algebra/operator/delete_data.rb +1 -1
  23. data/lib/sparql/algebra/operator/delete_where.rb +1 -1
  24. data/lib/sparql/algebra/operator/distinct.rb +2 -2
  25. data/lib/sparql/algebra/operator/divide.rb +1 -1
  26. data/lib/sparql/algebra/operator/drop.rb +15 -6
  27. data/lib/sparql/algebra/operator/encode_for_uri.rb +2 -4
  28. data/lib/sparql/algebra/operator/exprlist.rb +3 -1
  29. data/lib/sparql/algebra/operator/extend.rb +73 -5
  30. data/lib/sparql/algebra/operator/filter.rb +6 -1
  31. data/lib/sparql/algebra/operator/function_call.rb +64 -0
  32. data/lib/sparql/algebra/operator/graph.rb +57 -7
  33. data/lib/sparql/algebra/operator/group.rb +105 -6
  34. data/lib/sparql/algebra/operator/group_concat.rb +25 -1
  35. data/lib/sparql/algebra/operator/hours.rb +2 -2
  36. data/lib/sparql/algebra/operator/if.rb +10 -10
  37. data/lib/sparql/algebra/operator/insert.rb +3 -1
  38. data/lib/sparql/algebra/operator/insert_data.rb +1 -1
  39. data/lib/sparql/algebra/operator/is_blank.rb +1 -2
  40. data/lib/sparql/algebra/operator/is_iri.rb +1 -2
  41. data/lib/sparql/algebra/operator/is_literal.rb +1 -2
  42. data/lib/sparql/algebra/operator/is_numeric.rb +1 -2
  43. data/lib/sparql/algebra/operator/join.rb +39 -5
  44. data/lib/sparql/algebra/operator/lcase.rb +2 -3
  45. data/lib/sparql/algebra/operator/left_join.rb +27 -9
  46. data/lib/sparql/algebra/operator/max.rb +3 -1
  47. data/lib/sparql/algebra/operator/min.rb +4 -2
  48. data/lib/sparql/algebra/operator/minus.rb +46 -6
  49. data/lib/sparql/algebra/operator/minutes.rb +2 -2
  50. data/lib/sparql/algebra/operator/modify.rb +21 -0
  51. data/lib/sparql/algebra/operator/month.rb +2 -2
  52. data/lib/sparql/algebra/operator/multiply.rb +1 -1
  53. data/lib/sparql/algebra/operator/notoneof.rb +12 -3
  54. data/lib/sparql/algebra/operator/order.rb +44 -0
  55. data/lib/sparql/algebra/operator/path_opt.rb +9 -65
  56. data/lib/sparql/algebra/operator/path_plus.rb +18 -10
  57. data/lib/sparql/algebra/operator/path_range.rb +178 -0
  58. data/lib/sparql/algebra/operator/path_star.rb +7 -4
  59. data/lib/sparql/algebra/operator/path_zero.rb +110 -0
  60. data/lib/sparql/algebra/operator/plus.rb +8 -6
  61. data/lib/sparql/algebra/operator/project.rb +64 -5
  62. data/lib/sparql/algebra/operator/reduced.rb +3 -3
  63. data/lib/sparql/algebra/operator/regex.rb +1 -1
  64. data/lib/sparql/algebra/operator/reverse.rb +12 -1
  65. data/lib/sparql/algebra/operator/sample.rb +3 -1
  66. data/lib/sparql/algebra/operator/seconds.rb +2 -2
  67. data/lib/sparql/algebra/operator/seq.rb +4 -4
  68. data/lib/sparql/algebra/operator/sequence.rb +14 -1
  69. data/lib/sparql/algebra/operator/service.rb +86 -0
  70. data/lib/sparql/algebra/operator/strlang.rb +1 -2
  71. data/lib/sparql/algebra/operator/subtract.rb +10 -6
  72. data/lib/sparql/algebra/operator/sum.rb +9 -7
  73. data/lib/sparql/algebra/operator/table.rb +50 -7
  74. data/lib/sparql/algebra/operator/timezone.rb +2 -2
  75. data/lib/sparql/algebra/operator/triple.rb +51 -0
  76. data/lib/sparql/algebra/operator/tz.rb +2 -2
  77. data/lib/sparql/algebra/operator/ucase.rb +1 -1
  78. data/lib/sparql/algebra/operator/update.rb +22 -1
  79. data/lib/sparql/algebra/operator/using.rb +18 -1
  80. data/lib/sparql/algebra/operator/with.rb +1 -1
  81. data/lib/sparql/algebra/operator/year.rb +2 -2
  82. data/lib/sparql/algebra/operator.rb +69 -22
  83. data/lib/sparql/algebra/query.rb +5 -3
  84. data/lib/sparql/algebra.rb +42 -6
  85. data/lib/sparql/grammar/meta.rb +1367 -267
  86. data/lib/sparql/grammar/parser11.rb +842 -331
  87. data/lib/sparql/grammar/terminals11.rb +2 -2
  88. data/lib/sparql/grammar.rb +6 -4
  89. data/lib/sparql/results.rb +3 -2
  90. data/lib/sparql/server.rb +93 -0
  91. data/lib/sparql.rb +8 -5
  92. metadata +49 -13
@@ -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.2.0
4
+ version: 3.2.4
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-12-13 00:00:00.000000000 Z
12
+ date: 2022-06-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdf
@@ -18,6 +18,9 @@ dependencies:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3.2'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 3.2.8
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
@@ -25,6 +28,9 @@ dependencies:
25
28
  - - "~>"
26
29
  - !ruby/object:Gem::Version
27
30
  version: '3.2'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.8
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: rdf-aggregate-repo
30
36
  requirement: !ruby/object:Gem::Requirement
@@ -46,6 +52,9 @@ dependencies:
46
52
  - - "~>"
47
53
  - !ruby/object:Gem::Version
48
54
  version: '2.2'
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 2.3.1
49
58
  type: :runtime
50
59
  prerelease: false
51
60
  version_requirements: !ruby/object:Gem::Requirement
@@ -53,6 +62,9 @@ dependencies:
53
62
  - - "~>"
54
63
  - !ruby/object:Gem::Version
55
64
  version: '2.2'
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.3.1
56
68
  - !ruby/object:Gem::Dependency
57
69
  name: builder
58
70
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +85,14 @@ dependencies:
73
85
  requirements:
74
86
  - - "~>"
75
87
  - !ruby/object:Gem::Version
76
- version: '1.4'
88
+ version: '1.5'
77
89
  type: :runtime
78
90
  prerelease: false
79
91
  version_requirements: !ruby/object:Gem::Requirement
80
92
  requirements:
81
93
  - - "~>"
82
94
  - !ruby/object:Gem::Version
83
- version: '1.4'
95
+ version: '1.5'
84
96
  - !ruby/object:Gem::Dependency
85
97
  name: sxp
86
98
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +100,9 @@ dependencies:
88
100
  - - "~>"
89
101
  - !ruby/object:Gem::Version
90
102
  version: '1.2'
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: 1.2.2
91
106
  type: :runtime
92
107
  prerelease: false
93
108
  version_requirements: !ruby/object:Gem::Requirement
@@ -95,6 +110,9 @@ dependencies:
95
110
  - - "~>"
96
111
  - !ruby/object:Gem::Version
97
112
  version: '1.2'
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 1.2.2
98
116
  - !ruby/object:Gem::Dependency
99
117
  name: sparql-client
100
118
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +120,9 @@ dependencies:
102
120
  - - "~>"
103
121
  - !ruby/object:Gem::Version
104
122
  version: '3.2'
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 3.2.1
105
126
  type: :runtime
106
127
  prerelease: false
107
128
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,6 +130,9 @@ dependencies:
109
130
  - - "~>"
110
131
  - !ruby/object:Gem::Version
111
132
  version: '3.2'
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 3.2.1
112
136
  - !ruby/object:Gem::Dependency
113
137
  name: rdf-xsd
114
138
  requirement: !ruby/object:Gem::Requirement
@@ -129,14 +153,14 @@ dependencies:
129
153
  requirements:
130
154
  - - "~>"
131
155
  - !ruby/object:Gem::Version
132
- version: '2.1'
156
+ version: '2.2'
133
157
  type: :development
134
158
  prerelease: false
135
159
  version_requirements: !ruby/object:Gem::Requirement
136
160
  requirements:
137
161
  - - "~>"
138
162
  - !ruby/object:Gem::Version
139
- version: '2.1'
163
+ version: '2.2'
140
164
  - !ruby/object:Gem::Dependency
141
165
  name: rack
142
166
  requirement: !ruby/object:Gem::Requirement
@@ -185,42 +209,42 @@ dependencies:
185
209
  requirements:
186
210
  - - "~>"
187
211
  - !ruby/object:Gem::Version
188
- version: '3.1'
212
+ version: '3.2'
189
213
  type: :development
190
214
  prerelease: false
191
215
  version_requirements: !ruby/object:Gem::Requirement
192
216
  requirements:
193
217
  - - "~>"
194
218
  - !ruby/object:Gem::Version
195
- version: '3.1'
219
+ version: '3.2'
196
220
  - !ruby/object:Gem::Dependency
197
221
  name: rspec
198
222
  requirement: !ruby/object:Gem::Requirement
199
223
  requirements:
200
224
  - - "~>"
201
225
  - !ruby/object:Gem::Version
202
- version: '3.10'
226
+ version: '3.11'
203
227
  type: :development
204
228
  prerelease: false
205
229
  version_requirements: !ruby/object:Gem::Requirement
206
230
  requirements:
207
231
  - - "~>"
208
232
  - !ruby/object:Gem::Version
209
- version: '3.10'
233
+ version: '3.11'
210
234
  - !ruby/object:Gem::Dependency
211
235
  name: rspec-its
212
236
  requirement: !ruby/object:Gem::Requirement
213
237
  requirements:
214
238
  - - "~>"
215
239
  - !ruby/object:Gem::Version
216
- version: '1.2'
240
+ version: '1.3'
217
241
  type: :development
218
242
  prerelease: false
219
243
  version_requirements: !ruby/object:Gem::Requirement
220
244
  requirements:
221
245
  - - "~>"
222
246
  - !ruby/object:Gem::Version
223
- version: '1.2'
247
+ version: '1.3'
224
248
  - !ruby/object:Gem::Dependency
225
249
  name: yard
226
250
  requirement: !ruby/object:Gem::Requirement
@@ -262,6 +286,7 @@ files:
262
286
  - lib/sparql/algebra/operator.rb
263
287
  - lib/sparql/algebra/operator/abs.rb
264
288
  - lib/sparql/algebra/operator/add.rb
289
+ - lib/sparql/algebra/operator/adjust.rb
265
290
  - lib/sparql/algebra/operator/alt.rb
266
291
  - lib/sparql/algebra/operator/and.rb
267
292
  - lib/sparql/algebra/operator/asc.rb
@@ -299,6 +324,7 @@ files:
299
324
  - lib/sparql/algebra/operator/extend.rb
300
325
  - lib/sparql/algebra/operator/filter.rb
301
326
  - lib/sparql/algebra/operator/floor.rb
327
+ - lib/sparql/algebra/operator/function_call.rb
302
328
  - lib/sparql/algebra/operator/graph.rb
303
329
  - lib/sparql/algebra/operator/greater_than.rb
304
330
  - lib/sparql/algebra/operator/greater_than_or_equal.rb
@@ -345,7 +371,9 @@ files:
345
371
  - lib/sparql/algebra/operator/path.rb
346
372
  - lib/sparql/algebra/operator/path_opt.rb
347
373
  - lib/sparql/algebra/operator/path_plus.rb
374
+ - lib/sparql/algebra/operator/path_range.rb
348
375
  - lib/sparql/algebra/operator/path_star.rb
376
+ - lib/sparql/algebra/operator/path_zero.rb
349
377
  - lib/sparql/algebra/operator/plus.rb
350
378
  - lib/sparql/algebra/operator/predicate.rb
351
379
  - lib/sparql/algebra/operator/prefix.rb
@@ -361,6 +389,7 @@ files:
361
389
  - lib/sparql/algebra/operator/seconds.rb
362
390
  - lib/sparql/algebra/operator/seq.rb
363
391
  - lib/sparql/algebra/operator/sequence.rb
392
+ - lib/sparql/algebra/operator/service.rb
364
393
  - lib/sparql/algebra/operator/sha1.rb
365
394
  - lib/sparql/algebra/operator/sha256.rb
366
395
  - lib/sparql/algebra/operator/sha384.rb
@@ -381,6 +410,7 @@ files:
381
410
  - lib/sparql/algebra/operator/sum.rb
382
411
  - lib/sparql/algebra/operator/table.rb
383
412
  - lib/sparql/algebra/operator/timezone.rb
413
+ - lib/sparql/algebra/operator/triple.rb
384
414
  - lib/sparql/algebra/operator/tz.rb
385
415
  - lib/sparql/algebra/operator/ucase.rb
386
416
  - lib/sparql/algebra/operator/union.rb
@@ -399,11 +429,17 @@ files:
399
429
  - lib/sparql/grammar/parser11.rb
400
430
  - lib/sparql/grammar/terminals11.rb
401
431
  - lib/sparql/results.rb
432
+ - lib/sparql/server.rb
402
433
  - lib/sparql/version.rb
403
434
  homepage: https://github.com/ruby-rdf/sparql
404
435
  licenses:
405
436
  - Unlicense
406
- metadata: {}
437
+ metadata:
438
+ documentation_uri: https://ruby-rdf.github.io/sparql
439
+ bug_tracker_uri: https://github.com/ruby-rdf/sparql/issues
440
+ homepage_uri: https://github.com/ruby-rdf/sparql
441
+ mailing_list_uri: https://lists.w3.org/Archives/Public/public-rdf-ruby/
442
+ source_code_uri: https://github.com/ruby-rdf/sparql
407
443
  post_install_message:
408
444
  rdoc_options: []
409
445
  require_paths: