The LC Bibframe 2.0 data model contains close to 200 classes and a similar number of properties. I was interested in trying to visualize such a large model to give me a reason to dig into it and learn more about the developing standard. But I was particularly interested in the overlap of properties between Work/Instance and Work/Instance/Item, meaning the properties that can be used with more than one of the principle classes. I attempted to diagram the model with the goal of separating the properties:
The diagram has 5 axis
- Properties that can be used with Work class (red)
- Properties that can be used with Work and Instance class (orange)
- Properties that can be used with Instance class (yellow)
- Properties that can be used with Item class (green)
- Properties that can be used with Work, Instance and Item or Unspecified (black, on the left side)
While this diagram is focused on the properties I also included all subclasses. I wanted to flatten out the model by depicting all properties individually even the inverse properties.
I spent some time thinking about how to visually display such complex model, and did a few sketches before firing up OmniGraffle:
I thought a radiating diagram, sketched in the bottom right would be interesting but found the vast majority of the properties are shared between Work and Instance, meaning the diagram would have be to centered around them. So I landed on the idea of the the properties flowing like a gradient from top, Work to bottom, Item. Leaving the other side for properties that used all three.
I’m not sure how successful it is in conveying the model. But it has helped me get a visual grasp of its components. Some improvements could be grouping things together into categories as it is presented in this text view. It could also be made interactive, clicking on a property or class could display the description. Regardless it seems a little more manageable at least in my mind. Feel free to reuse/modify all assets are CC0.