dbd 0.0.1

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.
Files changed (58) hide show
  1. data/.gitignore +17 -0
  2. data/.rspec +2 -0
  3. data/.rvmrc +1 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +8 -0
  6. data/Guardfile +7 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +97 -0
  9. data/Rakefile +1 -0
  10. data/dbd.gemspec +30 -0
  11. data/docs/rationale.md +17 -0
  12. data/docs/stories/001_create_a_fact.txt +15 -0
  13. data/docs/stories/002_create_a_facts_collection.txt +14 -0
  14. data/docs/stories/003_create_a_fact_origin.txt +15 -0
  15. data/docs/stories/004_create_fact_origins_collection.txt +8 -0
  16. data/docs/stories/005_CSV_export_the_graph.txt +18 -0
  17. data/docs/stories/006_refactor_fact_origin_to_provenance_fact.txt +20 -0
  18. data/docs/stories/007_rename_property_to_predicate.txt +6 -0
  19. data/docs/stories/008_testing_different_ruby_versions.txt +7 -0
  20. data/docs/stories/009_build_and_store_resources_with_provenance.txt +38 -0
  21. data/docs/stories/010_provenance_fact_properties_from_provenance_ontology.txt +10 -0
  22. data/docs/test.rb +32 -0
  23. data/lib/dbd.rb +13 -0
  24. data/lib/dbd/errors.rb +11 -0
  25. data/lib/dbd/fact.rb +182 -0
  26. data/lib/dbd/fact/collection.rb +60 -0
  27. data/lib/dbd/fact/id.rb +19 -0
  28. data/lib/dbd/fact/subject.rb +21 -0
  29. data/lib/dbd/graph.rb +47 -0
  30. data/lib/dbd/helpers/ordered_set_collection.rb +86 -0
  31. data/lib/dbd/helpers/uuid.rb +33 -0
  32. data/lib/dbd/provenance_fact.rb +76 -0
  33. data/lib/dbd/provenance_resource.rb +54 -0
  34. data/lib/dbd/rdf.rb +9 -0
  35. data/lib/dbd/repo.rb +8 -0
  36. data/lib/dbd/repo/neo4j_repo.rb +4 -0
  37. data/lib/dbd/repo/neo4j_repo/base.rb +55 -0
  38. data/lib/dbd/resource.rb +117 -0
  39. data/lib/dbd/version.rb +3 -0
  40. data/spec/factories/fact.rb +76 -0
  41. data/spec/factories/provenance_fact.rb +34 -0
  42. data/spec/factories/provenance_resource.rb +16 -0
  43. data/spec/factories/resource.rb +17 -0
  44. data/spec/lib/dbd/fact/collection_spec.rb +236 -0
  45. data/spec/lib/dbd/fact/id_spec.rb +19 -0
  46. data/spec/lib/dbd/fact/subject_spec.rb +19 -0
  47. data/spec/lib/dbd/fact_spec.rb +217 -0
  48. data/spec/lib/dbd/graph_spec.rb +214 -0
  49. data/spec/lib/dbd/helpers/ordered_set_collection_spec.rb +88 -0
  50. data/spec/lib/dbd/helpers/uuid_spec.rb +15 -0
  51. data/spec/lib/dbd/provenance_fact_spec.rb +108 -0
  52. data/spec/lib/dbd/provenance_resource_spec.rb +77 -0
  53. data/spec/lib/dbd/rdf_base_spec.rb +39 -0
  54. data/spec/lib/dbd/repo/neo4j_repo/base_spec.rb +85 -0
  55. data/spec/lib/dbd/repo/neo4j_repo/performance_spec.rb +40 -0
  56. data/spec/lib/dbd/resource_spec.rb +166 -0
  57. data/spec/spec_helper.rb +19 -0
  58. metadata +272 -0
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ module Dbd
4
+ describe RdfBase do
5
+ it "module exists" do
6
+ described_class # should not raise error
7
+ end
8
+
9
+ it "The RDF module is loaded" do
10
+ RDF # should not raise error
11
+ end
12
+
13
+ describe "play with a rdf_graph" do
14
+
15
+ let(:rdf_graph) { RDF::Graph.new << [:hi, RDF::DC.title, "Hello, world!"] }
16
+
17
+ it "Create a rdf_graph" do
18
+ rdf_graph # should_not raise_error
19
+ end
20
+
21
+ it "writing data" do
22
+ rdf_graph.dump(:ntriples).chomp.should ==
23
+ '_:hi <http://purl.org/dc/terms/title> "Hello, world!" .'
24
+ end
25
+
26
+ it "Reading N-triples" do
27
+ n_triples_string =
28
+ '<http://example.com/test#1> ' +
29
+ '<http://www.w3.org/2000/01/rdf-schema#label> ' +
30
+ '"test 1" .'
31
+ RDF::Reader.for(:ntriples).new(n_triples_string) do |reader|
32
+ reader.each_statement do |statement|
33
+ statement.to_ntriples.chomp.should == n_triples_string
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ module Dbd
4
+ module Repo
5
+ module Neo4jRepo
6
+ describe Base do
7
+ it "has the Neography class" do
8
+ ::Neography
9
+ end
10
+
11
+ it "can insert a node", :neo4j => true do
12
+ subject.create_node("age" => 31, "name" => "Max")
13
+ end
14
+
15
+ it "can create a relationship", :neo4j => true do
16
+ max = subject.create_node("age" => 31, "name" => "Max")
17
+ roel = subject.create_node("age" => 33, "name" => "Roel")
18
+ subject.create_relationship("co-founders", max, roel)
19
+ end
20
+
21
+ describe "play with a minimal graph", :neo4j => true do
22
+
23
+ let(:max) {subject.create_node("age" => 31, "name" => "Max")}
24
+
25
+ let(:roel) {roel = subject.create_node("age" => 33, "name" => "Roel")}
26
+
27
+ before(:each) do
28
+ subject.create_relationship("co-founders", max, roel)
29
+ end
30
+
31
+ it "can get the root node" do
32
+ root = subject.get_root
33
+ end
34
+
35
+ it "can create a node index" do
36
+ subject.create_node_index("name_index_2", "exact", "lucene")
37
+ subject.list_node_indexes.keys.should include("name_index_2")
38
+ end
39
+
40
+ it "can list the indexes" do
41
+ subject.list_node_indexes
42
+ end
43
+
44
+ it "can add a node to an index" do
45
+ subject.add_node_to_index("name_index", "name", "Max", max)
46
+ subject.list_node_indexes.keys.should include("name_index")
47
+ end
48
+
49
+ it "can find entries in the index" do
50
+ subject.add_node_to_index("name_index", "name", "Max", max)
51
+ result = subject.get_node_index("name_index", "name", "Max")
52
+ result.size.should > 0
53
+ end
54
+
55
+ describe "query nodes", :neo4j_performance => true do
56
+
57
+ it "can get all nodes with a query" do
58
+ result = subject.execute_query("start n=node(*) return n")
59
+ result["data"].last.single["data"]["name"].should == "Roel"
60
+ end
61
+
62
+ it "can get the last 5 nodes with load_node" do
63
+ result = subject.execute_query("start n=node(*) return n")
64
+ node_uris = result["data"].last(5).map{|n| n.single["self"]}
65
+ nodes = node_uris.map do |uri|
66
+ subject.load_node(uri)
67
+ end
68
+ nodes.last.should be_a(Neography::Node)
69
+ end
70
+
71
+ let(:node) do
72
+ result = subject.execute_query("start n=node(*) return n")
73
+ uri = result["data"].last.single["self"]
74
+ subject.load_node(uri)
75
+ end
76
+
77
+ it "has age 33" do
78
+ node.age.should == 33
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ module Dbd
4
+ module Repo
5
+ module Neo4jRepo
6
+ describe Base, :neo4j_performance => true do
7
+
8
+ it "can insert maaaaany nodes and find them in the index" do
9
+ pending("DO NOT INSERT MORE NODES ... for now")
10
+ Knodes = 150000
11
+ MANY = 100
12
+ OFFSET = 55312
13
+
14
+ (OFFSET...(OFFSET+Knodes)).each do |knode|
15
+ puts knode
16
+ array = []
17
+ (0...MANY).each do |partial_age|
18
+ age = (knode * MANY) + partial_age
19
+ name = "Sax_#{age}"
20
+ comment = "Adolphe Sax_#{age} with a lot more text to it " + "A"*partial_age + " " + "B"*2*partial_age
21
+ array << [:create_node, {"age" => age, "name" => name, "comment" => comment}]
22
+ array << [:add_node_to_index, "name_index", "name", name, "{#{3*partial_age}}"]
23
+ if partial_age > 0
24
+ array << [:create_relationship, "friends", "{#{3*(partial_age-1)}}", "{#{3*partial_age}}", {:since => "ever"}]
25
+ else
26
+ array << [:create_node, {"age" => age, "name" => "foo"}]
27
+ end
28
+ end
29
+
30
+ subject.batch(*array)
31
+ end
32
+
33
+ result = subject.get_node_index("name_index", "name", "Sax_9700")
34
+ result.should_not be_nil
35
+ result.size.should > 0
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,166 @@
1
+ require 'spec_helper'
2
+
3
+ module Dbd
4
+ describe Resource do
5
+
6
+ let(:provenance_subject) { Factories::ProvenanceResource.provenance_resource.subject }
7
+
8
+ let(:resource) do
9
+ described_class.new(provenance_subject: provenance_subject)
10
+ end
11
+
12
+ let(:resource_subject) { resource.subject }
13
+
14
+ describe ".new_subject" do
15
+ it "returns a Fact#new_subject" do
16
+ described_class.new_subject.should be_a(Fact.new_subject.class)
17
+ end
18
+ end
19
+
20
+ describe ".new" do
21
+ describe "with a provenance_subject argument" do
22
+ it "has created a subject" do
23
+ resource.subject.should be_a(described_class.new_subject.class)
24
+ end
25
+
26
+ it "has stored the provenance_subject" do
27
+ resource.provenance_subject.should == provenance_subject
28
+ end
29
+ end
30
+
31
+ describe "with an explicit subject argument" do
32
+ it "has stored the given subject" do
33
+ explicit_subject = described_class.new_subject
34
+ described_class.new(
35
+ subject: explicit_subject,
36
+ provenance_subject: provenance_subject).subject.should == explicit_subject
37
+ end
38
+ end
39
+
40
+ describe "with a nil provenance_subject argument" do
41
+ it "raises a ProvenanceError" do
42
+ lambda { described_class.new(provenance_subject: nil) } .
43
+ should raise_error ProvenanceError
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "the fact collection" do
49
+
50
+ let(:fact_2_with_subject) { Factories::Fact.fact_2_with_subject }
51
+ let(:fact_3_with_subject) { Factories::Fact.fact_3_with_subject }
52
+ let(:fact_without_subject) { Factories::Fact.data_fact }
53
+ let(:fact_with_provenance) { Factories::Fact.data_fact(provenance_subject, nil) }
54
+ let(:fact_with_resource_subject) { Factories::Fact.data_fact(nil, resource_subject) }
55
+ let(:fact_with_provenance_and_resource_subject) { Factories::Fact.data_fact(provenance_subject, resource_subject) }
56
+ let(:fact_with_incorrect_provenance) { Factories::Fact.data_fact(Factories::ProvenanceFact.new_subject, resource_subject) }
57
+ let(:provenance_fact_context) { Factories::ProvenanceFact.context }
58
+
59
+ it "enumerable functions work" do
60
+ resource.to_a.should == []
61
+ end
62
+
63
+ describe "#<<" do
64
+
65
+ it "can add a two facts (no subject set)" do
66
+ resource << fact_without_subject
67
+ resource << fact_with_provenance
68
+ resource.size.should == 2
69
+ end
70
+
71
+ describe "checks and sets subject :" do
72
+ describe "adding a fact with subject :" do
73
+ describe "when the subject of the fact is equal to the resource_subject" do
74
+ it "inserts the fact unaltered" do
75
+ resource << fact_with_provenance_and_resource_subject
76
+ resource.first.should be_equal(fact_with_provenance_and_resource_subject)
77
+ end
78
+ end
79
+
80
+ describe "when the subject of the fact is not equal to the resource_subject" do
81
+ it "raises a SubjectError" do
82
+ lambda {resource << fact_2_with_subject } . should raise_error SubjectError
83
+ end
84
+ end
85
+ end
86
+
87
+ describe "adding a fact without subject" do
88
+
89
+ let (:new_fact) do
90
+ resource << fact_with_provenance
91
+ resource.first
92
+ end
93
+
94
+ it "insert a different instance" do
95
+ new_fact.should_not be_equal(fact_with_provenance)
96
+ end
97
+
98
+ it "is from the same class" do
99
+ new_fact.should be_a(fact_with_provenance.class)
100
+ end
101
+
102
+ it "has copied over the other attributes except :id" do
103
+ (fact_with_provenance.class.attributes - [:id,:subject]).each do |attr|
104
+ new_fact.send(attr).should == fact_with_provenance.send(attr)
105
+ end
106
+ end
107
+
108
+ it "has set the subject to the Resource subject" do
109
+ new_fact.subject.should == resource_subject
110
+ end
111
+ end
112
+ end
113
+
114
+ describe "checks and sets provenance_subject :" do
115
+ describe "adding a fact with a provenance subject :" do
116
+ describe "when the provenance_subject of the fact is equal to the provenance_subject of the resource" do
117
+ it "inserts the fact unaltered" do
118
+ resource << fact_with_provenance_and_resource_subject
119
+ resource.first.should be_equal(fact_with_provenance_and_resource_subject)
120
+ end
121
+ end
122
+
123
+ describe "when the provenance_subject of the fact is not equal to the resource" do
124
+ it "raises a ProvenanceError" do
125
+ lambda {resource << fact_with_incorrect_provenance } . should raise_error ProvenanceError
126
+ end
127
+ end
128
+ end
129
+
130
+ describe "adding a fact without provenance_subject" do
131
+
132
+ let (:new_fact) do
133
+ resource << fact_with_resource_subject
134
+ resource.first
135
+ end
136
+
137
+ it "insert a different instance" do
138
+ new_fact.should_not be_equal(fact_with_resource_subject)
139
+ end
140
+
141
+ it "is from the same class" do
142
+ new_fact.should be_a(fact_with_resource_subject.class)
143
+ end
144
+
145
+ it "has copied over the other attributes except :id" do
146
+ (new_fact.class.attributes - [:id,:provenance_subject]).each do |attr|
147
+ new_fact.send(attr).should == fact_with_resource_subject.send(attr)
148
+ end
149
+ end
150
+
151
+ it "has set the subject to the Resource subject" do
152
+ new_fact.provenance_subject.should == provenance_subject
153
+ end
154
+ end
155
+ end
156
+
157
+ end
158
+ end
159
+
160
+ describe "Factories::Resource" do
161
+ it ".facts_resource works" do
162
+ Factories::Resource.facts_resource(provenance_subject)
163
+ end
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,19 @@
1
+ require 'dbd'
2
+
3
+ # load all factories
4
+ root = File.expand_path('../', __FILE__)
5
+ Dir[root + "/factories/**/*.rb"].each {|f| require f}
6
+
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+
10
+ # Run specs in random order to surface order dependencies. If you find an
11
+ # order dependency and want to debug it, you can fix the order by providing
12
+ # the seed, which is printed after each run.
13
+ # --seed 1234
14
+ config.order = 'random'
15
+
16
+ # exclude neo4j tests for now (not working on Travis)
17
+ config.filter_run_excluding :neo4j => true
18
+ config.filter_run_excluding :neo4j_performance => true
19
+ end
metadata ADDED
@@ -0,0 +1,272 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dbd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Peter Vandenabeele
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - '>'
20
+ - !ruby/object:Gem::Version
21
+ version: 1.2.4
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - '>'
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: guard-rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rb-fsevent
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '0.9'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
78
+ - !ruby/object:Gem::Dependency
79
+ name: terminal-notifier-guard
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: yard
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: neography
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rdf
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.0.6
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.0.6
142
+ - !ruby/object:Gem::Dependency
143
+ name: ruby_peter_v
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ description: A data store that (almost) never forgets
159
+ email:
160
+ - peter@vandenabeele.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .gitignore
166
+ - .rspec
167
+ - .rvmrc
168
+ - .travis.yml
169
+ - Gemfile
170
+ - Guardfile
171
+ - LICENSE.txt
172
+ - README.md
173
+ - Rakefile
174
+ - dbd.gemspec
175
+ - docs/rationale.md
176
+ - docs/stories/001_create_a_fact.txt
177
+ - docs/stories/002_create_a_facts_collection.txt
178
+ - docs/stories/003_create_a_fact_origin.txt
179
+ - docs/stories/004_create_fact_origins_collection.txt
180
+ - docs/stories/005_CSV_export_the_graph.txt
181
+ - docs/stories/006_refactor_fact_origin_to_provenance_fact.txt
182
+ - docs/stories/007_rename_property_to_predicate.txt
183
+ - docs/stories/008_testing_different_ruby_versions.txt
184
+ - docs/stories/009_build_and_store_resources_with_provenance.txt
185
+ - docs/stories/010_provenance_fact_properties_from_provenance_ontology.txt
186
+ - docs/test.rb
187
+ - lib/dbd.rb
188
+ - lib/dbd/errors.rb
189
+ - lib/dbd/fact.rb
190
+ - lib/dbd/fact/collection.rb
191
+ - lib/dbd/fact/id.rb
192
+ - lib/dbd/fact/subject.rb
193
+ - lib/dbd/graph.rb
194
+ - lib/dbd/helpers/ordered_set_collection.rb
195
+ - lib/dbd/helpers/uuid.rb
196
+ - lib/dbd/provenance_fact.rb
197
+ - lib/dbd/provenance_resource.rb
198
+ - lib/dbd/rdf.rb
199
+ - lib/dbd/repo.rb
200
+ - lib/dbd/repo/neo4j_repo.rb
201
+ - lib/dbd/repo/neo4j_repo/base.rb
202
+ - lib/dbd/resource.rb
203
+ - lib/dbd/version.rb
204
+ - spec/factories/fact.rb
205
+ - spec/factories/provenance_fact.rb
206
+ - spec/factories/provenance_resource.rb
207
+ - spec/factories/resource.rb
208
+ - spec/lib/dbd/fact/collection_spec.rb
209
+ - spec/lib/dbd/fact/id_spec.rb
210
+ - spec/lib/dbd/fact/subject_spec.rb
211
+ - spec/lib/dbd/fact_spec.rb
212
+ - spec/lib/dbd/graph_spec.rb
213
+ - spec/lib/dbd/helpers/ordered_set_collection_spec.rb
214
+ - spec/lib/dbd/helpers/uuid_spec.rb
215
+ - spec/lib/dbd/provenance_fact_spec.rb
216
+ - spec/lib/dbd/provenance_resource_spec.rb
217
+ - spec/lib/dbd/rdf_base_spec.rb
218
+ - spec/lib/dbd/repo/neo4j_repo/base_spec.rb
219
+ - spec/lib/dbd/repo/neo4j_repo/performance_spec.rb
220
+ - spec/lib/dbd/resource_spec.rb
221
+ - spec/spec_helper.rb
222
+ homepage: ''
223
+ licenses:
224
+ - MIT
225
+ post_install_message:
226
+ rdoc_options: []
227
+ require_paths:
228
+ - lib
229
+ required_ruby_version: !ruby/object:Gem::Requirement
230
+ none: false
231
+ requirements:
232
+ - - '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ segments:
236
+ - 0
237
+ hash: 1715906838071100046
238
+ required_rubygems_version: !ruby/object:Gem::Requirement
239
+ none: false
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ segments:
245
+ - 0
246
+ hash: 1715906838071100046
247
+ requirements: []
248
+ rubyforge_project:
249
+ rubygems_version: 1.8.25
250
+ signing_key:
251
+ specification_version: 3
252
+ summary: A data store that (almost) never forgets
253
+ test_files:
254
+ - spec/factories/fact.rb
255
+ - spec/factories/provenance_fact.rb
256
+ - spec/factories/provenance_resource.rb
257
+ - spec/factories/resource.rb
258
+ - spec/lib/dbd/fact/collection_spec.rb
259
+ - spec/lib/dbd/fact/id_spec.rb
260
+ - spec/lib/dbd/fact/subject_spec.rb
261
+ - spec/lib/dbd/fact_spec.rb
262
+ - spec/lib/dbd/graph_spec.rb
263
+ - spec/lib/dbd/helpers/ordered_set_collection_spec.rb
264
+ - spec/lib/dbd/helpers/uuid_spec.rb
265
+ - spec/lib/dbd/provenance_fact_spec.rb
266
+ - spec/lib/dbd/provenance_resource_spec.rb
267
+ - spec/lib/dbd/rdf_base_spec.rb
268
+ - spec/lib/dbd/repo/neo4j_repo/base_spec.rb
269
+ - spec/lib/dbd/repo/neo4j_repo/performance_spec.rb
270
+ - spec/lib/dbd/resource_spec.rb
271
+ - spec/spec_helper.rb
272
+ has_rdoc: