Softanza
StartFrançais
Softanza
Reference · Visual & spatial

Diagramming & graphs

201 functions in 71 classes, grouped by what they do, each with the explanation the library gives of itself.

The story of this area, for a general reader: what a crafter does with it, an example run and its rated lanes, is on its Platform page.

The functions, by what they do

Testing and checking

  • HasRule Check if rule loaded in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.HasRule("a")
    #--> 0
    composed from the signature, run for this page
  • HasEngine Public doorway to the engine-resident graph, so a collaborator (the graphics face, a future analytics face) can hand the HANDLE to an engine metric instead of marshalling a copy of the adjacency. in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.HasEngine()
    #--> 1
    composed from the signature, run for this page
  • CanAddEdge Pre-flight checks (non-mutating) in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.CanAddEdge("A", "D", "a")
    #--> 1
    composed from the signature, run for this page
  • IsBipartite TRUE if the graph is 2-colourable (bipartite). Engine-backed. in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.IsBipartite()
    #--> 1
    composed from the signature, run for this page
  • IsConnected engine-backed graph methods in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.IsConnected()
    #--> 1
    composed from the signature, run for this page
  • CheckConstraintRules rule management in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? @@( o1.CheckConstraintRules([ 2, 3 ]) )
    #--> [ 1, [ ] ]
    composed from the signature, run for this page
  • HasCyclicDependencies cycle detection in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.HasCyclicDependencies()
    #--> 0
    composed from the signature, run for this page
  • IsInWindow IS THIS THING IN VIEW? What a frame shows decides whether a mark is any use, and a mark pointing at something outside the window is a narration defect the one gate reports. in stzMathDiagram
    composed example
    o1 = new stzMathDiagram(StzGraphDomain(), new stzMathSubstance(StzGraphDomain()), StzCurvedGraphStyle())
    ? o1.IsInWindow("a")
    #--> 1
    composed from the signature, run for this page
  • IsSequential workflow type in stzWorkflow
    composed example
    o1 = new stzWorkflow("affirm65b")
    ? o1.IsSequential()
    #--> 1
    composed from the signature, run for this page
  • IsStateMachine workflow type in stzWorkflow
    composed example
    o1 = new stzWorkflow("affirm65b")
    ? o1.IsStateMachine()
    #--> 0
    composed from the signature, run for this page
  • IsExceptionalTransition intended vs exceptional path in stzWorkflow
    composed example
    o1 = new stzWorkflow("affirm65b")
    ? o1.IsExceptionalTransition("an", "an", "an")
    #--> 0
    composed from the signature, run for this page
  • IsDefinedAs Is pcName defined as pcFunction over exactly these objects, in order? in stzMathSubstance
    composed example
    o1 = new stzMathSubstance(StzDotDomain())
    ? o1.IsDefinedAs("a", "a", [ 2, 3 ])
    #--> 0
    composed from the signature, run for this page

and 9 more in the reference

Finding

  • PositionsByLevel organizational metrics in stzOrgChart
    composed example
    o1 = new stzOrgChart("firm")
    o1.AddPositionXTT("ceo", "CEO", [ :level = "executive" ])
    o1.AddPositionXTT("cfo", "CFO", [ :level = "senior", :reportsTo = "ceo" ])
    o1.AddPositionXTT("clerk", "Clerk", [ :level = "staff", :reportsTo = "cfo" ])
    ? @@( o1.PositionsByLevel() )
    #--> [ [ "executive", [ "ceo" ] ], [ "management", [ ] ], [ "staff", [ "clerk" ] ] ]
    composed from the signature, run for this page
  • FindQ Opens a rich query on the graph. The finder is an OBJECT, so it carries the Q -- there is no data-shaped twin of a query builder. in stzGraph
  • LastCanvas The picture as last drawn. A live session redraws THIS between gestures instead of building a new one -- the difference between a frame that costs a present and a frame that costs a layout. in stzDiagram
  • Positions Found 2026-08-29 by the scope governance on its first run over this domain, and not by any of the 22 assertions the org suite already passed: every one of them checks what the rules SAY, and a rule that governs nothing says nothing. The count of governed subjects is what made it visible -- no-self-report governs 0 positions in a chart of four, which no verdict-shaped test can express. in stzOrgChart

Counting and measuring

  • MaxFlow Maximum flow from pcSource to pcSink (Edmonds-Karp, engine). Edge :weight is the capacity (default 1). Returns the flow value. in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.MaxFlow("A", "a")
    #--> 0
    composed from the signature, run for this page
  • MinCostMaxFlow Min-cost max-flow from pcSource to pcSink. Edge :weight is capacity, edge :cost is per-unit cost. Returns [ flowValue, totalCost ]. Engine (successive shortest paths). in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? @@( o1.MinCostMaxFlow("A", "a") )
    #--> [ 0, 0 ]
    composed from the signature, run for this page
  • NumberOfCommunities engine-backed graph methods in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.NumberOfCommunities()
    #--> 2
    composed from the signature, run for this page
  • NumberOfConnectedComponents engine-backed graph methods in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.NumberOfConnectedComponents()
    #--> 1
    composed from the signature, run for this page
  • NumberOfStronglyConnectedComponents Number of strongly connected components. Engine-backed. in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.NumberOfStronglyConnectedComponents()
    #--> 4
    composed from the signature, run for this page
  • AverageSpanOfControl organizational metrics in stzOrgChart
    composed example
    o1 = new stzOrgChart("firm")
    o1.AddPositionXTT("ceo", "CEO", [ :level = "executive" ])
    o1.AddPositionXTT("cfo", "CFO", [ :level = "senior", :reportsTo = "ceo" ])
    o1.AddPositionXTT("clerk", "Clerk", [ :level = "staff", :reportsTo = "cfo" ])
    ? o1.AverageSpanOfControl()
    #--> 1
    composed from the signature, run for this page
  • NumberOfPositionsByLevel organizational metrics in stzOrgChart
    composed example
    o1 = new stzOrgChart("firm")
    o1.AddPositionXTT("ceo", "CEO", [ :level = "executive" ])
    o1.AddPositionXTT("cfo", "CFO", [ :level = "senior", :reportsTo = "ceo" ])
    o1.AddPositionXTT("clerk", "Clerk", [ :level = "staff", :reportsTo = "cfo" ])
    ? @@( o1.NumberOfPositionsByLevel() )
    #--> [ [ "executive", 1 ], [ "management", 0 ], [ "staff", 1 ] ]
    composed from the signature, run for this page
  • MinCut Minimum cut between pcSource and pcSink: the saturated edges crossing the cut, as a list of [from, to] id pairs (max-flow / min-cut). Engine. in stzGraph
  • AveragePathLength Mean shortest-path length over all reachable pairs (engine, all-pairs BFS). in stzGraph
  • NumberOfHoles how many numbers this narration shows, all of them from facts in stzStoryboard
  • NumberOfFrames what the storyboard is, once written in stzStoryboard

Replacing and setting

  • SetEdgeWeight Override the (engine) weight of a directed edge. Used by stzGraphPlanner to push per-optimisation transition costs before an engine A* search. Returns 1 on success, 0 if the edge is unknown. in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.SetEdgeWeight("A", "D", 2)
    #--> 0
    composed from the signature, run for this page
  • UpdateEdges batch update operations using functions in stzGraph
  • UpdateNodes batch update operations using functions in stzGraph
  • SetNodeLabel A node could only ever be labelled at birth, via AddNodeXT(id, label); there was no way to say it afterwards, and no way to ask. So a format that reads a node first and learns its label a line later (.stzsim's `add node X` / `label: "..."`) had nowhere to put it. in stzGraph
  • SetLayout A LAYOUT NAME THIS DOES NOT KNOW IS REFUSED, not stored. It used to take anything, and an unrecognised name became top-down in silence -- so `SetLayout(:LeftToRight)` drew a top-down picture and there was nothing anywhere to say the instruction had been dropped. A setter that accepts a value it will not honour is worse than one that refuses: the caller has evidence of neither. in stzDiagram
  • SetNotation THE NOTATION (DN0) ------------------------------------------------ Takes a registered name or a profile object. A name the registry does not know resolves to the default -- a diagram always has a notation, the way it always has a theme. in stzDiagram
  • SetFocusColor The focus colour's setter, missing until now. ExportToStyl() has always WRITTEN a focus section (color + penwidth), and _ApplyStyle() has always called This.SetFocusColor() to read it back -- a method nobody had written, so loading any exported .stzstyl died on R14. Same shape as its siblings: resolve the name, keep the resolved value. in stzDiagram
  • SetClusterColor cluster operations in stzDiagram
  • SetEdgeLineStyle Routing on the value keeps every call that works today working: a spline name still sets the spline, and a pen style now sets the pen style instead of vanishing. in stzDiagram
  • SetCurrentPlan plan management in stzGraphPlanner
  • ChangeReportingLine organizational changes in stzOrgChart
  • SetFont knobs in stzMathDiagram

and 29 more in the reference

Removing

  • RemoveLinkAt REMOVE THE LINK UNDER THE POINTER, as one logged command. Not a gesture: removal is instantaneous, so it is a verb the window binds to whatever it likes (a key held while clicking, a context action) rather than a state the machine has to carry. in stzDiagram
    composed example
    o1 = new stzDiagram("flow")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.RemoveLinkAt(2, 5)
    #--> 0
    composed from the signature, run for this page
  • ClearEdges edge removal in stzGraph
  • RemoveEdge edge removal in stzGraph
  • RemoveRule Remove specific rule in stzGraph
  • RemoveEdges edge removal in stzGraph
  • RemoveAllEdges edge removal in stzGraph
  • RemoveThisEdge edge removal in stzGraph
  • WithoutConstraints Temporarily bypass rules in stzGraph
  • ClearConstraintRules Clear specific type in stzGraph
  • RemoveEdgesConnectedTo edge removal in stzGraph
  • RemovePlan plan management in stzGraphPlanner
  • RemovePosition organizational changes in stzOrgChart

Adding

  • AddConversation CONVERSATIONS IN THIS SPACE (composition) ----------------------------- A knowledge space HOLDS its conversations: an elicitation is an EPISODE that happens INSIDE the space it grows -- never a session that owns a space. So the space is the door for everything that needs knowledge (AskIn / ReplyIn / GapsIn / ConcludeIn hand THIS graph, live, into the session); session-only state is reached through ConversationQ(topic). -- the conversations, as a collection this space OWNS in stzKnowledgeGraph
    oRest = new stzKnowledgeGraph("restaurant")
    oRest.Know("margherita", "dish").Know("tiramisu", "dish")
    oRest.AddConversationQ("setup").SetGoal(StzGoalQ().RequireEach("dish", "contains"))
    ? len( oRest.GapsIn("setup") )
    #--> 2
    library test
  • AddRule Attach one rule. Plain does the act; the Q form chains (Q convention). in stzGraph
  • InsertNodeAfter insert node after in stzGraph
  • InsertNodeBefore insert node before in stzGraph
  • InsertNodesAfter insert multiple nodes in stzGraph
  • InsertNodesBefore insert multiple nodes in stzGraph
  • AddCircle NOTE // We can add nodes using parent stzGraph methods AddNode(), AddNodeXT() and AddNodeXTT() Rounded/Elliptical Shapes in stzDiagram
  • AddSquare Quadrilateral Shapes in stzDiagram
  • AddCluster cluster operations in stzDiagram
  • AddMessage So messages are their own ordered list, and adding one also ensures the RELATION exists -- ConnectIfAbsent, never Connect, so the tenth call between two participants does not raise. The graph stays true and the picture becomes possible, without either giving ground to the other. in stzDiagram
  • AddCylinder Non-geometric/Conceptual Shapes in stzDiagram
  • AddTemplate template operations in stzDiagram

and 32 more in the reference

Splitting and extracting

Converting

  • ToPages Returns [ [ path, row, col, sceneX, sceneY ], ... ] -- what was written and which part of the picture each sheet holds. in stzDiagram
    composed example
    o1 = new stzDiagram("flow")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? @@( o1.ToPages("a") )
    #--> [ [ "a_r1c1.png", 1, 1, 0, 0 ] ]
    composed from the signature, run for this page
  • ConvertColorTogray color resolution in stzDiagram
    composed example
    o1 = new stzDiagram("flow")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.ConvertColorTogray("a")
    #--> #FFFFFF
    composed from the signature, run for this page
  • ToTreeNodes Options ride through to stzTreeCanvas: :Font :Title :NodeWidth :NodeHeight :HGap :VGap :Background :NodeColor :NodeBorder :LineColor :TextColor :FontSize :Width :Height in stzOrgChart
    composed example
    o1 = new stzOrgChart("firm")
    o1.AddPositionXTT("ceo", "CEO", [ :level = "executive" ])
    o1.AddPositionXTT("cfo", "CFO", [ :level = "senior", :reportsTo = "ceo" ])
    o1.AddPositionXTT("clerk", "Clerk", [ :level = "staff", :reportsTo = "cfo" ])
    ? @@( o1.ToTreeNodes() )
    #--> [ [ "ceo", "CEO", "" ], [ "cfo", "CFO", "ceo" ], [ "clerk", "Clerk", "cfo" ] ]
    composed from the signature, run for this page
  • ToWorkflow export in stzWorkflow
    composed example
    o1 = new stzWorkflow("affirm65b")
    ? o1.ToWorkflow()
    #--> workflow "affirm65b"
    #-->     type: sequential
    #--> steps
    #--> flow
    composed from the signature, run for this page
  • ToCanvas The doorway to the graphics plane: a graph hands back a CANVAS whose node sizes and colours are computed from the graph's own shape. oG.ToCanvasQ([ :Layout = :Hierarchical, :SizeBy = :Impact ]) It answers an stzCanvas, so ToSVG() and ToPNG() come with it. in stzGraph
  • ParseAndImport import with subdiagram support in stzDiagram
  • AsRuleGraph An stzOrgChart is a POSITIONS model. AsRuleGraph projects it into a clean colored stzGraph -- one node per position (kind=position, carrying level / department / title / roles), one "supervises" edge supervisor->subordinate -- so the compliance rule bases (stzSOXRuleBase, ...) can run graph rules over it (separation-of-duties, no-orphan-position, no-cyclic-reporting). A FRESH graph, built from @aPositions, not the diagram's layout graph. in stzOrgChart
  • ToNarration The question of whether this shape conforms was routed to the sibling through Central as DN9-EMITTER-01 and is unanswered; silence is not a veto here, so this is written, pinned and marked, and a correction costs one function. in stzStoryboard
  • ToView graph projection in stzGraphQuery
  • ToGraphQ graph projection in stzGraphQuery
  • ToOpenCypher opencypher import/export in stzGraphQuery
  • ToStzGraphView graph projection in stzGraphQuery

and 3 more in the reference

Showing, drawing and formatting

  • RenderHops Where the picture declared a crossing with a wire hop. Published so an instrument can ask whether each one had room to be read as one -- a bump a few pixels from a rounded elbow is two curves in a row, and the reader cannot tell which is the corner. in stzDiagram
  • RenderForks The vertices where a stem forked and the corner was therefore drawn SQUARE: [ x, y, key ]. See _VertexIsFork. in stzDiagram
  • RenderArrows Recorded because "an arrow means a loop" is the law in this notation most able to break without showing: it is enforced in the two places that draw a head, and gating one of them alone produced a picture identical to the one before. A law with two enforcement points and no way to count the result is a law on trust. in stzDiagram
  • Show display methods in stzGraphPlanner
  • ShowPlan display methods in stzGraphPlanner
  • ShowCurrentPlan display methods in stzGraphPlanner
  • DrawIndexOf Where a shape falls in the drawing order: 1 is painted first and so sits at the back. A shape that must not be buried has to come out with a HIGHER index than everything that could cover it, and that is a fact about the picture worth asserting rather than eyeballing -- layering is a partial order, and the depths it relaxes to are not obvious from reading the rules. in stzMathDiagram
  • Render the folio, and the page --------------------------------------------- The frames are already drawn, one file each, as they closed. This writes the page that puts them in order with their sentences. in stzStoryboard
  • RenderProbabilities the drawing ---------------------------------------------------------- what was written inside the basic events on the last render: [ id, p, x, y ], p = -1 where none was declared in stzFaultTree
  • RenderTokens the drawing --------------------------------------------------------- what was drawn inside the places on the last render: [ place, count, x, y ] in stzPetriNet

Reading and writing

  • ExportToStzRulz .stzrulz format in stzGraph
    composed example
    o1 = new stzGraph("g")
    o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
    o1.AddNode("D")
    o1.AddEdge("A", "B") o1.AddEdge("A", "C")
    o1.AddEdge("B", "D")
    ? o1.AsStzRulz()
    #--> ruleset "g Rules"
    #-->     ruleGroup: structural
    #-->     version: 1.0
    #--> rules
    composed from the signature, run for this page
  • LoadFromStzRulz .stzrulz format in stzGraph
    oGraph = new stzGraph("org")
    oGraph.LoadFromStzRulz("../_data/bceao_banking.stzrulz")
    ? "Rules loaded: " + oGraph.NumberOfRules()
    ? @@( oGraph.RulesSummary()[:Validation] )
    ? @@( oGraph.RulesSummary()[:Constraint] )
    #--> Rules loaded: 2
    #--> [ "board_required", "audit_independence" ]
    #--> [ ]
    library test
  • LoadRuleBase LoadRuleBase: stub for the future rule-base validation system. Accepts a file path, a class instance, or a pre-built profile name (string). For now it just records the source -- the actual rule-evaluation engine will land with the dedicated stzRuleBase class. in stzOrgChart
    oOrg = new stzOrgChart("acme")
    oOrg.LoadRuleBase(new stzSOXRuleBase())
    # LoadRuleBase records the base
    ? len(oOrg.RuleBases()) >= 1
    # ...the base kept its name
    ? (new stzSOXRuleBase()).Name()
    #--> 1
    #--> SOX
    library test
  • SaveTo serialization - file format support in stzGraph
  • LoadFrom serialization - file format support in stzGraph
  • LoadStzGraf .stzgraf format in stzGraph
  • LoadStzRulf .stzrulf format in stzGraph
  • LoadStzRulz .stzrulz format in stzGraph
  • SaveAsStzSim .stzsim format in stzGraph
  • SaveToStzSim .stzsim format in stzGraph
  • SaveAsStzGraf .stzgraf format in stzGraph
  • SaveAsStzRulz .stzrulz format in stzGraph

and 19 more in the reference

Walking and applying

  • Execute query execution in stzGraphQuery
    composed example
    oG = new stzGraph("g")
    oG.AddNode("a")
    oG.AddNode("b")
    oG.Connect("a", "b")
    o1 = new stzGraphQuery(oG)
    ? o1.Run()
    #--> 1
    composed from the signature, run for this page
  • ApplyStzSim .stzsim format in stzGraph
  • ApplySimulation .stzsim format in stzGraph
  • ApplyDerivationRules rule management in stzGraph
  • RunIn The loop, for a caller that has nothing else to do. Answers when the window closes. in stzDiagram
  • ApplyFocusTo focus management in stzDiagram
  • ApplyTemplates template operations in stzDiagram
  • ApplyVisualRules visual rules in stzDiagram
  • MapRoleToPosition org chart linking in stzWorkflow
  • Run collecting findings --------------------------------------------- Run a rule set over a graph and collect its findings (already unified, carrying :subject from each rule's domain). in stzRuleReport

The explanations are the ones the library gives of itself, read from its documentation comments on 2026-10-01 04:14, from the library at commit 0e72e2e2c, by the library's own stzSelfDoc over 635 class sources.

The classes of this area

Narrations about this area