The representation of knowledge

Sets of objects a bit like tables of records adapt their 'class capabilities' according to their member's properties and functions. The result is a cool combination of simple programming and powerful concepts.
Read full article here : PDF 279Kb


Something useful happens if you think of classes (in the object oriented sense) as tables (in the database sense). Something interesting happens if you allow classes to develop in response to the data they contain. Something clever happens if sets of data automatically understand the capabilities of their current members. Putting these novelties together is surprisingly easy from a programming perspective; leading to fascinating possibilities and real-world conundrums.

It turns out that a lot of logical concepts and useful things slot into place and that meta-data doesn't have to be rigid, difficult to specify - even need specifying when the system has straightforward learning and deductive schemes derrived from simple structures and hunches.


I started by sketching the design of a data store and discovered that it was really handy to be able to change class (record or type) definitions on-the-fly as richer information is acquired. It soon became apparent that mixing sets of data 'worked' if sets were self-aware and adaptable.

In the second part I explored the many issues raised and tried to deal with some of them as if I was designing a programming language. It turns out that a few very important concepts are easy to represent and use which makes me think this could be a very useful system. There are some fascinating issues that are raised but not solved.

The conclusion gives a summary of the 'language' and explains how the management of meta-data does not have to be complicated or a burden - in fact it mirrors nicely the way we use it in real-life.

Read the article for a full description and discussion.
  1. This is an example of when it is really revealing to go back to first principles. The title originated with my first attempts at specifying a flexible data storage format but now relates to the fundamental importance of managing meta-data.
  1. I have used a 'programming language' to illustrate the discussion. This could easily form the basis of an experimental system. There are all sorts of 'computer science' issues raised which would make this an ideal research project.

Contact via