Is there a theoretical/performance limitation to a native representation of a NodeType similar to the RelationshipType? Several examples in the tutorial imply that NodeType is a basic attribute of a Node, i.e. "Person", "StatusUpdate". Take a "favorites" system in an ecommerce use case where the user can favorite several different categories of objects. I think of the graph like this naturally:
(UserA) --[favorites]--> (BookA)
(UserA) --[favorites]--> (BookB)
(UserB) --[favorites]--> (BookA)
(UserB) --[favorites]--> (BookB)
(UserA) --[favorites]--> (Toy)
(UserA) --[favorites]--> (Blanket)
If I want to say "find me all the Books that users who favorited Book A also favorited ("2 People who liked Book A also liked Book B")
In order to traverse that graph using RelTypes, I'd have to do something more like this:
(UserNodeA) --[favorites]--> (FavoriteNode) --[book_favorite_of]--> (BookNodeA)
(UserNodeA) --[favorites]--> (FavoriteNode) --[book_favorite_of]--> (BookNodeB)
(UserNodeB) --[favorites]--> (FavoriteNode) --[book_favorite_of]--> (BookNodeA)
(UserNodeB) --[favorites]--> (FavoriteNode) --[book_favorite_of]--> (BookNodeB)
(UserNode) --[favorites]--> (FavoriteNode) --[toy_favorite_of]--> (ToyNodeA)
(UserNode) --[favorites]--> (FavoriteNode) --[blanket_favorite_of]--> (BlanketNodeA)
Is this the correct way to model for this use case? Is there a better one?