makāmau

makāmau ist der Projektname eines Wissensmanagement-Systems, das in Rust geschrieben ist. Die Web-GUI verwendet im Frontend WebAssembly und im Server Hyper.rs.

Alternativen

Unstrukturierte Informationen legte ich früher in Wikis ab. Strukturierte Informationen (hauptsächlich Weblinks und deren Zusammenhänge) bis 2007 im Dienst del.icio.us. Dessen mehrfache Besitzerwechsel führten zu Regressionen.

Die Auffindbarkeit von Inhalten in Wikis ist selbst mit Volltextsuche nicht ideal. Zudem ist es schwierig, verteilte Abschnitte zusammenzustellen, um sie so mit dem jeweiligen Publikum zu teilen. Letzteres ist zwar die Stärke von DITA, dessen Implementierungen sind aber entweder kommerziell oder komplex in der Benutzung und Konfiguration oder beides.

Tags, wie bei del.icio.us, bilden die Zusammenhänge nicht ausreichend ab. Möchte man diese präzise mit Subjekt/Prädikat/Objekt-Tripeln definieren, so ist dies nur in exotischen semantischen Wikis oder in noch exotischeren und oft komplexen Ontologie-Editoren möglich.

Da Alternativen u.a. keine qualifizierten Relationen unterstützten, experimentierte ich mit eigenen Ansätzen:

Die Daten konnten über Formate wie XML, JSON und RDF-Turtle zwischen den System ausgetauscht werden.

Eigenschaften

Aus Erfahrungen mit den unterschiedlichen Lösungen führten zu Mindestanforderungen an ein optimales System.

Unabhängigkeit von Technologien

Das aktive Ökosystem für RDF konzentriert sich um Python und JVM; für das Property-Graph-Datenmodell im wesentlichen nur um JVM. Die Wahl des Datenmodells schränkt als technische Lösungen ein. Mittels REST-APIs lässt sich zwar eine Entkopplung erreichen, aber auch dies stellt eine nicht unerhebliche Randbedinung dar.

UUID

Sprechende Node-IDs, wie sie bei RDF üblich sind, haben den Nachteil, dass sich Umbenennungen auf den gesamten Datenbestand auswirken. Dies zu minimieren, zwingt bei Erstellung von Nodes, sich zeitaufwändig stabile IDs zu überlegen.

Die Notwendigkeit für sprechende Node-IDs entfällt, wenn Software zur Verfügung steht, die generierte IDs beim Lesen und Editieren durch Menschen auf sprechende Namen übersetzt.

UUID können dezentral generiert werden. Dies erlaubt Austausch verteilter Daten. Nachteilig ist die relativ große Datenmenge von 128 Bit (16 Bytes) bzw. 32/36 Bytes in ASCII-Darstellung. Viele RDBMS unterstützen keine 128-bit Integer-Zahlen.

iterative Erfassung

TODO

Objekt-Typen und -Attribute

TODO: Koordinaten, URLs

Dokumente

TODO: iterative Strukturierung

Name

Hawaiianisch-klingende Namen und japanisch-anmutende Überstriche finde ich interessant. Die Übersetzung von „weise“ in's Hawaiianisch zeigte, dass dieser Name bereits vergeben ist. Variationen führten zu „makamau“, worin man „maka“ (= Auge) und „mau“ (= viele) erkennen könnte. Der Überstrich auf dem mittleren „ā“ betont die Symmetrieachse und deutet Stabilität und Dynamik an.

made with makāmau