Gremlin的边共享相同的顶点

时间:2018-07-30 02:35:20

标签: java graph neo4j gremlin

我的应用程序具有英语过滤器,我需要将这些过滤器转换为Gremlin查询。每个过滤器包含三个部分:

  1. 顶点类型
  2. #1中顶点出线的标签
  3. 从#2中的边缘传入的顶点的名称

任何部分都可以使用字符串“ any”,这表示结果中可以包含任何类型,标签或名称。 以现代玩具图为例,我有以下两个过滤器:

  1. person-> created-> any
  2. 人->知道-> vadas

以上两个过滤器的评估结果应为:

  1. marko->创建-> lop
  2. marko->知道-> vadas

同时使用以下两个过滤器:

  1. person-> any-> josh
  2. person-> created-> lop

应评估以下方面:

  1. marko->知道-> josh
  2. marko->创建-> lop

我想出的最接近上面期望结果的查询是:

g.E().and(outV().outE().has(label, "created"), outV().outE().has(label, "knows").inV().has("name", "vadas"), outV().has(label, "person"))

上述查询的问题在于,它返回了从marko出来的所有三个边缘,而不仅仅是两个期望的边缘。如何改善查询,使其仅返回如上所述的两个边?

1 个答案:

答案 0 :(得分:0)

此解决方案采用将过滤器与返回结果的遍历分离的方法。

live_data = subprocess.call('whois {}'.format(domain), shell=True)