Java Graql插入查询:重复的Var对象

Java Graql插入查询:重复的Var对象,java,graph-databases,vaticle-typeql,mindmapsdb,vaticle-typedb,Java,Graph Databases,Vaticle Typeql,Mindmapsdb,Vaticle Typedb,执行以下命令将创建消息的两个实例 这是预期的吗?如果是,是因为我没有分配ID,还是因为我使用了两个insert语句?这是预期的行为。您正确地猜测分配id将解决问题: Var message = var().isa("message"); insert(message).execute(); Var relation = var().isa("connection") .rel("role1", id("existing-id")) .rel("role2", message);

执行以下命令将创建消息的两个实例


这是预期的吗?如果是,是因为我没有分配ID,还是因为我使用了两个insert语句?

这是预期的行为。您正确地猜测分配id将解决问题:

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

Var relation = var().isa("connection")
    .rel("role1", id("existing-id"))
    .rel("role2", message);
insert(relation).execute();
发生这种情况的原因是,
Var
并不代表单个概念。相反,它表示要在图中匹配的模式。在本例中,
Var
只表示“作为消息的事物”,而不是任何特定的消息

您还可以指定一个变量名,例如
Var message=Var(“x”)

要使其工作,您只需执行一个
insert

,但是为什么要在第二个语句中插入
message
变量呢?我们不只是插入
关系
变量吗?执行第一条
消息
后,是否应更新
消息
变量以引用已插入的概念?插入查询将插入传递给它的所有模式,包括任何“嵌套”模式,如上面
关系
中的
消息
<代码>消息
只是一个查询组件,而不是图形中的具体对象。它代表了“作为信息的事物”的概念,而不是任何特定的信息。
Var message = var().id("my-message").isa("message");