过滤小精灵的结果 [英] filter the gremlin results
本文介绍了过滤小精灵的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是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屋!
查看全文