So meta data is a really simple way of describing data. (The whole Data on Data thing). Why do we even need the data in the first place? This got me thinking about data structures and how we actually put data into databases. I took a look at some the different types of data models that are out there (there are so many – so so many and started to piece together some ideas. Mostly, the Meta Object theory came from the idea that all data could, in reality, be simply a series of meta data attributes, describing a stub. It’s not an application, it’s a data storage method (and subsequently an engine too) – which means it’s even more powerful to the developer using it!
So think about it this way – you want to create a new report. You go into your word processor, click ‘create new document’ and your presented with a blank piece of paper. Meta Object theory starts the same way. Firstly, with a blank piece of data – all it has is an Identifier to say that this is Data Object #1400. Next we break apart all the descriptive values of the data we want to create and try to find a model that fits it (we can even in some scenarios create the data first and make the system find the model that fits best!).
So we want to create a piece of data that forms part of a catalogue of vegetation that appears on our property. To do so, we can simply break this down into a few areas. Trees, Shrubs and Plants is a good start. What we then do, is define common elements that affect all objects in our system – Color, Height, Width – perhaps to a certain degree we could also include some Geodata too – so Lat/Long, Ground Height etc, perhaps a label, owner,¬† creation data (instance creation of course), parentage (if available), some broad notes or a description and of course a name – we’ll call our object, Charlie. Once we have all of the¬† common elements together, we apply those. The common elements help us to describe this data, in relation to all other data in the system – regardless of it’s type, subtype, etc this data is now completely visible to the entire system, so it makes searching through all our data a whole lot easier.
Once we’ve done that – we get into specific object model data. So here, we start to define what this is – lets say Charlie is Vegetation. What we can then do, is start to put information around what definitions of vegetaiton are (ie, it’s organic matter so we can start to look there first). After we’ve described Charlie’s vegetation like features we can do some calculations based on the fact that she is vegetation. All vegetation has a lifespan, they all perform photosynthisis and that means they all have a cubic metres of carbon processed based on light conditions etc.
Think of this like an ‘auto number’ field, except in this case, the data we used to help describe Charlie to the catalogue, is used in the complex mathematical equation to help us to determine how useful Charlie is being to our environment. In this case we have a geo position, the type of vegetation she is, her approximate size and soon we will have subtype data too! This means that the catalogue can now apply this maths and determine that Charlie can infact, help process up to 14 tonnes of carbon a year. I use this as an example because it demonstrates that the data is capable of using itself to create new meta data.
The next steps are pretty straight forward. Sub type classifications are endless, which means we can step into a new level of data description. I may define Charlie as a tree. Once inside a tree, I may describe her as a native (a relative value which should be taken note of – as a native species to one region, it may not be native to the region viewing the data – which means that that region should have ‘relative’ data fed to it, not absolute – I have heard this described as Adaptive Data), or a Red Wood, or etc. Once you get into this subtype, you may go even further. Each level creates a new set of Meta paramaters which help you to continually describe your data to the nth degree.
The last step is to add appended models. Let’s say that Charlie is a tree. That’s awesome – but she may also be attributed to certain tasks (such as pine farming) or in a protected zone, she may be related to wildlife species who eat her produce, or provide housing, etc. There are so many relationships in data that it would be impossible to create a ‘schema’ that took into account all of them – so I created one that lets you be as flexible with the data as you’d like!
Where did this idea come from? I was working on information management systems and content management systems – and felt I was replicating work.
I’m not claiming to be original in though on this idea – if you’ve got one that’s similar and open source – drop me a line, I’d love to hear from you.