PRONOVIX

Evolving web sites

Drupal Freemind 2.0 – a relational (semantic) data interface

As a passionate fan of mindmapping I've grown accustomed to mindmaps as a data visualization tool. Mindmap user interfaces allow you to organize your ideas into hierarchical bundles of 6-7 concepts in collapsible groups and then drill down in a logical relationship tree. This is very close to how a human brain works.

There is a Freemind module for Drupal 4.7 with which it was possible to show taxonomies in a mindmap display. This is in it's own right an interesting module but it could be a lot more useful if you could interact with this mindmap. At least we should be able to mirror manipulations that are possible in a Freemind .mm mindmap. Such as reorganizing of freemind nodes, creation, updating and deletion of freemind nodes. The real power however you would get if you could interact with data from the Drupal database or even from outside of Drupal.

But how would this work? Below is a quick diagram of how this could work and how the different involved modules could interact with each other.

Freemind module stack

There would be 2 ways to generate a new mindmap:

  • node by node, through the UI (as you would do in Freemind)
  • By importing the results from a mindmap display in Views that has the parent node as argument

The node by node way is obvious, you can just keep adding nodes through the Freemind UI and since these are structural elements that are only relevant to the mindmap, they can be stored in the .mm file. The mindmap display would generate a freemind compatible XML branch that can be inserted at the appropriate place in the existing .mm files. Fields from Drupal nodes could be added as attributes to the mindmap nodes through a sort of field to attribute mapper (potentially using the labels from the view as the first element in the type|value pair).

Just before New Year I had a talk with Robert Douglas and Stephane Corlosquet about semantic knowledge management systems that was sparked by our work at Pronovix on www.druplet.org. (click here for a screencast). Back then Robert asked us if we knew any revolutionary new visualization methods that are possible with semantic data. This project is my answer to that question:

In a recent article Jeff Micolis demonstrated how views can be used to pull in external data sources. Now imagine adding mindmap-XML branches created from a SPARQL query, maybe with the SPARQL project...

The Drupal Freemind 2.0 module would make it this way possible to turn any Drupal site into an interface for building human readable subsets of semantic data.

We are planning to submit this project as a Google Summer of Code application for Tamas Demeter, a student who has been doing a traineeship at our company. Any feedback would be very welcome.

Hi there,
I am VERY interested in this project, as I am working on a new version of my website (sandgarden.org) with a better mind-map viewing system.
My next step would be enabling the editing of mind-maps from within Drupal.
If you start anything, I would be very happy to help as much as I can.
Please feel free to contact me.

Hi Jean Remy,

would be great to work together on this. At the moment our plans go more in the direction of displaying Drupal information in freemind maps. But I see the value of a full CRUD on online mindmaps.

I'll contact you by mail/skype. Hear you soon!
Kristof

It would be great if the Freemind applet allowed updates to mind maps rather than just viewing. Are you sure that this is possible? I thought of using freemind as an interface to rememberthemilk but I couldn't figure out a good way to do the translation.

In my mind the best thing would be to capture editing events in Freemind and then use listeners to those events to manipulate whatever the Freemind interface is driving.

Since we wanted to do some experiments for a project we are working on we recreated the feature.
642-731 exam//BH0-006 exam//642-611 exam//642-975 exam//650-393 exam//70-663 exam//199-01 exam//350-050 exam//156-315.71 exam//642-263 exam//

In the first place I think of the mindmap as a sort of personal relationship visualization cache that is stored in a .mm file on the server once you are finished updating.

But we also imagined having 3 types of update flags (e.g. a special icon or something) to indicate in what direction you want to synchronize data (e.g. one-way or both ways).

We imagined that you could have a mindmap as a go between for freemind and Drupal: Drupal interacts with the .mm file and Freemind displays/works with this file. It's easy to build the XML for the mindmap, but it's a lot harder and a potential update nightmare to build all the services you would need to do a direct Drupal/Freemind interaction.