Sorry, this is a rather lengthy post.
I have recently started to use PB as my main "information" tool. I have previously used both Evernote, Tinderbox and DEVONThink rather extensively.
I fell for Personal Brain for several reasons:
- Real multiple parents which can be seen, rather than using aliases/replicants/etc
- A separate jump-type relationship
- Entering new information and re-structuring information is very quick and easy
One thing which has been bugging me a bit is the tag/type/thought structure. A few years ago, I created a variant of TiddlyWiki called TagglyWiki (which I stopped using and maintaining). TiddlyWiki was a wiki where each bit of information is a Tiddler. A tiddler is kind of like a thought, but only the notes part.
Anyway, I liked the idea of tagging. I also liked the idea of being able to add notes to a tag itself. The solution was to enable Tiddlers (Thoughts) to be tagged using other Tiddlers, i.e. Tiddlers are Tags which are Tiddlers.
Enter Personal Brain
I use PB to store referential notes about stuff, as well as analysis of stuff, to information about contacts.
For example, I have a bunch of Thoughs of the thought type Person. However, the thought type is separate from the regular Though name space, but what if Thoughts could be used as Though Types! Even better, what if Thoughts and Tags were arbitrary is-a relations! In Terminology Science (I do research in Computational Terminology), there are three types of relations:
PB however has to deal with other effects of tagging and thought typing, such as visualization, so the situation in not as basic as pure theory.
- Generic relations for defining subordinate/superordinate relations (Parent/Child, Kind-of, Is-a) like in PB
- Partitative relations for defining part-of relations (e.g. engine - car)
- Associative relations for expressing non-hierarchic roles, e.g. cause/effect, producer/product
So, if we go back to the Thoughts and Tags are relations thing. What if you could tell PB that the thought "Person" was a Thought Type by setting the parent of "Person" to the special thought "Type".
Analogous to this, another special thought "Tag" would exist which is special as it makes all its child thoughts into Tags.
Thought types would still act as UI-property prototypes/classes for other thoughts, but this time by setting setting the parent of a thought to another thought which is a child of the special thought "Type".
Hierarchical relationships between Thought Types could still be definable. For example, if "Vehicle" is a Thought Type -- its parent is the special thought "Type", it can have the child "Car" which also has "Type" as parent.
The restriction of only one type per thought could be managed by not allowing a Thought to have parent who is a child of the "Type" thought.
Naming relations using relation types is also still ok, there is no need to change the set of relationship kinds from the current set of generic (parent-child) and associative (non-hierarchic).
Thanks for reading, and any comments are welcome!