Wgraph:Architecture

From FollowTheScore
Jump to: navigation, search

Architecture

Wgraph is based on a powerful graph layout and rendering product named aiSee.

  • aiSee is developed and actively maintained by the German company AbsInt.
  • aiSee is written in C++; binary versions are available for Windows and Linux.
  • To use Wgraph you need a license of aiSee (non commercial use is free under certain conditions).
  • aiSee uses GDL as a graph definition language.
  • The WGL language of wgraph is similar to GDL but has some additional features like a general typing concept for nodes and edges.

{{#wgraph: name= wgraph_structure | thumb= 45 | svg | png |

   node user            { icon user }
 node WGL             { type code    label "WGL script"       color #ddffdd}
 node wgraph     wg   { type program label "wgraph (php)" color #ddffdd }
 node legend     wg   { label "wgraph translates WGL notation into GDL notation; it triggers aiSee in the background" 
                         textwidth 20 fontname timI10 bordercolor white height 80 }
 node html            { type code }
 node aiSee   wg1     { type program color #99ff99 }
 node wikitext        { type code }
 node mw              { type program label "mediawiki engine" }
 node GDL     wg1     { type code label "GDL script" color #99ff99 }
 node png     wg2     { type image }
 node thumb   wg2     { type image }
 node svg     wg2     { type image }
 subgraph wg          { label "wgraph extension" color lightyellow state wrapped }
 subgraph wg1 wg      { label "layout engine"    color khaki       state clustered }
 subgraph wg2 wg      { label "graph formats"    color lightgreen  state boxed }
 edge from user     to wikitext { label "edit"  color red   }
 edge from wikitext to mw       { label "save"     }
 edge from wikitext to WGL      { label "contains" }
 edge from WGL      to wgraph   { label "parse"    }
 edge from wgraph   to GDL      { }
 edge from GDL      to aiSee    { }
 edge from aiSee    to png      { }
 edge from aiSee    to thumb    { kind rightbentnear }
 edge from aiSee    to svg      { }
 edge from mw       to html     { }
 edge from mw       to wgraph   { type call }
 edge from wgraph   to html     { label "insert link" }
 edge from html     to thumb    { type link label "img" }
 edge from thumb    to png      { type link }
 edge from thumb    to svg      { type link }
 edge from wgraph   to aiSee    { type call }
 edge from wgraph   to legend   { type comment }
 nodetype  image    { title image shape hexagon color lightcyan }
 nodetype  code     { color #ffffcc shape ellipse borderwidth 1 }
 nodetype  program  { color #ffccff }
 edgetype  include  { linestyle dotted }
 edgetype  call     { color red label "call" }
 edgetype  link     { linestyle dotted color blue label "href" }
 edgetype  comment  { kind near linestyle dotted arrowstyle none }
 node.borderwidth = 1
 node.height      = 40
 xspace           = 140
 splines          = yes
 iconcolors       = 1024
 // subgraph wg {state folded}

}}
This graph was created with the help of wgraph. See the WGL source.

As you can see WGL is being translated to GDL by wgraph. Then the aiSee graph renderer is invoked in batch mode on the server and produces a png or svg image together with a small png thumb image. The thumb image is shown on the html version of the wiki page and links to the graph. The user will also find a link to the GDL code if he prefers local viewing. The aiSee rich client allows (among other features) to

  • change the layout manually
  • fold parts of the graph into subgraphs
  • generate multipage postscript output
  • interact with other local applications