sparql 3.1.0 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +183 -69
  3. data/UNLICENSE +1 -1
  4. data/VERSION +1 -1
  5. data/bin/sparql +20 -9
  6. data/lib/rack/sparql/conneg.rb +2 -2
  7. data/lib/sinatra/sparql.rb +3 -3
  8. data/lib/sparql.rb +8 -6
  9. data/lib/sparql/algebra.rb +7 -15
  10. data/lib/sparql/algebra/aggregate.rb +2 -2
  11. data/lib/sparql/algebra/expression.rb +22 -8
  12. data/lib/sparql/algebra/extensions.rb +135 -3
  13. data/lib/sparql/algebra/operator.rb +37 -9
  14. data/lib/sparql/algebra/operator/abs.rb +2 -2
  15. data/lib/sparql/algebra/operator/add.rb +2 -2
  16. data/lib/sparql/algebra/operator/alt.rb +2 -2
  17. data/lib/sparql/algebra/operator/and.rb +3 -3
  18. data/lib/sparql/algebra/operator/asc.rb +1 -1
  19. data/lib/sparql/algebra/operator/ask.rb +2 -12
  20. data/lib/sparql/algebra/operator/avg.rb +1 -1
  21. data/lib/sparql/algebra/operator/base.rb +8 -8
  22. data/lib/sparql/algebra/operator/bgp.rb +1 -1
  23. data/lib/sparql/algebra/operator/bnode.rb +2 -2
  24. data/lib/sparql/algebra/operator/bound.rb +1 -1
  25. data/lib/sparql/algebra/operator/ceil.rb +2 -2
  26. data/lib/sparql/algebra/operator/clear.rb +2 -2
  27. data/lib/sparql/algebra/operator/coalesce.rb +1 -11
  28. data/lib/sparql/algebra/operator/compare.rb +8 -8
  29. data/lib/sparql/algebra/operator/concat.rb +2 -2
  30. data/lib/sparql/algebra/operator/construct.rb +2 -12
  31. data/lib/sparql/algebra/operator/contains.rb +2 -2
  32. data/lib/sparql/algebra/operator/copy.rb +2 -2
  33. data/lib/sparql/algebra/operator/count.rb +1 -1
  34. data/lib/sparql/algebra/operator/create.rb +2 -2
  35. data/lib/sparql/algebra/operator/dataset.rb +2 -13
  36. data/lib/sparql/algebra/operator/datatype.rb +1 -1
  37. data/lib/sparql/algebra/operator/day.rb +1 -1
  38. data/lib/sparql/algebra/operator/delete.rb +4 -4
  39. data/lib/sparql/algebra/operator/delete_data.rb +2 -2
  40. data/lib/sparql/algebra/operator/delete_where.rb +2 -2
  41. data/lib/sparql/algebra/operator/desc.rb +1 -1
  42. data/lib/sparql/algebra/operator/describe.rb +2 -12
  43. data/lib/sparql/algebra/operator/distinct.rb +2 -12
  44. data/lib/sparql/algebra/operator/divide.rb +1 -1
  45. data/lib/sparql/algebra/operator/drop.rb +2 -2
  46. data/lib/sparql/algebra/operator/encode_for_uri.rb +2 -2
  47. data/lib/sparql/algebra/operator/equal.rb +2 -2
  48. data/lib/sparql/algebra/operator/exists.rb +1 -1
  49. data/lib/sparql/algebra/operator/exprlist.rb +1 -11
  50. data/lib/sparql/algebra/operator/extend.rb +14 -13
  51. data/lib/sparql/algebra/operator/filter.rb +3 -13
  52. data/lib/sparql/algebra/operator/floor.rb +2 -2
  53. data/lib/sparql/algebra/operator/graph.rb +3 -14
  54. data/lib/sparql/algebra/operator/greater_than.rb +5 -5
  55. data/lib/sparql/algebra/operator/greater_than_or_equal.rb +5 -5
  56. data/lib/sparql/algebra/operator/group.rb +14 -14
  57. data/lib/sparql/algebra/operator/group_concat.rb +1 -1
  58. data/lib/sparql/algebra/operator/hours.rb +1 -1
  59. data/lib/sparql/algebra/operator/if.rb +1 -11
  60. data/lib/sparql/algebra/operator/in.rb +1 -11
  61. data/lib/sparql/algebra/operator/insert.rb +3 -3
  62. data/lib/sparql/algebra/operator/insert_data.rb +2 -2
  63. data/lib/sparql/algebra/operator/iri.rb +1 -1
  64. data/lib/sparql/algebra/operator/is_blank.rb +1 -1
  65. data/lib/sparql/algebra/operator/is_iri.rb +1 -1
  66. data/lib/sparql/algebra/operator/is_literal.rb +1 -1
  67. data/lib/sparql/algebra/operator/is_numeric.rb +1 -1
  68. data/lib/sparql/algebra/operator/join.rb +9 -7
  69. data/lib/sparql/algebra/operator/lang.rb +1 -1
  70. data/lib/sparql/algebra/operator/lang_matches.rb +3 -3
  71. data/lib/sparql/algebra/operator/lcase.rb +2 -2
  72. data/lib/sparql/algebra/operator/left_join.rb +12 -9
  73. data/lib/sparql/algebra/operator/less_than.rb +5 -5
  74. data/lib/sparql/algebra/operator/less_than_or_equal.rb +5 -5
  75. data/lib/sparql/algebra/operator/load.rb +2 -2
  76. data/lib/sparql/algebra/operator/max.rb +1 -1
  77. data/lib/sparql/algebra/operator/md5.rb +1 -1
  78. data/lib/sparql/algebra/operator/min.rb +1 -1
  79. data/lib/sparql/algebra/operator/minus.rb +9 -8
  80. data/lib/sparql/algebra/operator/minutes.rb +1 -1
  81. data/lib/sparql/algebra/operator/modify.rb +1 -1
  82. data/lib/sparql/algebra/operator/month.rb +1 -1
  83. data/lib/sparql/algebra/operator/move.rb +2 -2
  84. data/lib/sparql/algebra/operator/multiply.rb +1 -1
  85. data/lib/sparql/algebra/operator/negate.rb +1 -1
  86. data/lib/sparql/algebra/operator/not.rb +1 -1
  87. data/lib/sparql/algebra/operator/not_equal.rb +2 -2
  88. data/lib/sparql/algebra/operator/notexists.rb +2 -2
  89. data/lib/sparql/algebra/operator/notin.rb +1 -11
  90. data/lib/sparql/algebra/operator/notoneof.rb +2 -2
  91. data/lib/sparql/algebra/operator/now.rb +1 -1
  92. data/lib/sparql/algebra/operator/or.rb +3 -3
  93. data/lib/sparql/algebra/operator/order.rb +2 -12
  94. data/lib/sparql/algebra/operator/path.rb +2 -2
  95. data/lib/sparql/algebra/operator/path_opt.rb +2 -2
  96. data/lib/sparql/algebra/operator/path_plus.rb +2 -2
  97. data/lib/sparql/algebra/operator/path_star.rb +2 -2
  98. data/lib/sparql/algebra/operator/plus.rb +2 -2
  99. data/lib/sparql/algebra/operator/prefix.rb +8 -8
  100. data/lib/sparql/algebra/operator/project.rb +2 -12
  101. data/lib/sparql/algebra/operator/rand.rb +1 -1
  102. data/lib/sparql/algebra/operator/reduced.rb +2 -12
  103. data/lib/sparql/algebra/operator/regex.rb +5 -5
  104. data/lib/sparql/algebra/operator/replace.rb +3 -3
  105. data/lib/sparql/algebra/operator/reverse.rb +2 -2
  106. data/lib/sparql/algebra/operator/round.rb +2 -2
  107. data/lib/sparql/algebra/operator/same_term.rb +8 -5
  108. data/lib/sparql/algebra/operator/sample.rb +1 -1
  109. data/lib/sparql/algebra/operator/seconds.rb +1 -1
  110. data/lib/sparql/algebra/operator/seq.rb +1 -1
  111. data/lib/sparql/algebra/operator/sequence.rb +1 -1
  112. data/lib/sparql/algebra/operator/sha1.rb +1 -1
  113. data/lib/sparql/algebra/operator/sha256.rb +1 -1
  114. data/lib/sparql/algebra/operator/sha384.rb +1 -1
  115. data/lib/sparql/algebra/operator/sha512.rb +1 -1
  116. data/lib/sparql/algebra/operator/slice.rb +2 -12
  117. data/lib/sparql/algebra/operator/str.rb +1 -1
  118. data/lib/sparql/algebra/operator/strafter.rb +2 -2
  119. data/lib/sparql/algebra/operator/strbefore.rb +2 -2
  120. data/lib/sparql/algebra/operator/strdt.rb +2 -2
  121. data/lib/sparql/algebra/operator/strends.rb +2 -2
  122. data/lib/sparql/algebra/operator/strlang.rb +2 -2
  123. data/lib/sparql/algebra/operator/strlen.rb +2 -2
  124. data/lib/sparql/algebra/operator/strstarts.rb +2 -2
  125. data/lib/sparql/algebra/operator/struuid.rb +1 -1
  126. data/lib/sparql/algebra/operator/substr.rb +3 -3
  127. data/lib/sparql/algebra/operator/subtract.rb +1 -1
  128. data/lib/sparql/algebra/operator/sum.rb +1 -1
  129. data/lib/sparql/algebra/operator/table.rb +2 -2
  130. data/lib/sparql/algebra/operator/timezone.rb +1 -1
  131. data/lib/sparql/algebra/operator/tz.rb +1 -1
  132. data/lib/sparql/algebra/operator/ucase.rb +2 -2
  133. data/lib/sparql/algebra/operator/union.rb +7 -6
  134. data/lib/sparql/algebra/operator/update.rb +2 -2
  135. data/lib/sparql/algebra/operator/using.rb +2 -2
  136. data/lib/sparql/algebra/operator/uuid.rb +1 -1
  137. data/lib/sparql/algebra/operator/with.rb +2 -2
  138. data/lib/sparql/algebra/operator/year.rb +1 -1
  139. data/lib/sparql/algebra/query.rb +1 -1
  140. data/lib/sparql/algebra/update.rb +1 -1
  141. data/lib/sparql/algebra/version.rb +1 -1
  142. data/lib/sparql/extensions.rb +1 -1
  143. data/lib/sparql/grammar.rb +104 -3
  144. data/lib/sparql/grammar/meta.rb +1372 -333
  145. data/lib/sparql/grammar/parser11.rb +27 -6
  146. data/lib/sparql/grammar/terminals11.rb +1 -0
  147. data/lib/sparql/results.rb +60 -41
  148. data/lib/sparql/version.rb +1 -1
  149. metadata +14 -8
@@ -6,7 +6,7 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (reverse :p)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#defn_evalPP_inverse
9
+ # @see https://www.w3.org/TR/sparql11-query/#defn_evalPP_inverse
10
10
  class Reverse < Operator::Unary
11
11
  include Query
12
12
 
@@ -29,7 +29,7 @@ module SPARQL; module Algebra
29
29
  # each matching solution
30
30
  # @yieldparam [RDF::Query::Solution] solution
31
31
  # @yieldreturn [void] ignored
32
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
32
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
33
33
  def execute(queryable, **options, &block)
34
34
  debug(options) {"Reverse #{operands.to_sse}"}
35
35
  subject, object = options[:subject], options[:object]
@@ -8,8 +8,8 @@ module SPARQL; module Algebra
8
8
  # @example
9
9
  # (round ?x)
10
10
  #
11
- # @see http://www.w3.org/TR/sparql11-query/#func-round
12
- # @see http://www.w3.org/TR/xpath-functions/#func-round
11
+ # @see https://www.w3.org/TR/sparql11-query/#func-round
12
+ # @see https://www.w3.org/TR/xpath-functions/#func-round
13
13
  class Round < Operator::Unary
14
14
  include Evaluatable
15
15
 
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (filter (sameTerm ?v)
11
11
  # (bgp (triple ?x :p ?v)))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#func-sameTerm
13
+ # @see https://www.w3.org/TR/sparql11-query/#func-sameTerm
14
14
  class SameTerm < Operator::Binary
15
15
  include Evaluatable
16
16
 
@@ -33,12 +33,15 @@ module SPARQL; module Algebra
33
33
  ##
34
34
  # Returns an optimized version of this expression.
35
35
  #
36
- # @return [SPARQL::Algebra::Expression]
37
- def optimize
38
- if operand(0).is_a?(Variable) && operand(0).eql?(operand(1))
36
+ # Return true if variable operand1 is a bound variable and equals operand2
37
+ #
38
+ # @return [SameTerm] a copy of `self`
39
+ # @see SPARQL::Algebra::Expression#optimize
40
+ def optimize(**options)
41
+ if operand(0).is_a?(Variable) && operand(0).bound? && operand(0).eql?(operand(1))
39
42
  RDF::Literal::TRUE
40
43
  else
41
- super # @see Operator#optimize
44
+ super # @see Operator#optimize!
42
45
  end
43
46
  end
44
47
  end # SameTerm
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # (group () ((??.0 (sample ?o)))
12
12
  # (bgp (triple ?s :dec ?o)))))))
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-query/#defn_aggSample
14
+ # @see https://www.w3.org/TR/sparql11-query/#defn_aggSample
15
15
  class Sample < Operator::Unary
16
16
  include Aggregate
17
17
 
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # (extend ((?x (seconds ?date)))
12
12
  # (bgp (triple ?s :date ?date)))))
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-query/#func-seconds
14
+ # @see https://www.w3.org/TR/sparql11-query/#func-seconds
15
15
  class Seconds < Operator::Unary
16
16
  include Evaluatable
17
17
 
@@ -28,7 +28,7 @@ module SPARQL; module Algebra
28
28
  # each matching solution
29
29
  # @yieldparam [RDF::Query::Solution] solution
30
30
  # @yieldreturn [void] ignored
31
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
31
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
32
32
  def execute(queryable, **options, &block)
33
33
  subject, object = options[:subject], options[:object]
34
34
  debug(options) {"Seq #{[subject, operands, object].to_sse}"}
@@ -34,7 +34,7 @@ module SPARQL; module Algebra
34
34
  # each matching solution
35
35
  # @yieldparam [RDF::Query::Solution] solution
36
36
  # @yieldreturn [void] ignored
37
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
37
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
38
38
  def execute(queryable, **options)
39
39
  debug(options) {"Sequence #{operands.to_sse}"}
40
40
 
@@ -13,7 +13,7 @@ module SPARQL; module Algebra
13
13
  # (extend ((?hash (sha1 ?l)))
14
14
  # (bgp (triple :s1 :str ?l)))))
15
15
  #
16
- # @see http://www.w3.org/TR/sparql11-query/#func-sha1
16
+ # @see https://www.w3.org/TR/sparql11-query/#func-sha1
17
17
  class SHA1 < Operator::Unary
18
18
  include Evaluatable
19
19
 
@@ -13,7 +13,7 @@ module SPARQL; module Algebra
13
13
  # (extend ((?hash (sha256 ?l)))
14
14
  # (bgp (triple :s1 :str ?l)))))
15
15
  #
16
- # @see http://www.w3.org/TR/sparql11-query/#func-sha256
16
+ # @see https://www.w3.org/TR/sparql11-query/#func-sha256
17
17
  class SHA256 < Operator::Unary
18
18
  include Evaluatable
19
19
 
@@ -13,7 +13,7 @@ module SPARQL; module Algebra
13
13
  # (extend ((?hash (sha384 ?l)))
14
14
  # (bgp (triple :s1 :str ?l)))))
15
15
  #
16
- # @see http://www.w3.org/TR/sparql11-query/#func-sha384
16
+ # @see https://www.w3.org/TR/sparql11-query/#func-sha384
17
17
  class SHA384 < Operator::Unary
18
18
  include Evaluatable
19
19
 
@@ -13,7 +13,7 @@ module SPARQL; module Algebra
13
13
  # (extend ((?hash (sha512 ?l)))
14
14
  # (bgp (triple :s1 :str ?l)))))
15
15
  #
16
- # @see http://www.w3.org/TR/sparql11-query/#func-sha512
16
+ # @see https://www.w3.org/TR/sparql11-query/#func-sha512
17
17
  class SHA512 < Operator::Unary
18
18
  include Evaluatable
19
19
 
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (order (?v)
11
11
  # (bgp (triple ??0 :num ?v))))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
13
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
14
14
  class Slice < Operator::Ternary
15
15
  include Query
16
16
 
@@ -42,7 +42,7 @@ module SPARQL; module Algebra
42
42
  # @yieldreturn [void] ignored
43
43
  # @return [RDF::Query::Solutions]
44
44
  # the resulting solution sequence
45
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
45
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
46
46
  def execute(queryable, **options, &block)
47
47
  offset = operands[0] == :_ ? 0 : operands[0].to_i
48
48
  limit = operands[1] == :_ ? -1 : operands[1].to_i
@@ -52,16 +52,6 @@ module SPARQL; module Algebra
52
52
  @solutions.each(&block) if block_given?
53
53
  @solutions
54
54
  end
55
-
56
- ##
57
- # Returns an optimized version of this query.
58
- #
59
- # Return optimized query
60
- #
61
- # @return [Union, RDF::Query] `self`
62
- def optimize
63
- operands = operands.map(&:optimize)
64
- end
65
55
  end # Slice
66
56
  end # Operator
67
57
  end; end # SPARQL::Algebra
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (filter (= (str ?v) "1")
11
11
  # (bgp (triple ?x :p ?v)))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#func-str
13
+ # @see https://www.w3.org/TR/sparql11-query/#func-str
14
14
  class Str < Operator::Unary
15
15
  include Evaluatable
16
16
 
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (strafter ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-strafter
10
- # @see http://www.w3.org/TR/xpath-functions/#func-substring-after
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-strafter
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-substring-after
11
11
  class StrAfter < Operator::Binary
12
12
  include Evaluatable
13
13
 
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (strbefore ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-strbefore
10
- # @see http://www.w3.org/TR/xpath-functions/#func-substring-before
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-strbefore
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-substring-before
11
11
  class StrBefore < Operator::Binary
12
12
  include Evaluatable
13
13
 
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # (filter (langMatches (lang ?str) "en")
10
10
  # (bgp (triple ?s :str ?str))))))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-query/#func-strdt
12
+ # @see https://www.w3.org/TR/sparql11-query/#func-strdt
13
13
  class StrDT < Operator::Binary
14
14
  include Evaluatable
15
15
 
@@ -23,7 +23,7 @@ module SPARQL; module Algebra
23
23
  # @param [RDF::URI] datatypeIRI
24
24
  # datatype
25
25
  # @return [RDF::Literal] a datatyped literal
26
- # @see http://www.w3.org/TR/sparql11-query/#func-strdt
26
+ # @see https://www.w3.org/TR/sparql11-query/#func-strdt
27
27
  def apply(value, datatypeIRI)
28
28
  raise TypeError, "Literal #{value.inspect} is not simple" unless value.simple?
29
29
  RDF::Literal.new(value.to_s, datatype: datatypeIRI)
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (strends ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-strends
10
- # @see http://www.w3.org/TR/xpath-functions/#func-ends-with
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-strends
10
+ # @see https://wwww.w3.org/TR/xpath-functions/#func-ends-with
11
11
  class StrEnds < Operator::Binary
12
12
  include Evaluatable
13
13
 
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (filter (langMatches (lang ?str) "en")
11
11
  # (bgp (triple ?s :str ?str))))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#func-strlang
13
+ # @see https://www.w3.org/TR/sparql11-query/#func-strlang
14
14
  class StrLang < Operator::Binary
15
15
  include Evaluatable
16
16
 
@@ -24,7 +24,7 @@ module SPARQL; module Algebra
24
24
  # @param [RDF::Literal] langTag
25
25
  # datatype
26
26
  # @return [RDF::Literal] a datatyped literal
27
- # @see http://www.w3.org/TR/sparql11-query/#func-strlang
27
+ # @see https://www.w3.org/TR/sparql11-query/#func-strlang
28
28
  def apply(value, langTag)
29
29
  raise TypeError, "Literal #{value.inspect} is not simple" unless value.simple?
30
30
  RDF::Literal.new(value.to_s, language: langTag.to_s)
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (strlen ?x)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-strlen
10
- # @see http://www.w3.org/TR/xpath-functions/#func-string-length
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-strlen
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-string-length
11
11
  class StrLen < Operator::Unary
12
12
  include Evaluatable
13
13
 
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (strstarts ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-strstarts
10
- # @see http://www.w3.org/TR/xpath-functions/#func-starts-with
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-strstarts
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-starts-with
11
11
  class StrStarts < Operator::Binary
12
12
  include Evaluatable
13
13
 
@@ -14,7 +14,7 @@ module SPARQL; module Algebra
14
14
  # (extend ((?uuid (struuid)))
15
15
  # (bgp))))))
16
16
  #
17
- # @see http://www.w3.org/TR/sparql11-query/#func-struuid
17
+ # @see https://www.w3.org/TR/sparql11-query/#func-struuid
18
18
  class StrUUID < Operator::Nullary
19
19
  include Evaluatable
20
20
 
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (substr ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-substr
10
- # @see http://www.w3.org/TR/xpath-functions/#func-substring
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-substr
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-substring
11
11
  class SubStr < Operator::Ternary
12
12
  include Evaluatable
13
13
 
@@ -71,7 +71,7 @@ module SPARQL; module Algebra
71
71
  # Remove the optional argument.
72
72
  #
73
73
  # @return [Array] `self`
74
- # @see http://openjena.org/wiki/SSE
74
+ # @see https://openjena.org/wiki/SSE
75
75
  def to_sxp_bin
76
76
  [NAME] + operands.reject {|o| o.to_s == ""}
77
77
  end
@@ -5,7 +5,7 @@ module SPARQL; module Algebra
5
5
  # (- ?x ?y)
6
6
  # (subtract ?x ?y)
7
7
  #
8
- # @see http://www.w3.org/TR/xpath-functions/#func-numeric-subtract
8
+ # @see https://www.w3.org/TR/xpath-functions/#func-numeric-subtract
9
9
  class Subtract < Operator::Binary
10
10
  include Evaluatable
11
11
 
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (group () ((??.0 (sum ?o)))
11
11
  # (bgp (triple ?s :dec ?o))))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#defn_aggSum
13
+ # @see https://www.w3.org/TR/sparql11-query/#defn_aggSum
14
14
  class Sum < Operator
15
15
  include Aggregate
16
16
 
@@ -13,7 +13,7 @@ module SPARQL; module Algebra
13
13
  #
14
14
  # @example empty table
15
15
  # (table unit)
16
- # @see http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#inline-data
16
+ # @see https://www.w3.org/TR/2013/REC-sparql11-query-20130321/#inline-data
17
17
  class Table < Operator
18
18
  include Query
19
19
 
@@ -32,7 +32,7 @@ module SPARQL; module Algebra
32
32
  # @yieldreturn [void] ignored
33
33
  # @return [RDF::Query::Solutions]
34
34
  # the resulting solution sequence
35
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
35
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
36
36
  def execute(queryable, **options, &block)
37
37
  @solutions = RDF::Query::Solutions()
38
38
  Array(operands[1..-1]).each do |row|
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # (extend ((?x (timezone ?date)))
12
12
  # (bgp (triple ?s :date ?date)))))
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-query/#func-timezone
14
+ # @see https://www.w3.org/TR/sparql11-query/#func-timezone
15
15
  class Timezone < Operator::Unary
16
16
  include Evaluatable
17
17
 
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # (extend ((?x (tz ?date)))
12
12
  # (bgp (triple ?s :date ?date)))))
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-query/#func-tz
14
+ # @see https://www.w3.org/TR/sparql11-query/#func-tz
15
15
  class TZ < Operator::Unary
16
16
  include Evaluatable
17
17
 
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (ucase ?x)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-ucase
10
- # @see http://www.w3.org/TR/xpath-functions/#func-ucase
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-ucase
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-ucase
11
11
  class UCase < Operator::Unary
12
12
  include Evaluatable
13
13
 
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (graph ?g
11
11
  # (bgp (triple ?s ?p ?o)))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
13
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
14
14
  class Union < Operator::Binary
15
15
  include Query
16
16
 
@@ -30,7 +30,7 @@ module SPARQL; module Algebra
30
30
  # @yieldreturn [void] ignored
31
31
  # @return [RDF::Query::Solutions]
32
32
  # the resulting solution sequence
33
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
33
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
34
34
  def execute(queryable, **options, &block)
35
35
  debug(options) {"Union"}
36
36
  @solutions = RDF::Query::Solutions(operands.inject([]) do |memo, op|
@@ -55,13 +55,14 @@ module SPARQL; module Algebra
55
55
  end
56
56
 
57
57
  ##
58
- # Returns an optimized version of this query.
58
+ # Optimizes this query.
59
59
  #
60
60
  # Optimize operands and remove any which are empty.
61
61
  #
62
- # @return [Union, RDF::Query] `self`
63
- def optimize
64
- ops = operands.map {|o| o.optimize }.select {|o| o.respond_to?(:empty?) && !o.empty?}
62
+ # @return [self]
63
+ # @see SPARQL::Algebra::Expression#optimize!
64
+ def optimize!(**options)
65
+ ops = operands.map {|o| o.optimize(**options) }.select {|o| o.respond_to?(:empty?) && !o.empty?}
65
66
  @operands = ops
66
67
  self
67
68
  end
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # (bgp (triple ?s ?p ?o))
10
10
  # (insert ((triple ?s ?p "q")))))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-update/#graphUpdate
12
+ # @see https://www.w3.org/TR/sparql11-update/#graphUpdate
13
13
  class Update < Operator
14
14
  include SPARQL::Algebra::Update
15
15
 
@@ -30,7 +30,7 @@ module SPARQL; module Algebra
30
30
  # If an attempt is made to perform an unsupported operation
31
31
  # @raise [IOError]
32
32
  # If `queryable` is immutable
33
- # @see http://www.w3.org/TR/sparql11-update/
33
+ # @see https://www.w3.org/TR/sparql11-update/
34
34
  def execute(queryable, **options)
35
35
  debug(options) {"Update"}
36
36
  raise IOError, "queryable is not mutable" unless queryable.mutable?
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # @example
10
10
  # (using (:g1) (bgp (triple ?s ?p ?o)))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-update/#add
12
+ # @see https://www.w3.org/TR/sparql11-update/#add
13
13
  class Using < Operator
14
14
  include SPARQL::Algebra::Query
15
15
 
@@ -30,7 +30,7 @@ module SPARQL; module Algebra
30
30
  # Returns queryable.
31
31
  # @raise [IOError]
32
32
  # If `from` does not exist, unless the `silent` operator is present
33
- # @see http://www.w3.org/TR/sparql11-update/
33
+ # @see https://www.w3.org/TR/sparql11-update/
34
34
  def execute(queryable, **options, &block)
35
35
  debug(options) {"Using"}
36
36
  Dataset.new(*operands).execute(queryable, depth: options[:depth].to_i + 1, **options, &block)