neo4j-wrapper 0.0.1-java
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +10 -0
- data/README.rdoc +64 -0
- data/lib/db/active_tx_log +1 -0
- data/lib/db/index/lucene/node/Person_exact/_0.fdt +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.fdx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.fnm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_0.frq +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.nrm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_0.prx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.tii +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.tis +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.fdt +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.fdx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.fnm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_1.frq +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.nrm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_1.prx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.tii +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.tis +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.fdt +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.fdx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.fnm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_2.frq +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.nrm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_2.prx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.tii +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.tis +0 -0
- data/lib/db/index/lucene/node/Person_exact/segments.gen +0 -0
- data/lib/db/index/lucene/node/Person_exact/segments_3 +0 -0
- data/lib/db/index/lucene-store.db +0 -0
- data/lib/db/index/lucene.log.active +0 -0
- data/lib/db/index.db +0 -0
- data/lib/db/messages.log +826 -0
- data/lib/db/neostore +0 -0
- data/lib/db/neostore.id +0 -0
- data/lib/db/neostore.nodestore.db +0 -0
- data/lib/db/neostore.nodestore.db.id +0 -0
- data/lib/db/neostore.propertystore.db +0 -0
- data/lib/db/neostore.propertystore.db.arrays +0 -0
- data/lib/db/neostore.propertystore.db.arrays.id +0 -0
- data/lib/db/neostore.propertystore.db.id +0 -0
- data/lib/db/neostore.propertystore.db.index +0 -0
- data/lib/db/neostore.propertystore.db.index.id +0 -0
- data/lib/db/neostore.propertystore.db.index.keys +0 -0
- data/lib/db/neostore.propertystore.db.index.keys.id +0 -0
- data/lib/db/neostore.propertystore.db.strings +0 -0
- data/lib/db/neostore.propertystore.db.strings.id +0 -0
- data/lib/db/neostore.relationshipstore.db +0 -0
- data/lib/db/neostore.relationshipstore.db.id +0 -0
- data/lib/db/neostore.relationshiptypestore.db +0 -0
- data/lib/db/neostore.relationshiptypestore.db.id +0 -0
- data/lib/db/neostore.relationshiptypestore.db.names +0 -0
- data/lib/db/neostore.relationshiptypestore.db.names.id +0 -0
- data/lib/db/nioneo_logical.log.active +0 -0
- data/lib/db/tm_tx_log.1 +0 -0
- data/lib/example.rb +34 -0
- data/lib/neo4j/identity_map.rb +109 -0
- data/lib/neo4j/node_mixin.rb +74 -0
- data/lib/neo4j/relationship_mixin.rb +62 -0
- data/lib/neo4j/type_converters/type_converters.rb +333 -0
- data/lib/neo4j-wrapper/class_methods.rb +27 -0
- data/lib/neo4j-wrapper/find.rb +65 -0
- data/lib/neo4j-wrapper/has_n/class_methods.rb +131 -0
- data/lib/neo4j-wrapper/has_n/decl_rel.rb +261 -0
- data/lib/neo4j-wrapper/has_n/instance_methods.rb +12 -0
- data/lib/neo4j-wrapper/has_n/nodes.rb +83 -0
- data/lib/neo4j-wrapper/node_mixin/class_methods.rb +53 -0
- data/lib/neo4j-wrapper/node_mixin/delegates.rb +140 -0
- data/lib/neo4j-wrapper/node_mixin/initialize.rb +43 -0
- data/lib/neo4j-wrapper/properties/class_methods.rb +150 -0
- data/lib/neo4j-wrapper/relationship_mixin/class_methods.rb +30 -0
- data/lib/neo4j-wrapper/relationship_mixin/delegates.rb +110 -0
- data/lib/neo4j-wrapper/relationship_mixin/initialize.rb +35 -0
- data/lib/neo4j-wrapper/rule/class_methods.rb +204 -0
- data/lib/neo4j-wrapper/rule/event_listener.rb +66 -0
- data/lib/neo4j-wrapper/rule/functions/count.rb +45 -0
- data/lib/neo4j-wrapper/rule/functions/function.rb +76 -0
- data/lib/neo4j-wrapper/rule/functions/sum.rb +31 -0
- data/lib/neo4j-wrapper/rule/instance_methods.rb +16 -0
- data/lib/neo4j-wrapper/rule/neo4j_core_ext/traverser.rb +29 -0
- data/lib/neo4j-wrapper/rule/rule.rb +134 -0
- data/lib/neo4j-wrapper/rule/rule_node.rb +205 -0
- data/lib/neo4j-wrapper/version.rb +5 -0
- data/lib/neo4j-wrapper/wrapper.rb +38 -0
- data/lib/neo4j-wrapper.rb +35 -0
- data/lib/test.rb +61 -0
- data/neo4j-wrapper.gemspec +31 -0
- metadata +162 -0
@@ -0,0 +1,205 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Wrapper
|
3
|
+
module Rule
|
4
|
+
|
5
|
+
# This is the node that has relationships to all nodes of a given class.
|
6
|
+
# For example if the PersonNode has a rule then it will also have one RuleNode
|
7
|
+
# from where it will create relationships to each created node of type PersonNode.
|
8
|
+
# The RuleNode can also be used to hold properties for functions, like sum and count.
|
9
|
+
#
|
10
|
+
class RuleNode
|
11
|
+
include Neo4j::Core::ToJava
|
12
|
+
attr_reader :rules
|
13
|
+
attr_reader :model_class
|
14
|
+
@@rule_nodes = {}
|
15
|
+
|
16
|
+
def initialize(clazz)
|
17
|
+
classname = clazz.to_s
|
18
|
+
@model_class = Neo4j::Wrapper.to_class(classname)
|
19
|
+
@classname = clazz
|
20
|
+
@rules = []
|
21
|
+
@ref_node_key = ("rule_ref_for_" + clazz.to_s).to_sym
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
"RuleNode #{@classname}, @@rule_nodes #{@@rule_nodes.size} #rules: #{@rules.size}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def rule_node
|
29
|
+
ref_node._java_node.synchronized do
|
30
|
+
@@rule_nodes[key] ||= find_node || create_node
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def rule_node?(node)
|
35
|
+
@@rule_nodes[key] == node
|
36
|
+
end
|
37
|
+
|
38
|
+
def key
|
39
|
+
"#{ref_node.neo_id}#{@ref_node_key}".to_sym
|
40
|
+
end
|
41
|
+
|
42
|
+
def ref_node
|
43
|
+
if @model_class.respond_to? :ref_node_for_class
|
44
|
+
@model_class.ref_node_for_class
|
45
|
+
else
|
46
|
+
Neo4j.ref_node
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def create_node
|
51
|
+
Neo4j::Transaction.run do
|
52
|
+
node = Neo4j::Node.new
|
53
|
+
ref_node.create_relationship_to(node, type_to_java(@classname))
|
54
|
+
node
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def inherit(subclass)
|
59
|
+
@rules.each do |rule|
|
60
|
+
subclass.rule rule.rule_name, rule.props, &rule.filter
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def find_node
|
65
|
+
ref_node.rel?(:outgoing, @classname.to_s) && ref_node._node(:outgoing, @classname.to_s)
|
66
|
+
end
|
67
|
+
|
68
|
+
def ref_node_changed?
|
69
|
+
if ref_node != Thread.current[@ref_node_key]
|
70
|
+
Thread.current[@ref_node_key] = ref_node
|
71
|
+
true
|
72
|
+
else
|
73
|
+
false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def clear_rule_node
|
78
|
+
@@rule_nodes[key] = nil
|
79
|
+
end
|
80
|
+
|
81
|
+
def rule_names
|
82
|
+
@rules.map { |r| r.rule_name }
|
83
|
+
end
|
84
|
+
|
85
|
+
def find_rule(rule_name)
|
86
|
+
@rules.find { |rule| rule.rule_name == rule_name }
|
87
|
+
end
|
88
|
+
|
89
|
+
def add_rule(rule)
|
90
|
+
@rules << rule
|
91
|
+
end
|
92
|
+
|
93
|
+
def remove_rule(rule_name)
|
94
|
+
r = find_rule(rule_name)
|
95
|
+
r && @rules.delete(r)
|
96
|
+
end
|
97
|
+
|
98
|
+
# Return a traversal object with methods for each rule and function.
|
99
|
+
# E.g. Person.all.old or Person.all.sum(:age)
|
100
|
+
def traversal(rule_name)
|
101
|
+
traversal = rule_node.outgoing(rule_name)
|
102
|
+
@rules.each do |rule|
|
103
|
+
traversal.filter_method(rule.rule_name) do |path|
|
104
|
+
path.end_node.rel?(:incoming, rule.rule_name)
|
105
|
+
end
|
106
|
+
rule.functions && rule.functions.each do |func|
|
107
|
+
traversal.functions_method(func, self, rule_name)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
traversal
|
111
|
+
end
|
112
|
+
|
113
|
+
def find_function(rule_name, function_name, function_id)
|
114
|
+
rule = find_rule(rule_name)
|
115
|
+
rule.find_function(function_name, function_id)
|
116
|
+
end
|
117
|
+
|
118
|
+
def execute_rules(node, *changes)
|
119
|
+
@rules.each do |rule|
|
120
|
+
execute_rule(rule, node, *changes)
|
121
|
+
execute_other_rules(rule, node)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def execute_other_rules(rule, node)
|
126
|
+
rule.triggers && rule.triggers.each do |rel_type|
|
127
|
+
node.incoming(rel_type).each { |n| n.trigger_rules }
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def execute_rule(rule, node, *changes)
|
132
|
+
if rule.execute_filter(node)
|
133
|
+
if connected?(rule.rule_name, node)
|
134
|
+
# it was already connected - the node is in the same rule group but a property has changed
|
135
|
+
execute_update_functions(rule, *changes)
|
136
|
+
else
|
137
|
+
# the node has changed or is in a new rule group
|
138
|
+
connect(rule.rule_name, node)
|
139
|
+
execute_add_functions(rule, *changes)
|
140
|
+
end
|
141
|
+
else
|
142
|
+
if break_connection(rule.rule_name, node)
|
143
|
+
# the node has been removed from a rule group
|
144
|
+
execute_delete_functions(rule, *changes)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def execute_update_functions(rule, *changes)
|
150
|
+
if functions = find_functions_for_changes(rule, *changes)
|
151
|
+
functions && functions.each { |f| f.update(rule.rule_name, rule_node, changes[1], changes[2]) }
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def execute_add_functions(rule, *changes)
|
156
|
+
if functions = find_functions_for_changes(rule, *changes)
|
157
|
+
functions && functions.each { |f| f.add(rule.rule_name, rule_node, changes[2]) }
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def execute_delete_functions(rule, *changes)
|
162
|
+
if functions = find_functions_for_changes(rule, *changes)
|
163
|
+
functions.each { |f| f.delete(rule.rule_name, rule_node, changes[1]) }
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def find_functions_for_changes(rule, *changes)
|
168
|
+
!changes.empty? && rule.functions_for(changes[0])
|
169
|
+
end
|
170
|
+
|
171
|
+
# work out if two nodes are connected by a particular relationship
|
172
|
+
# uses the end_node to start with because it's more likely to have less relationships to go through
|
173
|
+
# (just the number of superclasses it has really)
|
174
|
+
def connected?(rule_name, end_node)
|
175
|
+
end_node.nodes(:incoming, rule_name).find { |n| n == rule_node }
|
176
|
+
end
|
177
|
+
|
178
|
+
def connect(rule_name, end_node)
|
179
|
+
rule_node._java_node.create_relationship_to(end_node._java_node, type_to_java(rule_name))
|
180
|
+
end
|
181
|
+
|
182
|
+
# sever a direct one-to-one relationship if it exists
|
183
|
+
def break_connection(rule_name, end_node)
|
184
|
+
rel = end_node._rels(:incoming, rule_name).find { |r| r._start_node == rule_node }
|
185
|
+
rel && rel.del
|
186
|
+
!rel.nil?
|
187
|
+
end
|
188
|
+
|
189
|
+
def bulk_update?
|
190
|
+
@rules.size == 1 && @rules.first.bulk_update?
|
191
|
+
end
|
192
|
+
|
193
|
+
def classes_changed(total)
|
194
|
+
@rules.each do |rule|
|
195
|
+
if rule.bulk_update?
|
196
|
+
rule.functions.first.classes_changed(rule.rule_name, rule_node, total)
|
197
|
+
total.added.each { |node| connect(rule.rule_name, node) }
|
198
|
+
total.deleted.each { |node| break_connection(rule.rule_name, node) }
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Wrapper
|
3
|
+
|
4
|
+
# This method is used when loading Neo4j::Node objects
|
5
|
+
#
|
6
|
+
# Reads the <tt>_classname</tt> property and tries to load the ruby class.
|
7
|
+
# The Neo4j::Core gem will use this method, because the following:
|
8
|
+
# Neo4j::Node.wrapper_proc=method(:wrapper)
|
9
|
+
#
|
10
|
+
# @param [Neo4j::Node, Neo4j:Relationship] entity the entity which might be wrapped
|
11
|
+
# @return [Object] a Ruby class wrapping the given entity
|
12
|
+
# @see Neo4j::Core::Wrapper.wrapper_proc=
|
13
|
+
def wrapper(entity)
|
14
|
+
return entity unless entity.property?(:_classname)
|
15
|
+
existing_instance = Neo4j::IdentityMap.get(entity)
|
16
|
+
return existing_instance if existing_instance
|
17
|
+
new_instance = to_class(entity[:_classname])._load_wrapper(entity)
|
18
|
+
Neo4j::IdentityMap.add(entity, new_instance)
|
19
|
+
new_instance
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param [String] class_name the name we want the Class for
|
23
|
+
# @return [Class] the class corresponding to the given name
|
24
|
+
def to_class(class_name)
|
25
|
+
class_name.split("::").inject(Kernel) { |container, name| container.const_get(name.to_s) }
|
26
|
+
end
|
27
|
+
|
28
|
+
extend self
|
29
|
+
|
30
|
+
Neo4j::Node.wrapper_proc=method(:wrapper)
|
31
|
+
Neo4j::Relationship.wrapper_proc=method(:wrapper)
|
32
|
+
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'neo4j-core'
|
2
|
+
|
3
|
+
require 'neo4j-wrapper/wrapper'
|
4
|
+
require 'neo4j-wrapper/class_methods'
|
5
|
+
require 'neo4j-wrapper/version'
|
6
|
+
require 'neo4j-wrapper/node_mixin/delegates'
|
7
|
+
require 'neo4j-wrapper/node_mixin/class_methods'
|
8
|
+
require 'neo4j-wrapper/node_mixin/initialize'
|
9
|
+
|
10
|
+
require 'neo4j-wrapper/properties/class_methods'
|
11
|
+
|
12
|
+
require 'neo4j-wrapper/has_n/class_methods'
|
13
|
+
require 'neo4j-wrapper/has_n/decl_rel'
|
14
|
+
require 'neo4j-wrapper/has_n/nodes'
|
15
|
+
require 'neo4j-wrapper/has_n/instance_methods'
|
16
|
+
|
17
|
+
require 'neo4j-wrapper/relationship_mixin/class_methods'
|
18
|
+
require 'neo4j-wrapper/relationship_mixin/initialize'
|
19
|
+
require 'neo4j-wrapper/relationship_mixin/delegates'
|
20
|
+
require 'neo4j-wrapper/find'
|
21
|
+
|
22
|
+
require 'neo4j-wrapper/rule/neo4j_core_ext/traverser'
|
23
|
+
require 'neo4j-wrapper/rule/class_methods'
|
24
|
+
require 'neo4j-wrapper/rule/instance_methods'
|
25
|
+
require 'neo4j-wrapper/rule/event_listener'
|
26
|
+
require 'neo4j-wrapper/rule/rule'
|
27
|
+
require 'neo4j-wrapper/rule/rule_node'
|
28
|
+
require 'neo4j-wrapper/rule/functions/function'
|
29
|
+
require 'neo4j-wrapper/rule/functions/count'
|
30
|
+
require 'neo4j-wrapper/rule/functions/sum'
|
31
|
+
|
32
|
+
require 'neo4j/type_converters/type_converters'
|
33
|
+
require 'neo4j/node_mixin'
|
34
|
+
require 'neo4j/relationship_mixin'
|
35
|
+
require 'neo4j/identity_map'
|
data/lib/test.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
def calc(x)
|
2
|
+
x + 1
|
3
|
+
end
|
4
|
+
|
5
|
+
p = method(:calc)
|
6
|
+
t = Time.now
|
7
|
+
(0..10000).each { |x| calc(x) }
|
8
|
+
total = Time.now - t
|
9
|
+
puts "1. total = #{total}"
|
10
|
+
|
11
|
+
#p = Proc.new {|x| x + 1}
|
12
|
+
t = Time.now
|
13
|
+
(0..10000).each { |x| p.call(x) }
|
14
|
+
total = Time.now - t
|
15
|
+
puts "2. total = #{total}"
|
16
|
+
|
17
|
+
puts "================="
|
18
|
+
t = Time.now
|
19
|
+
(0..10000).each { |x| calc(x) }
|
20
|
+
total = Time.now - t
|
21
|
+
puts "1. total = #{total}"
|
22
|
+
|
23
|
+
t = Time.now
|
24
|
+
(0..10000).each { |x| p.call(x) }
|
25
|
+
total = Time.now - t
|
26
|
+
puts "2. total = #{total}"
|
27
|
+
|
28
|
+
puts "================="
|
29
|
+
t = Time.now
|
30
|
+
(0..10000).each { |x| calc(x) }
|
31
|
+
total = Time.now - t
|
32
|
+
puts "1. total = #{total}"
|
33
|
+
|
34
|
+
t = Time.now
|
35
|
+
(0..10000).each { |x| p.call(x) }
|
36
|
+
total = Time.now - t
|
37
|
+
puts "2. total = #{total}"
|
38
|
+
|
39
|
+
p = method(:calc).to_proc
|
40
|
+
|
41
|
+
puts "================= TO PROC"
|
42
|
+
t = Time.now
|
43
|
+
(0..10000).each { |x| calc(x) }
|
44
|
+
total = Time.now - t
|
45
|
+
puts "1. total = #{total}"
|
46
|
+
|
47
|
+
t = Time.now
|
48
|
+
(0..10000).each { |x| p.call(x) }
|
49
|
+
total = Time.now - t
|
50
|
+
puts "2. total = #{total}"
|
51
|
+
|
52
|
+
puts "================= TO PROC"
|
53
|
+
t = Time.now
|
54
|
+
(0..10000).each { |x| calc(x) }
|
55
|
+
total = Time.now - t
|
56
|
+
puts "1. total = #{total}"
|
57
|
+
|
58
|
+
t = Time.now
|
59
|
+
(0..10000).each { |x| p.call(x) }
|
60
|
+
total = Time.now - t
|
61
|
+
puts "2. total = #{total}"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
2
|
+
$:.unshift lib unless $:.include?(lib)
|
3
|
+
|
4
|
+
require 'neo4j-wrapper/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "neo4j-wrapper"
|
8
|
+
s.version = Neo4j::Wrapper::VERSION
|
9
|
+
s.platform = 'java'
|
10
|
+
s.required_ruby_version = ">= 1.8.7"
|
11
|
+
|
12
|
+
s.authors = "Andreas Ronge"
|
13
|
+
s.email = 'andreas.ronge@gmail.com'
|
14
|
+
s.homepage = "http://github.com/andreasronge/neo4j-wrapper/tree"
|
15
|
+
s.rubyforge_project = 'neo4j-wrapper'
|
16
|
+
s.summary = "A graph database for JRuby"
|
17
|
+
s.description = <<-EOF
|
18
|
+
You can think of Neo4j as a high-performance graph engine with all the features of a mature and robust database.
|
19
|
+
The programmer works with an object-oriented, flexible network structure rather than with strict and static tables
|
20
|
+
yet enjoys all the benefits of a fully transactional, enterprise-strength database.
|
21
|
+
It comes included with the Apache Lucene document database.
|
22
|
+
EOF
|
23
|
+
|
24
|
+
s.require_path = 'lib'
|
25
|
+
s.files = Dir.glob("{bin,lib,config}/**/*") + %w(README.rdoc Gemfile neo4j-wrapper.gemspec)
|
26
|
+
s.has_rdoc = true
|
27
|
+
s.extra_rdoc_files = %w( README.rdoc )
|
28
|
+
s.rdoc_options = ["--quiet", "--title", "Neo4j.rb", "--line-numbers", "--main", "README.rdoc", "--inline-source"]
|
29
|
+
|
30
|
+
s.add_dependency("neo4j-core", "0.0.6")
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: neo4j-wrapper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: java
|
7
|
+
authors:
|
8
|
+
- Andreas Ronge
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2012-04-03 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: neo4j-core
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - "="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.6
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
description: |
|
27
|
+
You can think of Neo4j as a high-performance graph engine with all the features of a mature and robust database.
|
28
|
+
The programmer works with an object-oriented, flexible network structure rather than with strict and static tables
|
29
|
+
yet enjoys all the benefits of a fully transactional, enterprise-strength database.
|
30
|
+
It comes included with the Apache Lucene document database.
|
31
|
+
|
32
|
+
email: andreas.ronge@gmail.com
|
33
|
+
executables: []
|
34
|
+
|
35
|
+
extensions: []
|
36
|
+
|
37
|
+
extra_rdoc_files:
|
38
|
+
- README.rdoc
|
39
|
+
files:
|
40
|
+
- lib/test.rb
|
41
|
+
- lib/neo4j-wrapper.rb
|
42
|
+
- lib/example.rb
|
43
|
+
- lib/neo4j-wrapper/find.rb
|
44
|
+
- lib/neo4j-wrapper/wrapper.rb
|
45
|
+
- lib/neo4j-wrapper/class_methods.rb
|
46
|
+
- lib/neo4j-wrapper/version.rb
|
47
|
+
- lib/neo4j-wrapper/relationship_mixin/initialize.rb
|
48
|
+
- lib/neo4j-wrapper/relationship_mixin/delegates.rb
|
49
|
+
- lib/neo4j-wrapper/relationship_mixin/class_methods.rb
|
50
|
+
- lib/neo4j-wrapper/properties/class_methods.rb
|
51
|
+
- lib/neo4j-wrapper/has_n/nodes.rb
|
52
|
+
- lib/neo4j-wrapper/has_n/instance_methods.rb
|
53
|
+
- lib/neo4j-wrapper/has_n/decl_rel.rb
|
54
|
+
- lib/neo4j-wrapper/has_n/class_methods.rb
|
55
|
+
- lib/neo4j-wrapper/node_mixin/initialize.rb
|
56
|
+
- lib/neo4j-wrapper/node_mixin/delegates.rb
|
57
|
+
- lib/neo4j-wrapper/node_mixin/class_methods.rb
|
58
|
+
- lib/neo4j-wrapper/rule/rule.rb
|
59
|
+
- lib/neo4j-wrapper/rule/rule_node.rb
|
60
|
+
- lib/neo4j-wrapper/rule/instance_methods.rb
|
61
|
+
- lib/neo4j-wrapper/rule/class_methods.rb
|
62
|
+
- lib/neo4j-wrapper/rule/event_listener.rb
|
63
|
+
- lib/neo4j-wrapper/rule/functions/function.rb
|
64
|
+
- lib/neo4j-wrapper/rule/functions/count.rb
|
65
|
+
- lib/neo4j-wrapper/rule/functions/sum.rb
|
66
|
+
- lib/neo4j-wrapper/rule/neo4j_core_ext/traverser.rb
|
67
|
+
- lib/neo4j/identity_map.rb
|
68
|
+
- lib/neo4j/node_mixin.rb
|
69
|
+
- lib/neo4j/relationship_mixin.rb
|
70
|
+
- lib/neo4j/type_converters/type_converters.rb
|
71
|
+
- lib/db/neostore.relationshiptypestore.db.names
|
72
|
+
- lib/db/neostore.id
|
73
|
+
- lib/db/neostore.relationshiptypestore.db.names.id
|
74
|
+
- lib/db/neostore.nodestore.db.id
|
75
|
+
- lib/db/neostore.propertystore.db.index
|
76
|
+
- lib/db/neostore.propertystore.db.strings.id
|
77
|
+
- lib/db/nioneo_logical.log.active
|
78
|
+
- lib/db/neostore.propertystore.db.strings
|
79
|
+
- lib/db/neostore.relationshiptypestore.db.id
|
80
|
+
- lib/db/neostore
|
81
|
+
- lib/db/neostore.nodestore.db
|
82
|
+
- lib/db/neostore.propertystore.db.index.keys.id
|
83
|
+
- lib/db/neostore.propertystore.db.arrays.id
|
84
|
+
- lib/db/messages.log
|
85
|
+
- lib/db/neostore.relationshipstore.db.id
|
86
|
+
- lib/db/neostore.propertystore.db.arrays
|
87
|
+
- lib/db/neostore.relationshipstore.db
|
88
|
+
- lib/db/neostore.propertystore.db.index.id
|
89
|
+
- lib/db/neostore.propertystore.db.id
|
90
|
+
- lib/db/index.db
|
91
|
+
- lib/db/neostore.propertystore.db
|
92
|
+
- lib/db/tm_tx_log.1
|
93
|
+
- lib/db/neostore.relationshiptypestore.db
|
94
|
+
- lib/db/active_tx_log
|
95
|
+
- lib/db/neostore.propertystore.db.index.keys
|
96
|
+
- lib/db/index/lucene-store.db
|
97
|
+
- lib/db/index/lucene.log.active
|
98
|
+
- lib/db/index/lucene/node/Person_exact/_1.prx
|
99
|
+
- lib/db/index/lucene/node/Person_exact/_1.tii
|
100
|
+
- lib/db/index/lucene/node/Person_exact/_0.fdx
|
101
|
+
- lib/db/index/lucene/node/Person_exact/segments.gen
|
102
|
+
- lib/db/index/lucene/node/Person_exact/_0.frq
|
103
|
+
- lib/db/index/lucene/node/Person_exact/_2.tii
|
104
|
+
- lib/db/index/lucene/node/Person_exact/_1.nrm
|
105
|
+
- lib/db/index/lucene/node/Person_exact/_0.nrm
|
106
|
+
- lib/db/index/lucene/node/Person_exact/_1.tis
|
107
|
+
- lib/db/index/lucene/node/Person_exact/_2.frq
|
108
|
+
- lib/db/index/lucene/node/Person_exact/_2.nrm
|
109
|
+
- lib/db/index/lucene/node/Person_exact/_2.fdt
|
110
|
+
- lib/db/index/lucene/node/Person_exact/_0.fdt
|
111
|
+
- lib/db/index/lucene/node/Person_exact/_0.tis
|
112
|
+
- lib/db/index/lucene/node/Person_exact/_1.fnm
|
113
|
+
- lib/db/index/lucene/node/Person_exact/_1.frq
|
114
|
+
- lib/db/index/lucene/node/Person_exact/_0.tii
|
115
|
+
- lib/db/index/lucene/node/Person_exact/_2.tis
|
116
|
+
- lib/db/index/lucene/node/Person_exact/_2.prx
|
117
|
+
- lib/db/index/lucene/node/Person_exact/_2.fdx
|
118
|
+
- lib/db/index/lucene/node/Person_exact/_0.prx
|
119
|
+
- lib/db/index/lucene/node/Person_exact/_2.fnm
|
120
|
+
- lib/db/index/lucene/node/Person_exact/_1.fdt
|
121
|
+
- lib/db/index/lucene/node/Person_exact/_0.fnm
|
122
|
+
- lib/db/index/lucene/node/Person_exact/_1.fdx
|
123
|
+
- lib/db/index/lucene/node/Person_exact/segments_3
|
124
|
+
- README.rdoc
|
125
|
+
- Gemfile
|
126
|
+
- neo4j-wrapper.gemspec
|
127
|
+
homepage: http://github.com/andreasronge/neo4j-wrapper/tree
|
128
|
+
licenses: []
|
129
|
+
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options:
|
132
|
+
- --quiet
|
133
|
+
- --title
|
134
|
+
- Neo4j.rb
|
135
|
+
- --line-numbers
|
136
|
+
- --main
|
137
|
+
- README.rdoc
|
138
|
+
- --inline-source
|
139
|
+
require_paths:
|
140
|
+
- lib
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 1.8.7
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: "0"
|
153
|
+
requirements: []
|
154
|
+
|
155
|
+
rubyforge_project: neo4j-wrapper
|
156
|
+
rubygems_version: 1.8.15
|
157
|
+
signing_key:
|
158
|
+
specification_version: 3
|
159
|
+
summary: A graph database for JRuby
|
160
|
+
test_files: []
|
161
|
+
|
162
|
+
has_rdoc: true
|