How Logseq should build a World Knowledge Graph

World Knowledge Graph


I’m not sure how Logseq is planning to build their stated World Knowledge Graph, but this seems like a reasonable way to begin letting users add structure to their personal knowledge graphs that could eventually be integrated with other knowledge graphs.

If this were to become central to Logseq’s direction, it would make sense to store these relationships in the Logseq database. That would solve any latency concerns and create a very strong foundation for building tools to interface with your knowledge graph.

Logseq has a stated goal to build a World Knowledge Graph. Here’s what I think they should build:

Allow users to build knowledge graphs with their notes

See my proposal for how to do this here: Building a knowledge graph in Logseq

Allow users to check that their knowledge graph is a category, and treat it as one

do I mean bicartesian closed category?

this would probably be in the category of “sets of notes”, and if a user has not stated a relationship between two notes, then that relationship can return the “empty set”

this also means allowing for users to treat combinations of notes like notes of their own


[[organization]] [[meeting]] [[date]]

If in one block I link to all of these names together then I am essentially linking to this page which is an AND of all these three other pages

The key functionality here is for Logseq to treat this combination page like it is a page of its own, and allowing for natural navigation to related pages.

Related pages include: [[organization]] [[meeting]] to zoom out to all meetings with that organization

This is different from namespaces because we don’t want to dictate a hierarchy:

[[organization]] [[date]] and [[organization]] [[meeting]] should be “siblings”

[[organization]] [[meeting]] [[date]] does not need meeting to be the namespace for date or vice versa

allowing for links in names should take care of a lot of this


[[organization a]], [[organization b]], [[project c]]

this is a bit harder, but I think it could have some interesting uses

The default syntax for this feels like it should be to use commas

This is OR page is then treated like a page of its own

notably a link to any of the pages in the OR page shows up as a reference in the OR page

this is different from AND because only references that mention all of the pages in the AND show up in references

Create a general knowledge ontology that users can create translations into

there can be multiple “general ontologies”, perhaps for different industries or areas (academic research, corporate documentation, etc)

for example, a general ontology may be like Joel Chan’s Discourse Graph (types: question, claim, evidence, etc.. relationships: supports, opposes, informs, etc)

if a user can translate their knowledge graph into this “discourse graph ontology”, then other users can see how to utilize that user’s knowledge graph in the context of a discourse graph ontology

a user could create this translation / functor by describing how that user’s knowledge graph types and relationships map to the general ontology’s types and relationships

Translations = functors

here I am using the term Category Theory term functor to describe a (potentially lossy) translation between two “knowledge graphs”

Make it possible to publish a subset of your knowledge graph, and integrate other knowledge graphs into your own

if personal knowledge graphs x and y both have functors to general knowledge graph a, then it becomes possible to integrate x and y so that you can extract knowledge from x into y (or vice versa)

among other details, it would be necessary to let other people’s knowledge graphs live alongside your own, without taking over my own content