Сопоставить разные типы отношений с одной коллекцией

Я пытаюсь отобразить термины онтологии в структуру данных Neo4j.
Если быть точным, у меня есть Term класс и 2 типа отношений (is_a а также part_of). У меня есть следующие классы:

Срок обучения:

@NodeEntity
public class Term {
    @GraphId
    private Long nodeId;
    @Indexed(unique=true)
    private String id;
    private String name;
    private String definition;

    @RelatedToVia(type="is_a",direction=Direction.INCOMING)
    private Set<Term2Term> is_a_children;

    @RelatedToVia(type="is_a",direction=Direction.OUTGOING)
    Set<Term2Term> is_a_parents;

    @RelatedToVia(type="part_of",direction = Direction.INCOMING)
    Set<Term2Term> part_of_children;

    @RelatedToVia(type="part_of",direction = Direction.OUTGOING)
    Set<Term2Term> part_of_parents;
}

Term2Term класс:

@RelationshipEntity
public class Term2Term {

    @GraphId
    Long id;
    @StartNode private Term child;
    @EndNode private Term parent;
}

Сопоставление работает нормально, а доступ к определенным коллекциям (т.е. is_a_children) работает нормально. Однако у меня есть случай использования, где я должен заполнить NavigationTree с данными. Это должно выглядеть примерно так:

-Term 1 
  - Term 1.1 (is_a)
     -Term 1.1.1 (part_of)
  - Term 1.2 (part_of)
  - Term 1.3 (is_a)
     - Term 1.3.1 (part_of)
     - Term 1.3.2. (is_a)
....

NavigationalTree не имеет понятия о различных типах отношений.

Мне нужно объединить разные коллекции отношений (то есть is_a_children и part_of_children) в одну коллекцию и по-прежнему хранить информацию о типе отношений (для их отображения)

Конечно, я могу создать геттер, который делает Sets.union (гуава) из двух наборов, однако таким образом я теряю информацию о типе отношений. Единственный нехакский способ - использовать один общий тип отношений вместо двух типов отношений (is_a, part_of) в базе данных графа и добавить этот тип в качестве свойства отношения.

Есть ли другой путь?

Обновление 1:

Кажется, что я должен использовать наследование, чтобы решить это Spring Data Neo4j - @RelationshipType проблемы
http://forum.springsource.org/showthread.php?124110-neo4j-Inheritance-with-RelationshipEntities&highlight=neo4j+inheritance+with+relationshipentities

0 ответов

Другие вопросы по тегам