gpt4 book ai didi

java - 使用 java 运行 orient-db 图有哪些不同的方法?

转载 作者:行者123 更新时间:2023-11-30 08:14:57 25 4
gpt4 key购买 nike

让我们想象一下下面的图表:

enter image description here

假设每个 Vertex 都是“Account”类型,但客户端除外,它是...“Client”类型或其他类型。

假设边缘“监督”允许老板访问其经理的所有信息。“框架”允许经理访问其实习生的所有信息。最后,belongs_to 允许实习生查看客户信息。

从一个帐户开始,我想知道该帐户是否可以访问特定客户端。允许某些边缘的某些方向并禁止其他边缘...例如,可以通过边缘监督方式:OUT ---> IN 但不是 IN ---> OUT。

但是对于belongs_to,IN---> OUT是可能的。

在Java中,我想到了一个递归函数,但在某些情况下可能很难避免冗余和无限递归,而且似乎有很多条件需要管理。

通过 SQL 命令,我们可以执行以下操作:

SELECT EXPAND(SET(OUT('supervise').OUT('frames').IN('belongs_to'))) FROM #Boss_id

我认为它会返回一个客户列表,我们可以检查所需客户是否存在。但这只适用于老板,而对于经理我只会这样做:

SELECT EXPAND(SET(OUT('frames').IN('belongs_to'))) FROM #Manager_id

我真的不知道如何概括这个命令。

所以我的问题是:

是否有一种“简单”的方式来运行图形,Java API 中的某些内容或任何推荐的方式?

最佳答案

create class Account extends V
create class Client extends V

create class Supervise extends E
create class Frames extends E
create class BelongsTo extends E


create vertex Account set name = 'boss' #12:0
create vertex Account set name = 'manager1' #12:1
create vertex Account set name = 'manager2' #12:2
create vertex Account set name = 'intern1' #12:3
create vertex Account set name = 'intern2' #12:4

create vertex Client set name = 'client1'


create edge Supervise from #12:0 to [#12:1, #12:2]
create edge Frames from #12:2 to [#12:3, #12:4]
create edge BelongsTo from #13:0 to #12:4

我相信这就是上面描述的情况。您可以:

select from (
traverse out('Supervise'), out('Frames'), in('BelongsTo') from <rid>
) where @class = 'Client'

请注意,仅当您将 rid 替换为 #12:0#12:2 时,才会返回 client1 #12:4

关于java - 使用 java 运行 orient-db 图有哪些不同的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793637/

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