怎样获取到包含指定节点有关联性的子图

原问题:1. 网络设备按物理连接还原成图
2. 在“节点”上挂发生的“问题”,“问题”节点上有时间属性
3. 想根据某个“问题”和时间范围 查询和该问题有联通性(同时间段发生的问题所在节点和另外一个问题所在节点有边 可以传播)的所有“问题”和“节点”

现在我尝试的做法

  1. 网络设备按物理连接还原成图
  2. 在“节点”上挂发生的“问题”,“问题”节点上有时间属性
  3. 根据时间范围查询得到一批“问题”节点
  4. 根据这批节点的下一跳获取subgraph得到很多个“子图” 子图间不联通
  5. 想得到某个“问题”所在的“子图”

请教各位大佬 谢谢

整体思路:
假设alm2是你第5步中的想要的某个“问题”

  1. 先根据时间范围,查到一批点,假设现在图上的alm1、alm3、alm4、alm5都是满足要求的点;查找方式可以用lookup,也可以用match
    https://docs.nebula-graph.com.cn/3.6.0/3.ngql-guide/7.general-query-statements/5.lookup/
    https://docs.nebula-graph.com.cn/3.6.0/3.ngql-guide/7.general-query-statements/2.match/

  2. 从alm2出发,找和alm1、alm3、alm4、alm5的3跳路径。这个用match或者find path应该都可以。如果明确是3跳的话,感觉用match指定起点和终点会更合适。

  3. 基于第二步找到的结果应该是一条条的路径,然后基于这个路径的点和边做可视化展示。因为有路径必然是联通的,没有路径的点和边不会呈现出来。这个基本上是前端的工作了

假如device1 不跟device2链接 而是跟 device3链接
必须是3跳 意思就是中间不能间隔其它device
也是满足我们的”连通性“的 能怎么做

那这里首先得明确你联通性的要求是什么,然后在第二步的时候根据你的要求改写查询逻辑就行

alarm不是设备 有alarm的设备是必须相互联通的

建议描述清晰一些。比如你这里的alarm是指起始的alarm到关联的alarm(比如alm2到alm1、3、4、5),还是关联的alarm之间(alm1\3\4\5几个之间)也可以。
最好基于我画的图或者你画的图。

alarm之间不互相关联 device之间才会关联 不知道我表述清楚了没
就基于你画的图
假如device1不是链接deivce2,而是链接device3

  1. 如果alarm1、alarm3都是满足的点,都应给被找出来 ;
  2. 如果alarm1满足 , alarm3不满足, 相当于中间隔了个device3就不算联通,alarm1就不应该被列进来

如果是这样的话,初步想可以这么做:

  1. alm2 查3跳,找到3跳点为alm的点,且alm的时间满足要求;假设这些点为list1
  2. 从list1出发,找3跳为alm的点,且alm的时间满足要求,这些点为list2

distince(list1+list2)即为最终结果
过程中注意看下有没有方向要求

这样得无线跳下去,直到找不到为止