<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/wb/ (C) Ken Webb Sun May 27 2012 10:56:18 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: John Baez on Network Theory
Description:
Url: http://math.ucr.edu/home/baez/networks/
InternalName:
YoutubeId:
Keywords:
My Notes **May 27 2012**
--------
John Baez is a mathematical physicist and professor of mathematics at the University of California, Riverside (UCR). For the past year or so he's been writing a series of articles on network theory. In his first post, Network Theory (Part 1), he describes various types of networks and diagrams, some of which I have used and some I've never heard of before. His mathematics and physics perspective is different from my computer science and simulation approach. I use computer science techniques because I am comfortable with these. I imagine John uses mathematics techniques because that's what he's comfortable with. So I'm very interested to read his posts on a topic I know a lot about, but from a very different perspective. The comments from readers on the Azimuth (johncarlosbaez.wordpress.com) copies of the blog, are also very interesting.
I previously wrote a Java app based on a simple Petri Net in one of his Network Theory articles ::
http://www.primordion.com/Xholon/jnlp/
See under "Azimuth - Petri Net". It was a good excuse for me to do a Petri Net example, and work on some SVG graphics.
In Network Theory (Part 1), John talks a bit about a hypothetical "green mathematics" for biology-related "problems facing our planet". It "may require massive use of computers, instead of the paper-and-pencil methods that work so well in traditional math. Simulations might become more important than proofs". Interesting.
John includes a close-up image of a leaf and another image of a crystal to suggest the difference between more traditional math and green math. This reminds me of my own musings and writings about allopoiesis and autopoiesis. In an allopoietic system, the parts are created by something external, usually to serve some pre-defined purpose. In an autopoietic system, all the parts are involved in making all the other parts. A crystal is probably not the best example of an allopoietic system. A car factory might be a better example, to compare with a leaf which is a glucose factory among other things.
John then discusses particular types of diagrams in relation to Network Theory ::
Feynman diagrams
Circuit diagrams
Bond graphs
Petri nets
Chemical reaction networks
Systems Biology Graphical Notation (SBGN)
Process Description language
Entity Relationship language
Activity Flow language
Energy Systems Language
Bayesian network
Neural networks
"The list goes on and on, and I won’t try for completeness"
Unified Modeling Language (UML)
Systems Modeling Language (SysML)
"mathematicians are especially good at soaring above the particulars and seeing general patterns. Also, they know ways to think of diagrams, not just as handy tools, but as rigorously defined structures that you can prove theorems about… with the help of category theory."
So, should I learn more about category theory? Unfortunately, I usually get lost pretty quickly when I try to learn something new about mathematics. I'm sure I could work at it and actually learn some of what category theory is about, but I don't know where to start and I don't know how to navigate my way through the many different aspects of it. It's always hard to predict the value of learning something when you really don't know anything about it.
My non-math-based pragmatic approach is to take some new network or diagram type (something new to me) and see how I can connect it to what I already know. Typically I write some code to transform a structure I already have and understand, into a structure that can be imported by some tool that understands the new network or diagram type.
My own work with Xholon is based on concepts from UML and SysML, two of the types that John mentions. Xholon is also compatible with Systems Biology Markup Language (SBML), which is from the same group that produces the Systems Biology Graphical Notation (SBGN) specification. I would expect that I could write some code to export SBGN diagrams from Xholon models. See "Announcement: Xholon supports SBML" ::
http://sbml.org/Forums/index.php?t=msg&th=991&rid=0
Some of the network and diagram approaches I've used are listed in my workbook "Xholon interworks with anything" ::
http://www.primordion.com/Xholon/wb/openwb.php?q=2782652&f=gist.github.com/raw/
Xholon does NOT automatically interwork with everything, but it can be made to interwork (at least partially) with anything that has some sort of network representation. More specifically, I have always been able to get it to work with any system or format that I've tried up to now. And it's always a valuable learning experience to figure out how to implement the interworking. Please note that I do NOT claim that Xholon can get any two external tools or formats to work together. That is, if Xholon can import a network of type A, it may or may not be able to export it as a network of type B. It all depends on the semantic content of the two types.
John mentions topology, physics, logic and computation, plus chemistry, biology, ecology, statistics, etc. He suggests that there "should be a mathematical theory underlying the use of networks in all these disciplines." I would like to know more about this theory, and how it relates to my own practical experience with Xholon.
The "Network Theory (Part 1)" Azimuth post includes comments about UML, which I generally agree with. To me, UML has two very different faces, one positive, and the other quite negative. Like many software developers, I've worked on projects where UML was mandated by management but used in ineffective and counter-productive ways. On the other hand, I worked for several years for ObjecTime. Their tool used a different subset of UML features to effectively build real-time systems. Xholon is based on the approach pioneered by ObjecTime, and it's successor Rational Rose RealTime. The real-time version was very different from the generic version of Rational Rose.
This Xholon workbook includes a very simple default model. The UML-like structure is defined in the XholonClass, xholonClassDetails, and PhysicalSystem editors on this page. The behavior is in the Blockbehavior editor. To run this default model ::
Click the Run button at the top of this page.
Click the Step or Pause button in the overlay.
These XML structures are based on the UML class diagram, the UML composite structure diagram (tree representations), and the UML concept of ports (to allow building networks within the tree). Use of the actual UML diagrams is optional.
It's not really too surprising that Xholon can "interwork with anything" that has a network structure, because this is what Xholon does by definition. It's a tool for applying behaviors (code) to arbitrary tree and network structures.
See ::
http://math.ucr.edu/home/baez/networks/
http://johncarlosbaez.wordpress.com/2011/03/04/network-theory-part-1/
http://ncatlab.org/johnbaez/show/Diagrams
http://johncarlosbaez.wordpress.com/category/networks/
http://en.wikipedia.org/wiki/John_C._Baez
TODO ::
look at Qinglan Xia, The formation of a tree leaf
look at some of the other references on the page
]]></Notes>
<script implName="lang:python:inline:"><![CDATA[
print "Network Theory"
]]></script>
<script implName="lang:javascript:inline:"><![CDATA[
print("\n Networks and Diagrams");
]]></script>
<_-.XholonClass>
<!-- types of domain objects -->
<PhysicalSystem/>
<Block/>
<!-- quantities -->
<Height superClass="Length"/>
</_-.XholonClass>
<xholonClassDetails>
<Block>
<port name="height" connector="#xpointer(Height)"/>
</Block>
</xholonClassDetails>
<PhysicalSystem>
<Block>
<Height>0.1 m</Height>
</Block>
</PhysicalSystem>
<Blockbehavior implName="lang:python:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:javascript:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:webEditionjs:inline:"><![CDATA[
this.bindPorts(this.parent());
this.height.incVal(0.02);
print("\nJavaScript wants something to do. Height:" + this.height.attr('val'));
]]></Blockbehavior>
<Blockbehavior implName="lang:bsh:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:jruby:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:groovy:inline:"><![CDATA[
]]></Blockbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Network Theory</title>
<rect id="PhysicalSystem/Block" fill="#98FB98" height="50" width="50" x="25" y="0"/>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>