rdf-ordered-repo 3.1.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc5e91c1a02e80cf40af709aa558cd390611332be606ad91ad8a3ca24aaf52a1
4
- data.tar.gz: 3f58ec48ccfbfc60c3c330abfce97b9e59563d69f148ea4683dc81554f3a367b
3
+ metadata.gz: bb8d7a4252659d073d36fe704be60b62b0aff55dfae646c75a38f6cfb38743cd
4
+ data.tar.gz: 5f58fc30cd2a5fa368edf75d5c39b5769176ca46d652927e394a1757ae6291a1
5
5
  SHA512:
6
- metadata.gz: e50c14fbc7e26878fe8451e1301c805243a65b1e494360117e659f6884c7f249ddbe7b11f93900bb647eee2ae0fbf1802b48506c3b449a2be3e2c230aa0e07f0
7
- data.tar.gz: 2a77db136037a680165a105c0227aac78216edc2deef58116259199e263eb8cc94619676f3ad5d90f1ef84cf08c08a23ce153e98ad2bf251f4e4b0ebfdd5d1fc
6
+ metadata.gz: dd1df97330d99e8c99c03176d810e889f50ab1f1fd4e5f5697107a389a3e3d52451256d4418721e7396fc6c8b2c7cbf144bcb7ed2f4accc75251ac3d50cef037
7
+ data.tar.gz: '011816332e445274b75221754e57927137d88ebaa80821cd05cc5188069a9869e0f4e8e0ec8d8e2406e8134d016dddbf3ec09d92e684fbfe261109209d68cd6c'
data/README.md CHANGED
@@ -3,7 +3,9 @@
3
3
  An order-preserving repository for RDF.rb.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/rdf-ordered-repo.png)](https://badge.fury.io/rb/rdf-ordered-repo)
6
- [![Build Status](https://travis-ci.org/ruby-rdf/rdf-ordered-repo.png?branch=master)](https://travis-ci.org/ruby-rdf/rdf-ordered-repo)
6
+ [![Build Status](https://github.com/ruby-rdf/rdf-ordered-repo/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf-ordered-repo/actions?query=workflow%3ACI)
7
+ [![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf-ordered-repo/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf-ordered-repo?branch=develop)
8
+ [![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](https://gitter.im/ruby-rdf/rdf)
7
9
 
8
10
  ## Description
9
11
 
@@ -17,8 +19,8 @@ An in-memory implementation of RDF::Repository using native Ruby Hashes having i
17
19
 
18
20
  ## Dependencies
19
21
 
20
- * [Ruby](https://ruby-lang.org/) (>= 2.4)
21
- * [RDF.rb][] (~> 3.1)
22
+ * [Ruby](https://ruby-lang.org/) (>= 2.6)
23
+ * [RDF.rb][] (~> 3.2)
22
24
 
23
25
  ## Mailing List
24
26
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.1
1
+ 3.2.0
data/etc/doap.ttl CHANGED
@@ -12,7 +12,7 @@
12
12
  doap:homepage <https://github.com/ruby-rdf/rdf-ordered-repo> ;
13
13
  doap:license <https://unlicense.org/1.0/> ;
14
14
  doap:shortdesc "An order-preserving repository for RDF.rb."@en ;
15
- doap:description "An in-memory implementation of RDF::Repository using native Ruby Hashes having insert-order preserving properties."@en ;
15
+ doap:description "An in-memory implementation of RDF::Repository using native Ruby Hashes having insert-order preserving properties for the Ruby RDF.rb library suite."@en ;
16
16
  doap:created "2020-09-22"^^xsd:date;
17
17
  doap:programming-language "Ruby" ;
18
18
  doap:implements <http://www.w3.org/TR/rdf11-concepts/> ;
@@ -23,7 +23,6 @@
23
23
  doap:bug-database <https://github.com/ruby-rdf/rdf-ordered-repo/issues> ;
24
24
  doap:blog <https://greggkellogg.net/> ;
25
25
  doap:developer <https://greggkellogg.net/foaf#me> ;
26
- doap:helper <http://njh.me/> ;
27
26
  doap:maintainer <https://greggkellogg.net/foaf#me> ;
28
27
  doap:documenter <https://greggkellogg.net/foaf#me> ;
29
28
  foaf:maker <https://greggkellogg.net/foaf#me> ;
@@ -40,7 +40,7 @@ module RDF
40
40
  def supports?(feature)
41
41
  case feature.to_sym
42
42
  when :rdfstar then true
43
- when :snapshots then false
43
+ when :snapshots then true
44
44
  else super
45
45
  end
46
46
  end
@@ -71,11 +71,24 @@ module RDF
71
71
  end
72
72
 
73
73
  ##
74
- # @private
75
- # @see RDF::Enumerable#has_graph?
76
- def has_graph?(graph)
77
- @data.has_key?(graph)
74
+ # @overload graph?
75
+ # Returns `false` to indicate that this is not a graph.
76
+ #
77
+ # @return [Boolean]
78
+ # @overload graph?(name)
79
+ # Returns `true` if `self` contains the given RDF graph_name.
80
+ #
81
+ # @param [RDF::Resource, false] graph_name
82
+ # Use value `false` to query for the default graph_name
83
+ # @return [Boolean]
84
+ def graph?(*args)
85
+ case args.length
86
+ when 0 then false
87
+ when 1 then @data.key?(args.first)
88
+ else raise ArgumentError("wrong number of arguments (given #{args.length}, expected 0 or 1)")
89
+ end
78
90
  end
91
+ alias_method :has_graph?, :graph?
79
92
 
80
93
  ##
81
94
  # @private
@@ -97,11 +110,21 @@ module RDF
97
110
  end
98
111
 
99
112
  ##
100
- # @private
101
- # @see RDF::Enumerable#has_statement?
102
- def has_statement?(statement)
103
- has_statement_in?(@data, statement)
113
+ # @overload statement?
114
+ # Returns `false` indicating this is not an RDF::Statemenet.
115
+ # @return [Boolean]
116
+ # @see RDF::Value#statement?
117
+ # @overload statement?(statement)
118
+ # @private
119
+ # @see RDF::Enumerable#statement?
120
+ def statement?(*args)
121
+ case args.length
122
+ when 0 then false
123
+ when 1 then args.first && statement_in?(@data, args.first)
124
+ else raise ArgumentError("wrong number of arguments (given #{args.length}, expected 0 or 1)")
125
+ end
104
126
  end
127
+ alias_method :has_statement?, :statement?
105
128
 
106
129
  ##
107
130
  # @private
@@ -141,7 +164,18 @@ module RDF
141
164
  ##
142
165
  # @see RDF::Dataset#isolation_level
143
166
  def isolation_level
144
- :serializable
167
+ :snapshot
168
+ end
169
+
170
+ ##
171
+ # A readable & queryable snapshot of the repository for isolated reads.
172
+ #
173
+ # @return [Dataset] an immutable Dataset containing a current snapshot of
174
+ # the Repository contents.
175
+ #
176
+ # @see Mutable#snapshot
177
+ def snapshot
178
+ self.class.new(data: @data).freeze
145
179
  end
146
180
 
147
181
  protected
@@ -157,13 +191,14 @@ module RDF
157
191
  # @private
158
192
  # @see RDF::Queryable#query_pattern
159
193
  def query_pattern(pattern, **options, &block)
194
+ snapshot = @data
160
195
  if block_given?
161
196
  graph_name = pattern.graph_name
162
197
  subject = pattern.subject
163
198
  predicate = pattern.predicate
164
199
  object = pattern.object
165
200
 
166
- cs = @data.has_key?(graph_name) ? { graph_name => @data[graph_name] } : @data
201
+ cs = snapshot.has_key?(graph_name) ? { graph_name => snapshot[graph_name] } : snapshot
167
202
 
168
203
  cs.each do |c, ss|
169
204
  next unless graph_name.nil? ||
@@ -221,7 +256,7 @@ module RDF
221
256
  # @private
222
257
  # @see RDF::Mutable#clear
223
258
  def clear_statements
224
- @data = @data.clear
259
+ @data = @data.class.new
225
260
  end
226
261
 
227
262
  ##
@@ -242,16 +277,17 @@ module RDF
242
277
 
243
278
  ##
244
279
  # @private
245
- # @see #has_statement
246
- def has_statement_in?(data, statement)
280
+ # @see #statement?
281
+ def statement_in?(data, statement)
247
282
  s, p, o, g = statement.to_quad
248
283
  g ||= DEFAULT_GRAPH
249
284
 
250
- data.has_key?(g) &&
251
- data[g].has_key?(s) &&
252
- data[g][s].has_key?(p) &&
253
- data[g][s][p].has_key?(o)
285
+ data.key?(g) &&
286
+ data[g].key?(s) &&
287
+ data[g][s].key?(p) &&
288
+ data[g][s][p].key?(o)
254
289
  end
290
+ alias_method :has_statement_in?, :statement_in?
255
291
 
256
292
  ##
257
293
  # @private
@@ -259,7 +295,7 @@ module RDF
259
295
  def insert_to(data, statement)
260
296
  raise ArgumentError, "Statement #{statement.inspect} is incomplete" if statement.incomplete?
261
297
 
262
- unless has_statement_in?(data, statement)
298
+ unless statement_in?(data, statement)
263
299
  s, p, o, c = statement.to_quad
264
300
  c ||= DEFAULT_GRAPH
265
301
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-ordered-repo
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-29 00:00:00.000000000 Z
11
+ date: 2021-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdf
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
19
+ version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.1'
26
+ version: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdf-spec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.1'
33
+ version: '3.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.1'
40
+ version: '3.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.9'
47
+ version: '3.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.9'
54
+ version: '3.10'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.9.20
61
+ version: '0.9'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.9.20
68
+ version: '0.9'
69
69
  description: An in-memory implementation of RDF::Repository using native Ruby Hashes
70
70
  having insert-order preserving properties.
71
71
  email: public-rdf-ruby@w3.org
@@ -91,14 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - ">="
93
93
  - !ruby/object:Gem::Version
94
- version: '2.4'
94
+ version: '2.6'
95
95
  required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  requirements: []
101
- rubygems_version: 3.1.4
101
+ rubygems_version: 3.3.3
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: An order-preserving repository for RDF.rb.