过滤小精灵的结果 [英] filter the gremlin results

查看:14
本文介绍了过滤小精灵的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Gremlin的新手,我在StarDog 5.0上使用Gremlin 3.0.2。我编写这个查询是为了在schema.org本体中查找两个实体之间的路径。以下是输出-

gremlin>`g.V().hasLabel('Canal').repeat(both().simplePath()).until(g.V().hasLabel('Continent')).path().limit(5)`
[v[Canal],v[RDF-SCHEMA#Class]] ==>[v[运河],v[水体],v[地貌],v[大陆]] ==>[v[运河],v[BodyOfWater],v[RDF-SCHEMA#类],v[大陆]] ==>[v[运河],v[BodyOfWater],v[池塘],v[RDF-SCHEMA#类],v[大陆]] ==>[v[运河],v[BodyOfWater],v[Ocean BodyOfWater],v[RDF-SCHEMA#Class],v[Continent]]

我找不到一种方法来消除其中包含"rdf-SCHEMA#Class"的所有路径。请问有没有人能提出一个解决方案?我想使用Gremlin进行过滤。谢谢!

推荐答案

一种方法是对返回的路径应用POST筛选器。例如,如果您有这样的内容:

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().outE('created').inV().path()
==>[v[1],e[9][1-created->3],v[3]]
==>[v[4],e[10][4-created->5],v[5]]
==>[v[4],e[11][4-created->3],v[3]]
==>[v[6],e[12][6-created->3],v[3]]

想要去掉边缘,可以这样做:

gremlin> g.V().outE('created').inV().path().
......1>   local(unfold().filter(__.not(hasLabel('created'))).fold())
==>[v[1],v[3]]
==>[v[4],v[5]]
==>[v[4],v[3]]
==>[v[6],v[3]]

因此,新行基本上只是说,对于每个路径项,将其展开,对标签进行一些筛选,以查找未"创建"项,然后将路径折叠回一个列表。

这篇关于过滤小精灵的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆