如果多次调用,edges.create()函数会导致重复

时间:2014-07-06 00:30:21

标签: 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。我正在使用灯泡包。 我创建了三种类型的顶点   - 开关  - 港口   - 设备

如果它不存在,我使用以下函数来创建唯一的顶点。

    self.g.vertices.index.get_unique( "dpid", dpid_str)

    self.g.vertices.index.get_unique( "port_id", port_id_str)

    self.g.vertices.index.get_unique( "dl_addr", dl_addr_str)

我在相关顶点之间创建边缘,如下所示。

    self.g.edges.create(switch_vertex,"out",port_vertex)

但是,如果调用此函数两次,则会创建已存在的边的副本。是否存在类似于边的get_or_create()的函数,以便我可以避免重复。?

1 个答案:

答案 0 :(得分:2)

通常,图表允许顶点之间出现重复边缘,因为重复边缘的定义不明确且特定于应用程序。

例如,边缘是否基于其标签,方向或某些属性组合而重复?

然而, Titan 0.5 引入了Multiplicity.SIMPLE约束,使您可以在一对顶点之间定义唯一边

请参阅Matthias的Titan 0.5公告:

这个新功能尚未记录,但Titan团队正在更新Titan 0.5的文档,因此很快就会记录下来。

观看类型定义概述页面了解更新:

另请参阅基数约束部分: