从使用Bulbs的python程序调用gremlin脚本

时间:2014-07-15 23:33:21

标签: cassandra gremlin titan bulbs

我正在使用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

我在物理连接的端口之间创建了带标签的边缘。我使用的标签是" link"。

我们假设我有两个端口顶点portAportB

我想使用灯泡包来检查portA是否与我portB的{​​{1}}相关联。

作为第一步。我写了一个脚本(保存在文件python program

is_connected.sh

如果我尝试从我的rexster-console执行上述脚本,如下所示,我得到以下结果。

def is_connected(portA, portB):
    return portA.both("link").retain([portB]).hasNext()

这是我第一次尝试编写存储过程(也就是gremlin脚本)。我不知道这是否是接近它的正确方法。我的最终目标是能够调用此脚本来自我使用灯泡的python程序。如果有人能指出我正确的方向,那就太好了!

1 个答案:

答案 0 :(得分:1)

?e命令要求您指定要在同一行中执行的文件。我创建了sum.groovy

def sum(x,y) { x+y }

然后从控制台:

rexster[groovy]> ?e sum.groovy
==>null
rexster[groovy]> sum(1,2)
==>3

奇怪的是,在没有文件的情况下指定?e并没有做正确的换行。我会尝试解决这个问题。