Author: Andreas Platschek
Review: Nicholas Mc Guire
Date: Dec 20, 2015
Expires: ----
Keywords: GSN, ogsn instalation 
Status: reviewed draft
Phase: all
Ref: GSN standard http://www.goalstructuringnotation.info/documents/GSN_Standard.pdf
QA: initial review
Tracking: GIT
Format: ascii text
License: GPLv2 or later

Intro

The prototype for tool that draws GSN trees. The notation shall be strictly to the standard. You can find the standard here:

http://www.goalstructuringnotation.info/documents/GSN_Standard.pdf

Currently the Core GSN Elements as described in Part1 of the standard are implemented with the following shortcomings:

-> Assumptions are missing the 'A' in the bottom right corner of the
   node.
-> Justifications are missing the 'J' in the bottom right corner of the
   node.
-> Strategies are a bit bigger than they have to be (this is not a
   deviation from the standard, just a bit annoying :-) ) 

Dependencies

Dependencies have not been tested yet, but installation of graphviz should suffice. So in debian jessie, just do a

For python-2.X sudo apt-get install graphviz python-pygraphviz For python-3.X sudo apt-get install graphviz python3-pip sudo pip3 install graphviz

and you should have all you need to run osgn3.py

Install

via git:

git clone https://user:user@sil2.osadl.org/gitolite/git/OGSN

Usage

This directory also contains a couple of examples, to build them just run e.g.

python3 ogsn3.py -i examples/GSN_Community_Standard -o fig6.png

This will result in a file called fig6.png which contains the same GSN tree that is depicted in the GSN community standard in Figure 6. If you rather have the output in some other format, then just change the extension of the output file, e.g. to

python3 ogsn3.py -i examples/GSN_Community_Standard -o fig6.svg

to yield a vector graphic. Available formats depend on the ones built into the graphviz library on your system, but usually the following are available:

‘canon’, ‘cmap’, ‘cmapx’, ‘cmapx_np’, ‘dia’, ‘dot’, ‘fig’, ‘gd’, ‘gd2’, ‘gif’, ‘hpgl’, ‘imap’, ‘imap_np’, ‘ismap’, ‘jpe’, ‘jpeg’, ‘jpg’, ‘mif’, ‘mp’, ‘pcl’, ‘pdf’, ‘pic’, ‘plain’, ‘plain-ext’, ‘png’, ‘ps’, ‘ps2’, ‘svg’, ‘svgz’, ‘vml’, ‘vmlz’, ‘vrml’, ‘vtx’, ‘wbmp’, ‘xdot’, ‘xlib’

So far, .png, .svg and .eps have been tested in debian. In addition osgn will generate a file.dot on every run -- this is for testing.

Write a GSN

Writing your own GSN configuration file is rather simple. The structure is as you might know from config files, where some fields are expected for each node, the description of a node looks as follows:

[NODENAME] parents: space separated list of nodes (ROOT for the first element in the tree.) desc: a textual description which may contain (a subset of) HTML tags type: the type of node

For type the following are available: GOAL, STRATEGY, UGOAL, USTRATEGY, ASSUMPTION, JUSTIFICATION, CONTEXT, SOLUTION

While most of those types are straight forward, there are two that need some explanation and that are UGOAL and USTRATEGY. The U stands for undeveloped, so these two types are used to create an undeveloped goal / strategy respectively.

You will find a lot of examples on this in the examples directory!