Groovy Rexster查询返回“;没有这样的属性:v代表类:com.thinkaurelius.titan.graphdb.database.StandardTitanGraph“;
我用的是TitanGraphDB+Cassandra。我将以如下方式开始《泰坦》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
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 caseis\u connected()
——这是行不通的。