Grakn - 在关系中扮演角色的属性与具有属性的关系
Grakn - Attributes playing roles in Relations vs. Relations having attributes
看完 grakn dev 文档后,我想知道:
- 一个关系可以有很多角色扮演者,包括。属性,但是
- 我还可以为关系分配属性
pros/cons 是什么?您是否有一个很好的例子来说明什么时候做什么有意义,以及它对查询的后果是什么?
属性既可以在关系中扮演角色,又可以拥有。您需要什么应该由您的域模型和您想要实现的目标驱动,而不是可能的目标。
一个普遍的想法是,每个角色扮演者都添加语义信息,帮助定义它在其中扮演角色的关系实例的含义。另一方面,拥有一个属性会向一段数据添加额外的信息,即已经有意义了。
所以我们可以想象 person
和 company
之间的 contract
有个人和公司作为角色扮演者,我们添加一个 date
属性来表示合同何时开始并结束。但是,如果我们将合约定义为语义上不同的 limited-time-contract
,则 start-date
、end-date
、person
、company
可能更有意义在 limited-time-contract
关系中扮演角色。
一种稍微不同的思考方式是,扮演角色的属性为该属性如何在关系中发挥作用提供了额外的背景信息。直接所有权不包含更多信息。
看完 grakn dev 文档后,我想知道:
- 一个关系可以有很多角色扮演者,包括。属性,但是
- 我还可以为关系分配属性
pros/cons 是什么?您是否有一个很好的例子来说明什么时候做什么有意义,以及它对查询的后果是什么?
属性既可以在关系中扮演角色,又可以拥有。您需要什么应该由您的域模型和您想要实现的目标驱动,而不是可能的目标。
一个普遍的想法是,每个角色扮演者都添加语义信息,帮助定义它在其中扮演角色的关系实例的含义。另一方面,拥有一个属性会向一段数据添加额外的信息,即已经有意义了。
所以我们可以想象 person
和 company
之间的 contract
有个人和公司作为角色扮演者,我们添加一个 date
属性来表示合同何时开始并结束。但是,如果我们将合约定义为语义上不同的 limited-time-contract
,则 start-date
、end-date
、person
、company
可能更有意义在 limited-time-contract
关系中扮演角色。
一种稍微不同的思考方式是,扮演角色的属性为该属性如何在关系中发挥作用提供了额外的背景信息。直接所有权不包含更多信息。