源於3.2.2的reference文件.
22.5.5.基於結束節點(end node)區分關係

22.5.5. Discriminating Relationships Based On End Node Type

...

Example 61. Discriminating Relationship Types Using End Node Type

@NodeEntity
class Person {
    @RelatedTo(type="OWNS", enforceTargetType=true)
    Car car;

    @RelatedTo(type="OWNS", enforceTargetType=true)
    Pet pet;
...

The example easily generalises to collections too of course, but there are a few note-worthy rules and corner cases:

  • You need to annotate all clashing relationships.

  • You can’t have two fields, two collections, or a field and a collection, with the same relationship type and identical end node types. SDN does not store metadata about the origin of a relationship. So when saving the entity, the first field or collection would be overwritten by the second, with the processing order being non-deterministic.

  • You can have clashing relation ship types when end nodes share a supertype.

  • A variation on the above, you cannot have two fields or two collections with the same relationship type and substitutable end node types.

  • You can however have a field and a collection where end node types inherit from each other.

  • 你需要註解所有衝突的關係

  • 不可有兩個欄位、集合或一欄位一集合,有同樣的關係型別及同樣的結束節點(end node)型別。

  • 節點型別之間可以有共同基類

  • 兩個欄位、集合有同樣的關係時,節點型別之間不可為可替代的(i.e.互不為繼承關係)

  • 然而,一欄位一集合時節點型別為繼承關係