sparql 3.2.0 → 3.2.4
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 +59 -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 +63 -10
- data/lib/sparql/algebra/extensions.rb +39 -35
- data/lib/sparql/algebra/operator/abs.rb +1 -1
- data/lib/sparql/algebra/operator/adjust.rb +69 -0
- data/lib/sparql/algebra/operator/alt.rb +1 -1
- data/lib/sparql/algebra/operator/avg.rb +3 -1
- data/lib/sparql/algebra/operator/bgp.rb +9 -1
- data/lib/sparql/algebra/operator/clear.rb +13 -3
- data/lib/sparql/algebra/operator/construct.rb +1 -1
- data/lib/sparql/algebra/operator/count.rb +36 -6
- data/lib/sparql/algebra/operator/create.rb +5 -4
- data/lib/sparql/algebra/operator/dataset.rb +29 -11
- data/lib/sparql/algebra/operator/day.rb +2 -2
- data/lib/sparql/algebra/operator/delete.rb +3 -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/distinct.rb +2 -2
- data/lib/sparql/algebra/operator/divide.rb +1 -1
- data/lib/sparql/algebra/operator/drop.rb +15 -6
- data/lib/sparql/algebra/operator/encode_for_uri.rb +2 -4
- data/lib/sparql/algebra/operator/exprlist.rb +3 -1
- data/lib/sparql/algebra/operator/extend.rb +73 -5
- data/lib/sparql/algebra/operator/filter.rb +6 -1
- data/lib/sparql/algebra/operator/function_call.rb +64 -0
- data/lib/sparql/algebra/operator/graph.rb +57 -7
- data/lib/sparql/algebra/operator/group.rb +105 -6
- data/lib/sparql/algebra/operator/group_concat.rb +25 -1
- data/lib/sparql/algebra/operator/hours.rb +2 -2
- data/lib/sparql/algebra/operator/if.rb +10 -10
- data/lib/sparql/algebra/operator/insert.rb +3 -1
- data/lib/sparql/algebra/operator/insert_data.rb +1 -1
- data/lib/sparql/algebra/operator/is_blank.rb +1 -2
- data/lib/sparql/algebra/operator/is_iri.rb +1 -2
- data/lib/sparql/algebra/operator/is_literal.rb +1 -2
- data/lib/sparql/algebra/operator/is_numeric.rb +1 -2
- data/lib/sparql/algebra/operator/join.rb +39 -5
- data/lib/sparql/algebra/operator/lcase.rb +2 -3
- data/lib/sparql/algebra/operator/left_join.rb +27 -9
- data/lib/sparql/algebra/operator/max.rb +3 -1
- data/lib/sparql/algebra/operator/min.rb +4 -2
- data/lib/sparql/algebra/operator/minus.rb +46 -6
- 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/multiply.rb +1 -1
- data/lib/sparql/algebra/operator/notoneof.rb +12 -3
- data/lib/sparql/algebra/operator/order.rb +44 -0
- 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 +8 -6
- data/lib/sparql/algebra/operator/project.rb +64 -5
- data/lib/sparql/algebra/operator/reduced.rb +3 -3
- data/lib/sparql/algebra/operator/regex.rb +1 -1
- data/lib/sparql/algebra/operator/reverse.rb +12 -1
- data/lib/sparql/algebra/operator/sample.rb +3 -1
- data/lib/sparql/algebra/operator/seconds.rb +2 -2
- data/lib/sparql/algebra/operator/seq.rb +4 -4
- data/lib/sparql/algebra/operator/sequence.rb +14 -1
- data/lib/sparql/algebra/operator/service.rb +86 -0
- data/lib/sparql/algebra/operator/strlang.rb +1 -2
- data/lib/sparql/algebra/operator/subtract.rb +10 -6
- data/lib/sparql/algebra/operator/sum.rb +9 -7
- data/lib/sparql/algebra/operator/table.rb +50 -7
- 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/ucase.rb +1 -1
- data/lib/sparql/algebra/operator/update.rb +22 -1
- data/lib/sparql/algebra/operator/using.rb +18 -1
- data/lib/sparql/algebra/operator/with.rb +1 -1
- data/lib/sparql/algebra/operator/year.rb +2 -2
- data/lib/sparql/algebra/operator.rb +69 -22
- data/lib/sparql/algebra/query.rb +5 -3
- data/lib/sparql/algebra.rb +42 -6
- data/lib/sparql/grammar/meta.rb +1367 -267
- data/lib/sparql/grammar/parser11.rb +842 -331
- 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 +49 -13
@@ -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'
|
@@ -106,6 +110,7 @@ module SPARQL; module Algebra
|
|
106
110
|
autoload :Coalesce, 'sparql/algebra/operator/coalesce'
|
107
111
|
autoload :Desc, 'sparql/algebra/operator/desc'
|
108
112
|
autoload :Exprlist, 'sparql/algebra/operator/exprlist'
|
113
|
+
autoload :FunctionCall, 'sparql/algebra/operator/function_call'
|
109
114
|
autoload :GroupConcat, 'sparql/algebra/operator/group_concat'
|
110
115
|
autoload :In, 'sparql/algebra/operator/in'
|
111
116
|
autoload :NotIn, 'sparql/algebra/operator/notin'
|
@@ -129,6 +134,7 @@ module SPARQL; module Algebra
|
|
129
134
|
autoload :Prefix, 'sparql/algebra/operator/prefix'
|
130
135
|
autoload :Project, 'sparql/algebra/operator/project'
|
131
136
|
autoload :Reduced, 'sparql/algebra/operator/reduced'
|
137
|
+
autoload :Service, 'sparql/algebra/operator/service'
|
132
138
|
autoload :Slice, 'sparql/algebra/operator/slice'
|
133
139
|
autoload :Table, 'sparql/algebra/operator/table'
|
134
140
|
autoload :Union, 'sparql/algebra/operator/union'
|
@@ -172,6 +178,7 @@ module SPARQL; module Algebra
|
|
172
178
|
when :> then GreaterThan
|
173
179
|
when :>= then GreaterThanOrEqual
|
174
180
|
when :abs then Abs
|
181
|
+
when :adjust then Adjust
|
175
182
|
when :alt then Alt
|
176
183
|
when :and, :'&&' then And
|
177
184
|
when :avg then Avg
|
@@ -214,9 +221,11 @@ module SPARQL; module Algebra
|
|
214
221
|
when :now then Now
|
215
222
|
when :or, :'||' then Or
|
216
223
|
when :path then Path
|
224
|
+
when :path0 then PathZero
|
217
225
|
when :path? then PathOpt
|
218
|
-
when :"path*" then PathStar
|
219
226
|
when :"path+" then PathPlus
|
227
|
+
when :"path*" then PathStar
|
228
|
+
when :pathrange then PathRange
|
220
229
|
when :plus then Plus
|
221
230
|
when :rand then Rand
|
222
231
|
when :regex then Regex
|
@@ -228,6 +237,7 @@ module SPARQL; module Algebra
|
|
228
237
|
when :seconds then Seconds
|
229
238
|
when :seq then Seq
|
230
239
|
when :sequence then Sequence
|
240
|
+
when :service then Service
|
231
241
|
when :sha1 then SHA1
|
232
242
|
when :sha256 then SHA256
|
233
243
|
when :sha384 then SHA384
|
@@ -254,6 +264,7 @@ module SPARQL; module Algebra
|
|
254
264
|
when :asc then Asc
|
255
265
|
when :desc then Desc
|
256
266
|
when :exprlist then Exprlist
|
267
|
+
when :function_call then FunctionCall
|
257
268
|
|
258
269
|
# Datasets
|
259
270
|
when :dataset then Dataset
|
@@ -300,7 +311,9 @@ module SPARQL; module Algebra
|
|
300
311
|
|
301
312
|
# RDF-star
|
302
313
|
when :istriple then IsTriple
|
303
|
-
when :triple then
|
314
|
+
when :triple then Triple
|
315
|
+
when :qtriple then RDF::Query::Pattern
|
316
|
+
when :quad then RDF::Query::Pattern
|
304
317
|
when :subject then Subject
|
305
318
|
when :predicate then Predicate
|
306
319
|
when :object then Object
|
@@ -336,31 +349,41 @@ module SPARQL; module Algebra
|
|
336
349
|
# Generate a top-level Grammar, using collected options
|
337
350
|
#
|
338
351
|
# @param [String] content
|
339
|
-
# @param [
|
340
|
-
# Variable bindings
|
352
|
+
# @param [Operator] datasets ([])
|
341
353
|
# @param [Operator] distinct (false)
|
354
|
+
# @param [Hash{String => Operator}] extensions
|
355
|
+
# Variable bindings
|
342
356
|
# @param [Array<Operator>] filter_ops ([])
|
343
357
|
# Filter Operations
|
344
358
|
# @param [Integer] limit (nil)
|
345
359
|
# @param [Array<Operator>] group_ops ([])
|
360
|
+
# @param [Array<Operator>] having_ops ([])
|
346
361
|
# @param [Integer] offset (nil)
|
347
362
|
# @param [Array<Operator>] order_ops ([])
|
348
363
|
# Order Operations
|
349
364
|
# @param [Array<Symbol,Operator>] project (%i(*))
|
350
365
|
# Terms to project
|
351
366
|
# @param [Operator] reduced (false)
|
367
|
+
# @param [Operator] values_clause (nil)
|
368
|
+
# Top-level Values clause
|
369
|
+
# @param [Operator] where_clause (true)
|
370
|
+
# Emit 'WHERE' before GroupGraphPattern
|
352
371
|
# @param [Hash{Symbol => Object}] options
|
353
372
|
# @return [String]
|
354
373
|
def self.to_sparql(content,
|
374
|
+
datasets: [],
|
355
375
|
distinct: false,
|
356
376
|
extensions: {},
|
357
377
|
filter_ops: [],
|
358
378
|
group_ops: [],
|
379
|
+
having_ops: [],
|
359
380
|
limit: nil,
|
360
381
|
offset: nil,
|
361
382
|
order_ops: [],
|
362
383
|
project: %i(*),
|
363
384
|
reduced: false,
|
385
|
+
values_clause: nil,
|
386
|
+
where_clause: true,
|
364
387
|
**options)
|
365
388
|
str = ""
|
366
389
|
|
@@ -371,29 +394,41 @@ module SPARQL; module Algebra
|
|
371
394
|
str << "REDUCED " if reduced
|
372
395
|
|
373
396
|
str << project.map do |p|
|
374
|
-
if expr = extensions.delete(p)
|
397
|
+
if expr = extensions.delete(p.to_s)
|
398
|
+
v = expr.to_sparql(**options)
|
399
|
+
pp = RDF::Query::Variable.new(p).to_sparql(**options)
|
375
400
|
# Replace projected variables with their extension, if any
|
376
|
-
|
401
|
+
'(' + v + ' AS ' + pp + ')'
|
377
402
|
else
|
378
403
|
p.to_sparql(**options)
|
379
404
|
end
|
380
405
|
end.join(" ") + "\n"
|
381
406
|
end
|
382
407
|
|
383
|
-
#
|
408
|
+
# DatasetClause
|
409
|
+
datasets.each do |ds|
|
410
|
+
str << "FROM #{ds.to_sparql(**options)}\n"
|
411
|
+
end
|
412
|
+
|
413
|
+
# Bind
|
384
414
|
extensions.each do |as, expression|
|
385
|
-
|
415
|
+
v = expression.to_sparql(**options)
|
416
|
+
pp = RDF::Query::Variable.new(as).to_sparql(**options)
|
417
|
+
content << "\nBIND (" << v << " AS " << pp << ") ."
|
386
418
|
end
|
387
419
|
|
388
|
-
#
|
420
|
+
# Filter
|
389
421
|
filter_ops.each do |f|
|
390
|
-
content << "\nFILTER #{f.to_sparql(**options)} ."
|
422
|
+
content << "\nFILTER (#{f.to_sparql(**options)}) ."
|
391
423
|
end
|
392
424
|
|
393
|
-
#
|
394
|
-
str << "WHERE {\n#{content}\n}\n"
|
425
|
+
# WhereClause / GroupGraphPattern
|
426
|
+
str << (where_clause ? "WHERE {\n#{content}\n}\n" : "{\n#{content}\n}\n")
|
395
427
|
|
396
|
-
|
428
|
+
##
|
429
|
+
# SolutionModifier
|
430
|
+
#
|
431
|
+
# GroupClause
|
397
432
|
unless group_ops.empty?
|
398
433
|
ops = group_ops.map do |o|
|
399
434
|
# Replace projected variables with their extension, if any
|
@@ -404,14 +439,22 @@ module SPARQL; module Algebra
|
|
404
439
|
str << "GROUP BY #{ops.join(' ')}\n"
|
405
440
|
end
|
406
441
|
|
407
|
-
#
|
442
|
+
# HavingClause
|
443
|
+
unless having_ops.empty?
|
444
|
+
str << "HAVING #{having_ops.to_sparql(**options)}"
|
445
|
+
end
|
446
|
+
|
447
|
+
# OrderClause
|
408
448
|
unless order_ops.empty?
|
409
449
|
str << "ORDER BY #{order_ops.to_sparql(**options)}\n"
|
410
450
|
end
|
411
451
|
|
412
|
-
#
|
452
|
+
# LimitOffsetClauses
|
413
453
|
str << "OFFSET #{offset}\n" unless offset.nil?
|
414
454
|
str << "LIMIT #{limit}\n" unless limit.nil?
|
455
|
+
|
456
|
+
# Values Clause
|
457
|
+
str << values_clause.to_sparql(top_level: false, **options) if values_clause
|
415
458
|
str
|
416
459
|
end
|
417
460
|
|
@@ -640,12 +683,8 @@ module SPARQL; module Algebra
|
|
640
683
|
# @return [SPARQL::Algebra::Expression] `self`
|
641
684
|
def rewrite(&block)
|
642
685
|
@operands = @operands.map do |op|
|
643
|
-
|
644
|
-
|
645
|
-
# Not re-written, rewrite
|
646
|
-
new_op = op.respond_to?(:rewrite) ? op.rewrite(&block) : op
|
647
|
-
end
|
648
|
-
new_op
|
686
|
+
new_op = block.call(op)
|
687
|
+
new_op.respond_to?(:rewrite) ? new_op.rewrite(&block) : new_op
|
649
688
|
end
|
650
689
|
self
|
651
690
|
end
|
@@ -671,7 +710,6 @@ module SPARQL; module Algebra
|
|
671
710
|
end
|
672
711
|
|
673
712
|
##
|
674
|
-
#
|
675
713
|
# Returns a partial SPARQL grammar for the operator.
|
676
714
|
#
|
677
715
|
# @return [String]
|
@@ -765,6 +803,15 @@ module SPARQL; module Algebra
|
|
765
803
|
operands.each {|op| op.validate! if op.respond_to?(:validate!)}
|
766
804
|
self
|
767
805
|
end
|
806
|
+
|
807
|
+
##
|
808
|
+
# The variables used in this query.
|
809
|
+
#
|
810
|
+
# @return [Hash{Symbol => RDF::Query::Variable}]
|
811
|
+
def variables
|
812
|
+
operands.inject({}) {|hash, o| o.respond_to?(:variables) ? hash.merge(o.variables) : hash}
|
813
|
+
end
|
814
|
+
|
768
815
|
protected
|
769
816
|
|
770
817
|
##
|
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
@@ -19,6 +19,24 @@ module SPARQL
|
|
19
19
|
#
|
20
20
|
# {RDF::Query} and {RDF::Query::Pattern} are used as primitives for `bgp` and `triple` expressions.
|
21
21
|
#
|
22
|
+
# # Background
|
23
|
+
#
|
24
|
+
# The SPARQL Algebra, and the S-Expressions used to represent it, are based on those of [Jena](https://jena.apache.org/documentation/notes/sse.html). Generally, an S-Expression generated by this Gem can be used as an SSE input to Jena, or an SSE output from Jena can also be used as input to this Gem.
|
25
|
+
#
|
26
|
+
# S-Expressions generally follow a standardized nesting resulting from parsing the original SPARQL Grammar. The individual operators map to SPARQL Grammar productions, and in most cases, the SPARQL Grammar can be reproduced by turning the S-Expression back into SPARQL (see {SPARQL::Algebra::Operator#to_sparql}). The order of operations will typically be as follows:
|
27
|
+
#
|
28
|
+
# * {SPARQL::Algebra::Operator::Base}
|
29
|
+
# * {SPARQL::Algebra::Operator::Prefix}
|
30
|
+
# * {SPARQL::Algebra::Operator::Slice}
|
31
|
+
# * {SPARQL::Algebra::Operator::Distinct}
|
32
|
+
# * {SPARQL::Algebra::Operator::Reduced}
|
33
|
+
# * {SPARQL::Algebra::Operator::Project}
|
34
|
+
# * {SPARQL::Algebra::Operator::Order}
|
35
|
+
# * {SPARQL::Algebra::Operator::Filter}
|
36
|
+
# * {SPARQL::Algebra::Operator::Extend}
|
37
|
+
# * {SPARQL::Algebra::Operator::Group}
|
38
|
+
# * {SPARQL::Algebra::Query} (many classes implement Query)
|
39
|
+
#
|
22
40
|
# # Queries
|
23
41
|
#
|
24
42
|
# require 'sparql/algebra'
|
@@ -215,7 +233,7 @@ module SPARQL
|
|
215
233
|
# scarcity.
|
216
234
|
#
|
217
235
|
# [memoization]: http://en.wikipedia.org/wiki/Memoization
|
218
|
-
# [RDF::Util::Cache]:
|
236
|
+
# [RDF::Util::Cache]: https://ruby-rdf.github.io/rdf/RDF/Util/Cache
|
219
237
|
#
|
220
238
|
# ## Documentation
|
221
239
|
#
|
@@ -228,12 +246,15 @@ module SPARQL
|
|
228
246
|
# * {SPARQL::Algebra::Operator}
|
229
247
|
# * {SPARQL::Algebra::Operator::Abs}
|
230
248
|
# * {SPARQL::Algebra::Operator::Add}
|
249
|
+
# * {SPARQL::Algebra::Operator::Adjust}
|
250
|
+
# * {SPARQL::Algebra::Operator::Alt}
|
231
251
|
# * {SPARQL::Algebra::Operator::And}
|
232
252
|
# * {SPARQL::Algebra::Operator::Asc}
|
233
253
|
# * {SPARQL::Algebra::Operator::Ask}
|
234
254
|
# * {SPARQL::Algebra::Operator::Avg}
|
235
255
|
# * {SPARQL::Algebra::Operator::Base}
|
236
256
|
# * {SPARQL::Algebra::Operator::BGP}
|
257
|
+
# * {SPARQL::Algebra::Operator::Bnode}
|
237
258
|
# * {SPARQL::Algebra::Operator::Bound}
|
238
259
|
# * {SPARQL::Algebra::Operator::Ceil}
|
239
260
|
# * {SPARQL::Algebra::Operator::Clear}
|
@@ -248,9 +269,9 @@ module SPARQL
|
|
248
269
|
# * {SPARQL::Algebra::Operator::Dataset}
|
249
270
|
# * {SPARQL::Algebra::Operator::Datatype}
|
250
271
|
# * {SPARQL::Algebra::Operator::Day}
|
251
|
-
# * {SPARQL::Algebra::Operator::Delete}
|
252
272
|
# * {SPARQL::Algebra::Operator::DeleteData}
|
253
273
|
# * {SPARQL::Algebra::Operator::DeleteWhere}
|
274
|
+
# * {SPARQL::Algebra::Operator::Delete}
|
254
275
|
# * {SPARQL::Algebra::Operator::Desc}
|
255
276
|
# * {SPARQL::Algebra::Operator::Describe}
|
256
277
|
# * {SPARQL::Algebra::Operator::Distinct}
|
@@ -258,10 +279,12 @@ module SPARQL
|
|
258
279
|
# * {SPARQL::Algebra::Operator::Drop}
|
259
280
|
# * {SPARQL::Algebra::Operator::EncodeForURI}
|
260
281
|
# * {SPARQL::Algebra::Operator::Equal}
|
282
|
+
# * {SPARQL::Algebra::Operator::Exists}
|
261
283
|
# * {SPARQL::Algebra::Operator::Exprlist}
|
262
284
|
# * {SPARQL::Algebra::Operator::Extend}
|
263
285
|
# * {SPARQL::Algebra::Operator::Filter}
|
264
286
|
# * {SPARQL::Algebra::Operator::Floor}
|
287
|
+
# * {SPARQL::Algebra::Operator::FunctionCall}
|
265
288
|
# * {SPARQL::Algebra::Operator::Graph}
|
266
289
|
# * {SPARQL::Algebra::Operator::GreaterThan}
|
267
290
|
# * {SPARQL::Algebra::Operator::GreaterThanOrEqual}
|
@@ -277,9 +300,11 @@ module SPARQL
|
|
277
300
|
# * {SPARQL::Algebra::Operator::IsIRI}
|
278
301
|
# * {SPARQL::Algebra::Operator::IsLiteral}
|
279
302
|
# * {SPARQL::Algebra::Operator::IsNumeric}
|
303
|
+
# * {SPARQL::Algebra::Operator::IsTriple}
|
280
304
|
# * {SPARQL::Algebra::Operator::Join}
|
281
305
|
# * {SPARQL::Algebra::Operator::Lang}
|
282
306
|
# * {SPARQL::Algebra::Operator::LangMatches}
|
307
|
+
# * {SPARQL::Algebra::Operator::LCase}
|
283
308
|
# * {SPARQL::Algebra::Operator::LeftJoin}
|
284
309
|
# * {SPARQL::Algebra::Operator::LessThan}
|
285
310
|
# * {SPARQL::Algebra::Operator::LessThanOrEqual}
|
@@ -297,20 +322,32 @@ module SPARQL
|
|
297
322
|
# * {SPARQL::Algebra::Operator::NotEqual}
|
298
323
|
# * {SPARQL::Algebra::Operator::NotExists}
|
299
324
|
# * {SPARQL::Algebra::Operator::NotIn}
|
325
|
+
# * {SPARQL::Algebra::Operator::NotOneOf}
|
300
326
|
# * {SPARQL::Algebra::Operator::Now}
|
327
|
+
# * {SPARQL::Algebra::Operator::Object}
|
301
328
|
# * {SPARQL::Algebra::Operator::Or}
|
302
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}
|
303
336
|
# * {SPARQL::Algebra::Operator::Plus}
|
337
|
+
# * {SPARQL::Algebra::Operator::Predicate}
|
304
338
|
# * {SPARQL::Algebra::Operator::Prefix}
|
305
339
|
# * {SPARQL::Algebra::Operator::Project}
|
306
340
|
# * {SPARQL::Algebra::Operator::Rand}
|
307
341
|
# * {SPARQL::Algebra::Operator::Reduced}
|
308
342
|
# * {SPARQL::Algebra::Operator::Regex}
|
309
343
|
# * {SPARQL::Algebra::Operator::Replace}
|
344
|
+
# * {SPARQL::Algebra::Operator::Reverse}
|
310
345
|
# * {SPARQL::Algebra::Operator::Round}
|
311
346
|
# * {SPARQL::Algebra::Operator::SameTerm}
|
312
347
|
# * {SPARQL::Algebra::Operator::Sample}
|
313
348
|
# * {SPARQL::Algebra::Operator::Seconds}
|
349
|
+
# * {SPARQL::Algebra::Operator::Seq}
|
350
|
+
# * {SPARQL::Algebra::Operator::Sequence}
|
314
351
|
# * {SPARQL::Algebra::Operator::SHA1}
|
315
352
|
# * {SPARQL::Algebra::Operator::SHA256}
|
316
353
|
# * {SPARQL::Algebra::Operator::SHA384}
|
@@ -330,6 +367,7 @@ module SPARQL
|
|
330
367
|
# * {SPARQL::Algebra::Operator::Sum}
|
331
368
|
# * {SPARQL::Algebra::Operator::Table}
|
332
369
|
# * {SPARQL::Algebra::Operator::Timezone}
|
370
|
+
# * {SPARQL::Algebra::Operator::Triple}
|
333
371
|
# * {SPARQL::Algebra::Operator::TZ}
|
334
372
|
# * {SPARQL::Algebra::Operator::Ucase}
|
335
373
|
# * {SPARQL::Algebra::Operator::Union}
|
@@ -339,11 +377,9 @@ module SPARQL
|
|
339
377
|
# * {SPARQL::Algebra::Operator::With}
|
340
378
|
# * {SPARQL::Algebra::Operator::Year}
|
341
379
|
#
|
342
|
-
# TODO
|
343
|
-
# ====
|
344
|
-
# * Operator#optimize needs to be completed and tested.
|
345
380
|
#
|
346
381
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
382
|
+
# @see https://jena.apache.org/documentation/notes/sse.html
|
347
383
|
module Algebra
|
348
384
|
include RDF
|
349
385
|
|
@@ -419,7 +455,7 @@ module SPARQL
|
|
419
455
|
#
|
420
456
|
# @param [Symbol, #to_sym] name
|
421
457
|
# @return [Variable]
|
422
|
-
# @see
|
458
|
+
# @see https://ruby-rdf.github.io/rdf/RDF/Query/Variable
|
423
459
|
def Variable(name)
|
424
460
|
Variable.new(name)
|
425
461
|
end
|