如何在Orientdb中找到两个相关的顶点

时间:2016-04-15 15:43:44

标签: orientdb

有一个继承自V的Class API,它有三个属性:name,arguments和return_value,以下是一个例子:

{ " api":" _mbscmp", "参数&#34 ;: [  " 0x029605c8&#34 ;,  " 0x10011a74" ] " return_value":" -1", }

我创建了3000个API顶点,接下来我要创建两个边:

1.Argument_sharing:两个API顶点具有相同的参数,例如,API one具有参数[" 1"," 2"," 3"]和API二有参数[" X"," y"," 1"],一个和两个将有一个边缘Argument_sharing,这意味着一个和两个有相同的参数" 1"

2.Data_dependence:一个API的return_value与另一个API的参数之一相同。例如,a = APIone(); APItwo(一);然后APIone和APItwo将具有Data_dependence边缘。

所以我想要一个sql命令来找到两个相关的顶点

1 个答案:

答案 0 :(得分:0)

我试过这些记录

enter image description here

我使用了这个javascript函数

var g=orient.getGraph();
var api_list=g.command("sql","select from API");
for(i=0;i<api_list.length;i++){
    var api=api_list[i];
    var arguments=api.getProperty("arguments");
    for (j=i+1;j<api_list.length;j++){
        var api2=api_list[j];
        var arguments2=api2.getProperty("arguments");
        for(h=0;h<arguments.length;h++){
            var arguments_h=arguments[h];
            for(y=0;y<arguments2.length;y++){
                var arguments_y=arguments2[y];
                if(arguments_h==arguments_y){
                    g.command("sql","create edge Argument_sharing from " + api.getId()+ " to " + api2.getId());
                    break;
                }
            }
        }

    }
}

我收到了这些记录

enter image description here

希望它有所帮助。