Modeling University Club Membership


I'm in the process of turning the first thirty years of a university's yearbooks into a graph database, and I'm having some trouble modeling club membership and officer title/status over time. I would like to be able to query all the years a student was in a club and the officer titles (if any) they held in that club in each year; I would also like the entire club roster for a given year.

Every student was a member of at least one club for the duration of their time at the university:

(:Student)-[:WAS_MEMBER_OF]->(:Organization {name: 'Upsilon Phi'})

However, membership would change from year to year as people graduated and new students joined, and students could hold different officer titles in the club each semester. Something like this would only work for one year:

(:Student {name: 'Jane Smith'})-[:WAS_MEMBER_OF {year: '1908', title: 'president'}]->(:Organization {name: 'Upsilon Phi'})

What would be a better way to model this? Intermediate nodes for each school year? Organization president/vice-president/secretary as their own nodes, with the year as a relationship property?

Thank in advance!

Hi @angellk

Welcome to the community!

First of all, what a fun sounding project! I look forward to hearing more about how you get on and what this looks like.

Secondly - it sounds like the principles of versioning in graphs would be really helpful to you for this. Here's a blog post to check out.

Do let me know how you get on/if you need a bit more help with figuring out the model.



1 Like

A much belated thank you for your response. The blog post put me on the right track of intermediate nodes for each year for each club, and officer titles in the relationship. At least it's working well so far.

1 Like