Wissenmangement – Teil I¶
Cosma – Dateinamen und ID’s¶
Das ist ein erster Artikel zum Thema Wissensmanagement. Aktuell verwalte ich große Teile meines Wissens mit Emacs und dort in Org-Dateien (Org-Roam) [1] , die sich ideal strukturieren lassen. Mit dem org-roam-ui-mode bekommt man auch einen optisch ansehnlichen Graph, der bei der Navigation und der Bearbeitung der einzelnen Knoten hilft. Wer mit dem Emacs nichts anfangen kann, für den habe ich hier ein paar Bildschirmfotos zusammengestellt:
Org-Roam: Übersicht über alle Knoten
Org-Roam: Detailansicht
Org-Roam: Detail gefiltert nach »borg«
Cosma: Neuer Graph mit einem Hauptknoten
Cosma: ein Kindknoten
Cosma: Beispiel mit umfangreicherem Graph
Für den privaten Gebrauch ist das Setup ideal und ich möchte es nicht mehr missen. Was mir fehlt, ist die Möglichkeit, den Graph oder Teile davon zu exportieren, um sie im Web verfügbar zu machen. Auf der Suche nach Alternativen, bin ich auf das »Cosma-Projekt« [2] aufmerksam geworden. Damit wird der eben geschilderte Mangel behoben, aber sofort ergeben sich neue Probleme.
Als Quelldateien werden Markdown-Files verwendet, aus denen der Graph generiert wird. Ich muß nun vorerst auf meine geliebten Org-Dateien verzichten. In der Dokumentation wird für die zukünftige Weiterentwicklung auf Org-Dateien als zweite Quelle hingewiesen, nur ist das noch Zukunftsmusik.
Die Markdown-Dateien kann ich ja wie gehabt mit dem Emacs erstellen und bearbeiten. Wichtig ist ein möglichst raffiniertes System, welches es dem Cosma-Projekt erlaubt, aus den einzelnen Dateien, einen Graphen zusammen zu setzen.
Hier der Quellcode für die Datei C2–cosma.md, dem zentralen Knoten.
---
title: Cosma -- Graph
id: 6750
types:
- cosma
tags:
- C2
- cosma
---
# Cosma
----
Ist bei einem neuen Projekt die einzige Datei und erhalte im finalen »cosmoscope.html« nur einen einzigen zentralen Punkt.
Der Kindknoten erhält als Dateiname und in den Metadaten eine Erweiterung:
---
title: Kindknoten
id: 675066
types:
- C2
tags:
- C2B
- Kindknoten
---
# Kindknoten
Weitere Inhalte zum Topic...
Uber einen Link lassen sich die Knoten verbinden:
---
[[6750| zurück]]
Über den Link, der die ID des Elternknoten anspricht, wird eine Verbindung generiert, wie sie im »cosmoscope.html« dann sichtbar wird. Was hat es nun mit den ID’s C2, C2B und den Ziffern 6750 und 675066 auf sich?
Das will ich an dieser Stelle erklären. Für die Verknüpfung von Datenpunkten benötigt man immer einen Bezugspunkt und das ist eine ID. Die wird in Datenbanken und anderen Systemen verwendet, oft ist es ein Zeitstempel wie z.B. im Org-/Org-Roam-System bzw. Denote einem Notiz-System das ebenfalls für den Emacs entwickelt worden ist.
Die Zeitstempelvarianten halte ich für nicht sonderlich geeignet, denn ich will an Hand der Dateinamen schon den groben Zusammenhang erkennen können, ohne immer die Inhalte der Datei betrachten zu müssen. Deshalb habe ich aus dem Luhmann-System eine Variante für mich abgeleitet, die sich als praktikabel herausgestellt hat. Ich stelle hier mein System, neben das von Luhmann [3] .
1,1 Zettelnotiz
1,1a Anschluss an einen Begriff auf 1,1
1,1a1 Anschluss an einen Begriff auf 1,1a
1,1a2 Fortführung der Zettelnotiz von 1,1a1
1,1a2a Anschluss an 1. Begriff auf 1,1a2
1,1a2b Anschluss an 2. Begriff auf 1,1a2
1,1b Fortführung der Zettelnotiz von 1,1a
1,2 Fortführung der Zettelnotiz von 1,1
Luhmann verwendet Zahlen, Buchstaben und das Komma für eine hierarchische Struktur. Die kann ich aus mehreren Gründen nicht direkt in die Welt der Dateien und Ordner übertragen.
Deshalb sieht mein Schema wie folgt aus:
Z1--Zettelnotiz
Z1A Anschluss an einen Begriff auf Z1
Z1A1 Anschluss an einen Begriff auf Z1A
Z1A2 Fortführung der Zettelnotiz von Z1A
Z1A2A Anschluss an 1. Begriff auf Z1A2
Z1A2B Anschluss an 2. Begriff auf Z1A2
Z1A3 Fortführung der Zettelnotiz von Z1A
Z1B Fortführung der Zettelnotiz von Z1
Z2--Zauberei (ein neuen Thema, das mit Z1 in keiner
direkten Verbindung steht)
Weil das von mir gewählte Schema, für die Dateinamen verwendet wird, kann ich an Hand der Dateinamen und der sortierten Anordnung sofort sehen, was ich schon an Themen erfaßt und bearbeitet habe.
Hier ein konkretes Beispiel für die Datei- und Ordnerhierarchie, die mit diesem Namensschema entsteht:
├── P2A2--async
│ ├── P2A2A--set.md
│ ├── P2A2--async.md
│ └── P2A2G--generator.md
├── P2A--basics
│ ├── #805065--basics.md#
│ ├── P2A1A--f-strings__einrueckungen.md
│ ├── P2A1B--f-strings__debug.md
│ ├── P2A1--f-strings.md
│ └── P2A--basics.md
├── P2F1--frameworks
│ ├── P2F1A--framework--air
│ │ ├── P2F1A1--simple-programm.md
│ │ └── P2F1A--framework-air.md
│ ├── P2F1B--framework__fastapi
│ │ ├── P2F1B1--static-folder.md
│ │ ├── P2F1B2--eve.md
│ │ └── P2F1B--fastapi.md
│ ├── P2F1C1--chameleon-template.md
│ ├── P2F1D--framework__datastar
│ │ └── P2F1D--datastar.md
│ ├── P2F1E1--eve.md
│ ├── P2F1E2--engram.md
│ ├── P2F1--frameworks.md
│ ├── P2F1P1--pagefind.md
│ ├── P2F1R1--robyn.md
│ └── P2F1T1--turboapi.md
Ich bin inzwischen dazu übergegangen, nicht nur die Hauptthemen zu nummerieren, sondern auch die zweite Stelle für die Kategorie ebenfalls mit laufenden Nummern zu versehen. Beispiel
P2F1B1–framework__fastapi.md
P2 ist der zweite Begriff, der mit P anfängt: Python (P1 hatte ich vorher schon angelegt und beschäftigt sich mit der Programmierung allgemein.)
F1 ist die erste Kategorie die mit F anfängt: Framework
B ist das zweite Framework, das mir eine Notiz wert war
1 ist eine laufende Nummer zum Framework, in diesem Fall fastapi
framework ist eine Kategorie im Wissensgebiet »Python«
fastapi ist der Topic, zu dem ich detaillierte Informationen speichere
Warum benutze ich keine kleinen Buchstaben wie Luhmann? Nun lassen die Entwickler des »Cosma«-Projektes für die ID’s nur Zahlen (Zeitstempel) zu. Ich kann meinen Mix aus Buchstaben und Zahlen nicht direkt verwenden. Der Trick ist nun Folgender, wenn ich nur Große Buchstaben und Zahlen verwende, kann ich jeden Buchstaben und jede Zahl in eine zweistellige Dezimalzahl verwandeln, wie aus jeder ASCII-Tabelle ersichtlich ist. Mit kleinen Buchstaben funktioniert das nicht in beide Richtungen, denn es gibt auch Buchstaben die dreistellige Dezimalcodes haben z.B. das d == 100. Hier ein Beispiel für die oben verwendeten Buchstaben und deren dezimale Equivalente:
ID |
Dezimal-Code |
|---|---|
Z1 |
9049 |
Z1A |
904965 |
Z1A1 |
90496549 |
Z1A2 |
90496550 |
Z1A2A |
9049655065 |
Z1A2B |
9049655066 |
Z1A3 |
90496551 |
Z1B |
904966 |
Z2 |
9050 |
Nun kann ich die maschinenlesbaren dezimalen ID’s für die interne Verlinkung in Cosma und die Buchstaben-Zahlen-Kombinationen für die Dateinamen verwenden. Beide drücken den gleichen Sachverhalt aus.
Soviel zu meinem Namens- und ID-Schema. Welche Hilfsprogramme ich einsetze, um möglichst wenig Arbeit zu haben, beschreibe ich im nächsten Blog-Eintrag.