sparql 3.2.1 → 3.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|