active-triples 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afe7dc3e6a03d9813db24e04c17dcad6217ed566
4
- data.tar.gz: bf3ee7f705aaf8f9e8e6172c1036b5dde382648d
3
+ metadata.gz: 42a735382f3d5ad34bb75398f7dbe41bc4092ed0
4
+ data.tar.gz: 64e572f52e992165f32a84202a73b6266032ce81
5
5
  SHA512:
6
- metadata.gz: 5ea193783cfafcff37b3726544cbc11b17bf956f6e9f272bfd755bd332384f75a50a9b95826ee90ab977e6bd4ceadebf40f1d1f5ef18eaad928c9cdf8fbcfe62
7
- data.tar.gz: 35d643a57725687c70b5c74a715828972b445f90a4d79cce02a4c2b875945f5b84e6859a3dd39c1dc432138be1e2805fe89e2f918bd98d6748bc3581b5bfb7c0
6
+ metadata.gz: 8e1c1c02dc97fddfb50dd818fd97087a9d8032d8e0552dc5d712da15c5f7363ed0a90eada66d2dfa28692049a6fb1ab6427ffe6167115565ca2cb66537a41d7f
7
+ data.tar.gz: 4fc879ad051dd585c8eb4b1570f4b1530002e7e2b91a15ee2511b1771d38c3edf4074ee550123598e74d591173483c79141b8d174cb255ae6a385c682fcb67cd
data/.gitignore CHANGED
@@ -4,4 +4,3 @@ pkg/
4
4
  Gemfile.lock
5
5
  tmp/*
6
6
  .sass-cache
7
- coverage/
@@ -1,19 +1,12 @@
1
1
  anguage: ruby
2
2
  bundler_args: --without debug
3
3
  script: "bundle exec rspec spec"
4
- env:
5
- - CI=true
6
4
  rvm:
7
5
  - 1.9.3
8
6
  - 2.0.0
9
- - 2.1
10
- - 2.2
11
- - 2.3
12
- - 2.4
7
+ - 2.1.0
8
+ - 2.1.1
13
9
  - jruby-19mode
14
- cache: bundler
15
- sudo: false
16
10
  matrix:
17
11
  allow_failures:
18
- - rvm: jruby-19mode
19
- dist: trusty
12
+ - rvm: jruby-19mode
data/Gemfile CHANGED
@@ -1,25 +1,3 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
-
5
- version = Gem::Version.new(RUBY_VERSION)
6
-
7
- if (version <= Gem::Version.new('2.2.4')) &&
8
- (version >= Gem::Version.new('2.0.0'))
9
- gem 'ruby_dep', '< 1.4.0'
10
- end
11
-
12
- gem 'listen', '< 3.1' if version <= Gem::Version.new('2.2.3')
13
- gem 'activesupport', '< 5' if version <= Gem::Version.new('2.2.2')
14
-
15
- if version <= Gem::Version.new('2.1.0')
16
- gem 'deprecation', '< 0.3.0'
17
- gem 'nokogiri', '< 1.7'
18
- end
19
-
20
- if version <= Gem::Version.new('2.0.0')
21
- gem 'public_suffix', '< 1.5'
22
- gem 'json-ld', '< 1.8'
23
- gem 'linkeddata', '<= 1.1.11'
24
- gem 'webmock', '< 2.3'
25
- end
@@ -15,18 +15,13 @@ Gem::Specification.new do |s|
15
15
  s.required_ruby_version = '>= 1.9.3'
16
16
 
17
17
  s.add_dependency('rdf', '~> 1.1')
18
- s.add_dependency('rdf-vocab', '~> 0.8')
18
+ s.add_dependency('linkeddata', '~> 1.1')
19
19
  s.add_dependency('activemodel', '>= 3.0.0')
20
20
  s.add_dependency('deprecation', '~> 0.1')
21
21
  s.add_dependency('activesupport', '>= 3.0.0')
22
22
 
23
23
  s.add_development_dependency('rdoc')
24
24
  s.add_development_dependency('rspec')
25
- s.add_development_dependency('rdf-spec', '~> 1.99')
26
- s.add_development_dependency('rdf-rdfxml', '>= 1.1.5', '~> 1.1')
27
- s.add_development_dependency('rdf-turtle', '~> 1.99')
28
- s.add_development_dependency('rdf-isomorphic', '~> 1.99')
29
- s.add_development_dependency('json-ld', '~> 1.99')
30
25
  s.add_development_dependency('guard-rspec')
31
26
  s.add_development_dependency('webmock')
32
27
  s.add_development_dependency('nokogiri')
@@ -33,16 +33,6 @@ module ActiveTriples::Identifiable
33
33
  self.class.resource_class
34
34
  end
35
35
 
36
- def update_resource(&block)
37
- resource_class.properties.each do |name, property|
38
- if block_given?
39
- yield name, property
40
- else
41
- resource.set_value(property.predicate, self.send(property.term))
42
- end
43
- end
44
- end
45
-
46
36
  public
47
37
 
48
38
  module ClassMethods
@@ -50,7 +40,7 @@ module ActiveTriples::Identifiable
50
40
  delegate :configure, :property, :properties, to: :resource_class
51
41
 
52
42
  def resource_class
53
- @resource_class ||= Class.new(ActiveTriples::Resource)
43
+ @resource_class ||= self.const_set(:GeneratedResourceSchema, Class.new(ActiveTriples::Resource))
54
44
  end
55
45
 
56
46
  def from_uri(uri, *args)
@@ -1,14 +1,12 @@
1
1
  module ActiveTriples
2
2
  class NodeConfig
3
- attr_accessor :predicate, :term, :class_name, :type, :behaviors, :multivalue, :cast
3
+ attr_accessor :predicate, :term, :class_name, :type, :behaviors, :cast
4
4
 
5
5
  def initialize(term, predicate, args={})
6
6
  self.term = term
7
7
  self.predicate = predicate
8
- self.class_name = args.delete(:class_name)
9
- self.multivalue = args.delete(:multivalue) { true }
10
- self.cast = args.delete(:cast) { true }
11
- raise ArgumentError, "Invalid arguments for Rdf Node configuration: #{args} on #{predicate}" unless args.empty?
8
+ self.class_name = args.fetch(:class_name) { default_class_name }
9
+ self.cast = args.fetch(:cast) { true }
12
10
  yield(self) if block_given?
13
11
  end
14
12
 
@@ -38,6 +36,12 @@ module ActiveTriples
38
36
  self.behaviors = iobj.behaviors
39
37
  end
40
38
 
39
+ private
40
+
41
+ def default_class_name
42
+ nil
43
+ end
44
+
41
45
  # this enables a cleaner API for solr integration
42
46
  class IndexObject
43
47
  attr_accessor :data_type, :behaviors
@@ -17,18 +17,6 @@ module ActiveTriples
17
17
  initialize_generated_modules
18
18
  end
19
19
 
20
- ##
21
- # Registers properties for Resource-like classes
22
- # @param [Symbol] name of the property (and its accessor methods)
23
- # @param [Hash] opts for this property, must include a :predicate
24
- # @yield [index] index sets solr behaviors for the property
25
- def property(name, opts={}, &block)
26
- self.config[name] = NodeConfig.new(name, opts[:predicate], opts.except(:predicate)).tap do |config|
27
- config.with_index(&block) if block_given?
28
- end
29
- register_property(name)
30
- end
31
-
32
20
  module ClassMethods
33
21
  def inherited(child_class) #:nodoc:
34
22
  child_class.initialize_generated_modules
@@ -57,7 +45,7 @@ module ActiveTriples
57
45
  reflection = PropertyBuilder.build(self, name, opts, &block)
58
46
  Reflection.add_reflection self, name, reflection
59
47
  end
60
-
48
+
61
49
  def protected_property_name?(name)
62
50
  reject = self.instance_methods.map! { |s| s.to_s.gsub(/=$/, '').to_sym }
63
51
  reject -= properties.keys.map { |k| k.to_sym }
@@ -32,5 +32,22 @@ module ActiveTriples
32
32
  end
33
33
  module_function :repositories
34
34
 
35
+ ##
36
+ # Check for the specified rdf_subject in the specified repository
37
+ # defaulting to search all registered repositories.
38
+ # @param [String] rdf_subject
39
+ # @param [Symbol] repository name
40
+ def has_subject?(rdf_subject,repo_name=nil)
41
+ search_repositories = [repositories[repo_name]] if repo_name
42
+ search_repositories ||= repositories.values
43
+ found = false
44
+ search_repositories.each do |repo|
45
+ found = repo.has_subject? rdf_subject
46
+ break if found
47
+ end
48
+ found
49
+ end
50
+ module_function :has_subject?
51
+
35
52
  end
36
53
  end
@@ -316,8 +316,8 @@ module ActiveTriples
316
316
  def get_term(args)
317
317
  @term_cache ||= {}
318
318
  term = Term.new(self, args)
319
- @term_cache["#{term.send(:rdf_subject)}/#{term.property}"] ||= term
320
- @term_cache["#{term.send(:rdf_subject)}/#{term.property}"]
319
+ @term_cache["#{term.send(:rdf_subject)}/#{term.property}/#{term.term_args}"] ||= term
320
+ @term_cache["#{term.send(:rdf_subject)}/#{term.property}/#{term.term_args}"]
321
321
  end
322
322
 
323
323
  ##
@@ -407,7 +407,39 @@ module ActiveTriples
407
407
  else
408
408
  repository.delete [rdf_subject, nil, nil]
409
409
  end
410
- end
410
+ end
411
+
412
+ ##
413
+ # Test if the rdf_subject that would be generated using a
414
+ # specific ID is already in use in the triplestore.
415
+ #
416
+ # @param [Integer, #read] ID to test
417
+ #
418
+ # @return [TrueClass, FalseClass] true, if the ID is in
419
+ # use in the triplestore; otherwise, false.
420
+ # NOTE: If the ID is in use in an object not yet
421
+ # persisted, false will be returned presenting
422
+ # a window of opportunity for an ID clash.
423
+ def self.id_persisted?(test_id)
424
+ rdf_subject = self.new(test_id).rdf_subject
425
+ ActiveTriples::Repositories.has_subject?(rdf_subject)
426
+ end
427
+
428
+ ##
429
+ # Test if the rdf_subject that would be generated using a
430
+ # specific URI is already in use in the triplestore.
431
+ #
432
+ # @param [String, RDF::URI, #read] URI to test
433
+ #
434
+ # @return [TrueClass, FalseClass] true, if the URI is in
435
+ # use in the triplestore; otherwise, false.
436
+ # NOTE: If the URI is in use in an object not yet
437
+ # persisted, false will be returned presenting
438
+ # a window of opportunity for an ID clash.
439
+ def self.uri_persisted?(test_uri)
440
+ rdf_subject = test_uri.kind_of?(RDF::URI) ? test_uri : RDF::URI(test_uri)
441
+ ActiveTriples::Repositories.has_subject?(rdf_subject)
442
+ end
411
443
 
412
444
  private
413
445
 
@@ -3,7 +3,7 @@ require 'active_support/core_ext/module/delegation'
3
3
  module ActiveTriples
4
4
  class Term
5
5
 
6
- attr_accessor :parent, :value_arguments, :node_cache
6
+ attr_accessor :parent, :value_arguments, :node_cache, :term_args
7
7
  attr_reader :reflections
8
8
 
9
9
  delegate *(Array.public_instance_methods - [:send, :__send__, :__id__, :class, :object_id] + [:as_json]), :to => :result
@@ -14,18 +14,23 @@ module ActiveTriples
14
14
  self.value_arguments = value_arguments
15
15
  end
16
16
 
17
+ def value_arguments=(value_args)
18
+ if value_args.kind_of?(Array) && value_args.last.kind_of?(Hash)
19
+ self.term_args = value_args.pop
20
+ end
21
+ @value_arguments = value_args
22
+ end
23
+
17
24
  def clear
18
25
  set(nil)
19
26
  end
20
27
 
21
28
  def result
22
- result = parent.query(:subject => rdf_subject, :predicate => predicate)
23
- .each_with_object([]) do |x, collector|
24
- converted_object = convert_object(x.object)
25
- collector << converted_object unless converted_object.nil?
26
- end
27
- return result if !property_config || property_config[:multivalue]
28
- result.first
29
+ parent.query(:subject => rdf_subject, :predicate => predicate)
30
+ .each_with_object([]) do |x, collector|
31
+ converted_object = convert_object(x.object)
32
+ collector << converted_object unless converted_object.nil?
33
+ end
29
34
  end
30
35
 
31
36
  def set(values)
@@ -90,7 +95,7 @@ module ActiveTriples
90
95
  end
91
96
 
92
97
  def type_property
93
- { :multivalue => true, :predicate => RDF.type, :cast => false }
98
+ { :predicate => RDF.type, :cast => false }
94
99
  end
95
100
 
96
101
  def reset!
@@ -147,7 +152,7 @@ module ActiveTriples
147
152
  def convert_object(value)
148
153
  case value
149
154
  when RDF::Literal
150
- value.object
155
+ return_literals? ? value : value.object
151
156
  when RDF::Resource
152
157
  make_node(value)
153
158
  else
@@ -176,6 +181,10 @@ module ActiveTriples
176
181
  !!property_config[:cast]
177
182
  end
178
183
 
184
+ def return_literals?
185
+ term_args && term_args[:literal]
186
+ end
187
+
179
188
  def final_parent
180
189
  @final_parent ||= begin
181
190
  parent = self.parent
@@ -1,3 +1,3 @@
1
1
  module ActiveTriples
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = "0.5.0"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'nokogiri'
3
- require 'rdf/rdfxml'
3
+ require 'linkeddata'
4
4
 
5
5
  describe ActiveTriples::List do
6
6
 
@@ -25,4 +25,80 @@ describe ActiveTriples::Repositories do
25
25
  end
26
26
  end
27
27
 
28
+ describe '#has_subject?' do
29
+
30
+ let(:resource2) do
31
+ DummyResource2.new(2)
32
+ end
33
+
34
+ before do
35
+ class DummyResource1 < ActiveTriples::Resource
36
+ configure :base_uri => "http://example.org/r1/",
37
+ :type => RDF::URI("http://example.org/SomeClass"),
38
+ :repository => :repo1
39
+ end
40
+ class DummyResource2 < ActiveTriples::Resource
41
+ configure :base_uri => "http://example.org/r2/",
42
+ :type => RDF::URI("http://example.org/SomeClass"),
43
+ :repository => :repo2
44
+ end
45
+ class DummyResource3 < ActiveTriples::Resource
46
+ configure :base_uri => "http://example.org/r3/",
47
+ :type => RDF::URI("http://example.org/SomeClass"),
48
+ :repository => :repo3
49
+ end
50
+ ActiveTriples::Repositories.add_repository :repo1, RDF::Repository.new
51
+ ActiveTriples::Repositories.add_repository :repo2, RDF::Repository.new
52
+ ActiveTriples::Repositories.add_repository :repo3, RDF::Repository.new
53
+
54
+ DummyResource1.new('1').persist!
55
+ DummyResource2.new('2').persist!
56
+ DummyResource3.new('3').persist!
57
+
58
+ end
59
+ after do
60
+ DummyResource1.new('1').destroy!
61
+ DummyResource2.new('2').destroy!
62
+ DummyResource3.new('3').destroy!
63
+
64
+ Object.send(:remove_const, "DummyResource1") if Object
65
+ Object.send(:remove_const, "DummyResource2") if Object
66
+ Object.send(:remove_const, "DummyResource3") if Object
67
+ ActiveTriples::Repositories.clear_repositories!
68
+ end
69
+
70
+ context 'when checking only one named repository' do
71
+ context 'and rdf_subject exists in the repository' do
72
+ it 'should return true' do
73
+ expect(ActiveTriples::Repositories.has_subject?(resource2.rdf_subject,:repo2)).to be_truthy
74
+ end
75
+ end
76
+
77
+ context 'and rdf_subject exists in another repository' do
78
+ it 'should return false' do
79
+ expect(ActiveTriples::Repositories.has_subject?(resource2.rdf_subject,:repo1)).to be_falsey
80
+ end
81
+ end
82
+
83
+ context 'and rdf_subject does not exists in any repository' do
84
+ it 'should return false' do
85
+ expect(ActiveTriples::Repositories.has_subject?("#{resource2.rdf_subject}_NOEXIST",:repo1)).to be_falsey
86
+ end
87
+ end
88
+ end
89
+
90
+ context 'when checking all repositories' do
91
+ context 'and rdf_subject exists in one repository' do
92
+ it 'should return true' do
93
+ expect(ActiveTriples::Repositories.has_subject?(resource2.rdf_subject)).to be_truthy
94
+ end
95
+ end
96
+
97
+ context 'and rdf_subject does not exists in any repository' do
98
+ it 'should return false' do
99
+ expect(ActiveTriples::Repositories.has_subject?("#{resource2.rdf_subject}_NOEXIST")).to be_falsey
100
+ end
101
+ end
102
+ end
103
+ end
28
104
  end
@@ -162,6 +162,98 @@ describe ActiveTriples::Resource do
162
162
  end
163
163
  end
164
164
 
165
+ describe "#id_persisted?" do
166
+
167
+ subject {DummyResourceWithBaseURI.new('1')}
168
+
169
+ before do
170
+ class DummyResourceWithBaseURI < ActiveTriples::Resource
171
+ configure :base_uri => "http://example.org",
172
+ :type => RDF::URI("http://example.org/SomeClass"),
173
+ :repository => :default
174
+ end
175
+ ActiveTriples::Repositories.add_repository :default, RDF::Repository.new
176
+ subject.persist!
177
+ end
178
+ after do
179
+ Object.send(:remove_const, "DummyResourceWithBaseURI") if Object
180
+ ActiveTriples::Repositories.clear_repositories!
181
+ end
182
+
183
+ context "when ID is a string" do
184
+ it "should be false if ID does not exist" do
185
+ expect(DummyResourceWithBaseURI.id_persisted?('2')).to be_falsey
186
+ end
187
+
188
+ it "should be true if ID exists" do
189
+ expect(DummyResourceWithBaseURI.id_persisted?('1')).to be_truthy
190
+ end
191
+ end
192
+
193
+ context "when ID is numeric" do
194
+ it "should be false if ID does not exist" do
195
+ expect(DummyResourceWithBaseURI.id_persisted?(2)).to be_falsey
196
+ end
197
+
198
+ it "should be true if ID exists" do
199
+ expect(DummyResourceWithBaseURI.id_persisted?(1)).to be_truthy
200
+ end
201
+ end
202
+
203
+ context "when object with ID in use is not persisted" do
204
+ it "should be false" do
205
+ DummyResourceWithBaseURI.new('3')
206
+ expect(DummyResourceWithBaseURI.id_persisted?(3)).to be_falsey
207
+ end
208
+ end
209
+ end
210
+
211
+ describe "#uri_persisted?" do
212
+
213
+ subject {DummyResourceWithBaseURI.new('11')}
214
+
215
+ before do
216
+ class DummyResourceWithBaseURI < ActiveTriples::Resource
217
+ configure :base_uri => "http://example.org",
218
+ :type => RDF::URI("http://example.org/SomeClass"),
219
+ :repository => :default
220
+ end
221
+ ActiveTriples::Repositories.add_repository :default, RDF::Repository.new
222
+ subject.persist!
223
+ end
224
+ after do
225
+ Object.send(:remove_const, "DummyResourceWithBaseURI") if Object
226
+ ActiveTriples::Repositories.clear_repositories!
227
+ end
228
+
229
+ context "when URI is a http string" do
230
+ it "should be false if URI does not exist" do
231
+ expect(DummyResourceWithBaseURI.uri_persisted?("http://example.org/22")).to be_falsey
232
+ end
233
+
234
+ it "should be true if URI does exist" do
235
+ expect(DummyResourceWithBaseURI.uri_persisted?("http://example.org/11")).to be_truthy
236
+ end
237
+ end
238
+
239
+ context "when URI is a RDF::URI" do
240
+ it "should be false if URI does not exist" do
241
+ expect(DummyResourceWithBaseURI.uri_persisted?(RDF::URI("http://example.org/22"))).to be_falsey
242
+ end
243
+
244
+ it "should be true if URI does exist" do
245
+ expect(DummyResourceWithBaseURI.uri_persisted?(RDF::URI("http://example.org/11"))).to be_truthy
246
+ end
247
+ end
248
+
249
+ context "when object with URI is not persisted" do
250
+ it "should be false" do
251
+ DummyResourceWithBaseURI.new('13')
252
+ expect(DummyResourceWithBaseURI.uri_persisted?("http://example.org/13")).to be_falsey
253
+ end
254
+ end
255
+ end
256
+
165
257
  describe '#destroy!' do
166
258
  before do
167
259
  subject.title = 'Creative Commons'
@@ -463,6 +555,26 @@ describe ActiveTriples::Resource do
463
555
  subject.set_value(RDF::URI("http://opaquenamespace.org/jokes"), RDF::DC.title, 'Comet in Moominland')
464
556
  expect(subject.get_values(RDF::URI("http://opaquenamespace.org/jokes"),:title)).to eq ["Comet in Moominland"]
465
557
  end
558
+
559
+ context "literals are set" do
560
+ let(:literal1) { RDF::Literal.new("test", :language => :en) }
561
+ let(:literal2) { RDF::Literal.new("test", :language => :fr) }
562
+ before do
563
+ subject.set_value(RDF::DC.title, [literal1, literal2])
564
+ end
565
+ context "and literals are not requested" do
566
+ it "should return a string" do
567
+ # Should this de-duplicate?
568
+ expect(subject.get_values(RDF::DC.title)).to eq ["test", "test"]
569
+ end
570
+ end
571
+ context "and literals are requested" do
572
+ it "should return literals" do
573
+ expect(subject.get_values(RDF::DC.title, :literal => true)).to eq [literal1, literal2]
574
+ end
575
+ end
576
+ end
577
+
466
578
  end
467
579
 
468
580
  describe '#[]' do
@@ -1,6 +1,5 @@
1
1
  require 'spec_helper'
2
2
  require 'pragmatic_context'
3
- require 'json/ld'
4
3
 
5
4
  describe 'PragmaticContext integration' do
6
5
  before do
@@ -42,8 +41,7 @@ describe 'PragmaticContext integration' do
42
41
  end
43
42
 
44
43
  it 'should have contexts' do
45
- expect(subject.as_jsonld['@context'].keys)
46
- .to contain_exactly("license", "title")
44
+ expect(subject.as_jsonld['@context'].keys).to eq ["license", "title"]
47
45
  end
48
46
 
49
47
  it 'should use context with dump' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-triples
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Johnson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-24 00:00:00.000000000 Z
12
+ date: 2014-12-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdf
@@ -26,19 +26,19 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.1'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rdf-vocab
29
+ name: linkeddata
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0.8'
34
+ version: '1.1'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0.8'
41
+ version: '1.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: activemodel
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -109,82 +109,6 @@ dependencies:
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: rdf-spec
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '1.99'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '1.99'
126
- - !ruby/object:Gem::Dependency
127
- name: rdf-rdfxml
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: 1.1.5
133
- - - "~>"
134
- - !ruby/object:Gem::Version
135
- version: '1.1'
136
- type: :development
137
- prerelease: false
138
- version_requirements: !ruby/object:Gem::Requirement
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- version: 1.1.5
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '1.1'
146
- - !ruby/object:Gem::Dependency
147
- name: rdf-turtle
148
- requirement: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '1.99'
153
- type: :development
154
- prerelease: false
155
- version_requirements: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.99'
160
- - !ruby/object:Gem::Dependency
161
- name: rdf-isomorphic
162
- requirement: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.99'
167
- type: :development
168
- prerelease: false
169
- version_requirements: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '1.99'
174
- - !ruby/object:Gem::Dependency
175
- name: json-ld
176
- requirement: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '1.99'
181
- type: :development
182
- prerelease: false
183
- version_requirements: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '1.99'
188
112
  - !ruby/object:Gem::Dependency
189
113
  name: guard-rspec
190
114
  requirement: !ruby/object:Gem::Requirement
@@ -303,8 +227,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
227
  version: '0'
304
228
  requirements: []
305
229
  rubyforge_project:
306
- rubygems_version: 2.6.8
230
+ rubygems_version: 2.2.2
307
231
  signing_key:
308
232
  specification_version: 4
309
233
  summary: RDF graphs in ActiveModel wrappers.
310
234
  test_files: []
235
+ has_rdoc: