首页 > 解决方案 > 在 n 元关系中指定角色的动态数量

问题描述

我知道 Grakn 允许我们指定 n 元边/关系。但是,当我们事先不知道“多”的大小时,它们是否允许我们指定多对一关系?

例如:

如果我想将两个实体“a”和“b”连接到实体“c”,我可以这样做。但是,如果我事先不知道有多少实体要连接到“c”,该怎么办。如果我想保持这种动态怎么办?(有时将 2 个实体连接到 1 个或 4 个实体连接到 1 个)Grakn 是否允许我代表它?

我希望我能够清楚地描述我的问题。

请告诉我。谢谢你。

标签: vaticle-typedbvaticle-typeql

解决方案


在 Grakn 中,这些多对一连接(其中“多”是动态的)可以存储关系实例本身。

例如,假设您有一个家庭,父母有一些孩子,但我们不知道有多少孩子,并且可以随时添加新孩子。

然后你会

define

name sub attribute, datatype string;
person sub entity, has name, plays parent, plays child;
parenthood sub relation, relates parent, relates child;

现在假设您已经匹配了四个人,$a、$b、$c 和 $d,那么您可以通过插入两个parenthood实例来建立 2 对 1 的关系:

insert (parent: $a, child: $b) isa parenthood;
insert (parent: $a, child: $c) isa parenthood;

当您插入第三个时,它变成了 3 对 1 的关系parenthood

insert (parent: $a, child: $d) isa parenthood;

等等。


推荐阅读