sparql 3.2.1 → 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.
- checksums.yaml +4 -4
- data/README.md +57 -38
- data/VERSION +1 -1
- data/bin/sparql +2 -31
- data/lib/rack/sparql/conneg.rb +22 -1
- data/lib/sinatra/sparql/extensions.rb +1 -1
- data/lib/sinatra/sparql.rb +57 -12
- data/lib/sparql/algebra/expression.rb +35 -7
- data/lib/sparql/algebra/extensions.rb +18 -18
- data/lib/sparql/algebra/operator/adjust.rb +69 -0
- data/lib/sparql/algebra/operator/bgp.rb +1 -1
- data/lib/sparql/algebra/operator/construct.rb +1 -1
- data/lib/sparql/algebra/operator/dataset.rb +10 -0
- data/lib/sparql/algebra/operator/day.rb +2 -2
- data/lib/sparql/algebra/operator/delete.rb +1 -1
- data/lib/sparql/algebra/operator/delete_data.rb +1 -1
- data/lib/sparql/algebra/operator/delete_where.rb +1 -1
- data/lib/sparql/algebra/operator/extend.rb +32 -2
- data/lib/sparql/algebra/operator/group.rb +34 -6
- data/lib/sparql/algebra/operator/hours.rb +2 -2
- data/lib/sparql/algebra/operator/insert.rb +1 -1
- data/lib/sparql/algebra/operator/insert_data.rb +1 -1
- data/lib/sparql/algebra/operator/join.rb +3 -3
- data/lib/sparql/algebra/operator/left_join.rb +3 -3
- data/lib/sparql/algebra/operator/minus.rb +1 -1
- data/lib/sparql/algebra/operator/minutes.rb +2 -2
- data/lib/sparql/algebra/operator/modify.rb +21 -0
- data/lib/sparql/algebra/operator/month.rb +2 -2
- data/lib/sparql/algebra/operator/path_opt.rb +9 -65
- data/lib/sparql/algebra/operator/path_plus.rb +18 -10
- data/lib/sparql/algebra/operator/path_range.rb +178 -0
- data/lib/sparql/algebra/operator/path_star.rb +7 -4
- data/lib/sparql/algebra/operator/path_zero.rb +110 -0
- data/lib/sparql/algebra/operator/plus.rb +7 -5
- data/lib/sparql/algebra/operator/project.rb +42 -1
- data/lib/sparql/algebra/operator/seconds.rb +2 -2
- data/lib/sparql/algebra/operator/seq.rb +3 -3
- data/lib/sparql/algebra/operator/sequence.rb +10 -0
- data/lib/sparql/algebra/operator/subtract.rb +9 -5
- data/lib/sparql/algebra/operator/table.rb +11 -2
- data/lib/sparql/algebra/operator/timezone.rb +2 -2
- data/lib/sparql/algebra/operator/triple.rb +51 -0
- data/lib/sparql/algebra/operator/tz.rb +2 -2
- data/lib/sparql/algebra/operator/using.rb +2 -2
- data/lib/sparql/algebra/operator/year.rb +2 -2
- data/lib/sparql/algebra/operator.rb +27 -10
- data/lib/sparql/algebra/query.rb +5 -3
- data/lib/sparql/algebra.rb +22 -3
- data/lib/sparql/grammar/meta.rb +1367 -267
- data/lib/sparql/grammar/parser11.rb +826 -328
- data/lib/sparql/grammar/terminals11.rb +2 -2
- data/lib/sparql/grammar.rb +6 -4
- data/lib/sparql/results.rb +3 -2
- data/lib/sparql/server.rb +93 -0
- data/lib/sparql.rb +8 -5
- metadata +39 -17
@@ -55,12 +55,14 @@ module SPARQL; module Algebra
|
|
55
55
|
autoload :Timezone, 'sparql/algebra/operator/timezone'
|
56
56
|
autoload :TZ, 'sparql/algebra/operator/tz'
|
57
57
|
autoload :Year, 'sparql/algebra/operator/year'
|
58
|
+
autoload :Triple, 'sparql/algebra/operator/triple'
|
58
59
|
autoload :IsTriple, 'sparql/algebra/operator/is_triple'
|
59
60
|
autoload :Subject, 'sparql/algebra/operator/subject'
|
60
61
|
autoload :Predicate, 'sparql/algebra/operator/predicate'
|
61
62
|
autoload :Object, 'sparql/algebra/operator/object'
|
62
63
|
|
63
64
|
# Binary operators
|
65
|
+
autoload :Adjust, 'sparql/algebra/operator/adjust'
|
64
66
|
autoload :And, 'sparql/algebra/operator/and'
|
65
67
|
autoload :Compare, 'sparql/algebra/operator/compare'
|
66
68
|
autoload :Concat, 'sparql/algebra/operator/concat'
|
@@ -95,7 +97,9 @@ module SPARQL; module Algebra
|
|
95
97
|
autoload :NotOneOf, 'sparql/algebra/operator/notoneof'
|
96
98
|
autoload :PathOpt, 'sparql/algebra/operator/path_opt'
|
97
99
|
autoload :PathPlus, 'sparql/algebra/operator/path_plus'
|
100
|
+
autoload :PathRange, 'sparql/algebra/operator/path_range'
|
98
101
|
autoload :PathStar, 'sparql/algebra/operator/path_star'
|
102
|
+
autoload :PathZero, 'sparql/algebra/operator/path_zero'
|
99
103
|
autoload :Path, 'sparql/algebra/operator/path'
|
100
104
|
autoload :Reverse, 'sparql/algebra/operator/reverse'
|
101
105
|
autoload :Seq, 'sparql/algebra/operator/seq'
|
@@ -173,6 +177,7 @@ module SPARQL; module Algebra
|
|
173
177
|
when :> then GreaterThan
|
174
178
|
when :>= then GreaterThanOrEqual
|
175
179
|
when :abs then Abs
|
180
|
+
when :adjust then Adjust
|
176
181
|
when :alt then Alt
|
177
182
|
when :and, :'&&' then And
|
178
183
|
when :avg then Avg
|
@@ -215,9 +220,11 @@ module SPARQL; module Algebra
|
|
215
220
|
when :now then Now
|
216
221
|
when :or, :'||' then Or
|
217
222
|
when :path then Path
|
223
|
+
when :path0 then PathZero
|
218
224
|
when :path? then PathOpt
|
219
|
-
when :"path*" then PathStar
|
220
225
|
when :"path+" then PathPlus
|
226
|
+
when :"path*" then PathStar
|
227
|
+
when :pathrange then PathRange
|
221
228
|
when :plus then Plus
|
222
229
|
when :rand then Rand
|
223
230
|
when :regex then Regex
|
@@ -302,7 +309,9 @@ module SPARQL; module Algebra
|
|
302
309
|
|
303
310
|
# RDF-star
|
304
311
|
when :istriple then IsTriple
|
305
|
-
when :triple then
|
312
|
+
when :triple then Triple
|
313
|
+
when :qtriple then RDF::Query::Pattern
|
314
|
+
when :quad then RDF::Query::Pattern
|
306
315
|
when :subject then Subject
|
307
316
|
when :predicate then Predicate
|
308
317
|
when :object then Object
|
@@ -340,7 +349,7 @@ module SPARQL; module Algebra
|
|
340
349
|
# @param [String] content
|
341
350
|
# @param [Operator] datasets ([])
|
342
351
|
# @param [Operator] distinct (false)
|
343
|
-
# @param [Hash{
|
352
|
+
# @param [Hash{String => Operator}] extensions
|
344
353
|
# Variable bindings
|
345
354
|
# @param [Array<Operator>] filter_ops ([])
|
346
355
|
# Filter Operations
|
@@ -383,10 +392,9 @@ module SPARQL; module Algebra
|
|
383
392
|
str << "REDUCED " if reduced
|
384
393
|
|
385
394
|
str << project.map do |p|
|
386
|
-
if expr = extensions.delete(p)
|
387
|
-
v = expr.to_sparql(
|
388
|
-
|
389
|
-
pp = p.to_sparql(**options)
|
395
|
+
if expr = extensions.delete(p.to_s)
|
396
|
+
v = expr.to_sparql(**options)
|
397
|
+
pp = RDF::Query::Variable.new(p).to_sparql(**options)
|
390
398
|
# Replace projected variables with their extension, if any
|
391
399
|
'(' + v + ' AS ' + pp + ')'
|
392
400
|
else
|
@@ -402,9 +410,9 @@ module SPARQL; module Algebra
|
|
402
410
|
|
403
411
|
# Bind
|
404
412
|
extensions.each do |as, expression|
|
405
|
-
v = expression.to_sparql(
|
406
|
-
|
407
|
-
content << "\nBIND (" << v << " AS " <<
|
413
|
+
v = expression.to_sparql(**options)
|
414
|
+
pp = RDF::Query::Variable.new(as).to_sparql(**options)
|
415
|
+
content << "\nBIND (" << v << " AS " << pp << ") ."
|
408
416
|
end
|
409
417
|
|
410
418
|
# Filter
|
@@ -793,6 +801,15 @@ module SPARQL; module Algebra
|
|
793
801
|
operands.each {|op| op.validate! if op.respond_to?(:validate!)}
|
794
802
|
self
|
795
803
|
end
|
804
|
+
|
805
|
+
##
|
806
|
+
# The variables used in this query.
|
807
|
+
#
|
808
|
+
# @return [Hash{Symbol => RDF::Query::Variable}]
|
809
|
+
def variables
|
810
|
+
operands.inject({}) {|hash, o| o.respond_to?(:variables) ? hash.merge(o.variables) : hash}
|
811
|
+
end
|
812
|
+
|
796
813
|
protected
|
797
814
|
|
798
815
|
##
|
data/lib/sparql/algebra/query.rb
CHANGED
@@ -16,13 +16,13 @@ module SPARQL; module Algebra
|
|
16
16
|
@operands.unshift(query)
|
17
17
|
self
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
##
|
21
21
|
# The variables used in this query.
|
22
22
|
#
|
23
23
|
# @return [Hash{Symbol => RDF::Query::Variable}]
|
24
24
|
def variables
|
25
|
-
operands.inject({}) {|hash, o| o.
|
25
|
+
operands.inject({}) {|hash, o| o.respond_to?(:variables) ? hash.merge(o.variables) : hash}
|
26
26
|
end
|
27
27
|
|
28
28
|
##
|
@@ -38,7 +38,9 @@ module SPARQL; module Algebra
|
|
38
38
|
# the graph or repository to query
|
39
39
|
# @param [Hash{Symbol => Object}] options
|
40
40
|
# any additional keyword options
|
41
|
-
# @option options
|
41
|
+
# @option options [RDF::Query::Solution] :bindings
|
42
|
+
# a query solution containing zero or more variable bindings
|
43
|
+
# @option options [Boolean] :debug
|
42
44
|
# Query execution debugging
|
43
45
|
# @option options [RDF::Term, RDF::Query::Variable] :graph_name
|
44
46
|
# @yield [solution]
|
data/lib/sparql/algebra.rb
CHANGED
@@ -233,7 +233,7 @@ module SPARQL
|
|
233
233
|
# scarcity.
|
234
234
|
#
|
235
235
|
# [memoization]: http://en.wikipedia.org/wiki/Memoization
|
236
|
-
# [RDF::Util::Cache]:
|
236
|
+
# [RDF::Util::Cache]: https://ruby-rdf.github.io/rdf/RDF/Util/Cache
|
237
237
|
#
|
238
238
|
# ## Documentation
|
239
239
|
#
|
@@ -246,12 +246,15 @@ module SPARQL
|
|
246
246
|
# * {SPARQL::Algebra::Operator}
|
247
247
|
# * {SPARQL::Algebra::Operator::Abs}
|
248
248
|
# * {SPARQL::Algebra::Operator::Add}
|
249
|
+
# * {SPARQL::Algebra::Operator::Adjust}
|
250
|
+
# * {SPARQL::Algebra::Operator::Alt}
|
249
251
|
# * {SPARQL::Algebra::Operator::And}
|
250
252
|
# * {SPARQL::Algebra::Operator::Asc}
|
251
253
|
# * {SPARQL::Algebra::Operator::Ask}
|
252
254
|
# * {SPARQL::Algebra::Operator::Avg}
|
253
255
|
# * {SPARQL::Algebra::Operator::Base}
|
254
256
|
# * {SPARQL::Algebra::Operator::BGP}
|
257
|
+
# * {SPARQL::Algebra::Operator::Bnode}
|
255
258
|
# * {SPARQL::Algebra::Operator::Bound}
|
256
259
|
# * {SPARQL::Algebra::Operator::Ceil}
|
257
260
|
# * {SPARQL::Algebra::Operator::Clear}
|
@@ -266,9 +269,9 @@ module SPARQL
|
|
266
269
|
# * {SPARQL::Algebra::Operator::Dataset}
|
267
270
|
# * {SPARQL::Algebra::Operator::Datatype}
|
268
271
|
# * {SPARQL::Algebra::Operator::Day}
|
269
|
-
# * {SPARQL::Algebra::Operator::Delete}
|
270
272
|
# * {SPARQL::Algebra::Operator::DeleteData}
|
271
273
|
# * {SPARQL::Algebra::Operator::DeleteWhere}
|
274
|
+
# * {SPARQL::Algebra::Operator::Delete}
|
272
275
|
# * {SPARQL::Algebra::Operator::Desc}
|
273
276
|
# * {SPARQL::Algebra::Operator::Describe}
|
274
277
|
# * {SPARQL::Algebra::Operator::Distinct}
|
@@ -276,6 +279,7 @@ module SPARQL
|
|
276
279
|
# * {SPARQL::Algebra::Operator::Drop}
|
277
280
|
# * {SPARQL::Algebra::Operator::EncodeForURI}
|
278
281
|
# * {SPARQL::Algebra::Operator::Equal}
|
282
|
+
# * {SPARQL::Algebra::Operator::Exists}
|
279
283
|
# * {SPARQL::Algebra::Operator::Exprlist}
|
280
284
|
# * {SPARQL::Algebra::Operator::Extend}
|
281
285
|
# * {SPARQL::Algebra::Operator::Filter}
|
@@ -296,9 +300,11 @@ module SPARQL
|
|
296
300
|
# * {SPARQL::Algebra::Operator::IsIRI}
|
297
301
|
# * {SPARQL::Algebra::Operator::IsLiteral}
|
298
302
|
# * {SPARQL::Algebra::Operator::IsNumeric}
|
303
|
+
# * {SPARQL::Algebra::Operator::IsTriple}
|
299
304
|
# * {SPARQL::Algebra::Operator::Join}
|
300
305
|
# * {SPARQL::Algebra::Operator::Lang}
|
301
306
|
# * {SPARQL::Algebra::Operator::LangMatches}
|
307
|
+
# * {SPARQL::Algebra::Operator::LCase}
|
302
308
|
# * {SPARQL::Algebra::Operator::LeftJoin}
|
303
309
|
# * {SPARQL::Algebra::Operator::LessThan}
|
304
310
|
# * {SPARQL::Algebra::Operator::LessThanOrEqual}
|
@@ -316,20 +322,32 @@ module SPARQL
|
|
316
322
|
# * {SPARQL::Algebra::Operator::NotEqual}
|
317
323
|
# * {SPARQL::Algebra::Operator::NotExists}
|
318
324
|
# * {SPARQL::Algebra::Operator::NotIn}
|
325
|
+
# * {SPARQL::Algebra::Operator::NotOneOf}
|
319
326
|
# * {SPARQL::Algebra::Operator::Now}
|
327
|
+
# * {SPARQL::Algebra::Operator::Object}
|
320
328
|
# * {SPARQL::Algebra::Operator::Or}
|
321
329
|
# * {SPARQL::Algebra::Operator::Order}
|
330
|
+
# * {SPARQL::Algebra::Operator::Path}
|
331
|
+
# * {SPARQL::Algebra::Operator::PathOpt}
|
332
|
+
# * {SPARQL::Algebra::Operator::PathPlus}
|
333
|
+
# * {SPARQL::Algebra::Operator::PathRange}
|
334
|
+
# * {SPARQL::Algebra::Operator::PathStar}
|
335
|
+
# * {SPARQL::Algebra::Operator::PathZero}
|
322
336
|
# * {SPARQL::Algebra::Operator::Plus}
|
337
|
+
# * {SPARQL::Algebra::Operator::Predicate}
|
323
338
|
# * {SPARQL::Algebra::Operator::Prefix}
|
324
339
|
# * {SPARQL::Algebra::Operator::Project}
|
325
340
|
# * {SPARQL::Algebra::Operator::Rand}
|
326
341
|
# * {SPARQL::Algebra::Operator::Reduced}
|
327
342
|
# * {SPARQL::Algebra::Operator::Regex}
|
328
343
|
# * {SPARQL::Algebra::Operator::Replace}
|
344
|
+
# * {SPARQL::Algebra::Operator::Reverse}
|
329
345
|
# * {SPARQL::Algebra::Operator::Round}
|
330
346
|
# * {SPARQL::Algebra::Operator::SameTerm}
|
331
347
|
# * {SPARQL::Algebra::Operator::Sample}
|
332
348
|
# * {SPARQL::Algebra::Operator::Seconds}
|
349
|
+
# * {SPARQL::Algebra::Operator::Seq}
|
350
|
+
# * {SPARQL::Algebra::Operator::Sequence}
|
333
351
|
# * {SPARQL::Algebra::Operator::SHA1}
|
334
352
|
# * {SPARQL::Algebra::Operator::SHA256}
|
335
353
|
# * {SPARQL::Algebra::Operator::SHA384}
|
@@ -349,6 +367,7 @@ module SPARQL
|
|
349
367
|
# * {SPARQL::Algebra::Operator::Sum}
|
350
368
|
# * {SPARQL::Algebra::Operator::Table}
|
351
369
|
# * {SPARQL::Algebra::Operator::Timezone}
|
370
|
+
# * {SPARQL::Algebra::Operator::Triple}
|
352
371
|
# * {SPARQL::Algebra::Operator::TZ}
|
353
372
|
# * {SPARQL::Algebra::Operator::Ucase}
|
354
373
|
# * {SPARQL::Algebra::Operator::Union}
|
@@ -436,7 +455,7 @@ module SPARQL
|
|
436
455
|
#
|
437
456
|
# @param [Symbol, #to_sym] name
|
438
457
|
# @return [Variable]
|
439
|
-
# @see
|
458
|
+
# @see https://ruby-rdf.github.io/rdf/RDF/Query/Variable
|
440
459
|
def Variable(name)
|
441
460
|
Variable.new(name)
|
442
461
|
end
|