relationalai.std.graphs.EdgeInstance
class relationalai.std.graphs.EdgeInstanceEdgeInstance is a subclass of Producer that produces edges in a graph.
They are created by called a graph’s Edge object or the Edge.add() method.
An EdgeInstance is similar to an Instance,
but rather than representing an object, it represents a pairs of objects.
As a result, you can’t add EdgeInstance objects to a Type.
Example
Section titled “Example”import relationalai as raifrom relationalai.std.graphs import Graph
# Create a model with a 'Person' type.model = rai.Model("socialNetwork")Person = model.Type("Person")
# Add people to the model connected by a multi-valued 'follows' property.with model.rule(): alice = Person.add(name="Alice") bob = Person.add(name="Bob") alice.follows.add(bob)
# Create a directed graph.graph = Graph(model)
# Add edges to the graph from the 'Person.follows' property.graph.Edge.extend(Person.follows, type="follows")
# Query the edges in the graph.with model.query() as select: # 'edge' is an EdgeInstance object. edge = graph.Edge() # Use the '.from_' and '.to' attributes to access the nodes # connected by the edge, and the '.type' attribute to access # the edge's 'type' property. response = select(edge.from_.name, edge.to.name, edge.type)
print(response.results)# Output:# name name2 v# 0 Alice Bob follows
# Use the '.set()' method to set properties on an edge.with model.rule(): edge = graph.Edge() # Set the 'weight' property of all edges to 1.0. edge.set(weight=1.0) # NOTE: Setting the 'weight' property does not turn the graph # into a weighted graph. You can only create a weighted graph # by passing 'weighted=True' to the 'Graph' constructor.
# Query the edges in the graph.with model.query() as select: edge = graph.Edge() response = select(edge.from_.name, edge.to.name, edge.weight)
print(response.results)# Output:# name name2 v# 0 Alice Bob 1.0Attributes
Section titled “Attributes”| Name | Type | Description |
|---|---|---|
.from_ | Producer | The node at the start of the edge. |
.to | Producer | The node at the end of the edge. |
.from_
Section titled “.from_”EdgeInstance.from_Returns a Producer object that produces
the node at the start of an edge:
import relationalai as raifrom relationalai.std.graphs import Graph
# Create a model with a 'Person' type.model = rai.Model("socialNetwork")Person = model.Type("Person")
# Add people to the model connected by a multi-valued 'follows' property.with model.rule(): alice = Person.add(name="Alice") bob = Person.add(name="Bob") alice.follows.add(bob)
# Create a directed graph with 'Person' nodes and 'follows' edges.graph = Graph(model)graph.Edge.extend(Person.follows)
# Get the names of all people following Bob.with model.query() as select: edge = graph.Edge(to=Person(name="Bob")) follower = edge.from_ response = select(follower.name)
print(response.results)# Output:# name# 0 AliceEdgeInstance.toReturns a Producer object that produces
the terminal node of an edge:
import relationalai as raifrom relationalai.std.graphs import Graph
# Create a model with a 'Person' type.model = rai.Model("socialNetwork")Person = model.Type("Person")
# Add people to the model connected by a multi-valued 'follows' property.with model.rule(): alice = Person.add(name="Alice") bob = Person.add(name="Bob") alice.follows.add(bob)
# Create a directed graph with 'Person' nodes and 'follows' edges.graph = Graph(model)graph.Edge.extend(Person.follows)
# Get the names of all people Alice follows.with model.query() as select: edge = graph.Edge(from_=Person(name="Alice")) follows = edge.to response = select(follows.name)
print(response.results)# Output:# name# 0 BobMethods
Section titled “Methods”| Name | Description | Returns |
|---|---|---|
.set() | Set properties on an edge. | EdgeInstance |
.set()
Section titled “.set()”EdgeInstance.set(**kwargs) -> EdgeInstanceSets properties on an EdgeInstance object and returns the EdgeInstance.
Note that unlike Instance.set(),
you can’t set a Type on an edge.
Must be called in a rule or query context.
Parameters
Section titled “Parameters”| Name | Type | Description |
|---|---|---|
*kwargs | Any | Properties and values to set on the EdgeInstance. |
Returns
Section titled “Returns”An EdgeInstance object.
Example
Section titled “Example”import relationalai as raifrom relationalai.std.graphs import Graph
# Create a model with a 'Person' type.model = rai.Model("socialNetwork")Person = model.Type("Person")
# Add people to the model connected by a multi-valued 'follows' property.with model.rule(): alice = Person.add(name="Alice") bob = Person.add(name="Bob") alice.follows.add(bob)
# Create a directed graph with 'Person' nodes and 'follows' edges.graph = Graph(model)graph.Edge.extend(Person.follows)
# Set the 'color' property of all edges to 'red'.with model.rule(): edge = graph.Edge() edge.set(color="red")
# Query the edges in the graph.with model.query() as select: edge = graph.Edge() response = select(edge.from_.name, edge.to.name, edge.color)
print(response.results)# Output:# name name2 v# 0 Alice Bob red