gpt4 book ai didi

过滤 gremlin 结果

转载 作者:行者123 更新时间:2023-12-05 02:18:49 29 4
gpt4 key购买 nike

我是 Gremlin 的新手,我正在使用 Gremlin 3.0.2 和 Stardog 5.0。我编写此查询是为了找出 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[Canal], v[BodyOfWater], v[Landform], v[Continent]] ==>[v[Canal], v[BodyOfWater], v[rdf-schema#Class], v[Continent]] ==>[v[Canal], v[BodyOfWater], v[Pond], v[rdf-schema#Class], v[Continent]] ==>[v[Canal], v[BodyOfWater], v[OceanBodyOfWater], v[rdf-schema#Class], v[Continent]]

我无法找到一种方法来消除其中包含“rdf-schema#Class”的所有路径。请问有人可以提出解决方案吗?我想使用 Gremlin 进行过滤。谢谢!

最佳答案

一种方法是对返回的路径应用后置过滤器。因此,例如,如果您有这样的事情:

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]]

所以新行基本上只是说,对于每个路径项,展开它,对那些没有“创建”的标签进行一些过滤,然后将路径折叠回列表。

关于过滤 gremlin 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44132477/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com