【问题标题】:Graql insert query: duplicate Var objectsGraql 插入查询:重复的 Var 对象
【发布时间】:2016-09-12 15:17:58
【问题描述】:
Var message = var().isa("message");
insert(message).execute();

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

执行以下创建消息的两个实例。

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

【问题讨论】:

    标签: java graph-databases vaticle-typeql mindmapsdb vaticle-typedb


    【解决方案1】:

    这是预期的行为。你猜对了,分配一个 id 可以解决问题:

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

    发生这种情况的原因是Var 不代表单个概念。相反,它表示要在图中匹配的模式。在这种情况下,Var 只说“作为消息的事物”,而不是任何特定的消息。

    您也可以指定一个变量名,例如Var message = var("x"). ... 为此,您只需执行一个insert

    【讨论】:

    • 但是为什么message 变量会被插入到第二个语句中呢?我们不只是插入relation 变量吗?并且在第一个message被执行之后,message变量是否应该被更新以引用已经插入的概念?
    • 插入查询将插入所有传递给它的模式,包括任何“嵌套”模式,例如上面relation 中的messagemessage 只是一个查询组件,而不是图中的具体对象。它代表“事物即信息”的概念,而不是任何特定的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多