Yog.FSharp
Getting Started Examples API Reference GitHub

Json Module

JSON graph serialization.

Provides functions to export graphs in JSON format for data interchange and web applications.

Example

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
open Yog.IO
open Yog.Model

let graph =
    empty Directed
    |> addNode 1 "Start"
    |> addNode 2 "End"
    |> addEdge 1 2 5

// Export to JSON
let json = Json.render graph
File.WriteAllText("graph.json", json)
namespace Yog
namespace Yog.IO
module Model from Yog
<summary> Core graph data structures and basic operations for the yog library. This module defines the fundamental `Graph` type and provides all basic operations for creating and manipulating graphs. The graph uses an adjacency list representation with dual indexing (both outgoing and incoming edges) for efficient traversal in both directions. </summary>
val graph: Graph<string,int>
val empty: graphType: GraphType -> Graph<'n,'e>
<summary> Creates a new empty graph of the specified type. ## Example ```fsharp let graph = Model.empty Directed ``` </summary>
union case GraphType.Directed: GraphType
<summary> A directed graph where edges have a direction from source to destination. </summary>
val addNode: id: NodeId -> data: 'n -> graph: Graph<'n,'e> -> Graph<'n,'e>
<summary> Adds a node to the graph with the given ID and data. If a node with this ID already exists, its data will be replaced. ## Example ```fsharp graph |&gt; addNode 1 "Node A" |&gt; addNode 2 "Node B" ``` </summary>
val addEdge: src: NodeId -> dst: NodeId -> weight: 'e -> graph: Graph<'n,'e> -> Graph<'n,'e>
<summary> Adds an edge to the graph with the given weight. For directed graphs, adds a single edge from src to dst. For undirected graphs, adds edges in both directions. &gt; **Note:** If `src` or `dst` have not been added via `addNode`, &gt; the edge will still be created in the edge dictionaries, but the &gt; nodes will be missing from `graph.Nodes`. This creates "ghost nodes" &gt; that are traversable but invisible to functions that iterate over &gt; nodes (e.g. `order`, `allNodes`). Use `addEdgeEnsured` to &gt; auto-create missing endpoints with a default value. ## Example ```fsharp graph |&gt; addEdge 1 2 10 ``` </summary>
val json: string
module Json from Yog.IO
<summary> JSON graph serialization. Provides functions to export graphs in JSON format for data interchange and web applications. ## Example ```fsharp open Yog.IO open Yog.Model let graph = empty Directed |&gt; addNode 1 "Start" |&gt; addNode 2 "End" |&gt; addEdge 1 2 5 // Export to JSON let json = Json.render graph File.WriteAllText("graph.json", json) ``` </summary>
val render: graph: Graph<'n,'e> -> string
<summary> Converts a graph to JSON format. The JSON format is suitable for data interchange, web APIs, and storage. Node and edge data are converted to strings using their `ToString()` method. **Time Complexity:** O(V + E) ## Example ```fsharp let graph = empty Directed |&gt; addNode 1 "A" |&gt; addNode 2 "B" |&gt; addEdge 1 2 10 let json = Json.render graph // { // "kind": "Directed", // "nodes": [ // { "id": 1, "data": "A" }, // { "id": 2, "data": "B" } // ], // "edges": [ // { "source": 1, "target": 2, "weight": "10" } // ] // } ``` ## Use Cases - Web API responses - Data persistence - Interoperability with other languages/tools - Graph database import/export </summary>

Functions and values

Function or value Description

render graph

Full Usage: render graph

Parameters:
Returns: string

Converts a graph to JSON format.

The JSON format is suitable for data interchange, web APIs, and storage. Node and edge data are converted to strings using their ToString() method.

Time Complexity: O(V + E)

Example

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
let graph =
    empty Directed
    |> addNode 1 "A"
    |> addNode 2 "B"
    |> addEdge 1 2 10

let json = Json.render graph
// {
//   "kind": "Directed",
//   "nodes": [
//     { "id": 1, "data": "A" },
//     { "id": 2, "data": "B" }
//   ],
//   "edges": [
//     { "source": 1, "target": 2, "weight": "10" }
//   ]
// }

Use Cases

  • Web API responses
  • Data persistence
  • Interoperability with other languages/tools
  • Graph database import/export
val graph: obj
val json: obj

graph : Graph<'n, 'e>
Returns: string

writeFile path graph

Full Usage: writeFile path graph

Parameters:
    path : string
    graph : Graph<'n, 'e>

Renders a graph to a JSON file.

Example

1: 
2: 
3: 
4: 
5: 
6: 
7: 
let graph =
    empty Directed
    |> addNode 1 "A"
    |> addNode 2 "B"
    |> addEdge 1 2 5

Json.writeFile "output.json" graph
val graph: obj

path : string
graph : Graph<'n, 'e>