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.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/.travis.yml +10 -0
- data/Gemfile +8 -0
- data/Guardfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +97 -0
- data/Rakefile +1 -0
- data/dbd.gemspec +30 -0
- data/docs/rationale.md +17 -0
- data/docs/stories/001_create_a_fact.txt +15 -0
- data/docs/stories/002_create_a_facts_collection.txt +14 -0
- data/docs/stories/003_create_a_fact_origin.txt +15 -0
- data/docs/stories/004_create_fact_origins_collection.txt +8 -0
- data/docs/stories/005_CSV_export_the_graph.txt +18 -0
- data/docs/stories/006_refactor_fact_origin_to_provenance_fact.txt +20 -0
- data/docs/stories/007_rename_property_to_predicate.txt +6 -0
- data/docs/stories/008_testing_different_ruby_versions.txt +7 -0
- data/docs/stories/009_build_and_store_resources_with_provenance.txt +38 -0
- data/docs/stories/010_provenance_fact_properties_from_provenance_ontology.txt +10 -0
- data/docs/test.rb +32 -0
- data/lib/dbd.rb +13 -0
- data/lib/dbd/errors.rb +11 -0
- data/lib/dbd/fact.rb +182 -0
- data/lib/dbd/fact/collection.rb +60 -0
- data/lib/dbd/fact/id.rb +19 -0
- data/lib/dbd/fact/subject.rb +21 -0
- data/lib/dbd/graph.rb +47 -0
- data/lib/dbd/helpers/ordered_set_collection.rb +86 -0
- data/lib/dbd/helpers/uuid.rb +33 -0
- data/lib/dbd/provenance_fact.rb +76 -0
- data/lib/dbd/provenance_resource.rb +54 -0
- data/lib/dbd/rdf.rb +9 -0
- data/lib/dbd/repo.rb +8 -0
- data/lib/dbd/repo/neo4j_repo.rb +4 -0
- data/lib/dbd/repo/neo4j_repo/base.rb +55 -0
- data/lib/dbd/resource.rb +117 -0
- data/lib/dbd/version.rb +3 -0
- data/spec/factories/fact.rb +76 -0
- data/spec/factories/provenance_fact.rb +34 -0
- data/spec/factories/provenance_resource.rb +16 -0
- data/spec/factories/resource.rb +17 -0
- data/spec/lib/dbd/fact/collection_spec.rb +236 -0
- data/spec/lib/dbd/fact/id_spec.rb +19 -0
- data/spec/lib/dbd/fact/subject_spec.rb +19 -0
- data/spec/lib/dbd/fact_spec.rb +217 -0
- data/spec/lib/dbd/graph_spec.rb +214 -0
- data/spec/lib/dbd/helpers/ordered_set_collection_spec.rb +88 -0
- data/spec/lib/dbd/helpers/uuid_spec.rb +15 -0
- data/spec/lib/dbd/provenance_fact_spec.rb +108 -0
- data/spec/lib/dbd/provenance_resource_spec.rb +77 -0
- data/spec/lib/dbd/rdf_base_spec.rb +39 -0
- data/spec/lib/dbd/repo/neo4j_repo/base_spec.rb +85 -0
- data/spec/lib/dbd/repo/neo4j_repo/performance_spec.rb +40 -0
- data/spec/lib/dbd/resource_spec.rb +166 -0
- data/spec/spec_helper.rb +19 -0
- 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
|
data/spec/spec_helper.rb
ADDED
@@ -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:
|