Bladeren bron

修改图数据库关系label为LABEL。

maxiaolong 1 dag geleden
bovenliggende
commit
3ad9f81c80

+ 1 - 1
app/api/data_metric/routes.py

@@ -232,7 +232,7 @@ def data_metric_list_graph():
         where_clause = ""
 
         if nodeid is not None:
-            where_clause = "MATCH (n)-[:label]->(la) WHERE id(la) = $nodeId"
+            where_clause = "MATCH (n)-[:LABEL]->(la) WHERE id(la) = $nodeId"
             params['nodeId'] = nodeid
         query = f"""
         MATCH (n:DataMetric)

+ 1 - 1
app/api/data_model/routes.py

@@ -266,7 +266,7 @@ def data_model_list_graph():
         where_clause = ""
 
         if nodeid is not None:
-            where_clause = "MATCH (n)-[:label]->(la) WHERE id(la) = $nodeId"
+            where_clause = "MATCH (n)-[:LABEL]->(la) WHERE id(la) = $nodeId"
             params['nodeId'] = nodeid
 
         from app.services.neo4j_driver import neo4j_driver

+ 4 - 4
app/api/meta_data/routes.py

@@ -150,7 +150,7 @@ def meta_node_edit():
             
             # 获取标签信息
             tag_cypher = """
-            MATCH (n:DataMeta)-[:label]->(t:DataLabel)
+            MATCH (n:DataMeta)-[:LABEL]->(t:DataLabel)
             WHERE id(n) = $node_id
             RETURN t
             """
@@ -260,7 +260,7 @@ def meta_node_add():
                     tag_cypher = """
                     MATCH (n:DataMeta), (t:DataLabel)
                     WHERE id(n) = $node_id AND id(t) = $tag_id
-                    MERGE (n)-[r:label]->(t)
+                    MERGE (n)-[r:LABEL]->(t)
                     RETURN r
                     """
                     session.run(tag_cypher, node_id=node["n"].id, tag_id=int(node_tag))
@@ -772,7 +772,7 @@ def meta_node_update():
                 if tag is not None:
                     # 先删除现有标签关系
                     delete_tag_cypher = """
-                    MATCH (n:DataMeta)-[r:label]->(t:DataLabel)
+                    MATCH (n:DataMeta)-[r:LABEL]->(t:DataLabel)
                     WHERE id(n) = $node_id
                     DELETE r
                     """
@@ -783,7 +783,7 @@ def meta_node_update():
                         create_tag_cypher = """
                         MATCH (n:DataMeta), (t:DataLabel)
                         WHERE id(n) = $node_id AND id(t) = $tag_id
-                        MERGE (n)-[r:label]->(t)
+                        MERGE (n)-[r:LABEL]->(t)
                         RETURN r
                         """
                         session.run(create_tag_cypher, node_id=int(node_id), tag_id=int(tag['id']))

+ 3 - 3
app/core/data_flow/dataflows.py

@@ -99,7 +99,7 @@ class DataFlowService:
             neo4j_query = """
             MATCH (n:DataFlow)
             WHERE id(n) = $dataflow_id
-            OPTIONAL MATCH (n)-[:label]-(la:DataLabel)
+            OPTIONAL MATCH (n)-[:LABEL]-(la:DataLabel)
             RETURN n, id(n) as node_id,
                    collect(DISTINCT {id: id(la), name: la.name}) as tags
             """
@@ -384,8 +384,8 @@ class DataFlowService:
                     tag_node = result[0]['n']
                     
                     # 创建关系 - 使用ID调用relationship_exists
-                    if dataflow_id and not relationship_exists(dataflow_id, 'label', tag_id):
-                        session.run("MATCH (a), (b) WHERE id(a) = $dataflow_id AND id(b) = $tag_id CREATE (a)-[:label]->(b)", 
+                    if dataflow_id and not relationship_exists(dataflow_id, 'LABEL', tag_id):
+                        session.run("MATCH (a), (b) WHERE id(a) = $dataflow_id AND id(b) = $tag_id CREATE (a)-[:LABEL]->(b)", 
                                   dataflow_id=dataflow_id, tag_id=tag_id)
                         logger.info(f"创建标签关系: {dataflow_id} -> {tag_id}")
         except Exception as e:

+ 6 - 6
app/core/data_interface/interface.py

@@ -338,7 +338,7 @@ def id_label_graph(id):
     query = """
     MATCH (n:DataLabel)
     WHERE id(n) = $nodeId
-    OPTIONAL MATCH (a)-[:label]-(n)
+    OPTIONAL MATCH (a)-[:LABEL]-(n)
     WITH 
        collect({from: toString(id(a)), to: toString(id(n)), text: "标签"}) AS line1,
        collect({id: toString(id(n)), text: n.name, type:"label"}) AS node1,
@@ -380,11 +380,11 @@ def label_kinship_graph(nodeid):
     cql = """
     MATCH(la:DataLabel)
     WHERE id(la)=$nodeId
-    OPTIONAL MATCH(a:DataResource)-[:label]-(la)
-    OPTIONAL MATCH(b:DataModel)-[:label]-(la)
-    OPTIONAL MATCH(meta:DataMeta)-[:label]-(la)
-    OPTIONAL MATCH(d:data_standard)-[:label]-(la)
-          OPTIONAL MATCH(e:DataMetric)-[:label]-(la)
+    OPTIONAL MATCH(a:DataResource)-[:LABEL]-(la)
+    OPTIONAL MATCH(b:DataModel)-[:LABEL]-(la)
+    OPTIONAL MATCH(meta:DataMeta)-[:LABEL]-(la)
+    OPTIONAL MATCH(d:data_standard)-[:LABEL]-(la)
+          OPTIONAL MATCH(e:DataMetric)-[:LABEL]-(la)
     WITH 
         collect({id:toString(id(a)),text:a.name,type:split(labels(a)[0],'_')[1]})+
         collect({id:toString(id(b)),text:b.name,type:split(labels(b)[0],'_')[1]})+

+ 9 - 9
app/core/data_metric/metric_interface.py

@@ -65,7 +65,7 @@ def metric_list(skip_count, page_size, en_name_filter=None,
 
     # 构建完整的查询语句
     cql = f"""
-    MATCH (n:DataMetric)-[:label]->(la:DataLabel)
+    MATCH (n:DataMetric)-[:LABEL]->(la:DataLabel)
     WHERE {where_str}
     OPTIONAL MATCH (n)-[:origin]->(m:DataModel)
     WITH n, la, CASE WHEN m IS NULL THEN null ELSE {{id: id(m), name: m.name}}
@@ -234,8 +234,8 @@ def handle_data_metric(metric_name, result_list, receiver):
             dm_id = data_metric_node.id if hasattr(data_metric_node, 'id') else data_metric_node.identity if hasattr(data_metric_node, 'identity') else None
             tag_node_id = tag.id if hasattr(tag, 'id') else tag.identity if hasattr(tag, 'identity') else receiver['tag']
             
-            if dm_id and tag_node_id and not relationship_exists(dm_id, 'label', tag_node_id):
-                connect_graph.create(Relationship(data_metric_node, 'label', tag))
+            if dm_id and tag_node_id and not relationship_exists(dm_id, 'LABEL', tag_node_id):
+                connect_graph.create(Relationship(data_metric_node, 'LABEL', tag))
 
     return data_metric_node.id, id_list
 
@@ -318,7 +318,7 @@ def handle_id_metric(id):
     // 元数据
     OPTIONAL MATCH (n)-[:connection]-(meta:DataMeta)
     // 数据标签
-    OPTIONAL MATCH (n)-[:label]-(la:DataLabel)
+    OPTIONAL MATCH (n)-[:LABEL]-(la:DataLabel)
     OPTIONAL MATCH (parent)-[:child]-(n)
     WITH properties(n) AS properties,collect(DISTINCT id(meta)) AS meta_list,parent,
         {id: id(la), name: la.name} AS tag,
@@ -433,7 +433,7 @@ def metric_impact_graph(nodeid, meta):
         WHERE id(mc2)=$nodeId
         OPTIONAL MATCH(mc4:DataMetric)-[:origin]-(mc2)
         OPTIONAL MATCH(mc2)-[:connection]-(meta:DataMeta)
-        OPTIONAL MATCH(mc2)-[:label]-(la:DataLabel)
+        OPTIONAL MATCH(mc2)-[:LABEL]-(la:DataLabel)
         OPTIONAL MATCH(mc2)-[:child]-(child)
         WITH 
             collect({id:toString(id(mc2)),text:mc2.name,type:split(labels(mc2)[0],'_')[1]})+
@@ -457,7 +457,7 @@ def metric_impact_graph(nodeid, meta):
             MATCH(mc2:DataMetric)
             WHERE id(mc2)=$nodeId
             OPTIONAL MATCH(mc4:DataMetric)-[:origin]-(mc2)
-            OPTIONAL MATCH(mc2)-[:label]-(la:DataLabel)
+            OPTIONAL MATCH(mc2)-[:LABEL]-(la:DataLabel)
             OPTIONAL MATCH(mc2)-[:child]-(child)
             WITH 
                 collect({id:toString(id(mc2)),text:mc2.name,type:split(labels(mc2)[0],'_')[1]})+
@@ -505,7 +505,7 @@ def metric_all_graph(nodeid, meta):
         OPTIONAL MATCH(mc2)-[:origin]-(mc1:DataMetric)
         OPTIONAL MATCH(mc4:DataMetric)-[:origin]-(mc2)
         OPTIONAL MATCH(mc2)-[:connection]-(meta:DataMeta)
-        OPTIONAL MATCH(mc2)-[:label]-(la:DataLabel)
+        OPTIONAL MATCH(mc2)-[:LABEL]-(la:DataLabel)
         OPTIONAL MATCH(mc2)-[:child]-(child)
         WITH 
             collect({id:toString(id(mc2)),text:mc2.name,type:split(labels(mc2)[0],'_')[1]})+
@@ -535,7 +535,7 @@ def metric_all_graph(nodeid, meta):
             OPTIONAL MATCH(mc2)-[:origin]-(mo:DataModel)
             OPTIONAL MATCH(mc2)-[:origin]-(mc1:DataMetric)
             OPTIONAL MATCH(mc4:DataMetric)-[:origin]-(mc2)
-            OPTIONAL MATCH(mc2)-[:label]-(la:DataLabel)
+            OPTIONAL MATCH(mc2)-[:LABEL]-(la:DataLabel)
             OPTIONAL MATCH(mc2)-[:child]-(child)
             WITH 
                 collect({id:toString(id(mc2)),text:mc2.name,type:split(labels(mc2)[0],'_')[1]})+
@@ -603,7 +603,7 @@ def data_metric_edit(data):
     if data.get("tag"):
         tag_node = get_node_by_id('DataLabel', data["tag"])
         if tag_node:
-            relationship_label = Relationship(node_a, "label", tag_node)
+            relationship_label = Relationship(node_a, "LABEL", tag_node)
             connect_graph.merge(relationship_label)
 
     # 处理元数据节点及其关系(此处只调整关系,不修改对应属性)

+ 11 - 11
app/core/data_model/model.py

@@ -184,7 +184,7 @@ def handle_data_model(data_model, result_list, result, receiver):
                 # 直接使用Cypher查询检查关系是否存在
                 with connect_graph().session() as session:
                     rel_query = """
-                    MATCH (a)-[r:label]->(b)
+                    MATCH (a)-[r:LABEL]->(b)
                     WHERE id(a) = $start_id AND id(b) = $end_id
                     RETURN count(r) > 0 as exists
                     """
@@ -196,7 +196,7 @@ def handle_data_model(data_model, result_list, result, receiver):
                     if not (rel_result and rel_result["exists"]):
                         session.execute_write(
                             lambda tx: tx.run(
-                                "MATCH (a), (b) WHERE id(a) = $a_id AND id(b) = $b_id CREATE (a)-[:label]->(b)",
+                                "MATCH (a), (b) WHERE id(a) = $a_id AND id(b) = $b_id CREATE (a)-[:LABEL]->(b)",
                                 a_id=int(node_id), b_id=int(tag.id)
                             )
                         )
@@ -446,7 +446,7 @@ def handle_id_model(id):
         MATCH (n:DataModel) WHERE id(n) = $nodeId
         OPTIONAL MATCH (n)-[:INCLUDES]->(meta:DataMeta)  
         OPTIONAL MATCH (n)-[:DERIVED_FROM]->(resource:DataResource)
-        OPTIONAL MATCH (n)-[:label]->(tag:DataLabel)
+        OPTIONAL MATCH (n)-[:LABEL]->(tag:DataLabel)
         OPTIONAL MATCH (uses:model_use)-[:use]->(n)
         OPTIONAL MATCH (n)-[:has_component]->(component)
         WITH n, 
@@ -588,7 +588,7 @@ def model_list(skip_count, page_size, en_name_filter=None, name_filter=None,
                 return [], 0
                 
             # 有标签查询条件时,需要确保标签关系存在
-            match_clause = "MATCH (n:DataModel)-[:label]->(t)"
+            match_clause = "MATCH (n:DataModel)-[:LABEL]->(t)"
             datamodel_where_clause.append("id(t) = $tag")
         else:
             # 没有标签查询条件时,先匹配DataModel,然后可选连接标签
@@ -655,7 +655,7 @@ def model_list(skip_count, page_size, en_name_filter=None, name_filter=None,
                 MATCH (n:DataModel)
                 {datamodel_where_str}
                 WITH n
-                OPTIONAL MATCH (n)-[:label]->(t)
+                OPTIONAL MATCH (n)-[:LABEL]->(t)
                 RETURN 
                 id(n) as id, 
                 n.name as name, 
@@ -748,7 +748,7 @@ def model_resource_list(skip_count, page_size, name_filter=None, id=None,
             
             # 使用分页和筛选条件构建主查询
             main_query = base_query + """
-            MATCH (m)-[:label]->(l)
+            MATCH (m)-[:LABEL]->(l)
             WHERE id(n) = $nodeId and labels(m) <> ['DataMeta']
             RETURN m.name as name, 
                    m.en_name as en_name,
@@ -1157,7 +1157,7 @@ def data_model_edit(receiver):
     if tag:
         # 先删除所有标签关系
         delete_query = """
-        MATCH (n:DataModel)-[r:label]->() WHERE id(n) = $id
+        MATCH (n:DataModel)-[r:LABEL]->() WHERE id(n) = $id
         DELETE r
         """
         with connect_graph().session() as session:
@@ -1175,7 +1175,7 @@ def data_model_edit(receiver):
                 # 直接使用Cypher查询检查关系是否存在
                 with connect_graph().session() as session:
                     rel_query = """
-                    MATCH (a)-[r:label]->(b)
+                    MATCH (a)-[r:LABEL]->(b)
                     WHERE id(a) = $start_id AND id(b) = $end_id
                     RETURN count(r) > 0 as exists
                     """
@@ -1187,7 +1187,7 @@ def data_model_edit(receiver):
                     if not (rel_result and rel_result["exists"]):
                         session.execute_write(
                             lambda tx: tx.run(
-                                "MATCH (a), (b) WHERE id(a) = $a_id AND id(b) = $b_id CREATE (a)-[:label]->(b)",
+                                "MATCH (a), (b) WHERE id(a) = $a_id AND id(b) = $b_id CREATE (a)-[:LABEL]->(b)",
                                 a_id=int(model_id), b_id=int(tag_id)
                             )
                         )
@@ -1262,13 +1262,13 @@ def model_community(tag=None):
                 
                 # 有标签查询条件时,查询有指定标签的DataModel节点及其DERIVED_FROM关系
                 cypher = """
-                MATCH (dm:DataModel)-[:label]->(t)
+                MATCH (dm:DataModel)-[:LABEL]->(t)
                 WHERE id(t) = $tag_id
                 WITH dm
                 MATCH path = (dm)-[:DERIVED_FROM*0..]->(target:DataModel)
                 RETURN path
                 UNION
-                MATCH (dm:DataModel)-[:label]->(t)
+                MATCH (dm:DataModel)-[:LABEL]->(t)
                 WHERE id(t) = $tag_id
                 WITH dm
                 MATCH path = (source:DataModel)-[:DERIVED_FROM*0..]->(dm)

+ 11 - 11
app/core/data_resource/resource.py

@@ -184,7 +184,7 @@ def handle_node(receiver, head_data, data_source=None, resource_type=None):
                 if tag_node:
                     # 检查关系是否存在
                     rel_check = """
-                    MATCH (a:DataResource)-[r:label]->(b:DataLabel) 
+                    MATCH (a:DataResource)-[r:LABEL]->(b:DataLabel) 
                     WHERE id(a) = $resource_id AND id(b) = $tag_id
                     RETURN r
                     """
@@ -195,7 +195,7 @@ def handle_node(receiver, head_data, data_source=None, resource_type=None):
                         rel_create = """
                         MATCH (a:DataResource), (b:DataLabel)
                         WHERE id(a) = $resource_id AND id(b) = $tag_id
-                        CREATE (a)-[r:label]->(b)
+                        CREATE (a)-[r:LABEL]->(b)
                         RETURN r
                         """
                         session.run(rel_create, resource_id=resource_id, tag_id=tag_node.id)
@@ -364,7 +364,7 @@ def handle_id_resource(resource_id):
             
             # 查询关联的标签
             tag_cypher = """
-            MATCH (n:DataResource)-[r:label]->(t:DataLabel)
+            MATCH (n:DataResource)-[r:LABEL]->(t:DataLabel)
             WHERE id(n) = $resource_id
             RETURN t
             """
@@ -515,7 +515,7 @@ def resource_list(page, page_size, en_name_filter=None, name_filter=None,
                     MATCH (n:DataResource)
                     WHERE {resource_where}
                     WITH n
-                    MATCH (n)-[:label]->(t:DataLabel)
+                    MATCH (n)-[:LABEL]->(t:DataLabel)
                     WHERE t.name = '{tag_filter}'
                     RETURN count(DISTINCT n) as count
                     """
@@ -526,7 +526,7 @@ def resource_list(page, page_size, en_name_filter=None, name_filter=None,
                     MATCH (n:DataResource)
                     WHERE {resource_where}
                     WITH n
-                    MATCH (n)-[:label]->(t:DataLabel)
+                    MATCH (n)-[:LABEL]->(t:DataLabel)
                     WHERE t.name = '{tag_filter}'
                     RETURN DISTINCT n
                     ORDER BY n.time DESC
@@ -535,7 +535,7 @@ def resource_list(page, page_size, en_name_filter=None, name_filter=None,
                 else:
                     # 只有标签过滤条件
                     count_cypher = f"""
-                    MATCH (n:DataResource)-[:label]->(t:DataLabel)
+                    MATCH (n:DataResource)-[:LABEL]->(t:DataLabel)
                     WHERE t.name = '{tag_filter}'
                     RETURN count(DISTINCT n) as count
                     """
@@ -543,7 +543,7 @@ def resource_list(page, page_size, en_name_filter=None, name_filter=None,
                     # 分页查询
                     skip = (page - 1) * page_size
                     cypher = f"""
-                    MATCH (n:DataResource)-[:label]->(t:DataLabel)
+                    MATCH (n:DataResource)-[:LABEL]->(t:DataLabel)
                     WHERE t.name = '{tag_filter}'
                     RETURN DISTINCT n
                     ORDER BY n.time DESC
@@ -596,7 +596,7 @@ def resource_list(page, page_size, en_name_filter=None, name_filter=None,
                 
                 # 查询关联的标签
                 tag_cypher = """
-                MATCH (n:DataResource)-[r:label]->(t:DataLabel)
+                MATCH (n:DataResource)-[r:LABEL]->(t:DataLabel)
                 WHERE id(n) = $resource_id
                 RETURN t
                 """
@@ -704,7 +704,7 @@ def resource_kinship_graph(resource_id, include_meta=True):
             # 基本查询
             cypher_parts = [
                 f"MATCH (n:DataResource) WHERE id(n) = $resource_id",
-                "OPTIONAL MATCH (n)-[:label]->(l:DataLabel)",
+                "OPTIONAL MATCH (n)-[:LABEL]->(l:DataLabel)",
             ]
             
             # 是否包含元数据 - 支持meta_data和Metadata两种标签
@@ -1348,7 +1348,7 @@ def data_resource_edit(data):
             if tag_id:
                 # 删除旧的标签关系
                 delete_rel_cypher = """
-                MATCH (n:DataResource)-[r:label]->()
+                MATCH (n:DataResource)-[r:LABEL]->()
                 WHERE id(n) = $resource_id
                 DELETE r
                 """
@@ -1358,7 +1358,7 @@ def data_resource_edit(data):
                 create_rel_cypher = """
                 MATCH (n:DataResource), (t:DataLabel)
                 WHERE id(n) = $resource_id AND id(t) = $tag_id
-                CREATE (n)-[r:label]->(t)
+                CREATE (n)-[r:LABEL]->(t)
                 RETURN r
                 """
                 session.run(create_rel_cypher, resource_id=int(resource_id), tag_id=int(tag_id))