@@ -574,13 +574,25 @@ def get_provenance(neo4j_driver, uuid, depth):
574574 max_level_str = ''
575575 if depth is not None and len (str (depth )) > 0 :
576576 max_level_str = f"maxLevel: { depth } , "
577-
577+ delimiter = ', '
578+ entity_properties = ['group_uuid' , 'created_by_user_displayname' , 'created_by_user_sub' , 'created_by_user_email' , 'uuid' , 'dataset_type' , 'hubmap_id' , 'entity_type' , 'status' , 'created_timestamp' ]
579+ activity_properties = ['hubmap_id' , 'created_by_user_displayname' , 'created_by_user_sub' , 'created_by_user_email' , 'creation_action' , 'uuid' , 'status' , 'created_timestamp' ]
580+ entity_cypher_pairs_list = [f'{ prop } : node.{ prop } ' for prop in entity_properties ]
581+ activity_cypher_pairs_list = [f'{ prop } : node.{ prop } ' for prop in activity_properties ]
582+ entity_cypher_pairs_string = delimiter .join (entity_cypher_pairs_list )
583+ activity_cypher_pairs_string = delimiter .join (activity_cypher_pairs_list )
578584 # More info on apoc.path.subgraphAll() procedure: https://neo4j.com/labs/apoc/4.0/graph-querying/expand-subgraph/
579585 query = (f"MATCH (n:Entity) "
580586 f"WHERE n.uuid = '{ uuid } ' "
581587 f"CALL apoc.path.subgraphAll(n, {{ { max_level_str } relationshipFilter:'<ACTIVITY_INPUT|<ACTIVITY_OUTPUT', labelFilter:'-Lab' }}) "
582588 f"YIELD nodes, relationships "
583- f"WITH [node in nodes | node {{ .*, label:labels(node)[0] }} ] as nodes, "
589+ f"WITH [node in nodes | "
590+ f" CASE "
591+ f" WHEN 'Activity' IN labels(node) THEN node {{{ activity_cypher_pairs_string } , label: labels(node)[0] }} "
592+ f" WHEN 'Entity' IN labels(node) THEN node {{{ entity_cypher_pairs_string } , label: labels(node)[0] }} "
593+ f" ELSE node {{ label: labels(node)[0] }} "
594+ f" END "
595+ f"] as nodes, "
584596 f"[rel in relationships | rel {{ .*, fromNode: {{ label:labels(startNode(rel))[0], uuid:startNode(rel).uuid }}, toNode: {{ label:labels(endNode(rel))[0], uuid:endNode(rel).uuid }}, rel_data: {{ type: type(rel) }} }} ] as rels "
585597 f"WITH {{ nodes:nodes, relationships:rels }} as json "
586598 f"RETURN json" )
0 commit comments