Brain

From Organic Design
TheBrain.jpg

This article is about the MediaWiki extension we're currently developing called Brain, the main script for the extension is Brain.php. The general idea of the extension is to add anther view tab to the current MediaWiki "actions" tab-set that sits above an article's content. This view will be called the "nodal" view and shows by means of a dynamic JavaScript interface the relationship connections between the articles in the wiki. The interface allows new relationships to be added or existing ones to be changed or deleted, and also allows the nodes (wiki articles) to be created, deleted or renamed.

We've called it "Brain" because it conceptually shares a lot in common with the existing application called "TheBrain". If you're unfamiliar with "TheBrain", see this blog post for a quick introduction to the concept first.

To the right is an image of TheBrain which is essentially a graphical concept and relationship mapping tool. It's very similar to a mind-mapping tool, except that it's more node-oriented which allows more intuitive navigation around large complex structures of nodes and for diverse concepts to be connected more easily.

The nodal interface starts focussed on the current article, but if this focus is changed to another node, then the interface can update the wiki content surrounding the application (i.e. the sidebar, action links, page title etc) via ajax so that the page and interface application don't have to reload.

The extension allows the nodes to be able to be linked to nodes on other wikis that are running the software. There' no security concern here because the interface's currently focussed node is runs from the JavasScript served by that wiki's Brain extension, so the wiki's privacy settings are maintained. This allows users to run the application on their own private wikis which could be running on another server, or even running on their local machine, and they can use it to manage their personal information.

The relationships (at least in this initial version) are not part of article content (as this can come with privacy concerns), they're stored in their own database table. We could put some virtual (the wiki behaves as if the content is there when rendering, but its not in the article's text content) template-syntax so that other extensions such as Semantic MediaWiki can also reflect the relational data too.

More about nodes

The application is focused on one particular node in the network at a time which is always at the centre of the nodal interface. The user can move the focus to other nodes by following the linked relationships. Each node can be seen as a storage repository for information relating to its concept, for example a node representing a particular idea may contain notes, photos, website links and other related items.

Viewers

The application is like a window, or "viewport" looking into the structure of nodes. The term "viewer" is used to refer to the general class of applications which allow users to view and edit collections of data. The viewer is a tool to provide a window onto the data set and allows the user to look at the data from different perspectives called "views". The idea of moving the "current focus" around the data set (in this case nodes) is a common feature of viewer applications.

Since nodes can be filled with associated content such as text notes and files, it's useful for the viewer application to allow easy switching between a number of different ways of looking at the node currently in focus. So far we just have the standard wiki views and a nodal navigation view, but we could add a new "file view" so that the same node would allow all the related content items to appear as a collection of file attachments in a file-browser like way.

The main point here is that the viewer offers a number of unique views onto the current node which can be switched between at any time. Each view renders particular aspects of the current node and offers navigation methods appropriate to that kind of view for navigating the viewer to other nodes. The nodal view shown in the image of TheBrain to the right is just one view of many that could be added to the viewer application.

Semantic networks & Ontologies

The nodes that make up the data structure in TheBrain are called "thoughts" because the network of relationships is composed completely of the user's own concepts and ideas. Eventually we aim for our nodes to be persistent objects in the object-oriented (OO) sense, and the relationships connecting nodes together will also be objects making the resulting structure a semantic network. This commonly used structure can be stored or communicated in a wide variety of formats such as OWL which is supported by TheBrain. Initially our nodes can't really be called objects in the OO sense because there's no means of their related nodes to be treated as methods that can execute and also the class-instance relationship (inheritance) is not implemented so nodes cannot be extended from other nodes.

If all the nodes in the semantic network were proper OO objects, the structure could not only contain arbitrary "thoughts", but also high-level functionality such as processes, tools and interface elements. Implementing inheritance means that objects can be based on others and adjusted for more specific needs.

These semantic structures of objects that offer not only organised information, but also collections of tools with which to access it are called "ontologies". The name "ontology" is used because it concerns reality rather than being just a "taxonomy" which is passive categorisation.