Concepts become nodes
Each OKF Concept becomes a Node. Its Concept ID stays the node identity, and YAML frontmatter becomes node properties.
---
type: Person
title: Ada Lovelace
---The PGM Public Draft extends Open Knowledge Format (OKF) with semantic relationships. Describe how your concepts relate, with properties on every connection, all in ordinary Markdown.
---
type: Person
title: Ada Lovelace
---
# Ada Lovelace
[Analytical Engine](../work/analytical-engine.md "{type: contributed_to, from: 1842, to: 1843, role: \"analysis and exposition\"}")PGM adds property graph semantics, not syntax
Human-readable first. Machine-actionable too.Open-source graph viewer · Ada Demo Vault
Start with the connection between Ada and the Analytical Engine. Its role and dates describe the contribution. Open Ada’s note to find the Markdown link behind it, then explore the other connections.
Ada → Analytical EngineLook for contributed_to in the relationship properties below.
Ada Demo Vault · 46 concepts · 124 relationships · CC BY-SA 4.0 · Property Graph Markdown contributors
Download the plugin and the complete Demo Vault to explore these relationships in your own workspace.
A semantic extension of OKF
OKF defines the Knowledge Bundle, Concepts, and Concept Links. PGM adds their property graph meaning. Every PGM bundle remains an OKF bundle, readable without PGM support.
Each OKF Concept becomes a Node. Its Concept ID stays the node identity, and YAML frontmatter becomes node properties.
---
type: Person
title: Ada Lovelace
---Each existing OKF Concept Link becomes a directed Relationship, from the current Concept to its target. Repeated links remain separate relationships.
[Analytical Engine](../work/analytical-engine.md "{type: contributed_to, from: 1842, to: 1843, role: \"analysis and exposition\"}")A YAML flow map in the normal link title carries complete edge properties. The type value is additionally exposed as the graph element type.
Reference implementation included
The same authored relationship can travel to another tool. The pgmark reference processor exports the full graph as JSON, preserving direction, types, and properties. This excerpt shows Ada’s contribution exactly as it appears in the export.
{
"source": "people/ada-lovelace",
"target": "work/analytical-engine",
"type": "contributed_to",
"properties": ["pgm-yaml", "v1", ["mapping", [
[["string","from"],["number","1842"]],
[["string","role"],["string","analysis and exposition"]],
[["string","to"],["number","1843"]],
[["string","type"],["string","contributed_to"]]
]]]
}The exchange format tags values so numbers and text retain their types.
Download the complete JSONRequires Python 3.10–3.14. Download the processor with the canonical Demo Vault, then open a terminal in the folder containing the ZIP.
Download processor + Demo Vaultpython3 -m zipfile -e pgm-reference-processor-0.4.0a1.zip .
cd pgm-reference-processor-0.4.0a1
python3 -m venv .venv
.venv/bin/python -m pip install --constraint parser/constraints.txt .
.venv/bin/pgmark validate demo-vault
.venv/bin/pgmark parse demo-vault --format json > ada.graph.jsonExpected: 46 nodes, 124 relationships, 0 warnings. The export is saved as ada.graph.json.
Open-source Obsidian viewer
A deliberately quiet, read-only viewer for PGM 0.4.0 vaults. Open the graph, find a Concept, follow a Relationship, return to the Markdown.
example-vault folder as a vault in Obsidian.main.js, manifest.json, and styles.css into .obsidian/plugins/pgm-viewer/ inside your vault.Requires Obsidian 1.5.12 or later. Editing stays in the Markdown editor.
Review-ready by design
Start with the core mapping, inspect one real graph, then verify the behavior in code. The draft is intentionally open for implementation feedback.
Public draft · open source
Try the examples in your own tools, read the specification, and bring edge cases. Interoperability reports and implementation feedback are welcome.