sparql 3.0.2 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/VERSION +1 -1
- data/bin/sparql +8 -8
- data/lib/rack/sparql.rb +1 -1
- data/lib/rack/sparql/conneg.rb +1 -1
- data/lib/sinatra/sparql.rb +1 -1
- data/lib/sparql.rb +4 -4
- data/lib/sparql/algebra.rb +4 -4
- data/lib/sparql/algebra/aggregate.rb +2 -2
- data/lib/sparql/algebra/evaluatable.rb +2 -2
- data/lib/sparql/algebra/expression.rb +7 -7
- data/lib/sparql/algebra/extensions.rb +9 -14
- data/lib/sparql/algebra/operator.rb +1 -1
- data/lib/sparql/algebra/operator/add.rb +1 -1
- data/lib/sparql/algebra/operator/alt.rb +2 -2
- data/lib/sparql/algebra/operator/and.rb +4 -4
- data/lib/sparql/algebra/operator/asc.rb +2 -2
- data/lib/sparql/algebra/operator/ask.rb +2 -2
- data/lib/sparql/algebra/operator/avg.rb +5 -3
- data/lib/sparql/algebra/operator/base.rb +2 -2
- data/lib/sparql/algebra/operator/bnode.rb +3 -3
- data/lib/sparql/algebra/operator/bound.rb +2 -2
- data/lib/sparql/algebra/operator/clear.rb +1 -1
- data/lib/sparql/algebra/operator/coalesce.rb +2 -2
- data/lib/sparql/algebra/operator/concat.rb +2 -2
- data/lib/sparql/algebra/operator/construct.rb +2 -2
- data/lib/sparql/algebra/operator/copy.rb +1 -1
- data/lib/sparql/algebra/operator/count.rb +2 -2
- data/lib/sparql/algebra/operator/create.rb +1 -1
- data/lib/sparql/algebra/operator/dataset.rb +3 -3
- data/lib/sparql/algebra/operator/delete.rb +4 -2
- data/lib/sparql/algebra/operator/delete_data.rb +1 -1
- data/lib/sparql/algebra/operator/delete_where.rb +3 -3
- data/lib/sparql/algebra/operator/describe.rb +1 -1
- data/lib/sparql/algebra/operator/distinct.rb +2 -2
- data/lib/sparql/algebra/operator/drop.rb +1 -1
- data/lib/sparql/algebra/operator/encode_for_uri.rb +1 -1
- data/lib/sparql/algebra/operator/exists.rb +4 -4
- data/lib/sparql/algebra/operator/exprlist.rb +2 -2
- data/lib/sparql/algebra/operator/extend.rb +5 -5
- data/lib/sparql/algebra/operator/filter.rb +3 -3
- data/lib/sparql/algebra/operator/graph.rb +2 -2
- data/lib/sparql/algebra/operator/group.rb +11 -11
- data/lib/sparql/algebra/operator/group_concat.rb +5 -5
- data/lib/sparql/algebra/operator/if.rb +4 -4
- data/lib/sparql/algebra/operator/in.rb +3 -3
- data/lib/sparql/algebra/operator/insert.rb +4 -2
- 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/load.rb +1 -1
- data/lib/sparql/algebra/operator/max.rb +5 -3
- data/lib/sparql/algebra/operator/min.rb +5 -3
- data/lib/sparql/algebra/operator/minus.rb +3 -3
- data/lib/sparql/algebra/operator/modify.rb +3 -3
- data/lib/sparql/algebra/operator/move.rb +1 -1
- data/lib/sparql/algebra/operator/notexists.rb +2 -2
- data/lib/sparql/algebra/operator/notin.rb +3 -3
- data/lib/sparql/algebra/operator/notoneof.rb +3 -4
- data/lib/sparql/algebra/operator/or.rb +4 -4
- data/lib/sparql/algebra/operator/order.rb +4 -4
- data/lib/sparql/algebra/operator/path.rb +4 -3
- data/lib/sparql/algebra/operator/path_opt.rb +14 -14
- data/lib/sparql/algebra/operator/path_plus.rb +6 -6
- data/lib/sparql/algebra/operator/path_star.rb +2 -2
- data/lib/sparql/algebra/operator/plus.rb +1 -1
- data/lib/sparql/algebra/operator/prefix.rb +2 -2
- data/lib/sparql/algebra/operator/project.rb +2 -2
- data/lib/sparql/algebra/operator/reduced.rb +2 -2
- data/lib/sparql/algebra/operator/regex.rb +1 -1
- data/lib/sparql/algebra/operator/replace.rb +1 -1
- data/lib/sparql/algebra/operator/reverse.rb +2 -2
- data/lib/sparql/algebra/operator/sample.rb +2 -2
- data/lib/sparql/algebra/operator/seq.rb +4 -5
- data/lib/sparql/algebra/operator/sequence.rb +3 -3
- data/lib/sparql/algebra/operator/slice.rb +2 -2
- data/lib/sparql/algebra/operator/substr.rb +1 -1
- data/lib/sparql/algebra/operator/sum.rb +5 -3
- data/lib/sparql/algebra/operator/table.rb +1 -1
- data/lib/sparql/algebra/operator/union.rb +2 -2
- data/lib/sparql/algebra/operator/update.rb +2 -2
- data/lib/sparql/algebra/operator/using.rb +2 -2
- data/lib/sparql/algebra/operator/with.rb +4 -4
- data/lib/sparql/algebra/query.rb +1 -1
- data/lib/sparql/algebra/update.rb +1 -1
- data/lib/sparql/extensions.rb +4 -4
- data/lib/sparql/grammar.rb +7 -7
- data/lib/sparql/grammar/parser11.rb +15 -17
- data/lib/sparql/results.rb +3 -3
- metadata +26 -33
@@ -30,8 +30,8 @@ module SPARQL; module Algebra
|
|
30
30
|
# @return [RDF::Query::Solutions]
|
31
31
|
# the resulting solution sequence
|
32
32
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
33
|
-
def execute(queryable, options
|
34
|
-
@solutions = queryable.query(operands.last,
|
33
|
+
def execute(queryable, **options, &block)
|
34
|
+
@solutions = queryable.query(operands.last, depth: options[:depth].to_i + 1, **options)
|
35
35
|
@solutions = @solutions.project(*(operands.first))
|
36
36
|
@solutions.each(&block) if block_given?
|
37
37
|
@solutions
|
@@ -31,9 +31,9 @@ module SPARQL; module Algebra
|
|
31
31
|
# @return [RDF::Query::Solutions]
|
32
32
|
# the resulting solution sequence
|
33
33
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
34
|
-
def execute(queryable, options
|
34
|
+
def execute(queryable, **options, &block)
|
35
35
|
@solutions = operands.last.
|
36
|
-
execute(queryable,
|
36
|
+
execute(queryable, depth: options[:depth].to_i + 1, **options).reduced
|
37
37
|
@solutions.each(&block) if block_given?
|
38
38
|
@solutions
|
39
39
|
end
|
@@ -26,7 +26,7 @@ module SPARQL; module Algebra
|
|
26
26
|
# @param [Hash{Symbol => Object}] options
|
27
27
|
# any additional options (see {Operator#initialize})
|
28
28
|
# @raise [TypeError] if any operand is invalid
|
29
|
-
def initialize(text, pattern, flags = RDF::Literal(''), options
|
29
|
+
def initialize(text, pattern, flags = RDF::Literal(''), **options)
|
30
30
|
super
|
31
31
|
end
|
32
32
|
|
@@ -27,7 +27,7 @@ module SPARQL; module Algebra
|
|
27
27
|
# @param [Hash{Symbol => Object}] options
|
28
28
|
# any additional options (see {Operator#initialize})
|
29
29
|
# @raise [TypeError] if any operand is invalid
|
30
|
-
def initialize(text, pattern, replacement, flags = RDF::Literal(''), options
|
30
|
+
def initialize(text, pattern, replacement, flags = RDF::Literal(''), **options)
|
31
31
|
super
|
32
32
|
end
|
33
33
|
|
@@ -30,7 +30,7 @@ module SPARQL; module Algebra
|
|
30
30
|
# @yieldparam [RDF::Query::Solution] solution
|
31
31
|
# @yieldreturn [void] ignored
|
32
32
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
33
|
-
def execute(queryable, options
|
33
|
+
def execute(queryable, **options, &block)
|
34
34
|
debug(options) {"Reverse #{operands.to_sse}"}
|
35
35
|
subject, object = options[:subject], options[:object]
|
36
36
|
|
@@ -42,7 +42,7 @@ module SPARQL; module Algebra
|
|
42
42
|
else
|
43
43
|
operand(0)
|
44
44
|
end
|
45
|
-
queryable.query(query, options.merge(
|
45
|
+
queryable.query(query, **options.merge(
|
46
46
|
subject: object,
|
47
47
|
object: subject,
|
48
48
|
depth: options[:depth].to_i + 1
|
@@ -7,8 +7,8 @@ module SPARQL; module Algebra
|
|
7
7
|
# (prefix ((: <http://www.example.org/>))
|
8
8
|
# (filter (|| (|| (= ?sample 1.0) (= ?sample 2.2)) (= ?sample 3.5))
|
9
9
|
# (project (?sample)
|
10
|
-
# (extend ((?sample
|
11
|
-
# (group () ((
|
10
|
+
# (extend ((?sample ??.0))
|
11
|
+
# (group () ((??.0 (sample ?o)))
|
12
12
|
# (bgp (triple ?s :dec ?o)))))))
|
13
13
|
#
|
14
14
|
# @see http://www.w3.org/TR/sparql11-query/#defn_aggSample
|
@@ -29,12 +29,11 @@ module SPARQL; module Algebra
|
|
29
29
|
# @yieldparam [RDF::Query::Solution] solution
|
30
30
|
# @yieldreturn [void] ignored
|
31
31
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
32
|
-
def execute(queryable, options
|
32
|
+
def execute(queryable, **options, &block)
|
33
33
|
subject, object = options[:subject], options[:object]
|
34
34
|
debug(options) {"Seq #{[subject, operands, object].to_sse}"}
|
35
35
|
|
36
|
-
v = RDF::Query::Variable.new
|
37
|
-
v.distinguished = false
|
36
|
+
v = RDF::Query::Variable.new(distinguished: false)
|
38
37
|
q1 = if operand(0).is_a?(RDF::Term)
|
39
38
|
RDF::Query.new do |q|
|
40
39
|
q.pattern [subject, operand(0), v]
|
@@ -50,10 +49,10 @@ module SPARQL; module Algebra
|
|
50
49
|
operand(1)
|
51
50
|
end
|
52
51
|
|
53
|
-
left = queryable.query(q1, options.merge(object: v, depth: options[:depth].to_i + 1))
|
52
|
+
left = queryable.query(q1, **options.merge(object: v, depth: options[:depth].to_i + 1))
|
54
53
|
debug(options) {"(seq)=>(left) #{left.map(&:to_h).to_sse}"}
|
55
54
|
|
56
|
-
right = queryable.query(q2, options.merge(subject: v, depth: options[:depth].to_i + 1))
|
55
|
+
right = queryable.query(q2, **options.merge(subject: v, depth: options[:depth].to_i + 1))
|
57
56
|
debug(options) {"(seq)=>(right) #{right.map(&:to_h).to_sse}"}
|
58
57
|
|
59
58
|
@solutions = RDF::Query::Solutions(left.map do |s1|
|
@@ -35,14 +35,14 @@ module SPARQL; module Algebra
|
|
35
35
|
# @yieldparam [RDF::Query::Solution] solution
|
36
36
|
# @yieldreturn [void] ignored
|
37
37
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
38
|
-
def execute(queryable, options
|
38
|
+
def execute(queryable, **options)
|
39
39
|
debug(options) {"Sequence #{operands.to_sse}"}
|
40
40
|
|
41
|
-
last = queryable.query(operands.shift,
|
41
|
+
last = queryable.query(operands.shift, depth: options[:depth].to_i + 1, **options)
|
42
42
|
debug(options) {"(sequence)=>(last) #{last.map(&:to_h).to_sse}"}
|
43
43
|
|
44
44
|
operands.each do |op|
|
45
|
-
this = queryable.query(op,
|
45
|
+
this = queryable.query(op, depth: options[:depth].to_i + 1, **options)
|
46
46
|
debug(options) {"(sequence)=>(this) #{this.map(&:to_h).to_sse}"}
|
47
47
|
|
48
48
|
last = last.map do |s1|
|
@@ -43,10 +43,10 @@ module SPARQL; module Algebra
|
|
43
43
|
# @return [RDF::Query::Solutions]
|
44
44
|
# the resulting solution sequence
|
45
45
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
46
|
-
def execute(queryable, options
|
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
|
49
|
-
@solutions = operands.last. execute(queryable,
|
49
|
+
@solutions = operands.last. execute(queryable, depth: options[:depth].to_i + 1, **options)
|
50
50
|
@solutions.offset(operands[0]) unless operands[0] == :_
|
51
51
|
@solutions.limit(operands[1]) unless operands[1] == :_
|
52
52
|
@solutions.each(&block) if block_given?
|
@@ -22,7 +22,7 @@ module SPARQL; module Algebra
|
|
22
22
|
# @param [Hash{Symbol => Object}] options
|
23
23
|
# any additional options (see {Operator#initialize})
|
24
24
|
# @raise [TypeError] if any operand is invalid
|
25
|
-
def initialize(source, startingLoc, length = RDF::Literal(""), options
|
25
|
+
def initialize(source, startingLoc, length = RDF::Literal(""), **options)
|
26
26
|
super
|
27
27
|
end
|
28
28
|
|
@@ -6,12 +6,12 @@ module SPARQL; module Algebra
|
|
6
6
|
# @example
|
7
7
|
# (prefix ((: <http://www.example.org/>))
|
8
8
|
# (project (?sum)
|
9
|
-
# (extend ((?sum
|
10
|
-
# (group () ((
|
9
|
+
# (extend ((?sum ??.0))
|
10
|
+
# (group () ((??.0 (sum ?o)))
|
11
11
|
# (bgp (triple ?s :dec ?o))))))
|
12
12
|
#
|
13
13
|
# @see http://www.w3.org/TR/sparql11-query/#defn_aggSum
|
14
|
-
class Sum < Operator
|
14
|
+
class Sum < Operator
|
15
15
|
include Aggregate
|
16
16
|
|
17
17
|
NAME = :sum
|
@@ -23,6 +23,8 @@ module SPARQL; module Algebra
|
|
23
23
|
# enum of evaluated operand
|
24
24
|
# @return [RDF::Literal::Numeric] The sum of the terms
|
25
25
|
def apply(enum)
|
26
|
+
# FIXME: we don't actually do anything with distinct
|
27
|
+
operands.shift if distinct = (operands.first == :distinct)
|
26
28
|
if enum.empty?
|
27
29
|
RDF::Literal(0)
|
28
30
|
elsif enum.flatten.all? {|n| n.is_a?(RDF::Literal::Numeric)}
|
@@ -33,7 +33,7 @@ module SPARQL; module Algebra
|
|
33
33
|
# @return [RDF::Query::Solutions]
|
34
34
|
# the resulting solution sequence
|
35
35
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
36
|
-
def execute(queryable, options
|
36
|
+
def execute(queryable, **options, &block)
|
37
37
|
@solutions = RDF::Query::Solutions()
|
38
38
|
Array(operands[1..-1]).each do |row|
|
39
39
|
next unless row.is_a?(Array)
|
@@ -31,10 +31,10 @@ module SPARQL; module Algebra
|
|
31
31
|
# @return [RDF::Query::Solutions]
|
32
32
|
# the resulting solution sequence
|
33
33
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
34
|
-
def execute(queryable, options
|
34
|
+
def execute(queryable, **options, &block)
|
35
35
|
debug(options) {"Union"}
|
36
36
|
@solutions = RDF::Query::Solutions(operands.inject([]) do |memo, op|
|
37
|
-
solns = op.execute(queryable,
|
37
|
+
solns = op.execute(queryable, depth: options[:depth].to_i + 1, **options)
|
38
38
|
debug(options) {"=> (op) #{solns.inspect}"}
|
39
39
|
memo + solns
|
40
40
|
end)
|
@@ -31,11 +31,11 @@ module SPARQL; module Algebra
|
|
31
31
|
# @raise [IOError]
|
32
32
|
# If `queryable` is immutable
|
33
33
|
# @see http://www.w3.org/TR/sparql11-update/
|
34
|
-
def execute(queryable, options
|
34
|
+
def execute(queryable, **options)
|
35
35
|
debug(options) {"Update"}
|
36
36
|
raise IOError, "queryable is not mutable" unless queryable.mutable?
|
37
37
|
operands.each do |op|
|
38
|
-
op.execute(queryable,
|
38
|
+
op.execute(queryable, depth: options[:depth].to_i + 1, **options)
|
39
39
|
end
|
40
40
|
queryable
|
41
41
|
end
|
@@ -31,9 +31,9 @@ module SPARQL; module Algebra
|
|
31
31
|
# @raise [IOError]
|
32
32
|
# If `from` does not exist, unless the `silent` operator is present
|
33
33
|
# @see http://www.w3.org/TR/sparql11-update/
|
34
|
-
def execute(queryable, options
|
34
|
+
def execute(queryable, **options, &block)
|
35
35
|
debug(options) {"Using"}
|
36
|
-
Dataset.new(*operands).execute(queryable,
|
36
|
+
Dataset.new(*operands).execute(queryable, depth: options[:depth].to_i + 1, **options, &block)
|
37
37
|
end
|
38
38
|
end # Using
|
39
39
|
end # Operator
|
@@ -33,7 +33,7 @@ module SPARQL; module Algebra
|
|
33
33
|
# @raise [IOError]
|
34
34
|
# If `from` does not exist, unless the `silent` operator is present
|
35
35
|
# @see http://www.w3.org/TR/sparql11-update/
|
36
|
-
def execute(queryable, options
|
36
|
+
def execute(queryable, **options)
|
37
37
|
debug(options) {"With: #{operand.to_sse}"}
|
38
38
|
# Bound variable
|
39
39
|
name = operands.shift
|
@@ -42,7 +42,7 @@ module SPARQL; module Algebra
|
|
42
42
|
debug(options) {"=> default data source #{name}"}
|
43
43
|
load_opts = {debug: options.fetch(:debug, nil), base_uri: name}
|
44
44
|
debug(options) {"=> load #{name}"}
|
45
|
-
queryable.load(name.to_s, load_opts)
|
45
|
+
queryable.load(name.to_s, **load_opts)
|
46
46
|
end
|
47
47
|
|
48
48
|
# Set name for RDF::Graph descendants having no graph_name to the name variable
|
@@ -58,12 +58,12 @@ module SPARQL; module Algebra
|
|
58
58
|
query = operands.shift
|
59
59
|
|
60
60
|
# Restrict query portion to this graph
|
61
|
-
queryable.query(query,
|
61
|
+
queryable.query(query, depth: options[:depth].to_i + 1, **options) do |solution|
|
62
62
|
debug(options) {"(solution)=>#{solution.inspect}"}
|
63
63
|
|
64
64
|
# Execute each operand with queryable and solution
|
65
65
|
operands.each do |op|
|
66
|
-
op.execute(queryable, solution,
|
66
|
+
op.execute(queryable, solutions: solution, depth: options[:depth].to_i + 1, **options)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
data/lib/sparql/algebra/query.rb
CHANGED
@@ -50,7 +50,7 @@ module SPARQL; module Algebra
|
|
50
50
|
# @raise [NotImplementedError]
|
51
51
|
# If an attempt is made to perform an unsupported operation
|
52
52
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
53
|
-
def execute(queryable, options
|
53
|
+
def execute(queryable, **options, &block)
|
54
54
|
raise NotImplementedError, "#{self.class}#execute(#{queryable})"
|
55
55
|
end
|
56
56
|
|
@@ -39,7 +39,7 @@ module SPARQL; module Algebra
|
|
39
39
|
# @raise [NotImplementedError]
|
40
40
|
# If an attempt is made to perform an unsupported operation
|
41
41
|
# @see http://www.w3.org/TR/sparql11-update/
|
42
|
-
def execute(queryable, options
|
42
|
+
def execute(queryable, **options, &block)
|
43
43
|
raise NotImplementedError, "#{self.class}#execute(#{queryable})"
|
44
44
|
end
|
45
45
|
|
data/lib/sparql/extensions.rb
CHANGED
@@ -54,11 +54,11 @@ module RDF::Queryable
|
|
54
54
|
|
55
55
|
# Find terms not in self as a subject and recurse with their subjects
|
56
56
|
terms.reject {|term| self.first(subject: term)}.each do |term|
|
57
|
-
self.query(predicate: term) do |statement|
|
57
|
+
self.query({predicate: term}) do |statement|
|
58
58
|
query_terms << statement.subject
|
59
59
|
end
|
60
60
|
|
61
|
-
self.query(object: term) do |statement|
|
61
|
+
self.query({object: term}) do |statement|
|
62
62
|
query_terms << statement.subject
|
63
63
|
end
|
64
64
|
end
|
@@ -69,7 +69,7 @@ module RDF::Queryable
|
|
69
69
|
# Don't consider term if already in graph
|
70
70
|
terms.reject {|term| graph.first(subject: term)}.each do |term|
|
71
71
|
# Find statements from queryiable with term as a subject
|
72
|
-
self.query(subject: term) do |statement|
|
72
|
+
self.query({subject: term}) do |statement|
|
73
73
|
yield(statement) if block_given?
|
74
74
|
graph << statement
|
75
75
|
|
@@ -81,7 +81,7 @@ module RDF::Queryable
|
|
81
81
|
RDF.predicate => statement.predicate,
|
82
82
|
RDF.object => statement.object,
|
83
83
|
}
|
84
|
-
}).execute(self).each do |solution|
|
84
|
+
}, **{}).execute(self).each do |solution|
|
85
85
|
# Recurse to include this subject
|
86
86
|
recurse_opts = options.merge(non_subjects: false, graph: graph)
|
87
87
|
self.concise_bounded_description(solution[:s], recurse_opts, &block)
|
data/lib/sparql/grammar.rb
CHANGED
@@ -175,8 +175,8 @@ module SPARQL
|
|
175
175
|
# @param [Hash{Symbol => Object}] options
|
176
176
|
# @return [Parser]
|
177
177
|
# @raise [Parser::Error] on invalid input
|
178
|
-
def self.parse(query, options
|
179
|
-
Parser.new(query, options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
|
178
|
+
def self.parse(query, **options, &block)
|
179
|
+
Parser.new(query, **options).parse(options[:update] ? :UpdateUnit : :QueryUnit)
|
180
180
|
end
|
181
181
|
|
182
182
|
##
|
@@ -190,8 +190,8 @@ module SPARQL
|
|
190
190
|
# @yieldparam [RDF::Reader] reader
|
191
191
|
# @yieldreturn [void] ignored
|
192
192
|
# @raise [RDF::FormatError] if no reader found for the specified format
|
193
|
-
def self.open(filename, options
|
194
|
-
RDF::Util::File.open_file(filename, options) do |file|
|
193
|
+
def self.open(filename, **options, &block)
|
194
|
+
RDF::Util::File.open_file(filename, **options) do |file|
|
195
195
|
self.parse(file, options, &block)
|
196
196
|
end
|
197
197
|
end
|
@@ -206,8 +206,8 @@ module SPARQL
|
|
206
206
|
# @param [String, #to_s] query
|
207
207
|
# @param [Hash{Symbol => Object}] options
|
208
208
|
# @return [Boolean]
|
209
|
-
def self.valid?(query, options
|
210
|
-
Parser.new(query, options).valid?
|
209
|
+
def self.valid?(query, **options)
|
210
|
+
Parser.new(query, **options).valid?
|
211
211
|
end
|
212
212
|
|
213
213
|
##
|
@@ -225,7 +225,7 @@ module SPARQL
|
|
225
225
|
# @yieldparam [Lexer] lexer
|
226
226
|
# @return [Lexer]
|
227
227
|
# @raise [Lexer::Error] on invalid input
|
228
|
-
def self.tokenize(query, options
|
228
|
+
def self.tokenize(query, **options, &block)
|
229
229
|
Lexer.tokenize(query, options, &block)
|
230
230
|
end
|
231
231
|
end # Grammar
|
@@ -1415,7 +1415,7 @@ module SPARQL::Grammar
|
|
1415
1415
|
str = lit.delete(:string)
|
1416
1416
|
lit[:datatype] = lit.delete(:iri) if lit[:iri]
|
1417
1417
|
lit[:language] = lit.delete(:language).last.downcase if lit[:language]
|
1418
|
-
input[:literal] = RDF::Literal.new(str, lit) if str
|
1418
|
+
input[:literal] = RDF::Literal.new(str, **lit) if str
|
1419
1419
|
end
|
1420
1420
|
end
|
1421
1421
|
|
@@ -1466,7 +1466,7 @@ module SPARQL::Grammar
|
|
1466
1466
|
# @yieldparam [SPARQL::Grammar::Parser] parser
|
1467
1467
|
# @yieldreturn [void] ignored
|
1468
1468
|
# @return [SPARQL::Grammar::Parser]
|
1469
|
-
def initialize(input = nil, options
|
1469
|
+
def initialize(input = nil, **options, &block)
|
1470
1470
|
@input = case input
|
1471
1471
|
when IO, StringIO then input.read
|
1472
1472
|
else input.to_s.dup
|
@@ -1530,10 +1530,13 @@ module SPARQL::Grammar
|
|
1530
1530
|
# @see http://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
1531
1531
|
# @see http://axel.deri.ie/sparqltutorial/ESWC2007_SPARQL_Tutorial_unit2b.pdf
|
1532
1532
|
def parse(prod = START)
|
1533
|
-
ll1_parse(@input,
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1533
|
+
ll1_parse(@input,
|
1534
|
+
prod.to_sym,
|
1535
|
+
branch: BRANCH,
|
1536
|
+
first: FIRST,
|
1537
|
+
follow: FOLLOW,
|
1538
|
+
whitespace: WS,
|
1539
|
+
**@options
|
1537
1540
|
) do |context, *data|
|
1538
1541
|
case context
|
1539
1542
|
when :trace
|
@@ -1718,9 +1721,7 @@ module SPARQL::Grammar
|
|
1718
1721
|
|
1719
1722
|
if id
|
1720
1723
|
@vars[id] ||= begin
|
1721
|
-
|
1722
|
-
v.distinguished = distinguished
|
1723
|
-
v
|
1724
|
+
RDF::Query::Variable.new(id, distinguished: distinguished)
|
1724
1725
|
end
|
1725
1726
|
else
|
1726
1727
|
unless distinguished
|
@@ -1728,9 +1729,7 @@ module SPARQL::Grammar
|
|
1728
1729
|
id = @nd_var_gen
|
1729
1730
|
@nd_var_gen = id.succ
|
1730
1731
|
end
|
1731
|
-
|
1732
|
-
v.distinguished = distinguished
|
1733
|
-
v
|
1732
|
+
RDF::Query::Variable.new(id, distinguished: distinguished)
|
1734
1733
|
end
|
1735
1734
|
end
|
1736
1735
|
|
@@ -1758,7 +1757,7 @@ module SPARQL::Grammar
|
|
1758
1757
|
end
|
1759
1758
|
|
1760
1759
|
# Create a literal
|
1761
|
-
def literal(value, options
|
1760
|
+
def literal(value, **options)
|
1762
1761
|
options = options.dup
|
1763
1762
|
# Internal representation is to not use xsd:string, although it could arguably go the other way.
|
1764
1763
|
options.delete(:datatype) if options[:datatype] == RDF::XSD.string
|
@@ -1767,7 +1766,7 @@ module SPARQL::Grammar
|
|
1767
1766
|
"options: #{options.inspect}, " +
|
1768
1767
|
"validate: #{validate?.inspect}, "
|
1769
1768
|
end
|
1770
|
-
RDF::Literal.new(value,
|
1769
|
+
RDF::Literal.new(value, validate: validate?, **options)
|
1771
1770
|
end
|
1772
1771
|
|
1773
1772
|
# Take collection of objects and create RDF Collection using rdf:first, rdf:rest and rdf:nil
|
@@ -1798,7 +1797,7 @@ module SPARQL::Grammar
|
|
1798
1797
|
#
|
1799
1798
|
# @param [String] production Production generating pattern
|
1800
1799
|
# @param [Hash{Symbol => Object}] options
|
1801
|
-
def add_pattern(production, options)
|
1800
|
+
def add_pattern(production, **options)
|
1802
1801
|
progress(production, "[:pattern, #{options[:subject]}, #{options[:predicate]}, #{options[:object]}]")
|
1803
1802
|
triple = {}
|
1804
1803
|
options.each_pair do |r, v|
|
@@ -1880,8 +1879,7 @@ module SPARQL::Grammar
|
|
1880
1879
|
avf.first
|
1881
1880
|
else
|
1882
1881
|
# Allocate a temporary variable for this function, and retain the mapping for outside the group
|
1883
|
-
av = RDF::Query::Variable.new(".#{agg}")
|
1884
|
-
av.distinguished = false
|
1882
|
+
av = RDF::Query::Variable.new(".#{agg}", distinguished: false)
|
1885
1883
|
agg += 1
|
1886
1884
|
aggregates << [av, function]
|
1887
1885
|
av
|
data/lib/sparql/results.rb
CHANGED
@@ -185,7 +185,7 @@ module SPARQL
|
|
185
185
|
# @return [String]
|
186
186
|
# String with serialized results and `#content_type`
|
187
187
|
# @raise [RDF::WriterError] when inappropriate formatting options are used
|
188
|
-
def serialize_results(solutions, options
|
188
|
+
def serialize_results(solutions, **options)
|
189
189
|
format = options[:format].to_sym if options[:format]
|
190
190
|
content_type = options[:content_type].to_s.split(';').first
|
191
191
|
content_types = Array(options[:content_types] || '*/*')
|
@@ -236,7 +236,7 @@ module SPARQL
|
|
236
236
|
end
|
237
237
|
format ||= fmt.to_sym
|
238
238
|
content_type ||= fmt.content_type.first
|
239
|
-
results = solutions.dump(format, options)
|
239
|
+
results = solutions.dump(format, **options)
|
240
240
|
raise RDF::WriterError, "Unknown format #{fmt.inspect} for #{solutions.class}" unless results
|
241
241
|
results
|
242
242
|
when RDF::Query::Solutions
|
@@ -306,7 +306,7 @@ module SPARQL
|
|
306
306
|
# May also be an RDF::Writer content_type to serialize DESCRIBE or CONSTRUCT results
|
307
307
|
# @return [String]
|
308
308
|
# String with serialized results and #content_type
|
309
|
-
def serialize_exception(exception, options
|
309
|
+
def serialize_exception(exception, **options)
|
310
310
|
format = options[:format]
|
311
311
|
content_type = options[:content_type]
|
312
312
|
content_type ||= SPARQL::Results::MIME_TYPES[format]
|