Longform lexicon for knowledge graph notes
Bluesky is the biggest user of the AT Protocol, and their definition of a shortform, microblog Lexicon limits each post to 300 characters1.
The WhiteWind blog was one of the first third-party lexicons to exist on AT Protocol, defining a longform Lexicon storing Markdown posts. There is continued interest in a variety of longform lexicons, and my personal interest is in notes that can form a knowledge graph.
My practice of writing linked notes rather than more article-like content goes back to 2020 for my own website. There has been a rise in awareness and usage of grandly named approaches like tools for thought, second brains and so on, that can be more simply be called notes. Everybody takes notes in one way or another!
We can name Notion as an extremely commercially successful version of fancy notes, and a long tale of fan favourites that are more local, indie, and/or open source like TiddlyWiki, Roam, Obsidian, and LogSeq.
The challenge with these systems is that ultimately they are all single-user systems. I have my pile of notes, which I do funky things to turn into a website. Obsidian has Obsidian Publish, where they do funky things to turn your notes into a website.
And from there, we can link to notes like any other web page.
But what if we skipped the part where we turned things into "web" pages, and created a network of linked notes forming a knowledge graph, directly? And that graph included the user accounts of note creators, as well as note likers and blockers and other social and other metadata.
Knowledge Graph Notes on ATProto
The first step of putting Knowledge Graph Notes on ATProto would be to define a longform format that can be used, which is called a Lexicon in ATProto.
Ideally, this would be a very minimal format that works for many uses cases. Here are some initial notes on field definitions:
title
- optional - can use at:// to address, or convention of first h1 in body?
link
- optional
- common use case is to say “this note is ‘about’ this link”
aliases
- optional
- array of plain text alternate titles
body
- plain text? markdown flavoured? or support / extend bsky’s rich text facets for links and @-mentions? (how ugly would this be in plaintext?)
- wikilinks - <a href='https://notes.bmannconsulting.com/#/page/Link to Note' class='noteslink' target='_notes'>Link to Note</a>, works in Obsidian, LogSeq, other systems
- the logic is something like “look for other notes owned by this user with this name and link to it”
- linking to other notes? have to figure out a syntax, eg. <a href='https://notes.bmannconsulting.com/#/page/@bmann.ca/Open Source' class='noteslink' target='_notes'>@bmann.ca/Open Source</a>
- additional features
- e.g. transclusion of at:// -> put a Recipe Exchange, or Smoke Signal “in” a note
- might also render common things like YouTube links / support OEmbed
- character limit?
tags
- optional
- array of tags, align with bsky tag definition
- people have strong feelings about tags! eg no spaces vs spaces, no tags only mentions of other notes, folksonomy vs tag management, etc.
Knowledge Graph App View
Storing publicly published notes where you've published them to your own PDS is a nice start, but it's not very interesting without search and browse.
And, for a graph, visualization!
For ATProto, the app view is what can do these aggregation tasks and interfaces.
This image is a screenshot of my Obsidian notes, highlighting the ATProtocol node and what all is linked to it, and you can see 100s of other notes in the background.
Being able to browse an individual's notes, see notes linked across to other user or topical graphs, and generally to explore data in new ones would be
I also admit that I think that "cool visualization of your data" and "publish data in this format and you'll show up in this interface" are motivators that will make people want to experiment with this format.
Obsidian Plug-In
Obsidian is a widely adopted tool for making knowledge graph notes. It also has a wide array of community plugins (including one that can post to Bluesky).
Obsidian has its commercial Publish service, as well as many other workflows in order to publish to the web.
Being able to directly publish to the KGNotes ATProtocol format means that each user's notes could be directly connected to the graph of everyone else's public notes.
Interested Projects & Next Steps
I previously kicked off discussion by reaching out directly to a number of people & projects interested in integrating with ATProto and wanting something vaguely longform notes shaped.
-
yes yes, not exactly characters, rather graphemes because of Bluesky rich text and facets ↩