Kastalia Knowledge Management System · Glasperlenspiel template · knot 420

Guide to Kastalia KMS

🌐 public · created AE530127 (27.01.2023) · by DDH · open in the standard editor view · 📽 open as presentation

This guide is organized into several sections, each approachable independently: a brief introduction to the core ideas (Brief Introduction), the project's own path and motivations (Path to Kastalia), how the system is built on the server side (Backend) and in the browser (Frontend), a catalogue of available Templates, the vocabulary of Predicates that knots use to relate to one another, and the free-form Attributes a knot can carry.

Start wherever your curiosity points you -- the graph, true to its own philosophy, has no single correct entry point.

Ancestors (1 superordinated path)

DDH/ Publications/ Books/ Guide to Kastalia KMS

Descendants (at least 26 branches originate here)

  • Guide to Kastalia KMS
    This guide is organized into several sections, each approachable independently: a brief introduction to the core ideas (Brief Introduction), the project's own p
    • is_parent About this Guide ·
      This file was created for the benefit of all AIEDucators, teachers, students, developers and parents wanting to use Kastalia Knowledge Management System (KMS) c
    • is_parent Brief Introduction to Kastalia KMS
      Kastalia Knowledge Management System, or simply ``Kastalia KMS'', is a system for collaborative web-publishing, data-management and archivation of structured i
      • is_parent Graphs ·
        A graph, in the mathematical sense, is simply a set of nodes together with a set of edges connecting pairs of nodes. Kastalia treats its entire universe of disc
      • is_parent Knowledge graphs ·
        A knowledge graph is a graph whose nodes and edges are meant to be interpreted, not just traversed: nodes stand for entities or ideas, and edges carry a specifi
      • is_parent Knots and bounds ·
        The two fundamental tables of Kastalia's database are knots and bounds.A knot is a single addressable unit of content: it has a unique knot_id, a knot_name (its
      • is_parent Templates and views ·
        A template is the piece of code that decides how a given knot (and, typically, its neighbours in the graph) gets turned into an actual page a human can read. Ka
      • is_parent Predicates ·
        Every bound needs a predicate: a short, fixed vocabulary word that says exactly how its subject knot relates to its object knot. Kastalia constrains this vocabu
    • is_parent Path to Kastalia
      Kastalia did not appear out of nowhere. This section gathers the three threads that, braided together, led to the system as it exists today: the philosophical c
      • is_parent Philosophy ·
        Kastalia is named after Hermann Hesse's Castalia, the walled province of pure intellectual play in The Glass Bead Game -- a deliberate signal that the system is
      • is_parent Fiction ·
        Beyond Hesse's Glass Bead Game, Kastalia's design draws loosely on a handful of other fictional and speculative treatments of knowledge-as-structure: Borges' Li
      • is_parent History ·
        Kastalia grew, over several years, out of earlier and smaller tools built for recording, annotating and replaying spoken language data -- the is_uttered_as, ill
    • is_parent Backend
      Kastalia's backend is a Perl application built on the Dancer2 web framework, storing its graph in PostgreSQL. This section describes the two layers that matter
      • is_parent SQL core ·
        Two tables carry almost the entire system: knots(knot_id, knot_name, knot_content, attributes hstore) and bounds(bound_id, sub, predicate, obj, ord, bound_creat
      • is_parent PERL Core ·
        The application's Perl code lives under lib/Kastalia/. Main.pm defines almost every HTTP route -- what URL does what. Core.pm, TT.pm, SelectorQueries.pm and API
    • is_parent Frontend
      What a visitor actually sees is produced entirely by server-rendered Template::Toolkit templates -- there is no separate client-side application framework. This
      • is_parent Template Toolkit ·
        Kastalia configures Template::Toolkit with custom delimiters -- instead of TT's usual [% and %] -- and with ANYCASE enabled, so template directives are not case
    • is_parent Templates ·
      A non-exhaustive sample of the templates this system actually uses, to give a sense of the range:knot is the plain default view, rendering a knot's content and
    • is_parent Predicates
      • is_parent is_parent ·
        Subject is an umbrella term / hyperonym / supertype of the object (hyponym). is_parent is the very first predicate implemented and used in Kastalia and for man
      • is_parent contains ·
        Used when object of the bound is contained in the subject knot.  On the first sight, contains predicate is confusingly similar to is_parent   However,
      • is_parent is_member ·
        Subject (meronym) is a part of object (holonym). Similar to is_parent and contains predicates but with flipped order of parameters.Used mainly by HMPL and BDLP
      • is_parent is_uttered_as ·
        Specifies relation between knot containing text T and knot containing speech recording of one single act of uttering T.Used by templates play, read and paaren.
      • is_parent illustrates ·
        Predicate of type "illustrates" specifies relation between subject knot I whose attribute img_url contains URL of illustration of the object knot.Used by practi
      • is_parent translates ·
        Subject knot is translation of the object knot.
    • is_parent Attributes ·
      Attributes are the free-form, per-knot metadata stored in the attributes hstore column. A handful of names recur often enough across templates to be worth knowi