Recently we had an engagement at a cutomer with a department responsible for knowledge management. They were looking for a way to visualize some of their knowledge data in a intuitive way and make content related to that data acessible to all relevant people in that company. The underlying data model of the knowledge system was quite straight forward as there are nodes which represent knowledge keywords such as "Basel II" and connectros which represent relations between such keywords so that a related node would count as an edge of the previous node such as "Policies". Until now one might think that this would end up in a simple tree however there are some extensions to the model as such that a keyword may not have any relations and therefore would stand alone. So a simple graph for such data could look like seen on the following picture.

Knowledge Data Graph Sketch

Another relation that all those keywords have are content assets like powerpoint slides. So the requirements of the customer for the system to be built were:

  • To have the possibility to create the knowledge data (keywords, relations and metadata, content) through an application suitable for business users.
  • To be able to visualize the nodes and their relations in an innovative way.
  • To be able to navigate the whole knowledge graph
  • To be able to search within the visualization component to even be able to visualize isolated nodes
  • To be able to have multilayer visualization of endnodes that only have unidirectional relations (!?!)
  • To be able to search, retrieve and view the content related to a specific node out of a content library.

So in a proof of concept we (MCS, my colleague Jörg and me) built a system which basically met all the requirements and consisted of the following components and technologies.

  • Visio 2007 with an add-on provided by Semtalk.
  • Powerpoint 2007 for content creation enforcing the attributes of the specially defined content type in MOSS 2007.
  • Microsoft Office Sharepoint Server 2007 as main frontend, content repository and search engine.
  • A Silverlight application in a WebPart as knowledge data visualizer based on Silverlight 1.1 (sorry folks, I know that 1.1 does have some drawbacks at this time however the codebase was built on top of 1.1)

So the overall high-level architecture was like shown below.

High-Level Architecture

Some of the features of the Silverlight visualizer are:

  • It displays only the first to levels of nodes and edges-
  • You can navigate from node to node by cklicking on a respective node.
  • You can drag the nodes around (the drag surface is quite small, so it might not work out every time).
  • A history that allows you to go back and forward within your navigation steps.
  • Home function to go to the initial screen.
  • Search function to search within the nodes to directly navigate to a specific node which gives you a list with links if more than one results are available (not the same as the global, MOSS based search).
  • Integration of the MOSS based search WebPart via an Java Script function (called from managed code btw. thanks for the initial hint on that by my colleague Dave Relyea). At this time as there is now MOSS 2007 environment available it only prints the value of the node's title into the second search field and if you click on the search button will trigger a live search.
  • If you navigate to a node that has unidirectional relation from a parent then the system will display this node and all nodes which have the node in focus defined as one of their relations (edges).

The Visualizer is based on code created by Jeff Powers and which is available on http://fluxcapacity.net/

The data has been made anonymous and therefore is a bit boring but if you want to try the search. Try to enter "Software" in the search field and click the button "Search Node in Graph". The "Office Software" edge can be navigated further and displays some more differentiated data there.

And now finally to see the result click on the picture or the link below.

http://www.level70.de/silverlight/knowledge/Default.html

 

If you would like to get the source code just drop me a note and I can send it over to you.