sparql 2.2.2 → 3.0.0
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 +8 -8
- data/VERSION +1 -1
- data/lib/sparql/algebra/extensions.rb +11 -4
- data/lib/sparql/algebra/query.rb +1 -1
- data/lib/sparql/algebra/update.rb +1 -1
- data/lib/sparql/grammar/parser11.rb +18 -5
- metadata +24 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bff4a7c42287bdfe66a68fe8b9749ba03a28c79
|
4
|
+
data.tar.gz: 1922e7c06a6387ec9dd8b4797fb262f8d8b2b70d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12f7636ac3e765bebe48ffff2de8255bdc8465279576a4a7ceeea7c196412ee0410b115418646bcc329b9a187e204469438b2d0f01676d0c7e9332bae9797b9c
|
7
|
+
data.tar.gz: 0f7cba620c3a2548d1e7645b25713f1071135290f34ba583a2c70054700a9e0c1b5ea7d0176d3fc049f0e7dfc2c0e334108893fd2d491f5354c01a03821408d8
|
data/README.md
CHANGED
@@ -257,19 +257,19 @@ Full documentation available on [Rubydoc.info][SPARQL doc]
|
|
257
257
|
|
258
258
|
## Dependencies
|
259
259
|
|
260
|
-
* [Ruby](http://ruby-lang.org/) (>=
|
261
|
-
* [RDF.rb](http://rubygems.org/gems/rdf) (
|
262
|
-
* [SPARQL::Client](https://rubygems.org/gems/sparql-client) (
|
263
|
-
* [SXP](https://rubygems.org/gems/sxp) (
|
260
|
+
* [Ruby](http://ruby-lang.org/) (>= 2.2.2)
|
261
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (~> 3.0)
|
262
|
+
* [SPARQL::Client](https://rubygems.org/gems/sparql-client) (~> 3.0)
|
263
|
+
* [SXP](https://rubygems.org/gems/sxp) (~> 1.0)
|
264
264
|
* [Builder](https://rubygems.org/gems/builder) (>= 3.0.0)
|
265
265
|
* [JSON](https://rubygems.org/gems/json) (>= 1.8.2)
|
266
|
-
* Soft dependency on [Linked Data][] (>=
|
267
|
-
* Soft dependency on [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.
|
266
|
+
* Soft dependency on [Linked Data][] (>= 3.0)
|
267
|
+
* Soft dependency on [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.7)
|
268
268
|
Falls back to REXML for XML parsing Builder for XML serializing. Nokogiri is much more efficient
|
269
269
|
* Soft dependency on [Equivalent XML](https://rubygems.org/gems/equivalent-xml) (>= 0.3.0)
|
270
270
|
Equivalent XML performs more efficient comparisons of XML Literals when Nokogiri is included
|
271
|
-
* Soft dependency on [Rack][] (>=
|
272
|
-
* Soft dependency on [Sinatra][] (>=
|
271
|
+
* Soft dependency on [Rack][] (>= 2.0)
|
272
|
+
* Soft dependency on [Sinatra][] (>= 2.0)
|
273
273
|
|
274
274
|
## Installation
|
275
275
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.0
|
@@ -325,18 +325,25 @@ class RDF::Query
|
|
325
325
|
end
|
326
326
|
|
327
327
|
##
|
328
|
-
# Return the non-destinguished variables contained within patterns
|
328
|
+
# Return the non-destinguished variables contained within patterns and graph name
|
329
329
|
# @return [Array<RDF::Query::Variable>]
|
330
330
|
def ndvars
|
331
|
-
|
331
|
+
vars.reject(&:distinguished?)
|
332
332
|
end
|
333
333
|
|
334
334
|
##
|
335
|
-
# Return the variables contained within patterns
|
335
|
+
# Return the variables contained within patterns and graph name
|
336
336
|
# @return [Array<RDF::Query::Variable>]
|
337
337
|
def vars
|
338
|
-
|
338
|
+
variables.values
|
339
339
|
end
|
340
|
+
|
341
|
+
##
|
342
|
+
# Returns `true` if this is executable (i.e., contains a graph patterns), `false`
|
343
|
+
# otherwise.
|
344
|
+
#
|
345
|
+
# @return [Boolean] `true` or `false`
|
346
|
+
def executable?; true; end
|
340
347
|
end
|
341
348
|
|
342
349
|
class RDF::Query::Pattern
|
data/lib/sparql/algebra/query.rb
CHANGED
@@ -22,7 +22,7 @@ module SPARQL; module Algebra
|
|
22
22
|
#
|
23
23
|
# @return [Hash{Symbol => RDF::Query::Variable}]
|
24
24
|
def variables
|
25
|
-
operands.inject({}) {|hash, o| o.executable? ? hash.merge
|
25
|
+
operands.inject({}) {|hash, o| o.executable? ? hash.merge(o.variables) : hash}
|
26
26
|
end
|
27
27
|
|
28
28
|
##
|
@@ -22,7 +22,7 @@ module SPARQL; module Algebra
|
|
22
22
|
#
|
23
23
|
# @return [Hash{Symbol => RDF::Query::Variable}]
|
24
24
|
def variables
|
25
|
-
operands.inject({}) {|hash, o| o.executable? ? hash.merge
|
25
|
+
operands.inject({}) {|hash, o| o.executable? ? hash.merge(o.variables) : hash}
|
26
26
|
end
|
27
27
|
|
28
28
|
##
|
@@ -586,12 +586,20 @@ module SPARQL::Grammar
|
|
586
586
|
production(:GroupGraphPatternSub) do |input, data, callback|
|
587
587
|
debug("GroupGraphPatternSub") {"q #{data[:query].inspect}"}
|
588
588
|
|
589
|
-
res = data[:query].
|
589
|
+
res = case data[:query].length
|
590
|
+
when 0 then SPARQL::Algebra::Operator::BGP.new
|
591
|
+
when 1 then data[:query].first
|
592
|
+
when 2
|
593
|
+
SPARQL::Algebra::Operator::Join.new(*data[:query])
|
594
|
+
else
|
595
|
+
error(nil, "Expected 0-2 queryies, got #{data[:query].length}", production: :GroupGraphPatternSub)
|
596
|
+
SPARQL::Algebra::Operator::BGP.new
|
597
|
+
end
|
590
598
|
debug("GroupGraphPatternSub(pre-filter)") {"res: #{res.inspect}"}
|
591
599
|
|
592
600
|
if data[:filter]
|
593
601
|
expr, query = flatten_filter(data[:filter])
|
594
|
-
query = res
|
602
|
+
query = res
|
595
603
|
# query should be nil
|
596
604
|
res = SPARQL::Algebra::Operator::Filter.new(expr, query)
|
597
605
|
end
|
@@ -647,6 +655,11 @@ module SPARQL::Grammar
|
|
647
655
|
lhs.operands.first.concat(data[:extend])
|
648
656
|
add_prod_datum(:query, lhs)
|
649
657
|
elsif data[:extend]
|
658
|
+
# The variable assigned in a BIND clause must not be already in-use within the immediately preceding TriplesBlock within a GroupGraphPattern.
|
659
|
+
# None of the variables on the lhs of data[:extend] may be used in lhs
|
660
|
+
data[:extend].each do |(v, _)|
|
661
|
+
error(nil, "BIND Variable #{v} used in pattern", production: :GraphPatternNotTriples) if lhs.vars.map(&:to_sym).include?(v.to_sym)
|
662
|
+
end
|
650
663
|
add_prod_datum(:query, SPARQL::Algebra::Expression.for(:extend, data[:extend], lhs))
|
651
664
|
elsif data[:leftjoin]
|
652
665
|
add_prod_datum(:query, SPARQL::Algebra::Expression.for(:leftjoin, lhs, *data[:leftjoin]))
|
@@ -1831,14 +1844,14 @@ module SPARQL::Grammar
|
|
1831
1844
|
|
1832
1845
|
# extension variables must not appear in projected variables.
|
1833
1846
|
# Add them to the projection otherwise
|
1834
|
-
extensions.each do |(var,
|
1847
|
+
extensions.each do |(var, _)|
|
1835
1848
|
raise Error, "Extension variable #{var} also in SELECT" if vars.map(&:to_s).include?(var.to_s)
|
1836
1849
|
vars << var
|
1837
1850
|
end
|
1838
1851
|
|
1839
1852
|
# If any extension contains an aggregate, and there is now group, implicitly group by 1
|
1840
1853
|
if !data[:group] &&
|
1841
|
-
extensions.any? {|(
|
1854
|
+
extensions.any? {|(_, function)| function.aggregate?} ||
|
1842
1855
|
having.any? {|c| c.aggregate? }
|
1843
1856
|
debug {"Implicit group"}
|
1844
1857
|
data[:group] = [[]]
|
@@ -1868,7 +1881,7 @@ module SPARQL::Grammar
|
|
1868
1881
|
|
1869
1882
|
# Replace aggregates in expr as above
|
1870
1883
|
expr.replace_aggregate! do |function|
|
1871
|
-
if avf = aggregates.detect {|(
|
1884
|
+
if avf = aggregates.detect {|(_, f)| f == function}
|
1872
1885
|
avf.first
|
1873
1886
|
else
|
1874
1887
|
# Allocate a temporary variable for this function, and retain the mapping for outside the group
|
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:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
@@ -9,28 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-12-
|
12
|
+
date: 2017-12-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdf
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '2.2'
|
21
|
-
- - "<"
|
18
|
+
- - "~>"
|
22
19
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
20
|
+
version: '3.0'
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
|
-
- - "
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '2.2'
|
31
|
-
- - "<"
|
25
|
+
- - "~>"
|
32
26
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
27
|
+
version: '3.0'
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
29
|
name: rdf-aggregate-repo
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,42 +91,30 @@ dependencies:
|
|
97
91
|
name: sparql-client
|
98
92
|
requirement: !ruby/object:Gem::Requirement
|
99
93
|
requirements:
|
100
|
-
- - "
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '2.1'
|
103
|
-
- - "<"
|
94
|
+
- - "~>"
|
104
95
|
- !ruby/object:Gem::Version
|
105
|
-
version: '
|
96
|
+
version: '3.0'
|
106
97
|
type: :runtime
|
107
98
|
prerelease: false
|
108
99
|
version_requirements: !ruby/object:Gem::Requirement
|
109
100
|
requirements:
|
110
|
-
- - "
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '2.1'
|
113
|
-
- - "<"
|
101
|
+
- - "~>"
|
114
102
|
- !ruby/object:Gem::Version
|
115
|
-
version: '
|
103
|
+
version: '3.0'
|
116
104
|
- !ruby/object:Gem::Dependency
|
117
105
|
name: rdf-xsd
|
118
106
|
requirement: !ruby/object:Gem::Requirement
|
119
107
|
requirements:
|
120
|
-
- - "
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
version: '2.2'
|
123
|
-
- - "<"
|
108
|
+
- - "~>"
|
124
109
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
110
|
+
version: '3.0'
|
126
111
|
type: :runtime
|
127
112
|
prerelease: false
|
128
113
|
version_requirements: !ruby/object:Gem::Requirement
|
129
114
|
requirements:
|
130
|
-
- - "
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '2.2'
|
133
|
-
- - "<"
|
115
|
+
- - "~>"
|
134
116
|
- !ruby/object:Gem::Version
|
135
|
-
version: '
|
117
|
+
version: '3.0'
|
136
118
|
- !ruby/object:Gem::Dependency
|
137
119
|
name: sinatra
|
138
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,36 +149,30 @@ dependencies:
|
|
167
149
|
requirements:
|
168
150
|
- - "~>"
|
169
151
|
- !ruby/object:Gem::Version
|
170
|
-
version: '0.
|
152
|
+
version: '0.8'
|
171
153
|
type: :development
|
172
154
|
prerelease: false
|
173
155
|
version_requirements: !ruby/object:Gem::Requirement
|
174
156
|
requirements:
|
175
157
|
- - "~>"
|
176
158
|
- !ruby/object:Gem::Version
|
177
|
-
version: '0.
|
159
|
+
version: '0.8'
|
178
160
|
- !ruby/object:Gem::Dependency
|
179
|
-
name:
|
161
|
+
name: rdf-spec
|
180
162
|
requirement: !ruby/object:Gem::Requirement
|
181
163
|
requirements:
|
182
|
-
- - "
|
183
|
-
- !ruby/object:Gem::Version
|
184
|
-
version: '2.2'
|
185
|
-
- - "<"
|
164
|
+
- - "~>"
|
186
165
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
166
|
+
version: '3.0'
|
188
167
|
type: :development
|
189
168
|
prerelease: false
|
190
169
|
version_requirements: !ruby/object:Gem::Requirement
|
191
170
|
requirements:
|
192
|
-
- - "
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '2.2'
|
195
|
-
- - "<"
|
171
|
+
- - "~>"
|
196
172
|
- !ruby/object:Gem::Version
|
197
|
-
version: '
|
173
|
+
version: '3.0'
|
198
174
|
- !ruby/object:Gem::Dependency
|
199
|
-
name:
|
175
|
+
name: linkeddata
|
200
176
|
requirement: !ruby/object:Gem::Requirement
|
201
177
|
requirements:
|
202
178
|
- - ">="
|
@@ -269,14 +245,14 @@ dependencies:
|
|
269
245
|
requirements:
|
270
246
|
- - "~>"
|
271
247
|
- !ruby/object:Gem::Version
|
272
|
-
version:
|
248
|
+
version: 0.9.12
|
273
249
|
type: :development
|
274
250
|
prerelease: false
|
275
251
|
version_requirements: !ruby/object:Gem::Requirement
|
276
252
|
requirements:
|
277
253
|
- - "~>"
|
278
254
|
- !ruby/object:Gem::Version
|
279
|
-
version:
|
255
|
+
version: 0.9.12
|
280
256
|
description: |2-
|
281
257
|
|
282
258
|
Implements SPARQL grammar parsing to SPARQL Algebra, SPARQL Algebra processing
|