You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Apache Age图的节点度中心性并排序节点影响力?

计算Apache Age图的节点度中心性并排序

要通过Cypher查询计算Apache Age图的节点度中心性(以此判断节点重要性),并按影响力排序,需先将关系型数据映射为Age的图结构,再执行统计查询,步骤如下:

1. 初始化Apache Age图空间

如果还未创建Age图,先执行以下SQL初始化:

CREATE EXTENSION IF NOT EXISTS age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;

CREATE GRAPH social_network;

2. 导入关系型数据到Apache Age

导入Person节点

将people表的数据导入为Age的Person节点:

SELECT * FROM cypher('social_network', $$
    CREATE (p:Person {id: $id, name: $name})
$$) AS (v agtype)
FROM people;

导入双向朋友关系边

由于朋友关系是无向的,需创建双向边来模拟无向连接:

SELECT * FROM cypher('social_network', $$
    MATCH (a:Person {id: $person_id}), (b:Person {id: $friend_id})
    CREATE (a)-[:FRIENDS_WITH]->(b), (b)-[:FRIENDS_WITH]->(a)
$$) AS (v agtype)
FROM connections;

3. 计算度中心性并排序

无向图总度统计(核心查询)

总度是节点的所有连接数,直接反映节点在无向网络中的影响力:

MATCH (p:Person)
WITH p, SIZE((p)--()) AS total_degree
RETURN p.name, total_degree
ORDER BY total_degree DESC, p.name ASC;
  • (p)--()匹配所有与节点p相连的边(忽略方向)
  • SIZE()统计边的数量得到总度
  • 按total_degree降序排序(影响力从高到低),同名节点按名称升序排列

有向图场景:区分入度与出度

如果是有向关系(如关注/被关注),可分别统计入度(收到的连接)和出度(发起的连接):

MATCH (p:Person)
WITH p,
     SIZE((p)-->()) AS out_degree,
     SIZE((p)<--()) AS in_degree,
     SIZE((p)--()) AS total_degree
RETURN p.name, out_degree, in_degree, total_degree
ORDER BY total_degree DESC;

示例结果

针对你提供的示例数据,执行无向总度查询后,结果如下:

nametotal_degree
Bob3
Charlie3
David3
Alice2
Eve1

Bob、Charlie、David的总度最高,是网络中最核心的节点。

内容的提问来源于stack exchange,提问作者Muhammad Awais Bin Adil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:10:17