in src/graph_notebook/network/gremlin/GremlinNetwork.py [0:0]
def add_results(self, results):
"""
receives path results and traverses them to add nodes and edges to the network graph.
We will look at sets of three in a path to form a vertex -> edge -> vertex pattern. All other
patters will be considered invalid at this time.
:param results: the data to be processed. Must be of type :type Path
:return:
"""
if not isinstance(results, list):
raise ValueError("results must be a list of paths")
for path in results:
if isinstance(path, Path):
if type(path[0]) is Edge or type(path[-1]) is Edge:
raise INVALID_PATH_ERROR
for i in range(len(path)):
if isinstance(path[i], dict):
is_elementmap = False
if T.id in path[i] and T.label in path[i]:
for prop, value in path[i].items():
# T.id and/or T.label could be renamed by a project() step
if isinstance(value, str) and prop not in [T.id, T.label]:
is_elementmap = True
break
elif isinstance(value, dict):
if prop in [Direction.IN, Direction.OUT]:
is_elementmap = True
break
elif isinstance(value, list):
break
elif not isinstance(value, (str, list, dict)):
is_elementmap = True
break
if is_elementmap:
self.insert_elementmap(path[i], check_emap=True, path_element=path, index=i)
else:
self.insert_path_element(path, i)
else:
self.insert_path_element(path, i)
elif isinstance(path, dict) and T.id in path.keys() and T.label in path.keys():
self.insert_elementmap(path)
else:
raise ValueError("all entries in results must be paths or elementMaps")