sparql 3.1.8 → 3.2.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 +29 -22
- data/VERSION +1 -1
- data/bin/sparql +13 -4
- data/lib/sparql/algebra/extensions.rb +93 -33
- data/lib/sparql/algebra/operator/abs.rb +22 -2
- data/lib/sparql/algebra/operator/add.rb +21 -2
- data/lib/sparql/algebra/operator/alt.rb +26 -2
- data/lib/sparql/algebra/operator/and.rb +25 -3
- data/lib/sparql/algebra/operator/asc.rb +20 -1
- data/lib/sparql/algebra/operator/ask.rb +17 -1
- data/lib/sparql/algebra/operator/avg.rb +17 -1
- data/lib/sparql/algebra/operator/base.rb +18 -1
- data/lib/sparql/algebra/operator/bgp.rb +5 -1
- data/lib/sparql/algebra/operator/bnode.rb +33 -10
- data/lib/sparql/algebra/operator/bound.rb +22 -1
- data/lib/sparql/algebra/operator/ceil.rb +25 -2
- data/lib/sparql/algebra/operator/clear.rb +16 -2
- data/lib/sparql/algebra/operator/coalesce.rb +33 -11
- data/lib/sparql/algebra/operator/compare.rb +9 -0
- data/lib/sparql/algebra/operator/concat.rb +26 -2
- data/lib/sparql/algebra/operator/construct.rb +29 -6
- data/lib/sparql/algebra/operator/contains.rb +24 -2
- data/lib/sparql/algebra/operator/copy.rb +19 -2
- data/lib/sparql/algebra/operator/count.rb +17 -1
- data/lib/sparql/algebra/operator/create.rb +19 -2
- data/lib/sparql/algebra/operator/dataset.rb +17 -0
- data/lib/sparql/algebra/operator/datatype.rb +25 -6
- data/lib/sparql/algebra/operator/day.rb +23 -5
- data/lib/sparql/algebra/operator/delete.rb +27 -2
- data/lib/sparql/algebra/operator/delete_data.rb +23 -2
- data/lib/sparql/algebra/operator/delete_where.rb +24 -2
- data/lib/sparql/algebra/operator/desc.rb +20 -1
- data/lib/sparql/algebra/operator/describe.rb +27 -4
- data/lib/sparql/algebra/operator/distinct.rb +18 -1
- data/lib/sparql/algebra/operator/divide.rb +26 -2
- data/lib/sparql/algebra/operator/drop.rb +17 -2
- data/lib/sparql/algebra/operator/encode_for_uri.rb +24 -2
- data/lib/sparql/algebra/operator/equal.rb +12 -2
- data/lib/sparql/algebra/operator/exists.rb +28 -4
- data/lib/sparql/algebra/operator/exprlist.rb +12 -1
- data/lib/sparql/algebra/operator/extend.rb +31 -6
- data/lib/sparql/algebra/operator/filter.rb +27 -5
- data/lib/sparql/algebra/operator/floor.rb +25 -2
- data/lib/sparql/algebra/operator/graph.rb +13 -0
- data/lib/sparql/algebra/operator/greater_than.rb +12 -3
- data/lib/sparql/algebra/operator/greater_than_or_equal.rb +12 -2
- data/lib/sparql/algebra/operator/group.rb +34 -8
- data/lib/sparql/algebra/operator/group_concat.rb +19 -7
- data/lib/sparql/algebra/operator/hours.rb +23 -5
- data/lib/sparql/algebra/operator/if.rb +21 -4
- data/lib/sparql/algebra/operator/in.rb +18 -1
- data/lib/sparql/algebra/operator/insert.rb +22 -2
- data/lib/sparql/algebra/operator/insert_data.rb +23 -2
- data/lib/sparql/algebra/operator/iri.rb +21 -4
- data/lib/sparql/algebra/operator/is_blank.rb +19 -1
- data/lib/sparql/algebra/operator/is_iri.rb +19 -1
- data/lib/sparql/algebra/operator/is_literal.rb +19 -1
- data/lib/sparql/algebra/operator/is_numeric.rb +21 -3
- data/lib/sparql/algebra/operator/is_triple.rb +32 -0
- data/lib/sparql/algebra/operator/join.rb +22 -1
- data/lib/sparql/algebra/operator/lang.rb +25 -0
- data/lib/sparql/algebra/operator/lang_matches.rb +22 -1
- data/lib/sparql/algebra/operator/lcase.rb +23 -2
- data/lib/sparql/algebra/operator/left_join.rb +29 -1
- data/lib/sparql/algebra/operator/less_than.rb +12 -3
- data/lib/sparql/algebra/operator/less_than_or_equal.rb +12 -2
- data/lib/sparql/algebra/operator/load.rb +25 -2
- data/lib/sparql/algebra/operator/max.rb +17 -1
- data/lib/sparql/algebra/operator/md5.rb +22 -5
- data/lib/sparql/algebra/operator/min.rb +18 -2
- data/lib/sparql/algebra/operator/minus.rb +25 -7
- data/lib/sparql/algebra/operator/minutes.rb +23 -5
- data/lib/sparql/algebra/operator/modify.rb +41 -5
- data/lib/sparql/algebra/operator/month.rb +23 -5
- data/lib/sparql/algebra/operator/move.rb +20 -2
- data/lib/sparql/algebra/operator/multiply.rb +26 -3
- data/lib/sparql/algebra/operator/negate.rb +23 -3
- data/lib/sparql/algebra/operator/not.rb +24 -3
- data/lib/sparql/algebra/operator/not_equal.rb +13 -0
- data/lib/sparql/algebra/operator/notexists.rb +30 -6
- data/lib/sparql/algebra/operator/notin.rb +20 -3
- data/lib/sparql/algebra/operator/notoneof.rb +12 -2
- data/lib/sparql/algebra/operator/now.rb +24 -5
- data/lib/sparql/algebra/operator/object.rb +32 -0
- data/lib/sparql/algebra/operator/or.rb +26 -3
- data/lib/sparql/algebra/operator/order.rb +20 -1
- data/lib/sparql/algebra/operator/path.rb +29 -2
- data/lib/sparql/algebra/operator/path_opt.rb +21 -2
- data/lib/sparql/algebra/operator/path_plus.rb +21 -2
- data/lib/sparql/algebra/operator/path_star.rb +20 -2
- data/lib/sparql/algebra/operator/plus.rb +42 -3
- data/lib/sparql/algebra/operator/predicate.rb +32 -0
- data/lib/sparql/algebra/operator/prefix.rb +24 -3
- data/lib/sparql/algebra/operator/project.rb +51 -5
- data/lib/sparql/algebra/operator/rand.rb +30 -2
- data/lib/sparql/algebra/operator/reduced.rb +18 -1
- data/lib/sparql/algebra/operator/regex.rb +26 -18
- data/lib/sparql/algebra/operator/replace.rb +26 -6
- data/lib/sparql/algebra/operator/reverse.rb +20 -2
- data/lib/sparql/algebra/operator/round.rb +25 -2
- data/lib/sparql/algebra/operator/same_term.rb +24 -6
- data/lib/sparql/algebra/operator/sample.rb +30 -8
- data/lib/sparql/algebra/operator/seconds.rb +23 -5
- data/lib/sparql/algebra/operator/seq.rb +20 -2
- data/lib/sparql/algebra/operator/sequence.rb +0 -10
- data/lib/sparql/algebra/operator/sha1.rb +18 -1
- data/lib/sparql/algebra/operator/sha256.rb +18 -1
- data/lib/sparql/algebra/operator/sha384.rb +18 -1
- data/lib/sparql/algebra/operator/sha512.rb +18 -1
- data/lib/sparql/algebra/operator/slice.rb +27 -5
- data/lib/sparql/algebra/operator/str.rb +21 -1
- data/lib/sparql/algebra/operator/strafter.rb +25 -2
- data/lib/sparql/algebra/operator/strbefore.rb +25 -2
- data/lib/sparql/algebra/operator/strdt.rb +22 -1
- data/lib/sparql/algebra/operator/strends.rb +25 -3
- data/lib/sparql/algebra/operator/strlang.rb +25 -6
- data/lib/sparql/algebra/operator/strlen.rb +23 -2
- data/lib/sparql/algebra/operator/strstarts.rb +25 -2
- data/lib/sparql/algebra/operator/struuid.rb +29 -9
- data/lib/sparql/algebra/operator/subject.rb +32 -0
- data/lib/sparql/algebra/operator/substr.rb +23 -2
- data/lib/sparql/algebra/operator/subtract.rb +28 -2
- data/lib/sparql/algebra/operator/sum.rb +17 -1
- data/lib/sparql/algebra/operator/table.rb +42 -4
- data/lib/sparql/algebra/operator/timezone.rb +23 -5
- data/lib/sparql/algebra/operator/tz.rb +22 -5
- data/lib/sparql/algebra/operator/ucase.rb +23 -2
- data/lib/sparql/algebra/operator/union.rb +29 -6
- data/lib/sparql/algebra/operator/update.rb +25 -4
- data/lib/sparql/algebra/operator/using.rb +32 -2
- data/lib/sparql/algebra/operator/uuid.rb +27 -8
- data/lib/sparql/algebra/operator/with.rb +38 -4
- data/lib/sparql/algebra/operator/year.rb +23 -5
- data/lib/sparql/algebra/operator.rb +99 -6
- data/lib/sparql/algebra/sxp_extensions.rb +3 -3
- data/lib/sparql/grammar/parser11.rb +4 -4
- metadata +22 -35
- data/lib/sparql/algebra/operator/triple.rb +0 -27
@@ -5,14 +5,24 @@ module SPARQL; module Algebra
|
|
5
5
|
##
|
6
6
|
# The SPARQL `uuid` function.
|
7
7
|
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
8
|
+
# [121] BuiltInCall ::= ... | 'UUID' NIL
|
9
|
+
#
|
10
|
+
# @example SPARQL Grammar
|
11
|
+
# PREFIX : <http://example.org/>
|
12
|
+
# PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
13
|
+
# ASK {
|
14
|
+
# BIND(UUID() AS ?u1)
|
15
|
+
# BIND(UUID() AS ?u2)
|
16
|
+
# FILTER(?u1 != ?u2)
|
17
|
+
# }
|
18
|
+
#
|
19
|
+
# @example SSE
|
20
|
+
# (prefix
|
21
|
+
# ((: <http://example.org/>) (xsd: <http://www.w3.org/2001/XMLSchema#>))
|
22
|
+
# (ask
|
23
|
+
# (filter (!= ?u1 ?u2)
|
24
|
+
# (extend ((?u1 (uuid)) (?u2 (uuid)))
|
25
|
+
# (bgp)))))
|
16
26
|
#
|
17
27
|
# @see https://www.w3.org/TR/sparql11-query/#func-uuid
|
18
28
|
class UUID < Operator::Nullary
|
@@ -27,6 +37,15 @@ module SPARQL; module Algebra
|
|
27
37
|
def apply(**options)
|
28
38
|
RDF::URI("urn:uuid:#{SecureRandom.uuid}")
|
29
39
|
end
|
40
|
+
|
41
|
+
##
|
42
|
+
#
|
43
|
+
# Returns a partial SPARQL grammar for this operator.
|
44
|
+
#
|
45
|
+
# @return [String]
|
46
|
+
def to_sparql(**options)
|
47
|
+
"UUID(" + operands.to_sparql(delimiter: ', ', **options) + ")"
|
48
|
+
end
|
30
49
|
end # UUID
|
31
50
|
end # Operator
|
32
51
|
end; end # SPARQL::Algebra
|
@@ -6,10 +6,21 @@ module SPARQL; module Algebra
|
|
6
6
|
#
|
7
7
|
# The WITH clause provides a convenience for when an operation primarily refers to a single graph.
|
8
8
|
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
9
|
+
# [41] Modify ::= ( 'WITH' iri )? ( DeleteClause InsertClause? | InsertClause ) UsingClause* 'WHERE' GroupGraphPattern
|
10
|
+
#
|
11
|
+
# @example SPARQL Grammar
|
12
|
+
# PREFIX : <http://example/>
|
13
|
+
# WITH :g
|
14
|
+
# DELETE { <base:s> ?p ?o . }
|
15
|
+
# WHERE { ?s ?p ?o }
|
16
|
+
#
|
17
|
+
# @example SSE
|
18
|
+
# (prefix ((: <http://example/>))
|
19
|
+
# (update
|
20
|
+
# (modify
|
21
|
+
# (with :g
|
22
|
+
# (bgp (triple ?s ?p ?o))
|
23
|
+
# (delete ((triple <base:s> ?p ?o)))))))
|
13
24
|
#
|
14
25
|
# @see https://www.w3.org/TR/sparql11-update/#deleteInsert
|
15
26
|
class With < Operator
|
@@ -67,6 +78,29 @@ module SPARQL; module Algebra
|
|
67
78
|
end
|
68
79
|
end
|
69
80
|
end
|
81
|
+
|
82
|
+
##
|
83
|
+
#
|
84
|
+
# Returns a partial SPARQL grammar for this operator.
|
85
|
+
#
|
86
|
+
# @return [String]
|
87
|
+
def to_sparql(**options)
|
88
|
+
with, where, ops = operands
|
89
|
+
str = "WITH #{with.to_sparql(**options)}\n"
|
90
|
+
|
91
|
+
# The content of the WHERE clause, may be USING
|
92
|
+
content = where.to_sparql(top_level: false, **options)
|
93
|
+
|
94
|
+
# DELETE | INSERT | DELETE INSERT
|
95
|
+
str << ops.to_sparql(top_level: false, delimiter: "\n", **options) + "\n"
|
96
|
+
|
97
|
+
# Append the WHERE or USING clause
|
98
|
+
str << if where.is_a?(Using)
|
99
|
+
content
|
100
|
+
else
|
101
|
+
Operator.to_sparql(content, project: nil, **options)
|
102
|
+
end
|
103
|
+
end
|
70
104
|
end # With
|
71
105
|
end # Operator
|
72
106
|
end; end # SPARQL::Algebra
|
@@ -5,11 +5,20 @@ module SPARQL; module Algebra
|
|
5
5
|
#
|
6
6
|
# Returns the year part of `arg` as an integer.
|
7
7
|
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
8
|
+
# [121] BuiltInCall ::= ... | 'YEAR' '(' Expression ')'
|
9
|
+
#
|
10
|
+
# @example SPARQL Grammar
|
11
|
+
# PREFIX : <http://example.org/>
|
12
|
+
# SELECT ?s (YEAR(?date) AS ?x) WHERE {
|
13
|
+
# ?s :date ?date
|
14
|
+
# }
|
15
|
+
#
|
16
|
+
# @example SSE
|
17
|
+
# (prefix
|
18
|
+
# ((: <http://example.org/>))
|
19
|
+
# (project (?s ?x)
|
20
|
+
# (extend ((?x (year ?date)))
|
21
|
+
# (bgp (triple ?s :date ?date)))))
|
13
22
|
#
|
14
23
|
# @see https://www.w3.org/TR/sparql11-query/#func-year
|
15
24
|
class Year < Operator::Unary
|
@@ -28,6 +37,15 @@ module SPARQL; module Algebra
|
|
28
37
|
raise TypeError, "expected an RDF::Literal::DateTime, but got #{operand.inspect}" unless operand.is_a?(RDF::Literal::DateTime)
|
29
38
|
RDF::Literal(operand.object.year)
|
30
39
|
end
|
40
|
+
|
41
|
+
##
|
42
|
+
#
|
43
|
+
# Returns a partial SPARQL grammar for this operator.
|
44
|
+
#
|
45
|
+
# @return [String]
|
46
|
+
def to_sparql(**options)
|
47
|
+
"YEAR(#{operands.last.to_sparql(**options)})"
|
48
|
+
end
|
31
49
|
end # Year
|
32
50
|
end # Operator
|
33
51
|
end; end # SPARQL::Algebra
|
@@ -49,6 +49,7 @@ module SPARQL; module Algebra
|
|
49
49
|
autoload :Sum, 'sparql/algebra/operator/sum'
|
50
50
|
autoload :SHA1, 'sparql/algebra/operator/sha1'
|
51
51
|
autoload :SHA256, 'sparql/algebra/operator/sha256'
|
52
|
+
autoload :SHA384, 'sparql/algebra/operator/sha384'
|
52
53
|
autoload :SHA512, 'sparql/algebra/operator/sha512'
|
53
54
|
autoload :Str, 'sparql/algebra/operator/str'
|
54
55
|
autoload :Timezone, 'sparql/algebra/operator/timezone'
|
@@ -171,7 +172,6 @@ module SPARQL; module Algebra
|
|
171
172
|
when :> then GreaterThan
|
172
173
|
when :>= then GreaterThanOrEqual
|
173
174
|
when :abs then Abs
|
174
|
-
when :add then Add
|
175
175
|
when :alt then Alt
|
176
176
|
when :and, :'&&' then And
|
177
177
|
when :avg then Avg
|
@@ -204,7 +204,6 @@ module SPARQL; module Algebra
|
|
204
204
|
when :md5 then MD5
|
205
205
|
when :max then Max
|
206
206
|
when :min then Min
|
207
|
-
when :minus then Minus
|
208
207
|
when :minutes then Minutes
|
209
208
|
when :month then Month
|
210
209
|
when :multiply then Multiply
|
@@ -231,6 +230,7 @@ module SPARQL; module Algebra
|
|
231
230
|
when :sequence then Sequence
|
232
231
|
when :sha1 then SHA1
|
233
232
|
when :sha256 then SHA256
|
233
|
+
when :sha384 then SHA384
|
234
234
|
when :sha512 then SHA512
|
235
235
|
when :str then Str
|
236
236
|
when :strafter then StrAfter
|
@@ -278,7 +278,6 @@ module SPARQL; module Algebra
|
|
278
278
|
when :reduced then Reduced
|
279
279
|
when :slice then Slice
|
280
280
|
when :table then Table
|
281
|
-
when :triple then RDF::Query::Pattern
|
282
281
|
when :union then Union
|
283
282
|
|
284
283
|
# Update forms
|
@@ -301,7 +300,7 @@ module SPARQL; module Algebra
|
|
301
300
|
|
302
301
|
# RDF-star
|
303
302
|
when :istriple then IsTriple
|
304
|
-
when :triple then
|
303
|
+
when :triple then RDF::Query::Pattern
|
305
304
|
when :subject then Subject
|
306
305
|
when :predicate then Predicate
|
307
306
|
when :object then Object
|
@@ -333,6 +332,89 @@ module SPARQL; module Algebra
|
|
333
332
|
self.const_get(:ARITY)
|
334
333
|
end
|
335
334
|
|
335
|
+
##
|
336
|
+
# Generate a top-level Grammar, using collected options
|
337
|
+
#
|
338
|
+
# @param [String] content
|
339
|
+
# @param [Hash{Symbol => Operator}] extensions
|
340
|
+
# Variable bindings
|
341
|
+
# @param [Operator] distinct (false)
|
342
|
+
# @param [Array<Operator>] filter_ops ([])
|
343
|
+
# Filter Operations
|
344
|
+
# @param [Integer] limit (nil)
|
345
|
+
# @param [Array<Operator>] group_ops ([])
|
346
|
+
# @param [Integer] offset (nil)
|
347
|
+
# @param [Array<Operator>] order_ops ([])
|
348
|
+
# Order Operations
|
349
|
+
# @param [Array<Symbol,Operator>] project (%i(*))
|
350
|
+
# Terms to project
|
351
|
+
# @param [Operator] reduced (false)
|
352
|
+
# @param [Hash{Symbol => Object}] options
|
353
|
+
# @return [String]
|
354
|
+
def self.to_sparql(content,
|
355
|
+
distinct: false,
|
356
|
+
extensions: {},
|
357
|
+
filter_ops: [],
|
358
|
+
group_ops: [],
|
359
|
+
limit: nil,
|
360
|
+
offset: nil,
|
361
|
+
order_ops: [],
|
362
|
+
project: %i(*),
|
363
|
+
reduced: false,
|
364
|
+
**options)
|
365
|
+
str = ""
|
366
|
+
|
367
|
+
# Projections
|
368
|
+
if project
|
369
|
+
str << "SELECT "
|
370
|
+
str << "DISTINCT " if distinct
|
371
|
+
str << "REDUCED " if reduced
|
372
|
+
|
373
|
+
str << project.map do |p|
|
374
|
+
if expr = extensions.delete(p)
|
375
|
+
# Replace projected variables with their extension, if any
|
376
|
+
"(" + [expr, :AS, p].to_sparql(**options) + ")"
|
377
|
+
else
|
378
|
+
p.to_sparql(**options)
|
379
|
+
end
|
380
|
+
end.join(" ") + "\n"
|
381
|
+
end
|
382
|
+
|
383
|
+
# Extensions
|
384
|
+
extensions.each do |as, expression|
|
385
|
+
content << "\nBIND (#{expression.to_sparql(**options)} AS #{as.to_sparql(**options)}) ."
|
386
|
+
end
|
387
|
+
|
388
|
+
# Filters
|
389
|
+
filter_ops.each do |f|
|
390
|
+
content << "\nFILTER #{f.to_sparql(**options)} ."
|
391
|
+
end
|
392
|
+
|
393
|
+
# Where clause
|
394
|
+
str << "WHERE {\n#{content}\n}\n"
|
395
|
+
|
396
|
+
# Group
|
397
|
+
unless group_ops.empty?
|
398
|
+
ops = group_ops.map do |o|
|
399
|
+
# Replace projected variables with their extension, if any
|
400
|
+
o.is_a?(Array) ?
|
401
|
+
"(" + [o.last, :AS, o.first].to_sparql(**options) + ")" :
|
402
|
+
o.to_sparql(**options)
|
403
|
+
end
|
404
|
+
str << "GROUP BY #{ops.join(' ')}\n"
|
405
|
+
end
|
406
|
+
|
407
|
+
# Order
|
408
|
+
unless order_ops.empty?
|
409
|
+
str << "ORDER BY #{order_ops.to_sparql(**options)}\n"
|
410
|
+
end
|
411
|
+
|
412
|
+
# Offset and Limmit
|
413
|
+
str << "OFFSET #{offset}\n" unless offset.nil?
|
414
|
+
str << "LIMIT #{limit}\n" unless limit.nil?
|
415
|
+
str
|
416
|
+
end
|
417
|
+
|
336
418
|
ARITY = -1 # variable arity
|
337
419
|
|
338
420
|
##
|
@@ -581,9 +663,20 @@ module SPARQL; module Algebra
|
|
581
663
|
##
|
582
664
|
# Returns an S-Expression (SXP) representation of this operator
|
583
665
|
#
|
666
|
+
# @param [Hash{Symbol => RDF::URI}] prefixes (nil)
|
667
|
+
# @param [RDF::URI] base_uri (nil)
|
668
|
+
# @return [String]
|
669
|
+
def to_sxp(prefixes: nil, base_uri: nil)
|
670
|
+
to_sxp_bin.to_sxp(prefixes: prefixes, base_uri: base_uri)
|
671
|
+
end
|
672
|
+
|
673
|
+
##
|
674
|
+
#
|
675
|
+
# Returns a partial SPARQL grammar for the operator.
|
676
|
+
#
|
584
677
|
# @return [String]
|
585
|
-
def
|
586
|
-
|
678
|
+
def to_sparql(**options)
|
679
|
+
raise NotImplementedError, "#{self.class}#to_sparql(#{operands.map(&:class).join(', ')})"
|
587
680
|
end
|
588
681
|
|
589
682
|
##
|
@@ -5,7 +5,7 @@ class NilClass
|
|
5
5
|
# Returns the SXP representation of this object.
|
6
6
|
#
|
7
7
|
# @return [String]
|
8
|
-
def to_sxp
|
8
|
+
def to_sxp(**options)
|
9
9
|
RDF.nil.to_s
|
10
10
|
end
|
11
11
|
end
|
@@ -17,7 +17,7 @@ class FalseClass
|
|
17
17
|
# Returns the SXP representation of this object.
|
18
18
|
#
|
19
19
|
# @return [String]
|
20
|
-
def to_sxp
|
20
|
+
def to_sxp(**options)
|
21
21
|
'false'
|
22
22
|
end
|
23
23
|
end
|
@@ -29,7 +29,7 @@ class TrueClass
|
|
29
29
|
# Returns the SXP representation of this object.
|
30
30
|
#
|
31
31
|
# @return [String]
|
32
|
-
def to_sxp
|
32
|
+
def to_sxp(**options)
|
33
33
|
'true'
|
34
34
|
end
|
35
35
|
end
|
@@ -1812,8 +1812,8 @@ module SPARQL::Grammar
|
|
1812
1812
|
value = RDF::URI(value)
|
1813
1813
|
if base_uri && value.relative?
|
1814
1814
|
u = base_uri.join(value)
|
1815
|
-
u.lexical = "<#{value}>" unless resolve_iris?
|
1816
|
-
u
|
1815
|
+
#u.lexical = "<#{value}>" unless resolve_iris?
|
1816
|
+
#u
|
1817
1817
|
else
|
1818
1818
|
value
|
1819
1819
|
end
|
@@ -1825,8 +1825,8 @@ module SPARQL::Grammar
|
|
1825
1825
|
debug {"ns(#{prefix.inspect}): base: '#{base}', suffix: '#{suffix}'"}
|
1826
1826
|
iri = iri(base + suffix.to_s)
|
1827
1827
|
# Cause URI to be serialized as a lexical
|
1828
|
-
iri.lexical = "#{prefix}:#{suffix}" unless resolve_iris?
|
1829
|
-
iri
|
1828
|
+
#iri.lexical = "#{prefix}:#{suffix}" unless resolve_iris?
|
1829
|
+
#iri
|
1830
1830
|
end
|
1831
1831
|
|
1832
1832
|
# Create a literal
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sparql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdf
|
@@ -17,48 +17,42 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '3.
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 3.1.14
|
20
|
+
version: '3.2'
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
25
|
- - "~>"
|
29
26
|
- !ruby/object:Gem::Version
|
30
|
-
version: '3.
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.1.14
|
27
|
+
version: '3.2'
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
29
|
name: rdf-aggregate-repo
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
37
31
|
requirements:
|
38
32
|
- - "~>"
|
39
33
|
- !ruby/object:Gem::Version
|
40
|
-
version: '3.
|
34
|
+
version: '3.2'
|
41
35
|
type: :runtime
|
42
36
|
prerelease: false
|
43
37
|
version_requirements: !ruby/object:Gem::Requirement
|
44
38
|
requirements:
|
45
39
|
- - "~>"
|
46
40
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
41
|
+
version: '3.2'
|
48
42
|
- !ruby/object:Gem::Dependency
|
49
43
|
name: ebnf
|
50
44
|
requirement: !ruby/object:Gem::Requirement
|
51
45
|
requirements:
|
52
46
|
- - "~>"
|
53
47
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2.
|
48
|
+
version: '2.2'
|
55
49
|
type: :runtime
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
52
|
requirements:
|
59
53
|
- - "~>"
|
60
54
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
55
|
+
version: '2.2'
|
62
56
|
- !ruby/object:Gem::Dependency
|
63
57
|
name: builder
|
64
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,76 +87,70 @@ dependencies:
|
|
93
87
|
requirements:
|
94
88
|
- - "~>"
|
95
89
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
90
|
+
version: '1.2'
|
97
91
|
type: :runtime
|
98
92
|
prerelease: false
|
99
93
|
version_requirements: !ruby/object:Gem::Requirement
|
100
94
|
requirements:
|
101
95
|
- - "~>"
|
102
96
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1.
|
97
|
+
version: '1.2'
|
104
98
|
- !ruby/object:Gem::Dependency
|
105
99
|
name: sparql-client
|
106
100
|
requirement: !ruby/object:Gem::Requirement
|
107
101
|
requirements:
|
108
102
|
- - "~>"
|
109
103
|
- !ruby/object:Gem::Version
|
110
|
-
version: '3.
|
111
|
-
- - ">="
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: 3.1.2
|
104
|
+
version: '3.2'
|
114
105
|
type: :runtime
|
115
106
|
prerelease: false
|
116
107
|
version_requirements: !ruby/object:Gem::Requirement
|
117
108
|
requirements:
|
118
109
|
- - "~>"
|
119
110
|
- !ruby/object:Gem::Version
|
120
|
-
version: '3.
|
121
|
-
- - ">="
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: 3.1.2
|
111
|
+
version: '3.2'
|
124
112
|
- !ruby/object:Gem::Dependency
|
125
113
|
name: rdf-xsd
|
126
114
|
requirement: !ruby/object:Gem::Requirement
|
127
115
|
requirements:
|
128
116
|
- - "~>"
|
129
117
|
- !ruby/object:Gem::Version
|
130
|
-
version: '3.
|
118
|
+
version: '3.2'
|
131
119
|
type: :runtime
|
132
120
|
prerelease: false
|
133
121
|
version_requirements: !ruby/object:Gem::Requirement
|
134
122
|
requirements:
|
135
123
|
- - "~>"
|
136
124
|
- !ruby/object:Gem::Version
|
137
|
-
version: '3.
|
125
|
+
version: '3.2'
|
138
126
|
- !ruby/object:Gem::Dependency
|
139
127
|
name: sinatra
|
140
128
|
requirement: !ruby/object:Gem::Requirement
|
141
129
|
requirements:
|
142
130
|
- - "~>"
|
143
131
|
- !ruby/object:Gem::Version
|
144
|
-
version: '2.
|
132
|
+
version: '2.1'
|
145
133
|
type: :development
|
146
134
|
prerelease: false
|
147
135
|
version_requirements: !ruby/object:Gem::Requirement
|
148
136
|
requirements:
|
149
137
|
- - "~>"
|
150
138
|
- !ruby/object:Gem::Version
|
151
|
-
version: '2.
|
139
|
+
version: '2.1'
|
152
140
|
- !ruby/object:Gem::Dependency
|
153
141
|
name: rack
|
154
142
|
requirement: !ruby/object:Gem::Requirement
|
155
143
|
requirements:
|
156
144
|
- - "~>"
|
157
145
|
- !ruby/object:Gem::Version
|
158
|
-
version: '2.
|
146
|
+
version: '2.2'
|
159
147
|
type: :development
|
160
148
|
prerelease: false
|
161
149
|
version_requirements: !ruby/object:Gem::Requirement
|
162
150
|
requirements:
|
163
151
|
- - "~>"
|
164
152
|
- !ruby/object:Gem::Version
|
165
|
-
version: '2.
|
153
|
+
version: '2.2'
|
166
154
|
- !ruby/object:Gem::Dependency
|
167
155
|
name: rack-test
|
168
156
|
requirement: !ruby/object:Gem::Requirement
|
@@ -183,14 +171,14 @@ dependencies:
|
|
183
171
|
requirements:
|
184
172
|
- - "~>"
|
185
173
|
- !ruby/object:Gem::Version
|
186
|
-
version: '3.
|
174
|
+
version: '3.2'
|
187
175
|
type: :development
|
188
176
|
prerelease: false
|
189
177
|
version_requirements: !ruby/object:Gem::Requirement
|
190
178
|
requirements:
|
191
179
|
- - "~>"
|
192
180
|
- !ruby/object:Gem::Version
|
193
|
-
version: '3.
|
181
|
+
version: '3.2'
|
194
182
|
- !ruby/object:Gem::Dependency
|
195
183
|
name: linkeddata
|
196
184
|
requirement: !ruby/object:Gem::Requirement
|
@@ -393,7 +381,6 @@ files:
|
|
393
381
|
- lib/sparql/algebra/operator/sum.rb
|
394
382
|
- lib/sparql/algebra/operator/table.rb
|
395
383
|
- lib/sparql/algebra/operator/timezone.rb
|
396
|
-
- lib/sparql/algebra/operator/triple.rb
|
397
384
|
- lib/sparql/algebra/operator/tz.rb
|
398
385
|
- lib/sparql/algebra/operator/ucase.rb
|
399
386
|
- lib/sparql/algebra/operator/union.rb
|
@@ -425,14 +412,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
425
412
|
requirements:
|
426
413
|
- - ">="
|
427
414
|
- !ruby/object:Gem::Version
|
428
|
-
version: '2.
|
415
|
+
version: '2.6'
|
429
416
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
430
417
|
requirements:
|
431
418
|
- - ">="
|
432
419
|
- !ruby/object:Gem::Version
|
433
420
|
version: '0'
|
434
421
|
requirements: []
|
435
|
-
rubygems_version: 3.
|
422
|
+
rubygems_version: 3.3.3
|
436
423
|
signing_key:
|
437
424
|
specification_version: 4
|
438
425
|
summary: SPARQL Query and Update library for Ruby.
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module SPARQL; module Algebra
|
2
|
-
class Operator
|
3
|
-
##
|
4
|
-
# The SPARQL `triple` operator.
|
5
|
-
#
|
6
|
-
# If the 3-tuple (term1, term2, term3) is an RDF-star triple, the function returns this triple. If the 3-tuple is not an RDF-star triple, then the function raises an error.
|
7
|
-
#
|
8
|
-
# @see https://w3c.github.io/rdf-star/rdf-star-cg-spec.html#triple
|
9
|
-
class Triple < Operator::Ternary
|
10
|
-
include Evaluatable
|
11
|
-
|
12
|
-
NAME = :triple
|
13
|
-
|
14
|
-
##
|
15
|
-
# @param [RDF::Term] subject
|
16
|
-
# @param [RDF::Term] predicate
|
17
|
-
# @param [RDF::Term] object
|
18
|
-
# @return [RDF::URI]
|
19
|
-
# @raise [TypeError] if the operand is not a simple literal
|
20
|
-
def apply(subject, predicate, object, **options)
|
21
|
-
triple = RDF::Statement(subject, predicate, object)
|
22
|
-
raise TypeError, "valid components, but got #{triple.inspect}" unless triple.valid?
|
23
|
-
triple
|
24
|
-
end
|
25
|
-
end # Triple
|
26
|
-
end # Operator
|
27
|
-
end; end # SPARQL::Algebra
|