Groovy Rexster查询返回“;没有这样的属性:v代表类:com.thinkaurelius.titan.graphdb.database.StandardTitanGraph“;

Groovy Rexster查询返回“;没有这样的属性:v代表类:com.thinkaurelius.titan.graphdb.database.StandardTitanGraph“;,groovy,cassandra,titan,bulbs,rexster,Groovy,Cassandra,Titan,Bulbs,Rexster,我用的是TitanGraphDB+Cassandra。我将以如下方式开始《泰坦》 cd titan-cassandra-0.3.1 bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties 我有一个雷克斯特外壳,可以用来和上面的泰坦+卡桑德拉通信 cd rexster-console-2.3.0 bin/rexster-console.sh 我正在尝试使用Titan Graph

我用的是TitanGraphDB+Cassandra。我将以如下方式开始《泰坦》

cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties
我有一个雷克斯特外壳,可以用来和上面的泰坦+卡桑德拉通信

cd rexster-console-2.3.0
bin/rexster-console.sh
我正在尝试使用Titan Graph DB对网络拓扑进行建模。我想从python程序中编程Titan Graph DB。我用的是灯泡包。 我创建了五种类型的顶点

 - switch
 - port 
 - device
 - flow
 - flow_entry
我在逻辑连接的顶点之间创建边。边缘没有标记

假设我想测试
顶点A
顶点B

我有一个groovy脚本是_connected.groovy

def isConnected (portA, portB) {
    return portA.both().retain([portB]).hasNext()
}
现在从我的雷克斯特控制台

g = rexster.getGraph("graph")
==>titangraph[embeddedcassandra:null]
rexster[groovy]> g.V('type', 'flow')    
==>v[116]
==>v[100]
rexster[groovy]> g.V('type', 'flow_entry')
==>v[120]
==>v[104]
正如您在上面看到的,我有两个flow类型的顶点
v[116]
v[100]

我有两个类型为
flow\u entry
v[120]
v[104]

我想检查
v[120]
v[116]
之间的连接,例如

rexster[groovy]> ?e is_connected.groovy       
==>null
rexster[groovy]> is_connected(g.v[116],g.v[120])
==>An error occurred while processing the script for language [groovy]. All transactions across all graphs in the session have been concluded with failure: java.util.concurrent.ExecutionException: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: v for class: com.thinkaurelius.titan.graphdb.database.StandardTitanGraph

要么我做错了什么,要么我遗漏了什么明显的东西。如果你能给我指出正确的方向,那就太好了。

此语法在groovy中无效:

is_connected(g.v[116],g.v[120])
应该是:

is_connected(g.v(116),g.v(120))

您将Python语法与Gremlin Groovy语法混为一谈:

您将Groovy脚本定义为:

def isConnected (portA, portB) {
    return portA.both().retain([portB]).hasNext()
}
……所以

rexster[groovy]> is_connected(g.v[116], g.v[120])
…应该是

rexster[groovy]> isConnected(g.v(116), g.v(120))

注意,他的Gremlin Groovy脚本的函数定义是Groovy风格的camelCase
isConnected()
,但在Rexster控制台中,他使用的是Python风格的snake\u case
is\u connected()
——这是行不通的。