I am aware of the absence of a constraint for naming relationships, though it is tough to get one guideline and work with it over all the relationships that we might encounter.
Would you go with something like this:
(u:User)-[:LIKES]->(p:Post)
(u:User)-[:LIKES]->(c:Comment)
and then query based on the label; Or something like this:
(u:User)-[:LIKES_POST]->(p:Post)
(u:User)-[:LIKES_COMMENT]->(c:Comment)
Another case is a threaded chat application where a User
can start a thread with multiple other users, here's the structure I have in mind:
# the thread
CREATE (ct:ChatThread {created_at: timestamp()})
# the thread starter
(u:User {user: 1})<-[:IN_THREAD {type: 'owner'}]-(ct)
# members of the thread
(u:User {user: 2})<-[:IN_THREAD {type: 'member'}]-(ct)
(u:User {user: 3})<-[:IN_THREAD {type: 'member'}]-(ct)