dbd 0.0.1 → 0.0.2
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 +7 -0
- data/HISTORY.txt +13 -0
- data/README.md +11 -12
- data/dbd.gemspec +1 -1
- data/docs/stories/009_build_and_store_resources_with_provenance.txt +6 -3
- data/docs/stories/010_time_class.txt +23 -0
- data/docs/stories/011_store_resource_in_graph.txt +10 -0
- data/docs/stories/{010_provenance_fact_properties_from_provenance_ontology.txt → 012_provenance_fact_properties_from_provenance_ontology.txt} +1 -1
- data/docs/test.rb +12 -2
- data/lib/dbd.rb +1 -0
- data/lib/dbd/fact.rb +47 -44
- data/lib/dbd/fact/collection.rb +2 -3
- data/lib/dbd/graph.rb +13 -14
- data/lib/dbd/provenance_fact.rb +4 -4
- data/lib/dbd/provenance_resource.rb +5 -4
- data/lib/dbd/resource.rb +19 -40
- data/lib/dbd/time_stamp.rb +105 -0
- data/lib/dbd/version.rb +1 -1
- data/spec/lib/dbd/fact/collection_spec.rb +8 -6
- data/spec/lib/dbd/fact_spec.rb +38 -52
- data/spec/lib/dbd/graph_spec.rb +57 -14
- data/spec/lib/dbd/performance_spec.rb +41 -0
- data/spec/lib/dbd/provenance_fact_spec.rb +18 -20
- data/spec/lib/dbd/provenance_resource_spec.rb +7 -5
- data/spec/lib/dbd/resource_spec.rb +27 -29
- data/spec/lib/dbd/time_stamp_spec.rb +110 -0
- metadata +16 -34
@@ -78,35 +78,37 @@ module Dbd
|
|
78
78
|
end
|
79
79
|
|
80
80
|
describe "when the subject of the fact is not equal to the resource_subject" do
|
81
|
-
it "raises a
|
82
|
-
lambda {resource << fact_2_with_subject } . should raise_error
|
81
|
+
it "raises a SetOnceError" do
|
82
|
+
lambda {resource << fact_2_with_subject } . should raise_error(
|
83
|
+
SetOnceError,
|
84
|
+
"Value of subject was #{fact_2_with_subject.subject}, " \
|
85
|
+
"trying to set it to #{resource.subject}")
|
83
86
|
end
|
84
87
|
end
|
85
88
|
end
|
86
89
|
|
87
90
|
describe "adding a fact without subject" do
|
88
91
|
|
89
|
-
|
92
|
+
before(:each) do
|
90
93
|
resource << fact_with_provenance
|
91
|
-
resource.first
|
92
94
|
end
|
93
95
|
|
94
|
-
|
95
|
-
|
96
|
+
let(:fact_in_resource) do
|
97
|
+
resource.single
|
96
98
|
end
|
97
99
|
|
98
|
-
it "
|
99
|
-
|
100
|
+
it "insert the same instance" do
|
101
|
+
fact_in_resource.should be_equal(fact_with_provenance)
|
100
102
|
end
|
101
103
|
|
102
|
-
it "has
|
103
|
-
(fact_with_provenance.class.attributes - [:
|
104
|
-
|
104
|
+
it "has kept the other attributes" do
|
105
|
+
(fact_with_provenance.class.attributes - [:subject]).each do |attr|
|
106
|
+
fact_in_resource.send(attr).should == fact_with_provenance.send(attr)
|
105
107
|
end
|
106
108
|
end
|
107
109
|
|
108
110
|
it "has set the subject to the Resource subject" do
|
109
|
-
|
111
|
+
fact_in_resource.subject.should == resource_subject
|
110
112
|
end
|
111
113
|
end
|
112
114
|
end
|
@@ -116,44 +118,40 @@ module Dbd
|
|
116
118
|
describe "when the provenance_subject of the fact is equal to the provenance_subject of the resource" do
|
117
119
|
it "inserts the fact unaltered" do
|
118
120
|
resource << fact_with_provenance_and_resource_subject
|
119
|
-
resource.
|
121
|
+
resource.single.should be_equal(fact_with_provenance_and_resource_subject)
|
120
122
|
end
|
121
123
|
end
|
122
124
|
|
123
125
|
describe "when the provenance_subject of the fact is not equal to the resource" do
|
124
126
|
it "raises a ProvenanceError" do
|
125
|
-
lambda {resource << fact_with_incorrect_provenance } . should raise_error
|
127
|
+
lambda { resource << fact_with_incorrect_provenance } . should raise_error(
|
128
|
+
SetOnceError,
|
129
|
+
"Value of provenance_subject was #{fact_with_incorrect_provenance.provenance_subject}, " \
|
130
|
+
"trying to set it to #{resource.provenance_subject}")
|
126
131
|
end
|
127
132
|
end
|
128
133
|
end
|
129
134
|
|
130
135
|
describe "adding a fact without provenance_subject" do
|
131
136
|
|
132
|
-
|
137
|
+
before(:each) do
|
133
138
|
resource << fact_with_resource_subject
|
134
|
-
resource.first
|
135
139
|
end
|
136
140
|
|
137
|
-
|
138
|
-
|
141
|
+
let(:fact_in_resource) do
|
142
|
+
resource.single
|
139
143
|
end
|
140
144
|
|
141
|
-
it "
|
142
|
-
|
145
|
+
it "inserts the same instance" do
|
146
|
+
fact_in_resource.should be_equal(fact_with_resource_subject)
|
143
147
|
end
|
144
148
|
|
145
|
-
it "has
|
146
|
-
|
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
|
149
|
+
it "has set the provenance_subject to the Resource provenance_subject" do
|
150
|
+
fact_in_resource.provenance_subject.should == provenance_subject
|
153
151
|
end
|
154
152
|
end
|
155
|
-
end
|
156
153
|
|
154
|
+
end
|
157
155
|
end
|
158
156
|
end
|
159
157
|
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Dbd
|
4
|
+
describe TimeStamp do
|
5
|
+
describe ".new" do
|
6
|
+
|
7
|
+
let(:time) { Time.now.utc }
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
time
|
11
|
+
Time.stub(:now).and_return(time)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "creates a new (random) time_stamp" do
|
15
|
+
subject # should_not raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
it "with :time option, sets that to time" do
|
19
|
+
near_future = time + 100
|
20
|
+
time_stamp = described_class.new(time: near_future)
|
21
|
+
time_stamp.time.should == near_future
|
22
|
+
end
|
23
|
+
|
24
|
+
it "with :larger_than, sets a time that is strictly and slightly larger than this" do
|
25
|
+
larger_than = described_class.new(time: time + Rational('500/1000_000')) # 0.5 ms
|
26
|
+
time_stamp = described_class.new(larger_than: larger_than)
|
27
|
+
time_stamp.time.should > larger_than.time
|
28
|
+
(time_stamp.time - larger_than.time).should < Rational('1/1000_000') # 1 us
|
29
|
+
end
|
30
|
+
|
31
|
+
it "without :larger_than adds some random time to the generated time" do
|
32
|
+
time_stamp = described_class.new
|
33
|
+
time_stamp.time.should > time
|
34
|
+
(time_stamp.time - time).should < Rational('1/1000_000') # 1 us
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".time_format_regexp" do
|
39
|
+
it "matches an example string" do
|
40
|
+
a_time_stamp = "2013-05-16 23:52:38.123456789 UTC"
|
41
|
+
a_time_stamp.should match(described_class.to_s_regexp)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#time to allow comparison" do
|
46
|
+
it "responds with a time" do
|
47
|
+
described_class.new.time.should be_a(Time)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#to_s" do
|
52
|
+
it "returns a Time format string" do
|
53
|
+
subject.to_s.should match(described_class.to_s_regexp)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
let(:time_stamp_0) { described_class.new(time: Time.new(2013,5,18,12,0,0)) }
|
58
|
+
let(:time_stamp_1) { described_class.new(time: Time.new(2013,5,18,12,0,0)) }
|
59
|
+
let(:time_stamp_2) { described_class.new(time: Time.new(2013,5,18,12,0,1)) }
|
60
|
+
|
61
|
+
describe "==" do
|
62
|
+
it "should be ==" do
|
63
|
+
time_stamp_0.should == time_stamp_1
|
64
|
+
end
|
65
|
+
|
66
|
+
it "hash should also be equal" do
|
67
|
+
time_stamp_0.hash.should == time_stamp_1.hash
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe ">" do
|
72
|
+
it "is true if time_stamp is really larger" do
|
73
|
+
time_stamp_2.should > time_stamp_1
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "<" do
|
78
|
+
it "is true if time_stamp is really smaller" do
|
79
|
+
time_stamp_1.should < time_stamp_2
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "<=" do
|
84
|
+
|
85
|
+
it "is true if time_stamp_1 is really smaller" do
|
86
|
+
time_stamp_1.should <= time_stamp_2
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "+" do
|
91
|
+
it "returns a larger time_stamp" do
|
92
|
+
(subject + 1).should > subject
|
93
|
+
end
|
94
|
+
|
95
|
+
it "sees a difference of 1 nanosecond" do
|
96
|
+
(subject + Rational('1/1000_000_000')).should > subject
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "-" do
|
101
|
+
it "returns the time difference" do
|
102
|
+
((subject + 1) - subject).should == 1
|
103
|
+
end
|
104
|
+
|
105
|
+
it "sees a difference of 1 nanosecond" do
|
106
|
+
((subject + Rational('1/1000_000_000')) - subject).should == Rational('1/1_000_000_000')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dbd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Peter Vandenabeele
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - '>'
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - '>'
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: guard-rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rb-fsevent
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: terminal-notifier-guard
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: yard
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,7 +97,6 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: neography
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,7 +111,6 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: rdf
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ~>
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -142,19 +125,17 @@ dependencies:
|
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: ruby_peter_v
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
131
|
+
version: 0.0.4
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
138
|
+
version: 0.0.4
|
158
139
|
description: A data store that (almost) never forgets
|
159
140
|
email:
|
160
141
|
- peter@vandenabeele.com
|
@@ -168,6 +149,7 @@ files:
|
|
168
149
|
- .travis.yml
|
169
150
|
- Gemfile
|
170
151
|
- Guardfile
|
152
|
+
- HISTORY.txt
|
171
153
|
- LICENSE.txt
|
172
154
|
- README.md
|
173
155
|
- Rakefile
|
@@ -182,7 +164,9 @@ files:
|
|
182
164
|
- docs/stories/007_rename_property_to_predicate.txt
|
183
165
|
- docs/stories/008_testing_different_ruby_versions.txt
|
184
166
|
- docs/stories/009_build_and_store_resources_with_provenance.txt
|
185
|
-
- docs/stories/
|
167
|
+
- docs/stories/010_time_class.txt
|
168
|
+
- docs/stories/011_store_resource_in_graph.txt
|
169
|
+
- docs/stories/012_provenance_fact_properties_from_provenance_ontology.txt
|
186
170
|
- docs/test.rb
|
187
171
|
- lib/dbd.rb
|
188
172
|
- lib/dbd/errors.rb
|
@@ -200,6 +184,7 @@ files:
|
|
200
184
|
- lib/dbd/repo/neo4j_repo.rb
|
201
185
|
- lib/dbd/repo/neo4j_repo/base.rb
|
202
186
|
- lib/dbd/resource.rb
|
187
|
+
- lib/dbd/time_stamp.rb
|
203
188
|
- lib/dbd/version.rb
|
204
189
|
- spec/factories/fact.rb
|
205
190
|
- spec/factories/provenance_fact.rb
|
@@ -212,43 +197,38 @@ files:
|
|
212
197
|
- spec/lib/dbd/graph_spec.rb
|
213
198
|
- spec/lib/dbd/helpers/ordered_set_collection_spec.rb
|
214
199
|
- spec/lib/dbd/helpers/uuid_spec.rb
|
200
|
+
- spec/lib/dbd/performance_spec.rb
|
215
201
|
- spec/lib/dbd/provenance_fact_spec.rb
|
216
202
|
- spec/lib/dbd/provenance_resource_spec.rb
|
217
203
|
- spec/lib/dbd/rdf_base_spec.rb
|
218
204
|
- spec/lib/dbd/repo/neo4j_repo/base_spec.rb
|
219
205
|
- spec/lib/dbd/repo/neo4j_repo/performance_spec.rb
|
220
206
|
- spec/lib/dbd/resource_spec.rb
|
207
|
+
- spec/lib/dbd/time_stamp_spec.rb
|
221
208
|
- spec/spec_helper.rb
|
222
209
|
homepage: ''
|
223
210
|
licenses:
|
224
211
|
- MIT
|
212
|
+
metadata: {}
|
225
213
|
post_install_message:
|
226
214
|
rdoc_options: []
|
227
215
|
require_paths:
|
228
216
|
- lib
|
229
217
|
required_ruby_version: !ruby/object:Gem::Requirement
|
230
|
-
none: false
|
231
218
|
requirements:
|
232
219
|
- - '>='
|
233
220
|
- !ruby/object:Gem::Version
|
234
221
|
version: '0'
|
235
|
-
segments:
|
236
|
-
- 0
|
237
|
-
hash: 1715906838071100046
|
238
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
|
-
none: false
|
240
223
|
requirements:
|
241
224
|
- - '>='
|
242
225
|
- !ruby/object:Gem::Version
|
243
226
|
version: '0'
|
244
|
-
segments:
|
245
|
-
- 0
|
246
|
-
hash: 1715906838071100046
|
247
227
|
requirements: []
|
248
228
|
rubyforge_project:
|
249
|
-
rubygems_version:
|
229
|
+
rubygems_version: 2.0.3
|
250
230
|
signing_key:
|
251
|
-
specification_version:
|
231
|
+
specification_version: 4
|
252
232
|
summary: A data store that (almost) never forgets
|
253
233
|
test_files:
|
254
234
|
- spec/factories/fact.rb
|
@@ -262,11 +242,13 @@ test_files:
|
|
262
242
|
- spec/lib/dbd/graph_spec.rb
|
263
243
|
- spec/lib/dbd/helpers/ordered_set_collection_spec.rb
|
264
244
|
- spec/lib/dbd/helpers/uuid_spec.rb
|
245
|
+
- spec/lib/dbd/performance_spec.rb
|
265
246
|
- spec/lib/dbd/provenance_fact_spec.rb
|
266
247
|
- spec/lib/dbd/provenance_resource_spec.rb
|
267
248
|
- spec/lib/dbd/rdf_base_spec.rb
|
268
249
|
- spec/lib/dbd/repo/neo4j_repo/base_spec.rb
|
269
250
|
- spec/lib/dbd/repo/neo4j_repo/performance_spec.rb
|
270
251
|
- spec/lib/dbd/resource_spec.rb
|
252
|
+
- spec/lib/dbd/time_stamp_spec.rb
|
271
253
|
- spec/spec_helper.rb
|
272
254
|
has_rdoc:
|