2019-05-31 | Apps | Generating Gane and Sarson DFDs
Graphviz can do Gane and Sarson pretty much OOTB. I decided on some conventions:
The process is a subject, and is always first.
An entity, process, or data store can all be objectsx.
Track both directions of data flow individually, but roll them up into a single line with appropriate arrows. Note that this can be tallied by putting subject+object in a hash. Test to see if there is an opposite flow to the current test as well as the same flow with the opposite direction (object->subject). Since only processes are set as subject, this works to create a hash that is complete as far as flow.
Use short names, numbers, and alphanumeric (D13) for entities, processes, and data stores. Put the longer names in a tab delimited field for each entry.
Put all processes in the objects file so you can easily add to the triples.
Here is an example Graphviz file:
digraph { charset="utf-8";overlap="false"; splines="true"; sep="+20"; node [shape=record]; Entity [label="Entity \nDescription"]; D1 [label=“<f0>D1|<f1> Data Store \nDescription"]; 1 [label=“{<f0> 1|<f1> Process \nDescription }" shape=Mrecord]; 1 -> D1 [dir="both"]; 1 -> Entity [dir="back"]; }
Run:
sfdp -Tsvg < i.gv > o.svg
To render this:
This is how I imagine that the existing ontologies map to the Gane and Sarson triples. I realize that it might require more detail, but this is all I have right now.
Process:
planned process
http://purl.obolibrary.org/obo/OBI_0000011
Data at rest:
data storage
http://purl.obolibrary.org/obo/IAO_0000030
Entity
role.
http://purl.obolibrary.org/obo/BFO_0000023
Subprocesses:
contains process
http://purl.obolibrary.org/obo/BFO_0000067
Predicates for data flow:
has specified input
http://purl.obolibrary.org/obo/OBI_0000293
has specified output
http://purl.obolibrary.org/obo/OBI_0000299
Articles tagged with git on Log Integrity:
2019-09-08: Placeholder
Articles tagged with git on L1G3R Information Systems:
Articles tagged with graphviz on L1G3R Information Systems: