Rexster查询返回“No such property:v for class:com.thinkaurelius.titan.graphdb.database.StandardTitanGraph”

时间:2014-07-18 09:04:40

标签: groovy cassandra titan bulbs rexster

我正在使用TitanGraphDB + Cassandra。我按照以下方式开始使用Titan

cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties

我有一个Rexster shell,我可以使用它与上面的Titan + Cassandra进行交流。

cd rexster-console-2.3.0
bin/rexster-console.sh

我正在尝试使用Titan Graph DB建模网络拓扑。我想从我的python程序中编写Titan Graph DB。我正在使用灯泡包装。 我创建了五种类型的顶点

 - switch
 - port 
 - device
 - flow
 - flow_entry

我在逻辑上连接的顶点之间创建边。边缘没有标记。

我们说我想测试Vertex AVertex B

之间的连接

我有一个groovy脚本is_connected.groovy

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

现在来自我的rexster控制台

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_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

要么我做错了什么,要么我错过了一些明显的东西。如果你能指出我正确的方向,我会很棒。

2 个答案:

答案 0 :(得分:2)

此语法无效groovy:

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

应该是:

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

答案 1 :(得分:1)

您将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))