It is to state the obvious that data is about things. But I am often finding that I have to ask myself precisely which things?
The creation of data models is an integral part of software engineering. They are used, particularly in database design, to understand and map out the structure and characteristics of the data you are working with. Traditionally there are three types of data models that can be applied to a given system; each building on the previous one and increasing in complexity. These are:
- the conceptual data model,
- the logical data model,
- the physical data model.
The conceptual data model is the highest-level description of the data used in a given system and is the one most closely concerned with matching the data to the actual things that the system is concerned with. This data model will identify concepts and the relationships between them. For example, in a business accounting system the model may identify that the customer (the first concept) has one or more (the relationship) invoices (the second concept).
When doing WordPress development I am often attempting to develop a conceptual data model of the needs of a particular website so that I can determine how many custom post types I need to create. In my current work with open data I find that I have the need to clearly conceptualise the actual thing that any new set of data is about in order to create an appropriate schema for it. I think I have got pretty good at this type of modelling and have become convinced of its benefits as a problem solving tool beyond the realm of building databases.
I have also become aware that because the things that software and web applications are working with are often the same or similar — people, events, transactions, content items and so on — this opens up the opportunity for people and organisations to work with shared conceptual models and even for the development of common standards.
There are three aspects of this that interest me and that I would like to explore a bit further:
Obviously shared conceptual data models help to underpin the development of open data. If you want to create data schemas that enable the widest possible sharing of data then it helps if they are describing data that relates to clear commonly understood concepts.
Thinking about common conceptual data models should also help me to improve my web development work. Obviously when trying to conform to web standards and best practice I am, at a number of levels of abstraction, already working to widely shared conceptual data models. The semantics of HTML5 for example. But I think I can take this further. Given that I am regularly making use of similar post types and page elements across different projects, I should be able to create a standardised conceptual model for Grit & Oyster and use that as a framework to help me write better and more efficient code.
Software engineering will primarily think about conceptual data models as they apply to individual systems. Common standards, such as web standards, will require conceptual data models that are global or generic. But there is the opportunity for standardisation of conceptual data models at the level of the organisation which could be hugely beneficial.
I have come across a number of initiatives that attempt to develop standard models or are in part dependent upon them. These I will document below (and add to when I find new ones):-
The schema.org project to develop vocabularies for structured data on the internet, because of the broadness of its objective, has created an implicit conceptual data model, or more accurately a number of interlinked models, which I think acts as a good starting point for a developing models for web applications.
You can see the full schema.org hierarchy of types (of things) on their website but the top layer is as follows:
- Creative Work
Smart City Concept Model
As part of the standards strategy for smart cities in the UK promoted by the Department for Business Innovation and Skills (BIS) the BSI (the British Standards Institution) has developed the Smart City Concept Model. This standard (PAS182) defines a series of concepts that describe the things that are typically contained in city data.
“The model is relevant where many ORGANISATIONs provide SERVICEs to many COMMUNITYs within a PLACE.”
Local Government Business Model
The Local Government Association (LGA) in the UK has developed the Local Government Business Model (LGBM). This is an attempt to define the elements of public sector service delivery provided by local government.
The model is fleshed out with a number of standardised and interlinked lists that can be found on the esd standards website.