为什么Grakn在关系上使用名词语义而不是动词?

时间:2019-09-13 14:28:41

标签: graph grakn

我正在查看一些文档here

我很好奇,为什么Grakn选择使用名词语义而不是动词语义来表示关系?在我涵盖的大多数其他图形工作和研究中,通常认为两个实体(名词)通过动词链接是有意义的。 person worked at company。确实,对于我正在处理的一些实体,将关系作为名词进行推理有点困难,例如,如果artist remixed track

我倾向于将动词用作关系,但我想知道这是否不是我应该在Grakn设置中考虑的方式。如果我决定使用动词语义,最终会遇到困难吗?

2 个答案:

答案 0 :(得分:3)

通常,图形数据库使用有向边表示二进制关系。在这种情况下,使用动词来描述关系是有意义的,因为动词通常指示主语和宾语之间的定向动作。

Grakn是一个知识图,其工作原理有所不同。这是因为Grakn中的关系充当超边缘。这意味着在一个关系中可以有两个以上的参与者(称为角色玩家)。这对于灵活的建模非常有用,但它可能会破坏动词命名约定。

要从您的示例而不是artist remixed track开始,我们可以(在这种情况下非常方便)使用名词remix作为关系。对域模型进行猜测后,艺术家会重新混合曲目,因此他们创建了新曲目。这是在grakn中建立三元(三向)关系的绝好机会。的模型如下:

define 
remix sub relation,
   relates original-track,
   relates remixed-track,
   relates remixing-artist;

track sub entity,
   plays original-track,
   plays remixed-track;

artist sub entity,
   plays remixing-artist;

一旦在Grakn中定义了上面的模式,我们可以添加一个remix实例,它连接两个新轨道和一个新艺术家,如下所示:

insert 
$o isa track, has name "Brimful of Asha"; 
$rt isa track, has name "Brimful of Asha (Norman Cook Remix)"; 
$a isa artist, has name "Norman Cook"; 
$r(original-track: $o, remixed-track: $rt, remixing-artist: $a) isa remix;

然后证明了对关系使用名词是有用的,因为它没有以二进制方式连接它可以拥有的3个角色扮演者中的任何一个。取而代之的是,我们命名了位于两条轨道和艺术家之间的概念。

通过这种方式,我们发现该关系很好地描述了任意一对角色之间的(无向)链接:

original-track <-remix-> remixed-track
original-track <-remix-> remixing-artist
remixed-track  <-remix-> remixing-artist

我们可以看到,使用remixed代替remix并不是很好,它会尝试为没有链接的这些链接添加方向。

Grakn的数据模型可以即时扩展。因此,即使您从二元关系开始,以后再添加更多角色,使其成为三元或N元,动词命名就不再有意义。

用名词命名关系并不总是那么容易。 我的建议是:

  • 首先尝试使用带名词的动词(用作形容词)的过去或现在分词。例如,角色remixing-artist使用此角色。
  • 使用名词时对动词进行排序确实很尴尬,并且/或者如果您要处理的关系总是二进制的话。

答案 1 :(得分:0)

如果必须使用动词作为关系名称,请使用gerund形式(对于所有实际效果,其作用类似于名词)。例如

faceting sub relation,
  relates facet-assignment,
  relates assigned-facet.

listing sub relation,
  relates list-assignment,
  relates assigned-list.