Designing notes with types and links with types

I posted a note in Help yesterday that fell foul of the guidelines. Sorry about that; I’ll try to avoid writing content that looks like spam.
My idea for a plugin is the ability to create specific types of notes that conform to either an existing ontology or a custom ontology. Ideally the note will take on the properties deriving from the ontology class. For a very trivial example, I may want to have a set of notes that I decide are of type myLocalOntology:Article. Each such note could have a hasAuthor property pointing to another note of type myLocalOntology:Person. This property would therefore amount to a typed link. It would be an inverse property, so the Person note would have a corresponding authorOf property pointing back to my Article note.

This would involve being able to define the object properties (relations to other things in the model that may be inverse or symmetrical) and the data properties (pure data values and one-way linked only) for a given note type. Could this perhaps be done in a template?

Anyway, this may all be pie in the sky, but it feels to me like it would be a valuable enhancement to Obsidian. In my earlier thread I had an interesting reply from brimwats but but I have not been able to reply to it. It would be good to pick up that conversation.


Hello Ian,

Could you explain a little how conforming to an existing model would enhance the Obsidian experience?

Apologies in advance for the verbose answer; this is a bit of a hobby horse of mine and it’s an important question that you’ve asked.
The simple answer is that I don’t know that it would enhance the experience of all Obsidian users. I can see from the articles and videos that I’ve researched that people have used the product very effectively in a variety of ways to improve their personal knowledge management. And I can see that people want the freedom to make notes and link them together in whatever way they see fit. What I’m suggesting would not compromise that way of working, but I think it might come to be seen as a useful additional tool in the toolbox.

Like many users here, I have explored many different products and approaches like the usual note-taking applications, plus less well-known products like the Mac-only Tinderbox. These products all lack a couple of capabilities that I would find very helpful in my personal knowledge management, and that I think could apply well to my business.

  1. Having the option (and it need only be an option) to declare the type of thing that I am making; as an old boss of mine was fond of saying, “a little structure goes a long way”. As a trivial example, if I was looking for a person by name in one of my notes it would be helpful if I could restrict the scope of the search to person things and a field or property of the things that held name information. The alternative seems to be a full-text search and anyone who has worked in the search world knows what a world of pain that can be. OK, the context is important; if I wanted to find that person’s name in any context across all of my notes then search is really the only solution. But in my work I am more often looking to build in structure in order to limit ambiguity and aid discoverability.
  2. Conforming to a structure can also improve your knowledge management if you can add some semantics to the link between things. If I had a set of Person notes I could introduce typed links such as knows, worksWith and so on (all of which are provided by the underlying information model that I have chosen to use). Then, if I have other typed notes that represent documents or projects or even abstract ideas, (to me, all of these are things - objects that conform to a class), then I can build links from a Person to those things, such as Person A isAuthorOf Document Z, Person B worksOn Project XYZ, Person C invented OriginalIdea W. In each case what we benefit from the application of the semantic link is greater information value; it’s not just two notes that have a generic link, it’s two well-characterised things that have an equally well-defined relationship.

I’ve been very excited by what I have seen of Obsidian so far, and I’m keen to see whether I can make it part of my work. However, I can see that some of the common problems of finding and making better use of knowledge are only partly addressed through things such as MoCs (which, by the way, I like a lot). I think the missing piece is the extra context and decreased ambiguity that come about through application of a little structure. In exploring your information space, for example, you would get to be able to ask novel questions like “where are all Documents with a known author?”, or “show me the affiliations to all my projects”. Being able to ask “Describe the Person Ian Piper” would return all of the typed links that exist for that Person thing.
This is taking us close to real knowledge graphs of course, which is where I would like to end up, and my gut feel is that this would definitely improve the Obsidian experience for many users.


On the topic of spam: that was an automatic discourse flagging. Most of discourse’s flags aren’t accurate, but it prevents bot attacks better than discord. In your case we ruled that everything was alright, so don’t worry about it.

Ah, thanks for letting me know. Looking forward to some stimulating conversations!

Hi @ianpiper ! thanks for the response.

I agree :slight_smile:

The obsidian community already does some amazing things with the dataview plugin, which has its own query language, and even has DataviewJS that allows the use of Javascript.

Also, what people put in the notes can be very diverse; they might describe trails of thoughts, or ‘things,’ etc. For instance, links between ‘people’ might differ from links that create an argumentative structure.

I still don’t know how to write down my relations. There is a discussion about support for note types that might be interesting.

I imagine the editor could use link types to become ‘smarter’, whatever it would be :).

Sometimes I write relations just to better ‘think’ while writing a digital note.

Or a user that wants to build/curate/maintain a knowledge graph…

I do that simply with tags, each note is: #Person or #Date or #File or #Journal
links cant be tagged though, so they do really need “types of links”


I also agree, this is not semantic that can be achieved any other way and would actually be the bare minimum to claim “links as first citizen” in a software. I miss it dearly to make sense of my tons of interconnected notes.

Hi @cristian

All formal systems have canonical ontologies—an ordering, grouping, and classification.

For example in biology, the system based on Carl Linnaeus, to comprehensively categorize any living creature: Kingdom > phylum > class > order > family > genus > species. This is an ontology, and as a canonical ontology, it is a pre-defined tree. (translation: it is accepted by everyone. No one should re-invent this, is expected to re-invent it, or indeed, is permitted to re-invent it).

if i write an article on a special kind of crab i read about, i should be able to place it within that classical ontology.

Similar ontologies exist for philosophical systems, political systems, engineering, etc.

  1. These ontologies should not be created by any Obsidian user or coder. The pre-existing, open-source hierarchical structures need to be identified (i don’t know where they exist, but they do exist), and linked or imported into Obsidian

  2. In addition to static hierarchies (parent, child, sibling relationships), knowledge is also characterised by dynamic composition (i.e., a user roll his/her own combinations in personal notes, without altering the base ontologies), and ordering. Ordering is an important component of knowledge, which gives the sequence (first this , then that) , which is quite different from parent-child-sibling.

For example, the concept “semiconductor” is IMPOSSIBLE to understand without first understanding “electricity”, “conduction”, and “doping” (at the least).

These are universal characteristics of knowledge. The fact that an obsidian user can roll his/her own label set, hierarchies, or MOCs, cannot and should not overwrite canonical hierarchies.

Obsidian needs an efficient way to represent, or pigeon-hole, notes within specialized ontologies. This will truly open it up.

1 Like


You touch on interesting points here!

I also believe using shared ontologies would be an excellent addition to promoting knowledge creation.

However, sometimes we want to use something other than classical ontologies. So, ‘it depends.’

The PKM communities are incredibly heterogeneous, more than, for example, academia.

Suppose a team of 10 people is using Obsidian to write a script for the next series of Sherlock Holmes on Netflix. They use a very sophisticated system that checks for the story’s consistency. But, of course, since this is fiction where fantastic things happen, such a system will need an ad-hoc Knowledge representation, which won’t necessarily be a common-agreed Scientific Ontology.

What ‘Ontologies’, taxonomies, vocabularies, schemas, etc., people use will depend on the task, their discourse, and in general, the agreements between the people that are generating this knowledge.

I see this as a continuum where on one side, you have the individual, and on the other extreme, is all the people.

One can map one ontology to another, but it’s difficult and sometimes impossible.

Hi @ianpiper ,

The might be what you’re looking for.

It has incredible capabilities such as defining classes (either via metadata attribute or just by adding a tag to a file).

You can define specific set of “attributes” to certain classes of files.

One file class can “inherit” properties from another class.

It is also possible to assign multiple classes to the same note.
E.g. “#people” " #politician", which would assign properties from types “people” and “politician” to the note.

It has powerful “autocomplete” features that allow you to determine the scope of data that is available for selection based on dataview queries.
E.g.: When entering a value on the “participant::” field on a note of fileType “meeting”, display only notes where (type = “people” and folder = “people_db” and family != false).

A configuration like that would show a dropdown list of filtered notes from which you can select (one or multiple).

There are many other features and lots of great videos demonstrating what it can do.

It also allows you to edit fields directly in your dataview tables.


You are using well-established terminology in a weird way. Formal systems don’t have ontologies, let alone all formal systems. An ontology can be defined as a formal system, but formal systems are unrelated to ontologies per se.

The above is not ontology but taxonomy.

These are naive statements. The shortcomings of Linnaean taxonomy are well-known. In no way it is the ultimate system.

They do, but there is little agreement on which ontologies are “canonical”. Ontology as a philosophical study is centuries-old.

I didn’t quite get what you claim to be the universal characteristics of knowledge. Ordering, grouping and classification? Even from the ontological perspective this looks questionable. Epistemological perspective is totally lacking here.

This is very bold claim. Embrace of ontologies alone doesn’t guarantee anything. The prominent illustration is the project of Semantic Web/OWL. In many regards it is a failure.