Keywords, tags: Open Source Smart Graph Database API for Postgres, Go(lang) API
-
This is a work in progress during 2025, as part of an NLnet project. It's currently in an R&D phase, so comments are welcome but there is much to be done. *
-
See the Medium articles for a conceptual introduction
This project aims to enable an intuitive but semi-formal approach to note taking and reasoning, for knowledge capture, querying, and dissemination of individual thinking easy, for humans and general use. (AI can only capture knowledge from humans, so even if we want to use AI, we'd better get the knowledge representations right.)
Imagine being able to take notes easily, work with them, and later be able to "rummage around" in everything to understand what you were thinking, and how it all fits together. In other words, remaining in control of what you see and ask, rather than handing over to a batch job summary by an LLM text tool in which you get an answer `take it or leave it'.
- Getting started
- A quick tutorial
- The Mission and Approach
- Basics of Knowledge Engineering
- SSTorytelling
- N4L - Notes For Learning/Loading
- searchN4L - preliminary search/testing tool
- Related work and links
- FAQ
The roots of this project go back almost 20 years for me, when I was working in configuration management (with the CFEngine project) and realized that the main problem there was not fixing machinery but rather understanding the monster you've created! Knowledge Management was built into CFEngine 3, but later removed again when `the market wasn't ready'. Over those 20 years, I've studied and learned how to approach the problem in better ways. I've implemented the concepts using a variety of technologies, including my own. In this latest version, I'm combining those lessons to make a version that builds on standard Postgres.
Knowledge capture requires tools for collecting factual notes, data relationships, and structures for representing and organizing them, so that they can be found easily. Many mistakes have been made around this in the past, trying to force discipline onto people at the wrong moment and neglecting to do so when it matters. As a lifelong teacher of ideas, I've studied this problem and think we can do better than what we have today.
One of the goals of this project is to better understand what we call "reasoning". One used to think of reasoning, philosophically, as logical argumentation. As computers entered society we replaced this idea with actual first order logic. But, if you ask a teacher (and if we've learned anything from the Artificial Intelligence journey) then we realize that the way humans arrive at conclusions has a more complicated relationship to logic. We first decide emotionally, narrowly or expansively depending on our context, and then we try to formulate a "logical" story to support that. This is why we strive to study the role of stories in learning and understanding for this project.
The tool-set consistent of several components, starting with:
-
N4L - a standalone Unicode text based note taking language for jotting down notes in a way that can be parsed and loaded into a semantic database. N = note, 4 = 4 semantic type, L = language N4L = notes for loading
-
N4L-db - a version of N4L that depends on the Golang package SSToryline in /pkg and uploads to a postgres database. This version is a compatible superset of N4L which prepares a database for searchN4L.
-
searchN4L - a simple and experimental command line tool for testing the graph database