Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 342 lines (254 sloc) 21.383 kb
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
1 == Welcome to Neography
2
90cb6ed @maxdemarzi adding traverser
maxdemarzi authored
3 Neography is a thin Ruby wrapper to the Neo4j Rest API, for more information:
e01369f @maxdemarzi cleaning up
maxdemarzi authored
4 * {Getting Started with Neo4j Server}[http://wiki.neo4j.org/content/Getting_Started_with_Neo4j_Server]
6dac3ab @maxdemarzi typo in relationship index, and updating readme to use latest api docs
maxdemarzi authored
5 * {Neo4j Rest API Reference}[http://components.neo4j.org/neo4j-server/milestone/rest.html]
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
6
764a146 @maxdemarzi adding tasks
maxdemarzi authored
7 If you want to the full power of Neo4j, you will want to use JRuby and the excellent Neo4j.rb gem at https://github.com/andreasronge/neo4j by Andreas Ronge
8
9 A complement to Neography is the Neology Gem at https://github.com/lordkada/neology by Carlo Alberto Degli Atti
10
11 An alternative is the Architect4r Gem at https://github.com/namxam/architect4r by Maximilian Schulz
12
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
13
14 === Installation
15
1097667 @maxdemarzi Use version 0.0.l4 for Neo4j 1.4 and 0.0.15 for Neo4j 1.5
maxdemarzi authored
16 gem install 'neography', '0.0.14' # for version 1.4 of Neo4j
17
18 or
19
60d32ac @maxdemarzi using default of localhost for examples now
maxdemarzi authored
20 gem install 'neography' # for version 1.5M of Neo4j or higher
cafaf2e @peterneubauer
peterneubauer authored
21
6b29ca8 @maxdemarzi try neography at neography.org
maxdemarzi authored
22 After that, in your ruby script:
cafaf2e @peterneubauer
peterneubauer authored
23
24 require 'rubygems'
3a1cef5 @maxdemarzi make readme prettier
maxdemarzi authored
25 require 'neography'
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
26
cafaf2e @peterneubauer
peterneubauer authored
27 in order to access the functionality.
6b29ca8 @maxdemarzi try neography at neography.org
maxdemarzi authored
28
29
e42beda @maxdemarzi more cleanup
maxdemarzi authored
30 === Dependencies
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
31
e42beda @maxdemarzi more cleanup
maxdemarzi authored
32 for use:
c88b20a @maxdemarzi adding parameters to cypher calls
maxdemarzi authored
33 os
34 rake
e42beda @maxdemarzi more cleanup
maxdemarzi authored
35 json
36 httparty
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
37
e42beda @maxdemarzi more cleanup
maxdemarzi authored
38 for development:
39 rspec
40 net-http-spy
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
41
42 ==== Rails
43
752924a @maxdemarzi added railtie to autoload tasks
maxdemarzi authored
44 Just add gem 'neography' to your Gemfile and run bundle install.
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
45
752924a @maxdemarzi added railtie to autoload tasks
maxdemarzi authored
46 The following tasks will be available to you:
764a146 @maxdemarzi adding tasks
maxdemarzi authored
47
7c204f0 @maxdemarzi pick your own version
maxdemarzi authored
48 rake neo4j:install # Install Neo4j to the neo4j directory under your project
b93913f @maxdemarzi starting work on batch specs
maxdemarzi authored
49 rake neo4j:install[community,1.6.M02] # Install Neo4j Community edition, version 1.6.M02
7c204f0 @maxdemarzi pick your own version
maxdemarzi authored
50 rake neo4j:install[advanced,1.5] # Install Neo4j Advanced edition, version 1.5
51 rake neo4j:install[enterprise,1.5] # Install Neo4j Enterprise edition, version 1.5
764a146 @maxdemarzi adding tasks
maxdemarzi authored
52 rake neo4j:start # Start Neo4j
53 rake neo4j:stop # Stop Neo4j
54 rake neo4j:restart # Restart Neo4j
55 rake neo4j:reset_yes_i_am_sure # Wipe your Neo4j Database
56
066ed4f @maxdemarzi ugly attempt at a multi-os installer
maxdemarzi authored
57 Windows users will need to run in a command prompt with Administrative Privileges
58 in order to install Neo4j as a Service.
59
752924a @maxdemarzi added railtie to autoload tasks
maxdemarzi authored
60 If you are not using Rails, then add:
61
62 require 'neography/tasks'
63
64 to your Rakefile to have access to these tasks.
65
66
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
67 === Documentation
68
49fe9ac @maxdemarzi adding authentication options, fixing index tests
maxdemarzi authored
69 @neo = Neography::Rest.new({:protocol => 'http://',
70 :server => 'localhost',
71 :port => 7474,
72 :directory => '', # use '/<my directory>' or leave out for default
73 :authentication => 'basic', # 'basic', 'digest' or leave out for default
74 :username => 'your username', #leave out for default
75 :password => 'your password', #leave out for default
76 :log_file => 'neography.log',
77 :log_enabled => false,
78 :max_threads => 20})
e42beda @maxdemarzi more cleanup
maxdemarzi authored
79
ab853ae @maxdemarzi quick initializer
maxdemarzi authored
80 Quick initializer (assumes basic authorization if username is given):
81
82 @neo = Neography::Rest.new("http://username:password@myserver.com:7474/mydirectory")
83
84
e42beda @maxdemarzi more cleanup
maxdemarzi authored
85 To Use:
86
ab853ae @maxdemarzi quick initializer
maxdemarzi authored
87 @neo = Neography::Rest.new # Inialize using all default parameters
e42beda @maxdemarzi more cleanup
maxdemarzi authored
88
c3a00a0 @maxdemarzi added find_id and cleaned up tests
maxdemarzi authored
89 @neo.get_root # Get the root node
90 node1 = @neo.create_node # Create an empty node
91 node2 = @neo.create_node("age" => 31, "name" => "Max") # Create a node with some properties
92 @neo.get_node(node2) # Get a node and its properties
93 @neo.delete_node(node2) # Delete an unrelated node
94 @neo.delete_node!(node2) # Delete a node and all its relationships
95
96 @neo.reset_node_properties(node1, {"age" => 31}) # Reset a node's properties
97 @neo.set_node_properties(node1, {"weight" => 200}) # Set a node's properties
98 @neo.get_node_properties(node1) # Get just the node properties
99 @neo.get_node_properties(node1, ["weight","age"]) # Get some of the node properties
100 @neo.remove_node_properties(node1) # Remove all properties of a node
101 @neo.remove_node_properties(node1, "weight") # Remove one property of a node
102 @neo.remove_node_properties(node1, ["weight","age"]) # Remove multiple properties of a node
103
104 rel1 = @neo.create_relationship("friends", node1, node2) # Create a relationship between node1 and node2
34068ab @maxdemarzi adding examples and get_relationship
maxdemarzi authored
105 rel2 = @neo.get_relationship(rel1) # Get a relationship
c3a00a0 @maxdemarzi added find_id and cleaned up tests
maxdemarzi authored
106 @neo.get_node_relationships(node1) # Get all relationships
107 @neo.get_node_relationships(node1, "in") # Get only incoming relationships
108 @neo.get_node_relationships(node1, "all", "enemies") # Get all relationships of type enemies
109 @neo.get_node_relationships(node1, "in", "enemies") # Get only incoming relationships of type enemies
110 @neo.delete_relationship(rel1) # Delete a relationship
111
112 @neo.reset_relationship_properties(rel1, {"age" => 31}) # Reset a relationship's properties
113 @neo.set_relationship_properties(rel1, {"weight" => 200}) # Set a relationship's properties
114 @neo.get_relationship_properties(rel1) # Get just the relationship properties
115 @neo.get_relationship_properties(rel1, ["since","met"]) # Get some of the relationship properties
116 @neo.remove_relationship_properties(rel1) # Remove all properties of a relationship
117 @neo.remove_relationship_properties(rel1, "since") # Remove one property of a relationship
118 @neo.remove_relationship_properties(rel1, ["since","met"]) # Remove multiple properties of a relationship
119
2015a05 @maxdemarzi working on relationship indexes
maxdemarzi authored
120 @neo.list_node_indexes # gives names and query templates for all defined indices
b32f7e1 @maxdemarzi adding create node and relationship index
maxdemarzi authored
121 @neo.create_node_index(name, type, provider) # creates an index, defaults are "exact" and "lucene"
2015a05 @maxdemarzi working on relationship indexes
maxdemarzi authored
122 @neo.add_node_to_index(index, key, value, node1) # adds a node to the index with the given key/value pair
123 @neo.remove_node_from_index(index, key, value, node1) # removes a node from the index with the given key/value pair
3e41e09 @maxdemarzi adding new ways to remove nodes and relationships from an index
maxdemarzi authored
124 @neo.remove_node_from_index(index, key, node1) # removes a node from the index with the given key
125 @neo.remove_node_from_index(index, node1) # removes a node from the index
10c8228 @maxdemarzi advanced queries of the node and relationship indexes
maxdemarzi authored
126 @neo.get_node_index(index, key, value) # exact query of the node index with the given key/value pair
127 @neo.find_node_index(index, key, value) # advanced query of the node index with the given key/value pair
bc49b90 @lordkada finding nodes and relationships through query. Remote Groovy script t…
lordkada authored
128 @neo.find_node_index(index, query ) # advanced query of the node index with the given query
2015a05 @maxdemarzi working on relationship indexes
maxdemarzi authored
129 @neo.list_relationship_indexes # gives names and query templates for relationship indices
9118a80 @maxdemarzi typo in relationship readme
maxdemarzi authored
130 @neo.create_relationship_index(name, "fulltext", provider) # creates a relationship index with "fulltext" option
2015a05 @maxdemarzi working on relationship indexes
maxdemarzi authored
131 @neo.add_relationship_to_index(index, key, value, rel1) # adds a relationship to the index with the given key/value pair
132 @neo.remove_relationship_from_index(index, key, value, rel1) # removes a relationship from the index with the given key/value pair
3e41e09 @maxdemarzi adding new ways to remove nodes and relationships from an index
maxdemarzi authored
133 @neo.remove_relationship_from_index(index, key, rel1) # removes a relationship from the index with the given key
134 @neo.remove_relationship_from_index(index, rel1) # removes a relationship from the index
10c8228 @maxdemarzi advanced queries of the node and relationship indexes
maxdemarzi authored
135 @neo.get_relationship_index(index, key, value) # exact query of the relationship index with the given key/value pair
136 @neo.find_relationship_index(index, key, value) # advanced query of the relationship index with the given key/value pair
bc49b90 @lordkada finding nodes and relationships through query. Remote Groovy script t…
lordkada authored
137 @neo.find_relationship_index(index, query) # advanced query of the relationship index with the given query
c88b20a @maxdemarzi adding parameters to cypher calls
maxdemarzi authored
138 @neo.execute_script("g.v(0)") # sends a Groovy script (through the Gremlin plugin)
139 @neo.execute_script("g.v(id)", {:id => 3}) # sends a parameterized Groovy script (optimized for repeated calls)
7a5c6a8 @maxdemarzi removing fakeweb, escaping execute_script for gremlin, adding execute…
maxdemarzi authored
140 @neo.execute_query("start n=node(0) return n") # sends a Cypher query (through the Cypher plugin)
c88b20a @maxdemarzi adding parameters to cypher calls
maxdemarzi authored
141 @neo.execute_query("start n=node(id) return n", {:id => 3}) # sends a parameterized Cypher query (optimized for repeated calls)
c3a00a0 @maxdemarzi added find_id and cleaned up tests
maxdemarzi authored
142
143 @neo.get_path(node1, node2, relationships, depth=4, algorithm="shortestPath") # finds the shortest path between two nodes
144 @neo.get_paths(node1, node2, relationships, depth=3, algorithm="allPaths") # finds all paths between two nodes
145
146 nodes = @neo.traverse(node1, # the node where the traversal starts
4d0c88a @maxdemarzi readme changes
maxdemarzi authored
147 "nodes", # return_type "nodes", "relationships" or "paths"
90cb6ed @maxdemarzi adding traverser
maxdemarzi authored
148 {"order" => "breadth first", # "breadth first" or "depth first" traversal order
149 "uniqueness" => "node global", # See Uniqueness in API documentation for options.
150 "relationships" => [{"type"=> "roommates", # A hash containg a description of the traversal
151 "direction" => "all"}, # two relationships.
152 {"type"=> "friends", #
153 "direction" => "out"}], #
154 "prune evaluator" => {"language" => "javascript", # A prune evaluator (when to stop traversing)
80cc0f0 @peterneubauer typos
peterneubauer authored
155 "body" => "position.endNode().getProperty('age') < 21;"},
90cb6ed @maxdemarzi adding traverser
maxdemarzi authored
156 "return filter" => {"language" => "builtin", # "all" or "all but start node"
157 "name" => "all"},
158 "depth" => 4})
159
160 # "depth" is a short-hand way of specifying a prune evaluator which prunes after a certain depth.
161 # If not specified a depth of 1 is used and if a "prune evaluator" is specified instead of a depth, no depth limit is set.
162
ab93266 @maxdemarzi doc updates
maxdemarzi authored
163 Please see the specs for more examples.
164
92ce780 @maxdemarzi more batching functions
maxdemarzi authored
165 Batch (in progress):
166
167 @neo.batch [:get_node, node1], [:get_node, node2] # Gets two nodes in a batch
168 @neo.batch [:create_node, {"name" => "Max"}],
169 [:create_node, {"name" => "Marc"}] # Creates two nodes in a batch
170 @neo.batch [:set_node_property, node1, {"name" => "Tom"}],
171 [:set_node_property, node2, {"name" => "Jerry"}] # Sets the property of two nodes
172 @neo.batch [:get_relationship, rel1],
173 [:get_relationship, rel2] # Gets two relationships in a batch
174 @neo.batch [:create_relationship, "friends",
eb03523 @maxdemarzi batch arrays of arrays
maxdemarzi authored
175 node1, node2, {:since => "high school"}],
92ce780 @maxdemarzi more batching functions
maxdemarzi authored
176 [:create_relationship, "friends",
177 node1, node3, {:since => "college"}] # Creates two relationships in a batch
8f15c03 @maxdemarzi adding more batching functions, now with referencing
maxdemarzi authored
178 @neo.batch [:create_node, {"name" => "Max"}],
179 [:create_node, {"name" => "Marc"}], # Creates two nodes and index them
eb03523 @maxdemarzi batch arrays of arrays
maxdemarzi authored
180 [:add_node_to_index, "test_node_index", key, value, "{0}"],
181 [:add_node_to_index, "test_node_index", key, value, "{1}"],
8f15c03 @maxdemarzi adding more batching functions, now with referencing
maxdemarzi authored
182 [:create_relationship, "friends", # and create a relationship for those
eb03523 @maxdemarzi batch arrays of arrays
maxdemarzi authored
183 "{0}", "{1}", {:since => "college"}], # newly created nodes
8f15c03 @maxdemarzi adding more batching functions, now with referencing
maxdemarzi authored
184 [:add_relationship_to_index,
185 "test_relationship_index", key, value, "{4}"] # and index the new relationship
186
eb03523 @maxdemarzi batch arrays of arrays
maxdemarzi authored
187 @neo.batch *[[:create_node, {"name" => "Max"}],
188 [:create_node, {"name" => "Marc"}]] # Use the Splat (*) with Arrays of Arrays
189
8f15c03 @maxdemarzi adding more batching functions, now with referencing
maxdemarzi authored
190 See http://docs.neo4j.org/chunked/milestone/rest-api-batch-ops.html for Neo4j Batch operations documentation.
92ce780 @maxdemarzi more batching functions
maxdemarzi authored
191
8e66583 @maxdemarzi started addeding fake bulk operations
maxdemarzi authored
192 Experimental:
193
194 nodes = @neo.create_nodes(5) # Create 5 empty nodes
195 nodes = @neo.create_nodes_threaded(5) # Create 5 empty nodes using threads
196 nodes = @neo.create_node_nodes([{"age" => 31, "name" => "Max"},
197 {"age" => 24, "name" => "Alex"}) # Create two nodes with properties
198 nodes = @neo.create_node_nodes_threaded([{"age" => 31, "name" => "Max"},
199 {"age" => 24, "name" => "Alex"}) # Create two nodes with properties threaded
200 nodes = @neo.get_nodes([17,86,397,33]) # Get four nodes by their id
201
202 one_set_nodes = @neo.create_nodes(3)
203 another_node = @neo.create_node("age" => 31, "name" => "Max")
204 nodes = @neo.get_nodes([one_set_nodes, another_node]) # Get four nodes
205
ab853ae @maxdemarzi quick initializer
maxdemarzi authored
206 === Phase 2
7b90ece @maxdemarzi starting phase 2
maxdemarzi authored
207
74204e8 @maxdemarzi adding relationship tests
maxdemarzi authored
208 Trying to mimic the Neo4j.rb API.
209
7b90ece @maxdemarzi starting phase 2
maxdemarzi authored
210 Now we are returning full objects. The properties of the node or relationship can be accessed directly (node.name).
211 The Neo4j ID is available by using node.neo_id .
212
49fe9ac @maxdemarzi adding authentication options, fixing index tests
maxdemarzi authored
213 @neo2 = Neography::Rest.new ({:server => '192.168.10.1'})
7b90ece @maxdemarzi starting phase 2
maxdemarzi authored
214
74204e8 @maxdemarzi adding relationship tests
maxdemarzi authored
215 Neography::Node.create # Create an empty node
216 Neography::Node.create("age" => 31, "name" => "Max") # Create a node with some properties
217 Neography::Node.create(@neo2, {"age" => 31, "name" => "Max"}) # Create a node on the server defined in @neo2
218 Neography::Node.create({"age" => 31, "name" => "Max"}, @neo2) # Same as above, but different order
219
220 Neography::Node.load(5) # Get a node and its properties by id
221 Neography::Node.load(existing_node) # Get a node and its properties by Node
222 Neography::Node.load("http://localhost:7474/db/data/node/2") # Get a node and its properties by String
223
224 Neography::Node.load(@neo2, 5) # Get a node on the server defined in @neo2
225 Neography::Node.load(5, @neo2) # Same as above, but different order
226
227 n1 = Node.create
228 n1.del # Deletes the node
229 n1.exist? # returns true/false if node exists in Neo4j
230
231 n1 = Node.create("age" => 31, "name" => "Max")
232 n1[:age] #returns 31 # Get a node property using [:key]
233 n1.name #returns "Max" # Get a node property as a method
234 n1[:age] = 24 # Set a node property using [:key] =
235 n1.name = "Alex" # Set a node property as a method
236 n1[:hair] = "black" # Add a node property using [:key] =
237 n1.weight = 190 # Add a node property as a method
238 n1[:name] = nil # Delete a node property using [:key] = nil
239 n1.name = nil # Delete a node property by setting it to nil
4541ce9 @maxdemarzi property deletion
maxdemarzi authored
240
74204e8 @maxdemarzi adding relationship tests
maxdemarzi authored
241 n2 = Neography::Node.create
242 new_rel = Neography::Relationship.create(:family, n1, n2) # Create a relationship from my_node to node2
243 new_rel.start_node # Get the start/from node of a relationship
244 new_rel.end_node # Get the end/to node of a relationship
da88fba @maxdemarzi More Phase 2 Functionality
maxdemarzi authored
245 new_rel.other_node(n2) # Get the other node of a relationship
246
74204e8 @maxdemarzi adding relationship tests
maxdemarzi authored
247 existing_rel = Neography::Relationship.load(12) # Get an existing relationship by id
248 existing_rel.del # Delete a relationship
249
250 Neography::Relationship.create(:friends, n1, n2)
d3c4887 @maxdemarzi adding to documentation
maxdemarzi authored
251 n1.outgoing(:friends) << n2 # Create outgoing relationship
252 n1.incoming(:friends) << n2 # Create incoming relationship
253 n1.both(:friends) << n2 # Create both relationships
254
255 n1.outgoing # Get nodes related by outgoing relationships
256 n1.incoming # Get nodes related by incoming relationships
257 n1.both # Get nodes related by any relationships
258
259 n1.outgoing(:friends) # Get nodes related by outgoing friends relationship
260 n1.incoming(:friends) # Get nodes related by incoming friends relationship
261 n1.both(:friends) # Get nodes related by friends relationship
262
da88fba @maxdemarzi More Phase 2 Functionality
maxdemarzi authored
263 n1.outgoing(:friends).incoming(:enemies) # Get nodes related by one of multiple relationships
264 n1.outgoing(:friends).depth(2) # Get nodes related by friends and friends of friends
265 n1.outgoing(:friends).depth(:all) # Get nodes related by friends until the end of the graph
266 n1.outgoing(:friends).depth(2).include_start_node # Get n1 and nodes related by friends and friends of friends
267
268 n1.outgoing(:friends).prune("position.endNode().getProperty('name') == 'Tom';")
269 n1.outgoing(:friends).filter("position.length() == 2;")
270
74204e8 @maxdemarzi adding relationship tests
maxdemarzi authored
271 n1.rel?(:friends) # Has a friends relationship
272 n1.rel?(:outgoing, :friends) # Has outgoing friends relationship
273 n1.rel?(:friends, :outgoing) # same, just the other way
274 n1.rel?(:outgoing) # Has any outgoing relationships
275 n1.rel?(:both) # Has any relationships
276 n1.rel?(:all) # same as above
277 n1.rel? # same as above
4e0087d @maxdemarzi Phase 2: Starting on Relationships
maxdemarzi authored
278
da88fba @maxdemarzi More Phase 2 Functionality
maxdemarzi authored
279 n1.rels # Get node relationships
280 n1.rels(:friends) # Get friends relationships
281 n1.rels(:friends).outgoing # Get outgoing friends relationships
282 n1.rels(:friends).incoming # Get incoming friends relationships
283 n1.rels(:friends,:work) # Get friends and work relationships
284 n1.rels(:friends,:work).outgoing # Get outgoing friends and work relationships
0dd7b47 @maxdemarzi adding Node Paths
maxdemarzi authored
285
286 n1.all_paths_to(n2).incoming(:friends).depth(4) # Gets all paths of a specified type
287 n1.all_simple_paths_to(n2).incoming(:friends).depth(4) # for the relationships defined
288 n1.all_shortest_paths_to(n2).incoming(:friends).depth(4) # at a maximum depth
289 n1.path_to(n2).incoming(:friends).depth(4) # Same as above, but just one path.
290 n1.simple_path_to(n2).incoming(:friends).depth(4)
291 n1.shortest_path_to(n2).incoming(:friends).depth(4)
292
293 n1.shortest_path_to(n2).incoming(:friends).depth(4).rels # Gets just relationships in path
294 n1.shortest_path_to(n2).incoming(:friends).depth(4).nodes # Gets just nodes in path
295
8e66583 @maxdemarzi started addeding fake bulk operations
maxdemarzi authored
296
ab93266 @maxdemarzi doc updates
maxdemarzi authored
297 See Neo4j API for:
298 * {Order}[http://components.neo4j.org/neo4j-examples/1.2.M04/apidocs/org/neo4j/graphdb/Traverser.Order.html]
299 * {Uniqueness}[http://components.neo4j.org/neo4j-examples/1.2.M04/apidocs/org/neo4j/kernel/Uniqueness.html]
300 * {Prune Evaluator}[http://components.neo4j.org/neo4j-examples/1.2.M04/apidocs/org/neo4j/graphdb/StopEvaluator.html]
301 * {Return Filter}[http://components.neo4j.org/neo4j-examples/1.2.M04/apidocs/org/neo4j/graphdb/ReturnableEvaluator.html]
90cb6ed @maxdemarzi adding traverser
maxdemarzi authored
302
34068ab @maxdemarzi adding examples and get_relationship
maxdemarzi authored
303 === Examples
304
49fe9ac @maxdemarzi adding authentication options, fixing index tests
maxdemarzi authored
305 A couple of examples borrowed from Matthew Deiters's Neo4jr-social:
34068ab @maxdemarzi adding examples and get_relationship
maxdemarzi authored
306
307 * {Facebook}[https://github.com/maxdemarzi/neography/blob/master/examples/facebook.rb]
308 * {Linked In}[https://github.com/maxdemarzi/neography/blob/master/examples/linkedin.rb]
309
49fe9ac @maxdemarzi adding authentication options, fixing index tests
maxdemarzi authored
310 Phase 2 way of doing these:
311
312 * {Facebook}[https://github.com/maxdemarzi/neography/blob/master/examples/facebook_v2.rb]
313 * {Linked In}[https://github.com/maxdemarzi/neography/blob/master/examples/linkedin_v2.rb]
314
315
4e1cf8f @maxdemarzi documentation changes, use shortest path as default for path
maxdemarzi authored
316 === To Do
317
0e3b309 @maxdemarzi adding travis build status as well as contributing and help sections …
maxdemarzi authored
318 * Batch functions
49fe9ac @maxdemarzi adding authentication options, fixing index tests
maxdemarzi authored
319 * Phase 2 Index functionality
da88fba @maxdemarzi More Phase 2 Functionality
maxdemarzi authored
320 * More Tests
321 * More Examples
322 * Mixins ?
4e1cf8f @maxdemarzi documentation changes, use shortest path as default for path
maxdemarzi authored
323
0e3b309 @maxdemarzi adding travis build status as well as contributing and help sections …
maxdemarzi authored
324 === Contributing
325
326 {<img src="https://secure.travis-ci.org/maxdemarzi/neography.png" />}[http://travis-ci.org/maxdemarzi/neography]
327
328 Please create a {new issue}[https://github.com/maxdemarzi/neography/issues] if you run into any bugs.
329 Contribute patches via pull requests.
330
331 === Help
332
333 If you are just starting out, or need help send me an e-mail at maxdemazi@gmail.com.
334
da88fba @maxdemarzi More Phase 2 Functionality
maxdemarzi authored
335 === Licenses
2bedc62 @maxdemarzi adding indexes
maxdemarzi authored
336
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
337 * Neography - MIT, see the LICENSE file http://github.com/maxdemarzi/neography/tree/master/LICENSE.
338 * Lucene - Apache, see http://lucene.apache.org/java/docs/features.html
90cb6ed @maxdemarzi adding traverser
maxdemarzi authored
339 * Neo4j - Dual free software/commercial license, see http://neo4j.org
0b5b547 @maxdemarzi starting on relationships
maxdemarzi authored
340
341
Something went wrong with that request. Please try again.