Запрос на вставку Graql: дубликаты объектов Var

Var message = var().isa("message");
insert(message).execute();

Var relation = var().isa("connection")
    .rel("role1", id("existing-id"))
    .rel("role2", message);
insert(relation).execute();

Выполнение следующего создает два экземпляра сообщения.

Это ожидается? Если это так, это потому, что я не назначил идентификатор, или потому что я использовал два оператора вставки?

1 ответ

Решение

Это ожидаемое поведение. Вы правы, предполагая, что назначение идентификатора решит проблему:

Var message = var().id("my-message").isa("message");

Это происходит потому, что Var не представляет собой единую концепцию. Вместо этого он представляет шаблон для сопоставления на графике. В этом случае Var говорит только "вещи, которые являются сообщениями", а не какое-то конкретное сообщение.

Вы также можете назначить имя переменной, например, Var message = var("x"). ...Чтобы это работало, вам нужно будет выполнить только один insert,

Другие вопросы по тегам