如何在Orientdb中找到两个相关的顶点
How to find two related vertexs in Orientdb
有一个ClassAPI继承自V,它有三个属性:name,arguments和return_value,下面是一个例子:
{
"api": "_mbscmp",
"arguments":
[
"0x029605c8",
“0x10011a74”
],
"return_value": "-1",
}
我已经创建了 3000 个 API 个顶点,接下来我想创建两条边:
1.Argument_sharing:两个API顶点有相同的参数,例如API一个有参数["1","2","3"]和API二有参数["X","y","1"],一和二会有一条边Argument_sharing,也就是说一和二有相同的参数"1"
2.Data_dependence:其中一个API的return_value与另一个的其中一个参数相同。例如,a = APIone(); API二(一);那么 APIone 和 APItwo 将有一个 Data_dependence 边。
所以我想要一个sql命令来找到两个相关的顶点
我试过这些记录
我使用了这个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;
}
}
}
}
}
我得到了这些记录
希望对您有所帮助。
有一个ClassAPI继承自V,它有三个属性:name,arguments和return_value,下面是一个例子:
{ "api": "_mbscmp", "arguments": [ "0x029605c8", “0x10011a74” ], "return_value": "-1", }
我已经创建了 3000 个 API 个顶点,接下来我想创建两条边:
1.Argument_sharing:两个API顶点有相同的参数,例如API一个有参数["1","2","3"]和API二有参数["X","y","1"],一和二会有一条边Argument_sharing,也就是说一和二有相同的参数"1"
2.Data_dependence:其中一个API的return_value与另一个的其中一个参数相同。例如,a = APIone(); API二(一);那么 APIone 和 APItwo 将有一个 Data_dependence 边。
所以我想要一个sql命令来找到两个相关的顶点
我试过这些记录
我使用了这个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;
}
}
}
}
}
我得到了这些记录
希望对您有所帮助。