neography 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neography (0.0.9)
4
+ neography (0.0.10)
5
5
  httparty (~> 0.7.3)
6
6
  json
7
7
 
data/README.rdoc CHANGED
@@ -96,10 +96,12 @@ To Use:
96
96
  @neo.remove_relationship_properties(rel1, ["since","met"]) # Remove multiple properties of a relationship
97
97
 
98
98
  @neo.list_node_indexes # gives names and query templates for all defined indices
99
+ @neo.create_node_index(name, type, provider) # creates an index, defaults are "exact" and "lucene"
99
100
  @neo.add_node_to_index(index, key, value, node1) # adds a node to the index with the given key/value pair
100
101
  @neo.remove_node_from_index(index, key, value, node1) # removes a node from the index with the given key/value pair
101
102
  @neo.get_node_index(index, key, value) # queries the index with the given key/value pair
102
103
  @neo.list_relationship_indexes # gives names and query templates for relationship indices
104
+ @neo.create_relationshp_index(name, "fulltext", provider) # creates a relationship index with "fulltext" option
103
105
  @neo.add_relationship_to_index(index, key, value, rel1) # adds a relationship to the index with the given key/value pair
104
106
  @neo.remove_relationship_from_index(index, key, value, rel1) # removes a relationship from the index with the given key/value pair
105
107
  @neo.get_relationship_index(index, key, value) # queries the relationship index with the given key/value pair
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'neography'
3
+
4
+ @neo = Neography::Rest.new
5
+
6
+ def create_node(name, mysql_id)
7
+ @neo.create_node("name" => name, "mysql_id" => mysql_id)
8
+ end
9
+
10
+ def attended(student, school, degree, graduated)
11
+ @neo.create_relationship("attended", student, school, {"degree" => degree, "graduated" => graduated})
12
+ end
13
+
14
+
15
+ def graduated_with_me(student)
16
+ student = student["self"].split('/').last
17
+ student_attended = @neo.get_node_relationships(student)[0]
18
+ graduated = student_attended["data"]["graduated"]
19
+ school = student_attended["end"].split('/').last
20
+
21
+ @neo.traverse(school,"nodes", {"order" => "breadth first",
22
+ "uniqueness" => "node global",
23
+ "relationships" => {"type"=> "attended", "direction" => "in"},
24
+ "return filter" => {
25
+ "language" => "javascript",
26
+ "body" => "position.length() == 1
27
+ && position.endNode().getId() != #{student}
28
+ && position.lastRelationship().getProperty(\"graduated\") == #{graduated};"}})
29
+ end
30
+
31
+ charlie = create_node("Charlie", 1)
32
+ max = create_node("Max", 2)
33
+ peter = create_node("Peter", 3)
34
+ carol = create_node("Carol", 3)
35
+ tom = create_node("Tom", 4)
36
+ jerry = create_node("Jerry", 5)
37
+ larry = create_node("Larry", 6)
38
+
39
+ yale = create_node("Yale", 7)
40
+ harvard = create_node("Harvard", 8)
41
+ rutgers = create_node("Rutgers", 9)
42
+
43
+ attended(charlie,yale,"engineering", 2010)
44
+ attended(max,yale,"mathematics", 2005)
45
+ attended(peter,yale,"biology", 2010)
46
+ attended(carol,yale,"engineering", 2010)
47
+ attended(tom,harvard,"biology", 2008)
48
+ attended(jerry,rutgers,"physics", 2007)
49
+ attended(larry,rutgers,"mathematics", 2010)
50
+
51
+
52
+ puts "Charlie graduated with #{graduated_with_me(charlie).map{|n| n["data"]["name"]}.join(', ')}"
53
+
54
+ # The node levels returned are Peter, Carol
@@ -29,7 +29,6 @@ module Neography
29
29
  end
30
30
 
31
31
  init.merge!(options)
32
- puts init.inspect
33
32
 
34
33
  @protocol = init[:protocol]
35
34
  @server = init[:server]
@@ -41,7 +40,6 @@ module Neography
41
40
  @max_threads = init[:max_threads]
42
41
  @authentication = Hash.new
43
42
  @authentication = {"#{init[:authentication]}_auth".to_sym => {:username => init[:username], :password => init[:password]}} unless init[:authentication].empty?
44
- puts "Authentication: #{@authentication.inspect}"
45
43
  end
46
44
 
47
45
  def configure(protocol, server, port, directory)
@@ -240,6 +238,11 @@ module Neography
240
238
  get("/index/node")
241
239
  end
242
240
 
241
+ def create_node_index(name, type = "exact", provider = "lucene")
242
+ options = { :body => ({:name => name, :config => {:type => type, :provider => provider}}).to_json, :headers => {'Content-Type' => 'application/json'} }
243
+ post("/index/node", options)
244
+ end
245
+
243
246
  def add_node_to_index(index, key, value, id)
244
247
  options = { :body => (self.configuration + "/node/#{get_id(id)}").to_json, :headers => {'Content-Type' => 'application/json'} }
245
248
  post("/index/node/#{index}/#{key}/#{value}", options)
@@ -264,6 +267,11 @@ module Neography
264
267
  get("/index/relationship")
265
268
  end
266
269
 
270
+ def create_relationship_index(name, type = "exact", provider = "lucene")
271
+ options = { :body => ({:name => name, :config => {:type => type, :provider => provider}}).to_json, :headers => {'Content-Type' => 'application/json'} }
272
+ post("/index/relationship", options)
273
+ end
274
+
267
275
  def add_relationship_to_index(index, key, value, id)
268
276
  options = { :body => (self.configuration + "/relationship/#{get_id(id)}").to_json, :headers => {'Content-Type' => 'application/json'} }
269
277
  post("/index/relationship/#{index}/#{key}/#{value}", options)
@@ -388,12 +396,14 @@ module Neography
388
396
 
389
397
  def get_type(type)
390
398
  case type
391
- when :node, "nodes", :nodes, "nodes"
392
- "node"
393
399
  when :relationship, "relationship", :relationships, "relationships"
394
400
  "relationship"
395
- else
401
+ when :path, "path", :paths, "paths"
396
402
  "path"
403
+ when :fullpath, "fullpath", :fullpaths, "fullpaths"
404
+ "fullpath"
405
+ else
406
+ "node"
397
407
  end
398
408
  end
399
409
 
@@ -1,3 +1,3 @@
1
1
  module Neography
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -25,6 +25,46 @@ describe Neography::Rest do
25
25
  end
26
26
  end
27
27
 
28
+ describe "create an index" do
29
+ it "can create a node index" do
30
+ name = generate_text(6)
31
+ new_index = @neo.create_node_index(name)
32
+ new_index.should_not be_nil
33
+ new_index["template"].should == "#{@neo.configuration}/index/node/#{name}/{key}/{value}"
34
+ new_index["provider"].should == "lucene"
35
+ new_index["type"].should == "exact"
36
+ end
37
+
38
+ it "can create a node index with options" do
39
+ name = generate_text(6)
40
+ new_index = @neo.create_node_index(name, "fulltext","lucene")
41
+ new_index.should_not be_nil
42
+ new_index["template"].should == "#{@neo.configuration}/index/node/#{name}/{key}/{value}"
43
+ new_index["provider"].should == "lucene"
44
+ new_index["type"].should == "fulltext"
45
+ end
46
+
47
+ it "can create a relationship index" do
48
+ name = generate_text(6)
49
+ new_index = @neo.create_relationship_index(name)
50
+ new_index.should_not be_nil
51
+ new_index["template"].should == "#{@neo.configuration}/index/relationship/#{name}/{key}/{value}"
52
+ new_index["provider"].should == "lucene"
53
+ new_index["type"].should == "exact"
54
+ end
55
+
56
+ it "can create a relationship index with options" do
57
+ name = generate_text(6)
58
+ new_index = @neo.create_relationship_index(name, "fulltext","lucene")
59
+ new_index.should_not be_nil
60
+ new_index["template"].should == "#{@neo.configuration}/index/relationship/#{name}/{key}/{value}"
61
+ new_index["provider"].should == "lucene"
62
+ new_index["type"].should == "fulltext"
63
+ end
64
+
65
+
66
+ end
67
+
28
68
  describe "add to index" do
29
69
  it "can add a node to an index" do
30
70
  new_node = @neo.create_node
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neography
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 10
10
- version: 0.0.10
9
+ - 11
10
+ version: 0.0.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - Max De Marzi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-10 00:00:00 -08:00
18
+ date: 2011-02-23 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -119,6 +119,7 @@ files:
119
119
  - examples/linkedin.rb
120
120
  - examples/linkedin_v2.rb
121
121
  - examples/traversal_example1.rb
122
+ - examples/traversal_example2.rb
122
123
  - lib/neography.rb
123
124
  - lib/neography/config.rb
124
125
  - lib/neography/equal.rb