Knowledge Graph - Multi Hop Reasoning Query Builder

生成用于知识图谱中多跳遍历与推理的图数据库查询语句。

已扫描
适合谁
图数据库开发者、数据科学家
不适合谁
无图数据库基础的初学者、无需复杂路径查询的普通用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @fisa712/multi-hop-reasoning-query-builder

Skill 说明

命令、参数、文件名以原文为准

多跳推理查询构建器

构建能够通过图中多个跳转探索间接关系的图查询。

此技能帮助开发者生成可遍历多个关系以发现图数据集中隐藏连接和复杂模式的查询。

多跳推理常用于:

  • 知识图谱探索
  • 推荐系统
  • 欺诈检测
  • 供应链分析
  • 社交网络分析

该技能生成的查询可跨越多个边,识别实体之间的连接。


📋 快速入门

何时使用此技能

当用户希望:

  • 构建多跳图查询
  • 探索间接关系
  • 在图路径上执行推理
  • 通过多个关系发现连接
  • 构造路径遍历查询
  • 找出跨跳的隐藏模式
  • 分析关系链

示例请求

  • “找出 Alice 的朋友的朋友。”
  • “找出在三跳内与某公司相连的供应商。”
  • “发现通过购买链关联的客户。”
  • “找出与某个节点通过多重关系连接的实体。”
  • “显示从产品 A 到产品 B 的路径。”
  • “找出两家公司之间的所有路径。”

🎯 本技能输出内容

该技能生成的查询具备以下能力:

  • 多跳遍历 —— 跨越多个关系跳转
  • 路径发现 —— 找到实体间的路径
  • 间接关系检测 —— 发现隐藏连接
  • 图推理查询 —— 复杂推理模式
  • 可变长度路径探索 —— 灵活的遍历模式
  • 性能优化查询 —— 高效的多跳查询

输出包括:

  • Cypher 遍历查询
  • SPARQL 属性路径查询
  • 图路径探索查询
  • 参数化多跳模板

🔍 多跳查询类型

1. 固定深度多跳

模式: 精确遍历 N 个关系

Cypher:

MATCH (start:$startLabel {id: $startId})-[:$relType*2]->(target)
RETURN target

示例 - 朋友的朋友:

MATCH (alice:Person {name:"Alice"})-[:FOLLOWS*2]->(fof:Person)
RETURN fof

适用场景:

  • 从 Alice 出发恰好 2 跳
  • 精确距离查询
  • 特定关系链发现

2. 可变深度多跳

模式: 在最小值与最大值之间遍历关系

Cypher:

MATCH (start:$startLabel {id: $startId})-[:$relType*1..$maxHops]->(target)
RETURN target
LIMIT $limit

示例 - 最多 3 跳:

MATCH (company:Company {id:"C123"})-[:SUPPLIES*1..3]->(supplier)
RETURN supplier
LIMIT 50

适用场景:

  • 在 N 跳以内
  • 基于范围的发现
  • 灵活的连接查找

3. 路径发现

模式: 返回实际的路径结构

Cypher:

MATCH path = (start:$startLabel)-[*1..$maxHops]-(target:$targetLabel)
RETURN path, LENGTH(path) as hops
LIMIT $limit

示例 - 从 Alice 到 Bob 的路径:

MATCH path = (alice:Person {name:"Alice"})-[*1..4]-(bob:Person {name:"Bob"})
RETURN path, LENGTH(path) as hops
LIMIT 10

返回内容: 包含关系的完整遍历路径


4. 过滤型多跳

模式: 多跳查询中加入关系类型过滤

Cypher:

MATCH (start:$startLabel)-[:$relType*1..$hops]->(target:$targetLabel)
WHERE start.id = $startId AND target.$property = $value
RETURN target
LIMIT $limit

示例 - 特定关系链:

MATCH (source:Person)-[:KNOWS|:WORKS_WITH*1..3]->(target:Person)
WHERE source.name = "Alice" AND target.active = true
RETURN target
LIMIT 25

5. 无向多跳

模式: 任意方向跟随关系

Cypher:

MATCH (start:$startLabel)-[:$relType*1..$maxHops]-(target)
RETURN target

示例 - 无向网络:

MATCH (node:Entity)-[*1..3]-(connected)
RETURN connected
LIMIT 100

6. SPARQL 属性路径

模式: 使用 SPARQL+ 操作符表示一跳或多跳

SPARQL:

SELECT ?target
WHERE {
  ?start ex:$property+ ?target .
}

示例 - 属性路径:

PREFIX ex: <http://example.org/>
SELECT ?person
WHERE {
  :Alice ex:knows+ ?person .
}

7. 聚合型多跳

模式: 多跳查询结合聚合操作

Cypher:

MATCH (start:$startLabel)-[:$relType*1..$hops]->(target)
RETURN target, COUNT(*) as path_count
GROUP BY target
ORDER BY path_count DESC

示例 - 统计路径数量:

MATCH (alice:Person {name:"Alice"})-[:FOLLOWS*1..3]->(person)
RETURN person, COUNT(*) as num_paths
GROUP BY person
ORDER BY num_paths DESC
LIMIT 10

8. 条件型多跳

模式: 多跳查询中加入 WHERE 条件

Cypher:

MATCH path = (start:$startLabel)-[:$relType*1..$hops]->(target)
WHERE ALL(n in nodes(path) WHERE n.$property <> $excludeValue)
RETURN target

示例 - 避免特定节点:

MATCH path = (alice:Person {name:"Alice"})-[:KNOWS*1..3]->(person)
WHERE ALL(n in nodes(path) WHERE n.status = "active")
RETURN person
LIMIT 50

📊 多跳复杂度

跳数深度影响:

深度 1: O(n)
  ├─ 从起始节点出发 1 跳
  └─ 仅直接关系

深度 2: O(n²)
  ├─ 从起始节点出发 2 跳
  └─ 朋友的朋友

深度 3: O(n³)
  ├─ 从起始节点出发 3 跳
  └─ 可能开销较大

深度 4+: O(n^4+) ⚠️ 高成本
  ├─ 指数级增长
  └─ 仅在有筛选或限制时使用

性能建议:

  • 开放查询时保持深度 ≤ 3
  • 使用深度 ≤ 4 时需强过滤条件
  • 深度 > 4 时避免无限制查询
  • 始终包含 LIMIT 子句

🏢 实际应用案例

社交网络:朋友的朋友

MATCH (user:User {id: $userId})-[:FOLLOWS*2]->(fof:User)
WHERE NOT (user)-[:FOLLOWS]->(fof)
RETURN DISTINCT fof
LIMIT 50

电商:商品推荐

MATCH (customer:Customer {id: $customerId})-[:PURCHASED*1..2]->(recommended:Product)
RETURN recommended, COUNT(*) as relevance
GROUP BY recommended
ORDER BY relevance DESC
LIMIT 10

供应链:供应商网络

MATCH (company:Company {name: $companyName})-[:SUPPLIES*1..3]->(supplier:Company)
RETURN supplier, COUNT(*) as connections
GROUP BY supplier
ORDER BY connections DESC
LIMIT 20

✅ 最佳实践

构建多跳查询时,请遵循以下建议:

  1. 限制遍历深度

- 无过滤条件的查询,深度 ≤ 3

- 含复杂过滤的查询,深度 ≤ 4

- 始终对深度进行约束

  1. 限定关系类型

- 明确指定具体的关系类型

- 避免使用通配符遍历

- 对关系方向进行过滤

  1. 使用结果限制

- 始终包含 LIMIT 子句

- 防止内存溢出

- 控制返回数据量

  1. 从特定节点开始

- 使用有索引的属性作为起点

- 通过具体 ID 或属性进行筛选

- 避免全表扫描

  1. 在路径中添加过滤条件

- 使用 WHERE 搭配 ALL/ANY 函数

- 排除特定节点

- 按节点属性进行过滤

  1. 应用索引

- 对起始节点属性建立索引

- 对关系类型建立索引

- 对过滤条件涉及的属性建立索引

  1. 测试性能

- 使用真实数据进行性能分析

- 监控执行时间

- 优化查询入口点

  1. 记录假设条件

- 预期的路径长度

- 关系的基数(数量级)

- 性能特征说明


🔗 与其他技能的集成

本技能可与以下技能协同工作:

  • graph-query-debugging-tool - 用于调试多跳查询
  • graph-query-optimization-assistant - 优化多跳查询模式
  • graph-template-query-generator - 生成多跳查询模板
  • nl-to-graph-query-translator - 将自然语言转换为多跳查询
  • graph-schema-validation - 验证多跳查询是否符合图谱结构

📋 输出格式

该技能支持以下输出形式:

1. 多跳查询

可执行的 Cypher 或 SPARQL 查询,包含指定的跳跃深度。

2. 路径查询

返回实际的关系路径,展示遍历链路。

3. 参数化模板

可复用的查询模板,支持跳数参数配置。

4. 复杂度分析

性能指标及优化建议报告。


💡 推理模式

模式 1:发现关联

查找在 N 跳范围内的所有实体。

MATCH (start)-[:RELATIONSHIP*1..$n]->(end)
RETURN end

模式 2:返回路径

返回实际的路径信息,展示关系链。

MATCH path = (start)-[*1..$n]-(end)
RETURN path

模式 3:统计路径数量

计算不同路径的数量。

MATCH (start)-[:REL*1..$n]->(end)
RETURN end, COUNT(*) as paths

模式 4:最短路径

查找两点间的最短连接路径。

MATCH path = shortestPath((start)-[*]-(end))
RETURN path

模式 5:环路检测

发现关系中的循环结构。

MATCH path = (start)-[:REL*2..]->(start)
RETURN path

📖 概述

本技能用于生成多跳图查询,能够跨越多个关系,挖掘间接连接与隐藏模式,适用于图数据集的深入分析。

它使开发者能够使用 Cypher 或 SPARQL 实现高级图推理,广泛应用于社交网络、推荐系统、欺诈检测和知识图谱探索等场景。


状态:企业级多跳推理能力

一套完整的多跳查询生成与推理系统,专为专业级知识图谱开发设计。

F
@fisa712

已收录 2 个 Skill

相关推荐