Class: Neo4j::Relationship
- Inherits:
-
Object
- Object
- Neo4j::Relationship
- Includes:
- EntityEquality, PropertyContainer, Wrapper
- Defined in:
- lib/neo4j/relationship.rb
Overview
A relationship between two nodes in the graph. A relationship has a start node, an end node and a type. You can attach properties to relationships like Neo4j::Node.
The fact that the relationship API gives meaning to start and end nodes implicitly means that all relationships have a direction. In the example above, rel would be directed from node to otherNode. A relationship’s start node and end node and their relation to outgoing and incoming are defined so that the assertions in the following code are true:
Furthermore, Neo4j guarantees that a relationship is never “hanging freely,” i.e. start_node, end_node and other_node are guaranteed to always return valid, non-nil nodes.
Direct Known Subclasses
Defined Under Namespace
Modules: Wrapper
Constant Summary
Constants included from PropertyValidator
PropertyValidator::VALID_PROPERTY_VALUE_CLASSES
Class Method Summary collapse
- ._load(neo_id, session = Neo4j::Session.current) ⇒ Object
- .create(rel_type, from_node, other_node, props = {}) ⇒ Object
- .load(neo_id, session = Neo4j::Session.current) ⇒ Object
Instance Method Summary collapse
-
#_end_node ⇒ Neo4j::Node
Same as #end_node but does not wrap the node.
-
#_other_node(node) ⇒ Object
Same as #other_node but can return a none wrapped node.
-
#_start_node ⇒ Neo4j::Node
Same as #start_node but does not wrap the node.
- #del ⇒ Object abstract
-
#end_node ⇒ Neo4j::Node, Object
Returns the end node of this relationship.
-
#exist? ⇒ true, false
abstract
If the relationship exists.
-
#get_property(key, value) ⇒ Object
Directly get the property on the relationship (low level method, may need transaction).
-
#neo_id ⇒ Object
abstract
The unique neo4j id.
-
#other_node(node) ⇒ Neo4j::Node
A convenience operation that, given a node that is attached to this relationship, returns the other node.
-
#props ⇒ Hash<Symbol,Object>
All properties of the relationship.
-
#props=(properties) ⇒ Object
replace all properties with new properties.
-
#rel_type ⇒ Symbol
Returns the relationship name.
-
#remove_property(key) ⇒ Object
Directly remove the property on the relationship (low level method, may need transaction).
-
#set_property(key, value) ⇒ Object
Directly set the property on the relationship (low level method, may need transaction).
-
#start_node ⇒ Neo4j::Node, Object
Returns the start node of this relationship.
-
#update_props(properties) ⇒ Object
Updates the properties, keeps old properties.
Methods included from Wrapper
Methods included from EntityEquality
Methods included from PropertyContainer
Methods included from PropertyValidator
#valid_property?, #validate_property
Class Method Details
._load(neo_id, session = Neo4j::Session.current) ⇒ Object
155 156 157 |
# File 'lib/neo4j/relationship.rb', line 155 def _load(neo_id, session = Neo4j::Session.current) session.load_relationship(neo_id) end |
.create(rel_type, from_node, other_node, props = {}) ⇒ Object
146 147 148 |
# File 'lib/neo4j/relationship.rb', line 146 def create(rel_type, from_node, other_node, props = {}) from_node.neo4j_obj.create_rel(rel_type, other_node, props) end |
Instance Method Details
#_end_node ⇒ Neo4j::Node
Same as #end_node but does not wrap the node
84 85 86 |
# File 'lib/neo4j/relationship.rb', line 84 def _end_node fail 'not implemented' end |
#_other_node(node) ⇒ Object
Same as #other_node but can return a none wrapped node
134 135 136 137 138 139 140 141 142 |
# File 'lib/neo4j/relationship.rb', line 134 def _other_node(node) if node == _start_node _end_node elsif node == _end_node _start_node else fail "Node #{node.inspect} is neither start nor end node" end end |
#_start_node ⇒ Neo4j::Node
Same as #start_node but does not wrap the node
72 73 74 |
# File 'lib/neo4j/relationship.rb', line 72 def _start_node fail 'not implemented' end |
#del ⇒ Object
89 90 91 |
# File 'lib/neo4j/relationship.rb', line 89 def del fail 'not implemented' end |
#end_node ⇒ Neo4j::Node, Object
Returns the end node of this relationship.
78 79 80 |
# File 'lib/neo4j/relationship.rb', line 78 def end_node _end_node.wrapper end |
#exist? ⇒ true, false
Returns if the relationship exists.
101 102 103 |
# File 'lib/neo4j/relationship.rb', line 101 def exist? fail 'not implemented' end |
#get_property(key, value) ⇒ Object
Directly get the property on the relationship (low level method, may need transaction)
60 61 62 |
# File 'lib/neo4j/relationship.rb', line 60 def get_property(key, value) fail 'not implemented' end |
#neo_id ⇒ Object
The unique neo4j id
95 96 97 |
# File 'lib/neo4j/relationship.rb', line 95 def neo_id fail 'not implemented' end |
#other_node(node) ⇒ Neo4j::Node
A convenience operation that, given a node that is attached to this relationship, returns the other node. For example if node is a start node, the end node will be returned, and vice versa. This is a very convenient operation when you’re manually traversing the node space by invoking one of the #rels method on a node. For example, to get the node “at the other end” of a relationship, use the following:
129 130 131 |
# File 'lib/neo4j/relationship.rb', line 129 def other_node(node) _other_node(node.neo4j_obj).wrapper end |
#props ⇒ Hash<Symbol,Object>
Returns all properties of the relationship.
29 30 31 |
# File 'lib/neo4j/relationship.rb', line 29 def props fail 'not implemented' end |
#props=(properties) ⇒ Object
replace all properties with new properties
35 36 37 |
# File 'lib/neo4j/relationship.rb', line 35 def props=(properties) fail 'not implemented' end |
#rel_type ⇒ Symbol
Returns the relationship name
112 113 114 |
# File 'lib/neo4j/relationship.rb', line 112 def rel_type fail 'not implemented' end |
#remove_property(key) ⇒ Object
Directly remove the property on the relationship (low level method, may need transaction)
46 47 48 |
# File 'lib/neo4j/relationship.rb', line 46 def remove_property(key) fail 'not implemented' end |
#set_property(key, value) ⇒ Object
Directly set the property on the relationship (low level method, may need transaction)
53 54 55 |
# File 'lib/neo4j/relationship.rb', line 53 def set_property(key, value) fail 'not implemented' end |
#start_node ⇒ Neo4j::Node, Object
Returns the start node of this relationship.
66 67 68 |
# File 'lib/neo4j/relationship.rb', line 66 def start_node _start_node.wrapper end |
#update_props(properties) ⇒ Object
Updates the properties, keeps old properties
41 42 43 |
# File 'lib/neo4j/relationship.rb', line 41 def update_props(properties) fail 'not implemented' end |