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
159 160 161 |
# File 'lib/neo4j/relationship.rb', line 159 def _load(neo_id, session = Neo4j::Session.current) session.load_relationship(neo_id) end |
.create(rel_type, from_node, other_node, props = {}) ⇒ Object
150 151 152 |
# File 'lib/neo4j/relationship.rb', line 150 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
86 87 88 |
# File 'lib/neo4j/relationship.rb', line 86 def _end_node raise 'not implemented' end |
#_other_node(node) ⇒ Object
Same as #other_node but can return a none wrapped node
136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/neo4j/relationship.rb', line 136 def _other_node(node) s = _start_node e = _end_node if node == _start_node return _end_node elsif node == _end_node return _start_node else raise "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
74 75 76 |
# File 'lib/neo4j/relationship.rb', line 74 def _start_node raise 'not implemented' end |
#del ⇒ Object
91 92 93 |
# File 'lib/neo4j/relationship.rb', line 91 def del raise 'not implemented' end |
#end_node ⇒ Neo4j::Node, Object
Returns the end node of this relationship.
80 81 82 |
# File 'lib/neo4j/relationship.rb', line 80 def end_node _end_node.wrapper end |
#exist? ⇒ true, false
Returns if the relationship exists.
103 104 105 |
# File 'lib/neo4j/relationship.rb', line 103 def exist? raise 'not implemented' end |
#get_property(key, value) ⇒ Object
Directly get the property on the relationship (low level method, may need transaction)
62 63 64 |
# File 'lib/neo4j/relationship.rb', line 62 def get_property(key, value) raise 'not implemented' end |
#neo_id ⇒ Object
The unique neo4j id
97 98 99 |
# File 'lib/neo4j/relationship.rb', line 97 def neo_id raise '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:
131 132 133 |
# File 'lib/neo4j/relationship.rb', line 131 def other_node(node) _other_node(node.neo4j_obj).wrapper end |
#props ⇒ Hash<Symbol,Object>
Returns all properties of the relationship.
31 32 33 |
# File 'lib/neo4j/relationship.rb', line 31 def props() raise 'not implemented' end |
#props=(properties) ⇒ Object
replace all properties with new properties
37 38 39 |
# File 'lib/neo4j/relationship.rb', line 37 def props=(properties) raise 'not implemented' end |
#rel_type ⇒ Symbol
Returns the relationship name
114 115 116 |
# File 'lib/neo4j/relationship.rb', line 114 def rel_type raise 'not implemented' end |
#remove_property(key) ⇒ Object
Directly remove the property on the relationship (low level method, may need transaction)
48 49 50 |
# File 'lib/neo4j/relationship.rb', line 48 def remove_property(key) raise 'not implemented' end |
#set_property(key, value) ⇒ Object
Directly set the property on the relationship (low level method, may need transaction)
55 56 57 |
# File 'lib/neo4j/relationship.rb', line 55 def set_property(key, value) raise 'not implemented' end |
#start_node ⇒ Neo4j::Node, Object
Returns the start node of this relationship.
68 69 70 |
# File 'lib/neo4j/relationship.rb', line 68 def start_node _start_node.wrapper end |
#update_props(properties) ⇒ Object
Updates the properties, keeps old properties
43 44 45 |
# File 'lib/neo4j/relationship.rb', line 43 def update_props(properties) raise 'not implemented' end |