|
|
|
|
|
by mat-mgm
29 days ago
|
|
Hi, project developer here,
I developed this project (kb-prolog) and its sibling (Humanist) as an experiment to try and improve the way I handle information (normally scattered in plain files and directories) by building structure on top that, ideally, should represent the semantic closeness of information entities (e.g. files and concepts). I used a content addressable storage inspired by Nix to bridge unstructured information in files with the system I am building. Then I combined SQLite as the persistence layer and Trealla Prolog as the logic layer for knowledge representation and inference. I began trying to use C to orchestrate all these components, but switched to a Prolog core after struggling with reliable read and write access from C to the in-memory predicates in Trealla. I tried as much as possible keeping the program self-contained. I ended up with this statement predicate as KR building block which behaves as an RDF triple with properties. Right now, the project's bottleneck is data ingestion, since constructing the statements manually is tedious. I have tried using LLMs to generate Prolog files with facts to be ingested, and that works, but is not friction-less. The project is meant as a personal knowledge management tool that responds to my informational needs (and hopefully some else's too). In that regard, I wanted to try to implement context tracking. This is an idea I had in which, when you are multi-tasking, you need to switch contexts often depending on task, project, or life aspect you are considering at any given moment. This makes tracking the individual (and sometimes interdependent) state of each of these things hard. The goal of context tracking is to provide a way to load or visualize the exact context you need for the thing you are focusing on at this precise moment. The program may store and entire knowledge graph which you can load, but also allows loading only the subgraph around a selected entity. Version history of the knowledge graph is also important since you want to track its evolution. Humanist provides a more polish interface with similar capabilities. Any feedback on how to take these ideas further would be awesome. |
|