|
@@ -17,7 +17,7 @@ def get_node_by_id(label, id):
|
|
|
"""根据ID获取指定标签的节点"""
|
|
|
try:
|
|
|
with neo4j_driver.get_session() as session:
|
|
|
- cypher = f"MATCH (n:{label}) WHERE id(n) = $id RETURN n"
|
|
|
+ cypher = f"MATCH (n:{label}) WHERE elementId(n) = $id RETURN n"
|
|
|
result = session.run(cypher, id=int(id))
|
|
|
record = result.single()
|
|
|
return record["n"] if record else None
|
|
@@ -29,7 +29,7 @@ def get_node_by_id_no_label(id):
|
|
|
"""根据ID获取节点,不限制标签"""
|
|
|
try:
|
|
|
with neo4j_driver.get_session() as session:
|
|
|
- cypher = "MATCH (n) WHERE id(n) = $id RETURN n"
|
|
|
+ cypher = "MATCH (n) WHERE elementId(n) = $id RETURN n"
|
|
|
result = session.run(cypher, id=int(id))
|
|
|
record = result.single()
|
|
|
return record["n"] if record else None
|
|
@@ -42,15 +42,15 @@ def delete_relationships(start_node, rel_type=None, end_node=None):
|
|
|
try:
|
|
|
with neo4j_driver.get_session() as session:
|
|
|
if rel_type and end_node:
|
|
|
- cypher = "MATCH (a)-[r:`{rel_type}`]->(b) WHERE id(a) = $start_id AND id(b) = $end_id DELETE r"
|
|
|
+ cypher = "MATCH (a)-[r:`{rel_type}`]->(b) WHERE elementId(a) = $start_id AND elementId(b) = $end_id DELETE r"
|
|
|
cypher = cypher.replace("{rel_type}", rel_type)
|
|
|
session.run(cypher, start_id=start_node.id, end_id=end_node.id)
|
|
|
elif rel_type:
|
|
|
- cypher = "MATCH (a)-[r:`{rel_type}`]->() WHERE id(a) = $start_id DELETE r"
|
|
|
+ cypher = "MATCH (a)-[r:`{rel_type}`]->() WHERE elementId(a) = $start_id DELETE r"
|
|
|
cypher = cypher.replace("{rel_type}", rel_type)
|
|
|
session.run(cypher, start_id=start_node.id)
|
|
|
else:
|
|
|
- cypher = "MATCH (a)-[r]->() WHERE id(a) = $start_id DELETE r"
|
|
|
+ cypher = "MATCH (a)-[r]->() WHERE elementId(a) = $start_id DELETE r"
|
|
|
session.run(cypher, start_id=start_node.id)
|
|
|
return True
|
|
|
except Exception as e:
|
|
@@ -65,7 +65,7 @@ def update_or_create_node(label, **properties):
|
|
|
if node_id:
|
|
|
# 更新现有节点
|
|
|
set_clause = ", ".join([f"n.{k} = ${k}" for k in properties.keys()])
|
|
|
- cypher = f"MATCH (n:{label}) WHERE id(n) = $id SET {set_clause} RETURN n"
|
|
|
+ cypher = f"MATCH (n:{label}) WHERE elementId(n) = $id SET {set_clause} RETURN n"
|
|
|
result = session.run(cypher, id=int(node_id), **properties)
|
|
|
else:
|
|
|
# 创建新节点
|
|
@@ -114,7 +114,7 @@ def handle_node(receiver, head_data, data_resource):
|
|
|
# 检查关系是否存在
|
|
|
rel_check = """
|
|
|
MATCH (a:data_resource)-[r:label]->(b:data_label)
|
|
|
- WHERE id(a) = $resource_id AND id(b) = $tag_id
|
|
|
+ WHERE elementId(a) = $resource_id AND elementId(b) = $tag_id
|
|
|
RETURN r
|
|
|
"""
|
|
|
rel_result = session.run(rel_check, resource_id=resource_id, tag_id=tag_node.id)
|
|
@@ -123,7 +123,7 @@ def handle_node(receiver, head_data, data_resource):
|
|
|
if not rel_result.single():
|
|
|
rel_create = """
|
|
|
MATCH (a:data_resource), (b:data_label)
|
|
|
- WHERE id(a) = $resource_id AND id(b) = $tag_id
|
|
|
+ WHERE elementId(a) = $resource_id AND elementId(b) = $tag_id
|
|
|
CREATE (a)-[r:label]->(b)
|
|
|
RETURN r
|
|
|
"""
|
|
@@ -155,7 +155,7 @@ def handle_node(receiver, head_data, data_resource):
|
|
|
# 创建关系
|
|
|
rel_cypher = """
|
|
|
MATCH (a:data_resource), (m:Metadata)
|
|
|
- WHERE id(a) = $resource_id AND id(m) = $meta_id
|
|
|
+ WHERE elementId(a) = $resource_id AND elementId(m) = $meta_id
|
|
|
MERGE (a)-[r:contain]->(m)
|
|
|
RETURN r
|
|
|
"""
|
|
@@ -178,7 +178,7 @@ def handle_id_resource(resource_id):
|
|
|
# 查询数据资源节点
|
|
|
cypher = """
|
|
|
MATCH (n:data_resource)
|
|
|
- WHERE id(n) = $resource_id
|
|
|
+ WHERE elementId(n) = $resource_id
|
|
|
RETURN n
|
|
|
"""
|
|
|
result = session.run(cypher, resource_id=int(resource_id))
|
|
@@ -348,7 +348,7 @@ def id_data_search_list(resource_id, page, page_size, en_name_filter=None,
|
|
|
# 基本匹配语句
|
|
|
match_clause = """
|
|
|
MATCH (n:data_resource)-[:contain]->(m:Metadata)
|
|
|
- WHERE id(n) = $resource_id
|
|
|
+ WHERE elementId(n) = $resource_id
|
|
|
"""
|
|
|
where_conditions = []
|
|
|
|
|
@@ -411,7 +411,7 @@ def resource_kinship_graph(resource_id, include_meta=True):
|
|
|
with neo4j_driver.get_session() as session:
|
|
|
# 基本查询
|
|
|
cypher_parts = [
|
|
|
- "MATCH (n:data_resource) WHERE id(n) = $resource_id",
|
|
|
+ "MATCH (n:data_resource) WHERE elementId(n) = $resource_id",
|
|
|
"OPTIONAL MATCH (n)-[:label]->(l:data_label)",
|
|
|
]
|
|
|
|
|
@@ -487,13 +487,13 @@ def resource_impact_all_graph(resource_id, include_meta=True):
|
|
|
if include_meta:
|
|
|
cypher = """
|
|
|
MATCH path = (n:data_resource)-[*1..3]-(m)
|
|
|
- WHERE id(n) = $resource_id
|
|
|
+ WHERE elementId(n) = $resource_id
|
|
|
RETURN path
|
|
|
"""
|
|
|
else:
|
|
|
cypher = """
|
|
|
MATCH path = (n:data_resource)-[*1..2]-(m)
|
|
|
- WHERE id(n) = $resource_id
|
|
|
+ WHERE elementId(n) = $resource_id
|
|
|
AND NOT (m:Metadata)
|
|
|
RETURN path
|
|
|
"""
|
|
@@ -1012,7 +1012,7 @@ def data_resource_edit(data):
|
|
|
set_clause = ", ".join([f"n.{k} = ${k}" for k in update_fields.keys()])
|
|
|
cypher = f"""
|
|
|
MATCH (n:data_resource)
|
|
|
- WHERE id(n) = $resource_id
|
|
|
+ WHERE elementId(n) = $resource_id
|
|
|
SET {set_clause}
|
|
|
RETURN n
|
|
|
"""
|
|
@@ -1029,7 +1029,7 @@ def data_resource_edit(data):
|
|
|
# 删除旧的标签关系
|
|
|
delete_rel_cypher = """
|
|
|
MATCH (n:data_resource)-[r:label]->()
|
|
|
- WHERE id(n) = $resource_id
|
|
|
+ WHERE elementId(n) = $resource_id
|
|
|
DELETE r
|
|
|
"""
|
|
|
session.run(delete_rel_cypher, resource_id=int(resource_id))
|
|
@@ -1037,7 +1037,7 @@ def data_resource_edit(data):
|
|
|
# 创建新的标签关系
|
|
|
create_rel_cypher = """
|
|
|
MATCH (n:data_resource), (t:data_label)
|
|
|
- WHERE id(n) = $resource_id AND id(t) = $tag_id
|
|
|
+ WHERE elementId(n) = $resource_id AND elementId(t) = $tag_id
|
|
|
CREATE (n)-[r:label]->(t)
|
|
|
RETURN r
|
|
|
"""
|