Функция dge.create() вызывает дублирование, если вызывается несколько раз
Я использую TitanGraphDB + Cassandra. Я запускаю Titan следующим образом
cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties
У меня есть оболочка Rexster, которую я могу использовать для связи с Titan+Cassandra выше.
cd rexster-console-2.3.0
bin/rexster-console.sh
Я пытаюсь смоделировать топологию сети с помощью Titan Graph DB. Я хочу запрограммировать Titan Graph DB из моей программы на python. Для этого я использую пакет ламп. Я создаю три типа вершин - коммутатор - порт - устройство
Я использую следующие функции для создания уникальных вершин, если они еще не существуют.
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 ответ
В общем случае графики допускают дублирование ребер между вершинами, поскольку определение дублирующего ребра неоднозначно и зависит от конкретного приложения.
Например, является ли ребро дубликатом, основанным на его метке, направлении или некоторой комбинации свойств?
Тем не менее, Titan 0.5 ввел Multiplicity.SIMPLE
ограничение, которое позволяет вам определять уникальные ребра между парой вершин.
Смотрите объявление Matthias Broecheler Titan 0.5:
Эта новая функция еще не задокументирована, но команда Titan находится в процессе обновления документации для Titan 0.5, поэтому скоро она будет задокументирована.
Следите за обновлениями на странице определения типа:
Также см. Раздел об ограничениях мощности: