sparql 3.1.0 → 3.1.6

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.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +188 -73
  3. data/UNLICENSE +1 -1
  4. data/VERSION +1 -1
  5. data/bin/sparql +37 -17
  6. data/lib/rack/sparql/conneg.rb +2 -2
  7. data/lib/sinatra/sparql.rb +4 -4
  8. data/lib/sparql.rb +13 -12
  9. data/lib/sparql/algebra.rb +11 -19
  10. data/lib/sparql/algebra/aggregate.rb +2 -2
  11. data/lib/sparql/algebra/expression.rb +67 -38
  12. data/lib/sparql/algebra/extensions.rb +182 -23
  13. data/lib/sparql/algebra/operator.rb +55 -22
  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 +8 -1
  21. data/lib/sparql/algebra/operator/base.rb +8 -8
  22. data/lib/sparql/algebra/operator/bgp.rb +2 -2
  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 +15 -8
  29. data/lib/sparql/algebra/operator/concat.rb +2 -2
  30. data/lib/sparql/algebra/operator/construct.rb +4 -13
  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 +3 -14
  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 +6 -6
  39. data/lib/sparql/algebra/operator/delete_data.rb +2 -2
  40. data/lib/sparql/algebra/operator/delete_where.rb +3 -3
  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 +3 -12
  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 +4 -15
  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 +4 -4
  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/is_triple.rb +30 -0
  69. data/lib/sparql/algebra/operator/join.rb +9 -7
  70. data/lib/sparql/algebra/operator/lang.rb +1 -1
  71. data/lib/sparql/algebra/operator/lang_matches.rb +3 -3
  72. data/lib/sparql/algebra/operator/lcase.rb +2 -2
  73. data/lib/sparql/algebra/operator/left_join.rb +16 -9
  74. data/lib/sparql/algebra/operator/less_than.rb +5 -5
  75. data/lib/sparql/algebra/operator/less_than_or_equal.rb +5 -5
  76. data/lib/sparql/algebra/operator/load.rb +2 -2
  77. data/lib/sparql/algebra/operator/max.rb +8 -1
  78. data/lib/sparql/algebra/operator/md5.rb +1 -1
  79. data/lib/sparql/algebra/operator/min.rb +8 -1
  80. data/lib/sparql/algebra/operator/minus.rb +9 -8
  81. data/lib/sparql/algebra/operator/minutes.rb +1 -1
  82. data/lib/sparql/algebra/operator/modify.rb +1 -1
  83. data/lib/sparql/algebra/operator/month.rb +1 -1
  84. data/lib/sparql/algebra/operator/move.rb +2 -2
  85. data/lib/sparql/algebra/operator/multiply.rb +1 -1
  86. data/lib/sparql/algebra/operator/negate.rb +1 -1
  87. data/lib/sparql/algebra/operator/not.rb +1 -1
  88. data/lib/sparql/algebra/operator/not_equal.rb +2 -2
  89. data/lib/sparql/algebra/operator/notexists.rb +2 -2
  90. data/lib/sparql/algebra/operator/notin.rb +1 -11
  91. data/lib/sparql/algebra/operator/notoneof.rb +2 -2
  92. data/lib/sparql/algebra/operator/now.rb +1 -1
  93. data/lib/sparql/algebra/operator/object.rb +27 -0
  94. data/lib/sparql/algebra/operator/or.rb +3 -3
  95. data/lib/sparql/algebra/operator/order.rb +2 -12
  96. data/lib/sparql/algebra/operator/path.rb +2 -2
  97. data/lib/sparql/algebra/operator/path_opt.rb +2 -2
  98. data/lib/sparql/algebra/operator/path_plus.rb +2 -2
  99. data/lib/sparql/algebra/operator/path_star.rb +2 -2
  100. data/lib/sparql/algebra/operator/plus.rb +2 -2
  101. data/lib/sparql/algebra/operator/predicate.rb +27 -0
  102. data/lib/sparql/algebra/operator/prefix.rb +8 -8
  103. data/lib/sparql/algebra/operator/project.rb +2 -12
  104. data/lib/sparql/algebra/operator/rand.rb +1 -1
  105. data/lib/sparql/algebra/operator/reduced.rb +2 -12
  106. data/lib/sparql/algebra/operator/regex.rb +5 -5
  107. data/lib/sparql/algebra/operator/replace.rb +3 -3
  108. data/lib/sparql/algebra/operator/reverse.rb +2 -2
  109. data/lib/sparql/algebra/operator/round.rb +2 -2
  110. data/lib/sparql/algebra/operator/same_term.rb +8 -5
  111. data/lib/sparql/algebra/operator/sample.rb +9 -2
  112. data/lib/sparql/algebra/operator/seconds.rb +1 -1
  113. data/lib/sparql/algebra/operator/seq.rb +1 -1
  114. data/lib/sparql/algebra/operator/sequence.rb +1 -1
  115. data/lib/sparql/algebra/operator/sha1.rb +1 -1
  116. data/lib/sparql/algebra/operator/sha256.rb +1 -1
  117. data/lib/sparql/algebra/operator/sha384.rb +1 -1
  118. data/lib/sparql/algebra/operator/sha512.rb +1 -1
  119. data/lib/sparql/algebra/operator/slice.rb +2 -12
  120. data/lib/sparql/algebra/operator/str.rb +1 -1
  121. data/lib/sparql/algebra/operator/strafter.rb +2 -2
  122. data/lib/sparql/algebra/operator/strbefore.rb +2 -2
  123. data/lib/sparql/algebra/operator/strdt.rb +2 -2
  124. data/lib/sparql/algebra/operator/strends.rb +2 -2
  125. data/lib/sparql/algebra/operator/strlang.rb +2 -2
  126. data/lib/sparql/algebra/operator/strlen.rb +2 -2
  127. data/lib/sparql/algebra/operator/strstarts.rb +2 -2
  128. data/lib/sparql/algebra/operator/struuid.rb +1 -1
  129. data/lib/sparql/algebra/operator/subject.rb +29 -0
  130. data/lib/sparql/algebra/operator/substr.rb +3 -3
  131. data/lib/sparql/algebra/operator/subtract.rb +1 -1
  132. data/lib/sparql/algebra/operator/sum.rb +1 -1
  133. data/lib/sparql/algebra/operator/table.rb +2 -2
  134. data/lib/sparql/algebra/operator/timezone.rb +1 -1
  135. data/lib/sparql/algebra/operator/triple.rb +27 -0
  136. data/lib/sparql/algebra/operator/tz.rb +1 -1
  137. data/lib/sparql/algebra/operator/ucase.rb +2 -2
  138. data/lib/sparql/algebra/operator/union.rb +7 -6
  139. data/lib/sparql/algebra/operator/update.rb +2 -2
  140. data/lib/sparql/algebra/operator/using.rb +2 -2
  141. data/lib/sparql/algebra/operator/uuid.rb +1 -1
  142. data/lib/sparql/algebra/operator/with.rb +3 -3
  143. data/lib/sparql/algebra/operator/year.rb +1 -1
  144. data/lib/sparql/algebra/query.rb +1 -1
  145. data/lib/sparql/algebra/update.rb +1 -1
  146. data/lib/sparql/algebra/version.rb +1 -1
  147. data/lib/sparql/extensions.rb +7 -13
  148. data/lib/sparql/grammar.rb +81 -6
  149. data/lib/sparql/grammar/meta.rb +5801 -1584
  150. data/lib/sparql/grammar/parser11.rb +116 -50
  151. data/lib/sparql/grammar/terminals11.rb +4 -0
  152. data/lib/sparql/results.rb +70 -43
  153. data/lib/sparql/version.rb +1 -1
  154. metadata +34 -39
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (<=> ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#OperatorMapping
10
- # @see http://www.w3.org/TR/xpath-functions/#func-compare
9
+ # @see https://www.w3.org/TR/sparql11-query/#OperatorMapping
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-compare
11
11
  class Compare < Operator::Binary
12
12
  include Evaluatable
13
13
 
@@ -33,14 +33,14 @@ module SPARQL; module Algebra
33
33
  # @raise [TypeError] if either operand is not a literal
34
34
  def apply(left, right)
35
35
  case
36
- # @see http://www.w3.org/TR/sparql11-query/#OperatorMapping
37
- # @see http://www.w3.org/TR/sparql11-query/#modOrderBy
36
+ # @see https://www.w3.org/TR/sparql11-query/#OperatorMapping
37
+ # @see https://www.w3.org/TR/sparql11-query/#modOrderBy
38
38
  when left.is_a?(RDF::Literal) && right.is_a?(RDF::Literal)
39
39
  case
40
- # @see http://www.w3.org/TR/xpath-functions/#string-compare
41
- # @see http://www.w3.org/TR/xpath-functions/#comp.numeric
42
- # @see http://www.w3.org/TR/xpath-functions/#op.boolean
43
- # @see http://www.w3.org/TR/xpath-functions/#comp.duration.datetime
40
+ # @see https://www.w3.org/TR/xpath-functions/#string-compare
41
+ # @see https://www.w3.org/TR/xpath-functions/#comp.numeric
42
+ # @see https://www.w3.org/TR/xpath-functions/#op.boolean
43
+ # @see https://www.w3.org/TR/xpath-functions/#comp.duration.datetime
44
44
  when (left.simple? && right.simple?) ||
45
45
  (left.is_a?(RDF::Literal::Numeric) && right.is_a?(RDF::Literal::Numeric)) ||
46
46
  (left.datatype == right.datatype && left.language == right.language)
@@ -62,6 +62,8 @@ module SPARQL; module Algebra
62
62
  when left.is_a?(RDF::Node) && right.is_a?(RDF::Node)
63
63
  # BNode comparison is undefined.
64
64
  RDF::Literal(0)
65
+ when left.is_a?(RDF::Statement) && right.is_a?(RDF::Statement)
66
+ RDF::Literal(RDF::Literal(left.to_s).send(self.class.const_get(:NAME), RDF::Literal(right.to_s)))
65
67
  when left.nil? && right.nil?
66
68
  RDF::Literal(0)
67
69
 
@@ -77,6 +79,11 @@ module SPARQL; module Algebra
77
79
  when right.is_a?(RDF::Node) && left.is_a?(RDF::Term)
78
80
  RDF::Literal(1)
79
81
 
82
+ when left.is_a?(RDF::Statement) && right.is_a?(RDF::Term)
83
+ RDF::Literal(-1)
84
+ when right.is_a?(RDF::Statement) && left.is_a?(RDF::Term)
85
+ RDF::Literal(1)
86
+
80
87
  when left.is_a?(RDF::Node) && right.is_a?(RDF::URI)
81
88
  RDF::Literal(-1)
82
89
  when right.is_a?(RDF::Node) && left.is_a?(RDF::URI)
@@ -8,8 +8,8 @@ module SPARQL; module Algebra
8
8
  # @example
9
9
  # (concat ?a ?b ...)
10
10
  #
11
- # @see http://www.w3.org/TR/sparql11-query/#func-concat
12
- # @see http://www.w3.org/TR/xpath-functions/#func-concat
11
+ # @see https://www.w3.org/TR/sparql11-query/#func-concat
12
+ # @see https://www.w3.org/TR/xpath-functions/#func-concat
13
13
  class Concat < Operator
14
14
  include Evaluatable
15
15
 
@@ -12,7 +12,7 @@ module SPARQL; module Algebra
12
12
  # (project (?s ?p ?o)
13
13
  # (bgp (triple ?s ?p ?o)))))
14
14
  #
15
- # @see http://www.w3.org/TR/sparql11-query/#construct
15
+ # @see https://www.w3.org/TR/sparql11-query/#construct
16
16
  class Construct < Operator::Binary
17
17
  include Query
18
18
 
@@ -34,7 +34,7 @@ module SPARQL; module Algebra
34
34
  # @yieldreturn [void] ignored
35
35
  # @return [RDF::Queryable]
36
36
  # A Queryable with constructed triples
37
- # @see http://www.w3.org/TR/sparql11-query/#construct
37
+ # @see https://www.w3.org/TR/sparql11-query/#construct
38
38
  def execute(queryable, **options, &block)
39
39
  debug(options) {"Construct #{operands.first}, #{options.inspect}"}
40
40
  graph = RDF::Graph.new
@@ -52,10 +52,11 @@ module SPARQL; module Algebra
52
52
  terms[r] = case o = pattern.send(r)
53
53
  when RDF::Node then nodes[o] ||= RDF::Node.new
54
54
  when RDF::Query::Variable then solution[o]
55
+ when RDF::Query::Pattern then RDF::Statement.from(o.dup.bind(solution))
55
56
  else o
56
57
  end
57
58
  end
58
-
59
+
59
60
  statement = RDF::Statement.from(terms)
60
61
 
61
62
  # Sanity checking on statement
@@ -74,16 +75,6 @@ module SPARQL; module Algebra
74
75
  graph.each(&block) if block_given?
75
76
  graph
76
77
  end
77
-
78
- ##
79
- # Returns an optimized version of this query.
80
- #
81
- # Return optimized query
82
- #
83
- # @return [Union, RDF::Query] `self`
84
- def optimize
85
- operands = operands.map(&:optimize)
86
- end
87
78
 
88
79
  # Query results statements (e.g., CONSTRUCT, DESCRIBE, CREATE)
89
80
  # @return [Boolean]
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (contains ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#func-contains
10
- # @see http://www.w3.org/TR/xpath-functions/#func-contains
9
+ # @see https://www.w3.org/TR/sparql11-query/#func-contains
10
+ # @see https://www.w3.org/TR/xpath-functions/#func-contains
11
11
  class Contains < Operator::Binary
12
12
  include Evaluatable
13
13
 
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # @example
10
10
  # (copy silent <iri> to default)
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-update/#copy
12
+ # @see https://www.w3.org/TR/sparql11-update/#copy
13
13
  class Copy < Operator
14
14
  include SPARQL::Algebra::Update
15
15
 
@@ -28,7 +28,7 @@ module SPARQL; module Algebra
28
28
  # Returns queryable.
29
29
  # @raise [IOError]
30
30
  # If `from` does not exist, unless the `silent` operator is present
31
- # @see http://www.w3.org/TR/sparql11-update/
31
+ # @see https://www.w3.org/TR/sparql11-update/
32
32
  def execute(queryable, **options)
33
33
  debug(options) {"Copy"}
34
34
  silent = operands.first == :silent
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (group () ((??.0 (count ?O)))
11
11
  # (bgp (triple ?S ?P ?O))))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#defn_aggCount
13
+ # @see https://www.w3.org/TR/sparql11-query/#defn_aggCount
14
14
  class Count < Operator
15
15
  include Aggregate
16
16
 
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # @example
12
12
  # (create silent <graph>)
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-update/#create
14
+ # @see https://www.w3.org/TR/sparql11-update/#create
15
15
  class Create < Operator
16
16
  include SPARQL::Algebra::Update
17
17
 
@@ -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)
35
35
  debug(options) {"Create"}
36
36
  silent = operands.first == :silent
@@ -102,7 +102,7 @@ module SPARQL; module Algebra
102
102
  # (graph ?g (bgp (triple ?s ?p ?o))))))
103
103
  #
104
104
  # @example Dataset with multiple named graphs
105
- # @see http://www.w3.org/TR/sparql11-query/#specifyingDataset
105
+ # @see https://www.w3.org/TR/sparql11-query/#specifyingDataset
106
106
  class Dataset < Binary
107
107
  include Query
108
108
 
@@ -125,7 +125,7 @@ module SPARQL; module Algebra
125
125
  # @yieldreturn [void] ignored
126
126
  # @return [RDF::Query::Solutions]
127
127
  # the resulting solution sequence
128
- # @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
128
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
129
129
  def execute(queryable, **options, &base)
130
130
  debug(options) {"Dataset"}
131
131
  default_datasets = []
@@ -141,7 +141,7 @@ module SPARQL; module Algebra
141
141
  debug(options) {"=> default data source #{uri}"}
142
142
  default_datasets << uri
143
143
  end
144
- load_opts = {debug: options.fetch(:debug, nil), graph_name: uri, base_uri: uri}
144
+ load_opts = {logger: options.fetch(:logger, false), graph_name: uri, base_uri: uri}
145
145
  unless queryable.has_graph?(uri)
146
146
  debug(options) {"=> load #{uri}"}
147
147
  queryable.load(uri.to_s, **load_opts)
@@ -158,17 +158,6 @@ module SPARQL; module Algebra
158
158
  aggregate.default(*default_datasets.select {|name| queryable.has_graph?(name)})
159
159
  aggregate.query(operands.last, depth: options[:depth].to_i + 1, **options, &base)
160
160
  end
161
-
162
- ##
163
- # Returns an optimized version of this query.
164
- #
165
- # If optimize operands, and if the first two operands are both Queries, replace
166
- # with the unique sum of the query elements
167
- #
168
- # @return [Union, RDF::Query] `self`
169
- def optimize
170
- operands.last.optimize
171
- end
172
161
  end # Dataset
173
162
  end # Operator
174
163
  end; end # SPARQL::Algebra
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # (filter (= (datatype (xsd:double ?v)) xsd:double)
12
12
  # (bgp (triple ?s :p ?v)))))
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-query/#func-datatype
14
+ # @see https://www.w3.org/TR/sparql11-query/#func-datatype
15
15
  class Datatype < Operator::Unary
16
16
  include Evaluatable
17
17
 
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # (extend ((?x (day ?date)))
10
10
  # (bgp (triple ?s :date ?date)))))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-query/#func-day
12
+ # @see https://www.w3.org/TR/sparql11-query/#func-day
13
13
  class Day < Operator::Unary
14
14
  include Evaluatable
15
15
 
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # @example
10
10
  # (delete ((triple ?s ?p ?o))))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-update/#delete
12
+ # @see https://www.w3.org/TR/sparql11-update/#delete
13
13
  class Delete < Operator::Unary
14
14
  include SPARQL::Algebra::Update
15
15
 
@@ -20,8 +20,8 @@ module SPARQL; module Algebra
20
20
  #
21
21
  # @param [RDF::Queryable] queryable
22
22
  # the graph or repository to write
23
- # @param [RDF::Query::Solution] :solution
24
- # Solution to map to patterns for this operation
23
+ # @param [RDF::Query::Solutions] solutions
24
+ # Solutions to map to patterns for this operation
25
25
  # @param [Hash{Symbol => Object}] options
26
26
  # any additional keyword options
27
27
  # @option options [Boolean] debug
@@ -30,9 +30,9 @@ 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, solutions: nil, **options)
35
- debug(options) {"Delete: #{solution} against #{operands.to_sse}"}
35
+ debug(options) {"Delete: #{solutions} against #{operands.to_sse}"}
36
36
  # Only binds the first solution
37
37
  solution = solutions.is_a?(RDF::Query::Solutions) ? solutions.first : solutions
38
38
  # Operands are an array of patterns and Queries (when named).
@@ -47,7 +47,7 @@ module SPARQL; module Algebra
47
47
  end
48
48
  patterns.each do |pattern|
49
49
  pattern = pattern.dup.bind(solution)
50
- debug(options) {"Delete statement #{statement.to_sse}"}
50
+ debug(options) {"Delete pattern #{pattern.to_sse}"}
51
51
  queryable.delete(RDF::Statement.from(pattern)) if pattern.bound? || pattern.constant?
52
52
  end
53
53
  queryable
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # @example
10
10
  # (deleteData ((triple :a foaf:knows :c)))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-update/#deleteData
12
+ # @see https://www.w3.org/TR/sparql11-update/#deleteData
13
13
  class DeleteData < Operator::Unary
14
14
  include SPARQL::Algebra::Update
15
15
 
@@ -28,7 +28,7 @@ module SPARQL; module Algebra
28
28
  # Returns queryable.
29
29
  # @raise [IOError]
30
30
  # If `from` does not exist, unless the `silent` operator is present
31
- # @see http://www.w3.org/TR/sparql11-update/
31
+ # @see https://www.w3.org/TR/sparql11-update/
32
32
  def execute(queryable, **options)
33
33
  operand.each do |op|
34
34
  debug(options) {"DeleteData #{op.to_sxp}"}
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # @example
10
10
  # (deleteWhere ((triple :a foaf:knows ?b))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-update/#deleteWhere
12
+ # @see https://www.w3.org/TR/sparql11-update/#deleteWhere
13
13
  class DeleteWhere < Operator::Unary
14
14
  include SPARQL::Algebra::Update
15
15
 
@@ -28,7 +28,7 @@ module SPARQL; module Algebra
28
28
  # Returns queryable.
29
29
  # @raise [IOError]
30
30
  # If `from` does not exist, unless the `silent` operator is present
31
- # @see http://www.w3.org/TR/sparql11-update/
31
+ # @see https://www.w3.org/TR/sparql11-update/
32
32
  def execute(queryable, **options)
33
33
  # Operands are an array of patterns and Queries (when named).
34
34
  # Create a new query made up all patterns
@@ -46,7 +46,7 @@ module SPARQL; module Algebra
46
46
  debug(options) {"DeleteWhere solution #{solution.to_sse}"}
47
47
  query.each_statement do |pattern|
48
48
  pattern = pattern.dup.bind(solution)
49
- debug(options) {"DeleteWhere statement #{statement.to_sse}"}
49
+ debug(options) {"DeleteWhere pattern #{pattern.to_sse}"}
50
50
  queryable.delete(RDF::Statement.from(pattern)) if pattern.bound? || pattern.constant?
51
51
  end
52
52
  end
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
9
9
  # (order ((desc ?name))
10
10
  # (bgp (triple ?x foaf:name ?name)))))
11
11
  #
12
- # @see http://www.w3.org/TR/sparql11-query/#modOrderBy
12
+ # @see https://www.w3.org/TR/sparql11-query/#modOrderBy
13
13
  class Desc < Operator::Asc
14
14
  NAME = :desc
15
15
  end # Desc
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (describe (?x)
11
11
  # (bgp (triple ?x exOrg:employeeId "1234"))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#describe
13
+ # @see https://www.w3.org/TR/sparql11-query/#describe
14
14
  class Describe < Operator::Binary
15
15
  include Query
16
16
 
@@ -39,7 +39,7 @@ module SPARQL; module Algebra
39
39
  # @yieldreturn [void] ignored
40
40
  # @return [RDF::Graph]
41
41
  # containing the constructed triples
42
- # @see http://www.w3.org/TR/sparql11-query/#describe
42
+ # @see https://www.w3.org/TR/sparql11-query/#describe
43
43
  def execute(queryable, **options, &block)
44
44
  debug(options) {"Describe #{operands.first}, #{options.inspect}"}
45
45
 
@@ -60,16 +60,6 @@ module SPARQL; module Algebra
60
60
  # Return Concise Bounded Description
61
61
  queryable.concise_bounded_description(*to_describe.uniq, &block)
62
62
  end
63
-
64
- ##
65
- # Returns an optimized version of this query.
66
- #
67
- # Return optimized query
68
- #
69
- # @return [Union, RDF::Query] `self`
70
- def optimize
71
- operands = operands.map(&:optimize)
72
- end
73
63
 
74
64
  # Query results statements (e.g., CONSTRUCT, DESCRIBE, CREATE)
75
65
  # @return [Boolean]
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
10
10
  # (project (?v)
11
11
  # (bgp (triple ?x ?p ?v)))))
12
12
  #
13
- # @see http://www.w3.org/TR/sparql11-query/#sparqlDistinct
13
+ # @see https://www.w3.org/TR/sparql11-query/#sparqlDistinct
14
14
  class Distinct < Operator::Unary
15
15
  include Query
16
16
 
@@ -30,22 +30,12 @@ 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
  @solutions = queryable.query(operands.last, depth: options[:depth].to_i + 1, **options).distinct
36
36
  @solutions.each(&block) if block_given?
37
37
  @solutions
38
38
  end
39
-
40
- ##
41
- # Returns an optimized version of this query.
42
- #
43
- # Return optimized query
44
- #
45
- # @return [Union, RDF::Query] `self`
46
- def optimize
47
- operands = operands.map(&:optimize)
48
- end
49
39
  end # Distinct
50
40
  end # Operator
51
41
  end; end # SPARQL::Algebra
@@ -6,7 +6,7 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (/ 4 2)
8
8
  #
9
- # @see http://www.w3.org/TR/xpath-functions/#func-numeric-divide
9
+ # @see https://www.w3.org/TR/xpath-functions/#func-numeric-divide
10
10
  class Divide < Operator::Binary
11
11
  include Evaluatable
12
12
 
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
11
11
  # @example
12
12
  # (drop default)
13
13
  #
14
- # @see http://www.w3.org/TR/sparql11-update/#drop
14
+ # @see https://www.w3.org/TR/sparql11-update/#drop
15
15
  class Drop < Operator
16
16
  include SPARQL::Algebra::Update
17
17
 
@@ -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)
35
35
  debug(options) {"Drop"}
36
36
  silent = operands.first == :silent
@@ -8,8 +8,8 @@ module SPARQL; module Algebra
8
8
  # @example
9
9
  # (encode_for_uri ?x)
10
10
  #
11
- # @see http://www.w3.org/TR/sparql11-query/#func-encode
12
- # @see http://www.w3.org/TR/xpath-functions/#func-abs
11
+ # @see https://www.w3.org/TR/sparql11-query/#func-encode
12
+ # @see https://www.w3.org/TR/xpath-functions/#func-abs
13
13
  class EncodeForURI < Operator::Unary
14
14
  include Evaluatable
15
15
 
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
6
6
  # @example
7
7
  # (= ?x ?y)
8
8
  #
9
- # @see http://www.w3.org/TR/sparql11-query/#OperatorMapping
10
- # @see http://www.w3.org/TR/sparql11-query/#func-RDFterm-equal
9
+ # @see https://www.w3.org/TR/sparql11-query/#OperatorMapping
10
+ # @see https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal
11
11
  class Equal < Compare
12
12
  NAME = :'='
13
13