Neo4j路径遍历 - 路径进度取决于关系属性

时间:2013-11-10 11:47:03

标签: python neo4j cypher graph-databases py2neo

我只是在一些业余时间内使用neo4j绑定python来调查py2neo。我对neo4j的寻路方面很感兴趣。出于学习的目的,我一直在创建一个简单的游戏地图(太阳系和内部坐标导航)。简单的寻路操作非常简单,即使在复杂的节点网络上有很长的路径,neo4j的性能也非常令人印象深刻。

我现在希望看到的是将属性附加到可能影响导航的关系。例如,我想将给定关系仅锁定到某些用户,角色或带密钥的人。

我不确定如何将其添加到路径查找中,以便它查找路径,但是当它这样做时,它会检查是否存在满足/拒绝的其他约束。

可以根据关系属性阻止路径,即下面的伪表示:

(node 5, 'linked', node 6) with attribute 'path_blocked': True

没有先决条件:

start s=node(22), e=node(46)
MATCH p = shortestPath((s)-[*..100]-(e))
return p

有没有办法让路径查找器考虑给定关系是否具有应阻止此路径上进度的属性?

1 个答案:

答案 0 :(得分:3)

在Cypher中,您可以使用WHERE子句基于关系属性过滤路径。

如果在遍历期间需要更多控制权,则应该查看Traversal API。但是我不确定是否可以从py2neo访问遍历API。如果没有,您可以在unmanaged extension内使用遍历API,并通过REST访问此。