0

我在空闲时间一直在研究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

有没有办法让探路者考虑给定关系是否具有应该阻止该路径进展的属性?

4

1 回答 1

3

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

如果您在遍历期间需要更多控制,您应该查看Traversal API。但是我不确定是否可以从 py2neo 访问遍历 API。如果没有,您可以在非托管扩展中使用遍历 API,并通过 REST 访问它。

于 2013-11-10T21:54:58.273 回答