Example #1
0
def create_edge(source_id,
                target_id,
                relationship_type,
                is_deleted=False,
                update_timestamp=None,
                metadata=None):
    """A builder to create an edge

    :param update_timestamp:
    :param source_id:
    :type source_id: str
    :param target_id:
    :type target_id: str
    :param relationship_type:
    :type relationship_type: str
    :param is_deleted:
    :type is_deleted: str
    :param metadata:
    :type metadata: dict
    :return:
    :rtype: Edge
    """
    properties = {
        EConst.UPDATE_TIMESTAMP: update_timestamp,
        EConst.IS_DELETED: is_deleted,
        EConst.RELATIONSHIP_TYPE: relationship_type,
    }
    if metadata:
        properties.update(metadata)
    properties = dict((k, v) for k, v in properties.items() if v is not None)
    edge = Edge(source_id=source_id,
                target_id=target_id,
                label=relationship_type,
                properties=properties)
    return edge
Example #2
0
 def copy(self):
     # Networkx graph copy is very slow, so we implement
     nodes = self._g.nodes(data=True)
     vertices = [Vertex(vertex_id=n, properties=data) for n, data in nodes]
     edges_iter = self._g.edges(data=True, keys=True)
     edges = [Edge(source_id=u, target_id=v, label=l, properties=data)
              for u, v, l, data in edges_iter]
     return NXGraph(self.name, vertices, edges)
Example #3
0
def edge_copy(source_id, target_id, label, data):
    return Edge(source_id=source_id, target_id=target_id,
                label=label, properties=copy.copy(data))