sparql 3.1.0 → 3.1.2
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 +183 -69
- data/UNLICENSE +1 -1
- data/VERSION +1 -1
- data/bin/sparql +20 -9
- data/lib/rack/sparql/conneg.rb +2 -2
- data/lib/sinatra/sparql.rb +3 -3
- data/lib/sparql.rb +8 -6
- data/lib/sparql/algebra.rb +7 -15
- data/lib/sparql/algebra/aggregate.rb +2 -2
- data/lib/sparql/algebra/expression.rb +22 -8
- data/lib/sparql/algebra/extensions.rb +135 -3
- data/lib/sparql/algebra/operator.rb +37 -9
- data/lib/sparql/algebra/operator/abs.rb +2 -2
- data/lib/sparql/algebra/operator/add.rb +2 -2
- data/lib/sparql/algebra/operator/alt.rb +2 -2
- data/lib/sparql/algebra/operator/and.rb +3 -3
- data/lib/sparql/algebra/operator/asc.rb +1 -1
- data/lib/sparql/algebra/operator/ask.rb +2 -12
- data/lib/sparql/algebra/operator/avg.rb +1 -1
- data/lib/sparql/algebra/operator/base.rb +8 -8
- data/lib/sparql/algebra/operator/bgp.rb +1 -1
- data/lib/sparql/algebra/operator/bnode.rb +2 -2
- data/lib/sparql/algebra/operator/bound.rb +1 -1
- data/lib/sparql/algebra/operator/ceil.rb +2 -2
- data/lib/sparql/algebra/operator/clear.rb +2 -2
- data/lib/sparql/algebra/operator/coalesce.rb +1 -11
- data/lib/sparql/algebra/operator/compare.rb +8 -8
- data/lib/sparql/algebra/operator/concat.rb +2 -2
- data/lib/sparql/algebra/operator/construct.rb +2 -12
- data/lib/sparql/algebra/operator/contains.rb +2 -2
- data/lib/sparql/algebra/operator/copy.rb +2 -2
- data/lib/sparql/algebra/operator/count.rb +1 -1
- data/lib/sparql/algebra/operator/create.rb +2 -2
- data/lib/sparql/algebra/operator/dataset.rb +2 -13
- data/lib/sparql/algebra/operator/datatype.rb +1 -1
- data/lib/sparql/algebra/operator/day.rb +1 -1
- data/lib/sparql/algebra/operator/delete.rb +4 -4
- data/lib/sparql/algebra/operator/delete_data.rb +2 -2
- data/lib/sparql/algebra/operator/delete_where.rb +2 -2
- data/lib/sparql/algebra/operator/desc.rb +1 -1
- data/lib/sparql/algebra/operator/describe.rb +2 -12
- data/lib/sparql/algebra/operator/distinct.rb +2 -12
- data/lib/sparql/algebra/operator/divide.rb +1 -1
- data/lib/sparql/algebra/operator/drop.rb +2 -2
- data/lib/sparql/algebra/operator/encode_for_uri.rb +2 -2
- data/lib/sparql/algebra/operator/equal.rb +2 -2
- data/lib/sparql/algebra/operator/exists.rb +1 -1
- data/lib/sparql/algebra/operator/exprlist.rb +1 -11
- data/lib/sparql/algebra/operator/extend.rb +14 -13
- data/lib/sparql/algebra/operator/filter.rb +3 -13
- data/lib/sparql/algebra/operator/floor.rb +2 -2
- data/lib/sparql/algebra/operator/graph.rb +3 -14
- data/lib/sparql/algebra/operator/greater_than.rb +5 -5
- data/lib/sparql/algebra/operator/greater_than_or_equal.rb +5 -5
- data/lib/sparql/algebra/operator/group.rb +14 -14
- data/lib/sparql/algebra/operator/group_concat.rb +1 -1
- data/lib/sparql/algebra/operator/hours.rb +1 -1
- data/lib/sparql/algebra/operator/if.rb +1 -11
- data/lib/sparql/algebra/operator/in.rb +1 -11
- data/lib/sparql/algebra/operator/insert.rb +3 -3
- data/lib/sparql/algebra/operator/insert_data.rb +2 -2
- data/lib/sparql/algebra/operator/iri.rb +1 -1
- data/lib/sparql/algebra/operator/is_blank.rb +1 -1
- data/lib/sparql/algebra/operator/is_iri.rb +1 -1
- data/lib/sparql/algebra/operator/is_literal.rb +1 -1
- data/lib/sparql/algebra/operator/is_numeric.rb +1 -1
- data/lib/sparql/algebra/operator/join.rb +9 -7
- data/lib/sparql/algebra/operator/lang.rb +1 -1
- data/lib/sparql/algebra/operator/lang_matches.rb +3 -3
- data/lib/sparql/algebra/operator/lcase.rb +2 -2
- data/lib/sparql/algebra/operator/left_join.rb +12 -9
- data/lib/sparql/algebra/operator/less_than.rb +5 -5
- data/lib/sparql/algebra/operator/less_than_or_equal.rb +5 -5
- data/lib/sparql/algebra/operator/load.rb +2 -2
- data/lib/sparql/algebra/operator/max.rb +1 -1
- data/lib/sparql/algebra/operator/md5.rb +1 -1
- data/lib/sparql/algebra/operator/min.rb +1 -1
- data/lib/sparql/algebra/operator/minus.rb +9 -8
- data/lib/sparql/algebra/operator/minutes.rb +1 -1
- data/lib/sparql/algebra/operator/modify.rb +1 -1
- data/lib/sparql/algebra/operator/month.rb +1 -1
- data/lib/sparql/algebra/operator/move.rb +2 -2
- data/lib/sparql/algebra/operator/multiply.rb +1 -1
- data/lib/sparql/algebra/operator/negate.rb +1 -1
- data/lib/sparql/algebra/operator/not.rb +1 -1
- data/lib/sparql/algebra/operator/not_equal.rb +2 -2
- data/lib/sparql/algebra/operator/notexists.rb +2 -2
- data/lib/sparql/algebra/operator/notin.rb +1 -11
- data/lib/sparql/algebra/operator/notoneof.rb +2 -2
- data/lib/sparql/algebra/operator/now.rb +1 -1
- data/lib/sparql/algebra/operator/or.rb +3 -3
- data/lib/sparql/algebra/operator/order.rb +2 -12
- data/lib/sparql/algebra/operator/path.rb +2 -2
- data/lib/sparql/algebra/operator/path_opt.rb +2 -2
- data/lib/sparql/algebra/operator/path_plus.rb +2 -2
- data/lib/sparql/algebra/operator/path_star.rb +2 -2
- data/lib/sparql/algebra/operator/plus.rb +2 -2
- data/lib/sparql/algebra/operator/prefix.rb +8 -8
- data/lib/sparql/algebra/operator/project.rb +2 -12
- data/lib/sparql/algebra/operator/rand.rb +1 -1
- data/lib/sparql/algebra/operator/reduced.rb +2 -12
- data/lib/sparql/algebra/operator/regex.rb +5 -5
- data/lib/sparql/algebra/operator/replace.rb +3 -3
- data/lib/sparql/algebra/operator/reverse.rb +2 -2
- data/lib/sparql/algebra/operator/round.rb +2 -2
- data/lib/sparql/algebra/operator/same_term.rb +8 -5
- data/lib/sparql/algebra/operator/sample.rb +1 -1
- data/lib/sparql/algebra/operator/seconds.rb +1 -1
- data/lib/sparql/algebra/operator/seq.rb +1 -1
- data/lib/sparql/algebra/operator/sequence.rb +1 -1
- data/lib/sparql/algebra/operator/sha1.rb +1 -1
- data/lib/sparql/algebra/operator/sha256.rb +1 -1
- data/lib/sparql/algebra/operator/sha384.rb +1 -1
- data/lib/sparql/algebra/operator/sha512.rb +1 -1
- data/lib/sparql/algebra/operator/slice.rb +2 -12
- data/lib/sparql/algebra/operator/str.rb +1 -1
- data/lib/sparql/algebra/operator/strafter.rb +2 -2
- data/lib/sparql/algebra/operator/strbefore.rb +2 -2
- data/lib/sparql/algebra/operator/strdt.rb +2 -2
- data/lib/sparql/algebra/operator/strends.rb +2 -2
- data/lib/sparql/algebra/operator/strlang.rb +2 -2
- data/lib/sparql/algebra/operator/strlen.rb +2 -2
- data/lib/sparql/algebra/operator/strstarts.rb +2 -2
- data/lib/sparql/algebra/operator/struuid.rb +1 -1
- data/lib/sparql/algebra/operator/substr.rb +3 -3
- data/lib/sparql/algebra/operator/subtract.rb +1 -1
- data/lib/sparql/algebra/operator/sum.rb +1 -1
- data/lib/sparql/algebra/operator/table.rb +2 -2
- data/lib/sparql/algebra/operator/timezone.rb +1 -1
- data/lib/sparql/algebra/operator/tz.rb +1 -1
- data/lib/sparql/algebra/operator/ucase.rb +2 -2
- data/lib/sparql/algebra/operator/union.rb +7 -6
- data/lib/sparql/algebra/operator/update.rb +2 -2
- data/lib/sparql/algebra/operator/using.rb +2 -2
- data/lib/sparql/algebra/operator/uuid.rb +1 -1
- data/lib/sparql/algebra/operator/with.rb +2 -2
- data/lib/sparql/algebra/operator/year.rb +1 -1
- data/lib/sparql/algebra/query.rb +1 -1
- data/lib/sparql/algebra/update.rb +1 -1
- data/lib/sparql/algebra/version.rb +1 -1
- data/lib/sparql/extensions.rb +1 -1
- data/lib/sparql/grammar.rb +104 -3
- data/lib/sparql/grammar/meta.rb +1372 -333
- data/lib/sparql/grammar/parser11.rb +27 -6
- data/lib/sparql/grammar/terminals11.rb +1 -0
- data/lib/sparql/results.rb +60 -41
- data/lib/sparql/version.rb +1 -1
- metadata +14 -8
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
|
|
6
6
|
# @example
|
7
7
|
# (abs ?x)
|
8
8
|
#
|
9
|
-
# @see
|
10
|
-
# @see
|
9
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-abs
|
10
|
+
# @see https://www.w3.org/TR/xpath-functions/#func-abs
|
11
11
|
class Abs < Operator::Unary
|
12
12
|
include Evaluatable
|
13
13
|
|
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
|
|
9
9
|
# @example
|
10
10
|
# (add default <a>)
|
11
11
|
#
|
12
|
-
# @see
|
12
|
+
# @see https://www.w3.org/TR/sparql11-update/#add
|
13
13
|
class Add < 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
|
31
|
+
# @see https://www.w3.org/TR/sparql11-update/
|
32
32
|
def execute(queryable, **options)
|
33
33
|
debug(options) {"Add"}
|
34
34
|
silent = operands.first == :silent
|
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
|
|
10
10
|
# @example
|
11
11
|
# (alt a b)
|
12
12
|
#
|
13
|
-
# @see
|
13
|
+
# @see https://www.w3.org/TR/sparql11-query/#defn_evalPP_alternative
|
14
14
|
class Alt < Operator::Binary
|
15
15
|
include Query
|
16
16
|
|
@@ -32,7 +32,7 @@ module SPARQL; module Algebra
|
|
32
32
|
# each matching solution
|
33
33
|
# @yieldparam [RDF::Query::Solution] solution
|
34
34
|
# @yieldreturn [void] ignored
|
35
|
-
# @see
|
35
|
+
# @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
36
36
|
def execute(queryable, **options, &block)
|
37
37
|
subject, object = options[:subject], options[:object]
|
38
38
|
debug(options) {"Alt #{[subject, operands, object].to_sse}"}
|
@@ -7,8 +7,8 @@ module SPARQL; module Algebra
|
|
7
7
|
# (&& ?x ?y)
|
8
8
|
# (and ?x ?y)
|
9
9
|
#
|
10
|
-
# @see
|
11
|
-
# @see
|
10
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-logical-and
|
11
|
+
# @see https://www.w3.org/TR/sparql11-query/#evaluation
|
12
12
|
class And < Operator::Binary
|
13
13
|
include Evaluatable
|
14
14
|
|
@@ -50,7 +50,7 @@ module SPARQL; module Algebra
|
|
50
50
|
right = nil
|
51
51
|
end
|
52
52
|
|
53
|
-
# From
|
53
|
+
# From https://www.w3.org/TR/sparql11-query/#evaluation
|
54
54
|
# A logical-and that encounters an error on only one branch will return an error if the other branch is
|
55
55
|
# TRUE and FALSE if the other branch is FALSE.
|
56
56
|
case
|
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
|
|
9
9
|
# (order ((asc ?name))
|
10
10
|
# (bgp (triple ?x foaf:name ?name)))))
|
11
11
|
#
|
12
|
-
# @see
|
12
|
+
# @see https://www.w3.org/TR/sparql11-query/#modOrderBy
|
13
13
|
class Asc < Operator::Unary
|
14
14
|
include Evaluatable
|
15
15
|
|
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
|
|
10
10
|
# (ask
|
11
11
|
# (bgp (triple :x :p ?x))))
|
12
12
|
#
|
13
|
-
# @see
|
13
|
+
# @see https://www.w3.org/TR/sparql11-query/#ask
|
14
14
|
class Ask < Operator::Unary
|
15
15
|
include Query
|
16
16
|
|
@@ -28,23 +28,13 @@ module SPARQL; module Algebra
|
|
28
28
|
# @yieldparam [RDF::Query::Solution] solution
|
29
29
|
# @yieldreturn [void] ignored
|
30
30
|
# @return [RDF::Literal::Boolean]\
|
31
|
-
# @see
|
31
|
+
# @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
32
32
|
def execute(queryable, **options)
|
33
33
|
debug(options) {"Ask #{operands.first}"}
|
34
34
|
res = boolean(!queryable.query(operands.last, depth: options[:depth].to_i + 1, **options).empty?)
|
35
35
|
yield res if block_given?
|
36
36
|
res
|
37
37
|
end
|
38
|
-
|
39
|
-
##
|
40
|
-
# Returns an optimized version of this query.
|
41
|
-
#
|
42
|
-
# Return optimized query
|
43
|
-
#
|
44
|
-
# @return [Union, RDF::Query] `self`
|
45
|
-
def optimize
|
46
|
-
operands = operands.map(&:optimize)
|
47
|
-
end
|
48
38
|
|
49
39
|
# Query results in a boolean result (e.g., ASK)
|
50
40
|
# @return [Boolean]
|
@@ -10,7 +10,7 @@ module SPARQL; module Algebra
|
|
10
10
|
# (group () ((??.0 (avg ?o)))
|
11
11
|
# (bgp (triple ?s :dec ?o))))))
|
12
12
|
#
|
13
|
-
# @see
|
13
|
+
# @see https://www.w3.org/TR/sparql11-query/#defn_aggAvg
|
14
14
|
class Avg < Operator
|
15
15
|
include Aggregate
|
16
16
|
|
@@ -7,7 +7,7 @@ module SPARQL; module Algebra
|
|
7
7
|
# (base <http://example.org/>
|
8
8
|
# (bgp (triple <a> <b> 123.0)))
|
9
9
|
#
|
10
|
-
# @see
|
10
|
+
# @see https://www.w3.org/TR/sparql11-query/#QSynIRI
|
11
11
|
class Base < Binary
|
12
12
|
include Query
|
13
13
|
|
@@ -28,21 +28,21 @@ module SPARQL; module Algebra
|
|
28
28
|
# @yieldreturn [void] ignored
|
29
29
|
# @return [RDF::Queryable, RDF::Query::Solutions]
|
30
30
|
# the resulting solution sequence
|
31
|
-
# @see
|
31
|
+
# @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
32
32
|
def execute(queryable, **options, &block)
|
33
33
|
debug(options) {"Base #{operands.first}"}
|
34
34
|
Operator.base_uri = operands.first
|
35
35
|
queryable.query(operands.last, depth: options[:depth].to_i + 1, **options, &block)
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
##
|
39
|
-
# Returns an optimized version of this query.
|
40
|
-
#
|
41
39
|
# Return optimized query
|
42
40
|
#
|
43
|
-
# @return [
|
44
|
-
|
45
|
-
|
41
|
+
# @return [Base] a copy of `self`
|
42
|
+
# @see SPARQL::Algebra::Expression#optimize
|
43
|
+
def optimize(**options)
|
44
|
+
Operator.base_uri = operands.first
|
45
|
+
operands.last.optimize(**options)
|
46
46
|
end
|
47
47
|
|
48
48
|
# Query results in a boolean result (e.g., ASK)
|
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
|
|
9
9
|
# (prefix ((: <http://example/>))
|
10
10
|
# (bgp (triple ?s ?p ?o)))
|
11
11
|
#
|
12
|
-
# @see
|
12
|
+
# @see https://www.w3.org/TR/sparql11-query/#sparqlAlgebra
|
13
13
|
class BGP < Operator
|
14
14
|
NAME = [:bgp]
|
15
15
|
##
|
@@ -16,7 +16,7 @@ module SPARQL; module Algebra
|
|
16
16
|
# (triple ?b :str ?s2)
|
17
17
|
# )))))
|
18
18
|
#
|
19
|
-
# @see
|
19
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-bnode
|
20
20
|
class BNode < Operator::Unary
|
21
21
|
include Evaluatable
|
22
22
|
|
@@ -82,7 +82,7 @@ module SPARQL; module Algebra
|
|
82
82
|
# Remove the optional argument.
|
83
83
|
#
|
84
84
|
# @return [Array] `self`
|
85
|
-
# @see
|
85
|
+
# @see https://openjena.org/wiki/SSE
|
86
86
|
def to_sxp_bin
|
87
87
|
[NAME] + operands.reject {|o| o == false}
|
88
88
|
end
|
@@ -11,7 +11,7 @@ module SPARQL; module Algebra
|
|
11
11
|
# (bgp (triple ?a :b ?c))
|
12
12
|
# (bgp (triple ?c :d ?e))))))
|
13
13
|
#
|
14
|
-
# @see
|
14
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-bound
|
15
15
|
class Bound < Operator::Unary
|
16
16
|
include Evaluatable
|
17
17
|
|
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
|
|
6
6
|
# @example
|
7
7
|
# (ceil ?x)
|
8
8
|
#
|
9
|
-
# @see
|
10
|
-
# @see
|
9
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-ceil
|
10
|
+
# @see https://www.w3.org/TR/xpath-functions/#func-ceil
|
11
11
|
class Ceil < Operator::Unary
|
12
12
|
include Evaluatable
|
13
13
|
|
@@ -9,7 +9,7 @@ module SPARQL; module Algebra
|
|
9
9
|
# @example
|
10
10
|
# (clear silent default)
|
11
11
|
#
|
12
|
-
# @see
|
12
|
+
# @see https://www.w3.org/TR/sparql11-update/#clear
|
13
13
|
class Clear < 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
|
31
|
+
# @see https://www.w3.org/TR/sparql11-update/
|
32
32
|
def execute(queryable, **options)
|
33
33
|
debug(options) {"Clear"}
|
34
34
|
silent = operands.first == :silent
|
@@ -15,7 +15,7 @@ module SPARQL; module Algebra
|
|
15
15
|
# (bgp (triple ?s :p ?o))
|
16
16
|
# (bgp (triple ?s :q ?x))))))
|
17
17
|
#
|
18
|
-
# @see
|
18
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-coalesce
|
19
19
|
class Coalesce < Operator
|
20
20
|
include Evaluatable
|
21
21
|
|
@@ -50,16 +50,6 @@ module SPARQL; module Algebra
|
|
50
50
|
end
|
51
51
|
raise TypeError, "None of the operands evaluated"
|
52
52
|
end
|
53
|
-
|
54
|
-
##
|
55
|
-
# Returns an optimized version of this query.
|
56
|
-
#
|
57
|
-
# Return optimized query
|
58
|
-
#
|
59
|
-
# @return [Union, RDF::Query] `self`
|
60
|
-
def optimize
|
61
|
-
operands = operands.map(&:optimize)
|
62
|
-
end
|
63
53
|
end # Coalesce
|
64
54
|
end # Operator
|
65
55
|
end; end # SPARQL::Algebra
|
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
|
|
6
6
|
# @example
|
7
7
|
# (<=> ?x ?y)
|
8
8
|
#
|
9
|
-
# @see
|
10
|
-
# @see
|
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
|
37
|
-
# @see
|
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
|
41
|
-
# @see
|
42
|
-
# @see
|
43
|
-
# @see
|
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)
|
@@ -8,8 +8,8 @@ module SPARQL; module Algebra
|
|
8
8
|
# @example
|
9
9
|
# (concat ?a ?b ...)
|
10
10
|
#
|
11
|
-
# @see
|
12
|
-
# @see
|
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
|
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
|
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
|
@@ -74,16 +74,6 @@ module SPARQL; module Algebra
|
|
74
74
|
graph.each(&block) if block_given?
|
75
75
|
graph
|
76
76
|
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
77
|
|
88
78
|
# Query results statements (e.g., CONSTRUCT, DESCRIBE, CREATE)
|
89
79
|
# @return [Boolean]
|
@@ -6,8 +6,8 @@ module SPARQL; module Algebra
|
|
6
6
|
# @example
|
7
7
|
# (contains ?x ?y)
|
8
8
|
#
|
9
|
-
# @see
|
10
|
-
# @see
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 = []
|
@@ -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
|
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
|
12
|
+
# @see https://www.w3.org/TR/sparql11-query/#func-day
|
13
13
|
class Day < Operator::Unary
|
14
14
|
include Evaluatable
|
15
15
|
|