an image of a knot


A Libre Knowledge Graph

Update January 2022

It’s been about three months since my last update, so I’d like to really quickly go over what I’ve been doing.


The website is finally up. After some messing around, including spending a week working on my own static site generator 😬, I finally got a site working how I want with Astro. There’s still a bunch of work to do but they are all pretty small tasks I should be able to take care of in the coming weeks.

Ligature Components

The past month I’ve mostly been working on front end stuff. Part of that has been the website and the other part has been working on ligature-components. I’ve decided to drop using Svelte and Bootstrap 5 for frontend work regarding Ligature, and instead have decided to use SolidJS and Shoelace.

Ligature Components is the output of that work. Basically it is a set of reusable components for working with Ligature. The plan is the use them for the playground on this site, ligature-pad a desktop application for working with Ligature, and ligature-lab which is a server side application for working with Ligature. All the basics are covered currently and I’m about to do the first release to npm. As I make progress on this site’s playground and ligature-pad, I’ll be filling in more features.


Prior to working on frontend stuff, I was focusing on ligature-scala. Ligature-Scala is the most complete implementation of Ligature, I killed the TypeScript and the Rust version is on hiatus while I’m focusing on the Scala implementation. It still needs work but it compiles to Scala.js now and will be used as the implementation for both the playground and ligature-pad. The first version has been published to npm and a new version will be published once DLig and Wander support is more complete.


Now that Ligature is getting farther along I’m having to think about practical issues like how users input data. Using a form to input multiple Statements seems very tedious so I wanted users to be able to quickly write out Statements. Using Lig, the basic serialization format for Ligature, could work but would still be tedious because of the nature of Lig. A goal of Lig is that every line contains a single Statement and is independent of any other line. So you could read a Lig file top to bottom or in reverse and you’ll get the same graph in the end. DLig takes some ideas from formats like Turtle and makes some syntax and ideological changes to make it work better with Ligature.

Work on a DLig parser and interpreter is underway and documentation can be found here.

Data Model Changes

One large data model change has occurred recently. While thinking about practical usage of Ligature, I started to question the need for the fourth element of a Statement, the Context. I did a write-up about this change here.

Current Work

Home | Blog Articles