Local MCP Server
在Termux中运行本地MCP服务器,支持Ollama模型的文件读取与命令执行。
生成用于知识图谱中多跳遍历与推理的图数据库查询语句。
openclaw skills install @fisa712/multi-hop-reasoning-query-builder命令、参数、文件名以原文为准
构建能够通过图中多个跳转探索间接关系的图查询。
此技能帮助开发者生成可遍历多个关系以发现图数据集中隐藏连接和复杂模式的查询。
多跳推理常用于:
该技能生成的查询可跨越多个边,识别实体之间的连接。
当用户希望:
该技能生成的查询具备以下能力:
输出包括:
模式: 精确遍历 N 个关系
Cypher:
MATCH (start:$startLabel {id: $startId})-[:$relType*2]->(target)
RETURN target示例 - 朋友的朋友:
MATCH (alice:Person {name:"Alice"})-[:FOLLOWS*2]->(fof:Person)
RETURN fof适用场景:
模式: 在最小值与最大值之间遍历关系
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适用场景:
模式: 返回实际的路径结构
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返回内容: 包含关系的完整遍历路径
模式: 多跳查询中加入关系类型过滤
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模式: 任意方向跟随关系
Cypher:
MATCH (start:$startLabel)-[:$relType*1..$maxHops]-(target)
RETURN target示例 - 无向网络:
MATCH (node:Entity)-[*1..3]-(connected)
RETURN connected
LIMIT 100模式: 使用 SPARQL+ 操作符表示一跳或多跳
SPARQL:
SELECT ?target
WHERE {
?start ex:$property+ ?target .
}示例 - 属性路径:
PREFIX ex: <http://example.org/>
SELECT ?person
WHERE {
:Alice ex:knows+ ?person .
}模式: 多跳查询结合聚合操作
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模式: 多跳查询中加入 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+) ⚠️ 高成本
├─ 指数级增长
└─ 仅在有筛选或限制时使用性能建议:
MATCH (user:User {id: $userId})-[:FOLLOWS*2]->(fof:User)
WHERE NOT (user)-[:FOLLOWS]->(fof)
RETURN DISTINCT fof
LIMIT 50MATCH (customer:Customer {id: $customerId})-[:PURCHASED*1..2]->(recommended:Product)
RETURN recommended, COUNT(*) as relevance
GROUP BY recommended
ORDER BY relevance DESC
LIMIT 10MATCH (company:Company {name: $companyName})-[:SUPPLIES*1..3]->(supplier:Company)
RETURN supplier, COUNT(*) as connections
GROUP BY supplier
ORDER BY connections DESC
LIMIT 20构建多跳查询时,请遵循以下建议:
- 无过滤条件的查询,深度 ≤ 3
- 含复杂过滤的查询,深度 ≤ 4
- 始终对深度进行约束
- 明确指定具体的关系类型
- 避免使用通配符遍历
- 对关系方向进行过滤
- 始终包含 LIMIT 子句
- 防止内存溢出
- 控制返回数据量
- 使用有索引的属性作为起点
- 通过具体 ID 或属性进行筛选
- 避免全表扫描
- 使用 WHERE 搭配 ALL/ANY 函数
- 排除特定节点
- 按节点属性进行过滤
- 对起始节点属性建立索引
- 对关系类型建立索引
- 对过滤条件涉及的属性建立索引
- 使用真实数据进行性能分析
- 监控执行时间
- 优化查询入口点
- 预期的路径长度
- 关系的基数(数量级)
- 性能特征说明
本技能可与以下技能协同工作:
该技能支持以下输出形式:
可执行的 Cypher 或 SPARQL 查询,包含指定的跳跃深度。
返回实际的关系路径,展示遍历链路。
可复用的查询模板,支持跳数参数配置。
性能指标及优化建议报告。
查找在 N 跳范围内的所有实体。
MATCH (start)-[:RELATIONSHIP*1..$n]->(end)
RETURN end返回实际的路径信息,展示关系链。
MATCH path = (start)-[*1..$n]-(end)
RETURN path计算不同路径的数量。
MATCH (start)-[:REL*1..$n]->(end)
RETURN end, COUNT(*) as paths查找两点间的最短连接路径。
MATCH path = shortestPath((start)-[*]-(end))
RETURN path发现关系中的循环结构。
MATCH path = (start)-[:REL*2..]->(start)
RETURN path本技能用于生成多跳图查询,能够跨越多个关系,挖掘间接连接与隐藏模式,适用于图数据集的深入分析。
它使开发者能够使用 Cypher 或 SPARQL 实现高级图推理,广泛应用于社交网络、推荐系统、欺诈检测和知识图谱探索等场景。
状态:企业级多跳推理能力
一套完整的多跳查询生成与推理系统,专为专业级知识图谱开发设计。
已收录 2 个 Skill