neo4j: Make properties relationships by Mark Needham.
From the post:
I spent some of the weekend working my way through Jim, Ian & Emil‘s book ‘Graph Databases‘ and one of the things that they emphasise is that graphs allow us to make relationships first class citizens in our model.
Looking back on a couple of the graphs that I modelled last year I realise that I didn’t quite get this and although the graphs I modelled had some relationships a lot of the time I was defining things as properties on nodes.
While it’s fine to do this I think we lose some of the power of a graph and it’s not necessarily obvious what we’ve lost until we model a property as a relationship and see what possibilities open up.
For example in my football graph I wanted to record the date of matches and initially stored this as a property on the match before realising that modelling it as a relationship which might open up some interesting queries.
Reading Mark’s post illustrates the power of using associations to model “properties” in topic maps.
In Neo4j, relationships are first class citizens.
Unfortunately, we can’t say the same for associations in topic maps.
You may recall that associations in a topic map are restricted in the information they can carry.
If you want to add a name to an association, for example, you have to reify the association with a topic. Which means you have the association and a topic for the association, representing the same subject.
Not to mention a lot of machinery overhead for something fairly simple.
I am aware that the TMDM and XTM were fashioned to follow the original version of ISO 13250. The origin of reification in topic maps.
However, simply because all buggies had whips at one point is no reason to design cars with whip holders.
The time has come to revisit reification and in my view, revise both the TMDM and XTM to remove it.
And to make associations and occurrences first class citizens in both the TMDM and XTM.
Comments/suggestions?