How do you manage News and History related topics?

Now that it’s tomorrow, I wanted to make my point a bit clearer regarding the data representation.

Some details

The format of the note examples depicted here is not rigid. Notes about people can certainly have other information including free-form text regarding the background of each person. I only typed up some attributes of the people (objects) that would go into the header. I should also clarify my wording on this point:

The list of etypes here are NOT attributes of Harry Potter, but rather, which edges this object is allowed to accept.

The point is not to restrict connections, but rather to simply be able to define them. Therefore “allowed” is not an appropriate meaning. It would be better to say that those headers reflect the incoming relationship connection types thus far, or what you expect, for that object. There are no restrictions. When I created the first link in the graph from James Potter to Harry, I realized I needed a new connection type of “parent” so I went to Harry’s note and added that header so that I could go back to James and create the link. You could have a note as a sort of data dictionary that documents all of the existing edge types so that you consistently apply them, in addition to other “standard” attributes and their meaning. Rather than use a special prefix character, attributes are reflected as “key: value” pairs on their own line.

Other attributes

I also like to use an attribute called “isa” to be interpreted as is-a. for example, Dumbledore is a wizard. But dumbledore is also a professor and headmaster. Therefore in his note, we would also have:

isa: wizard
isa: professor
isa: headmaster

Who are all of the people who were headmasters?

/^type: person/ /^isa: headmaster/

In this example we really don’t need to isolate person objects, but if you have a large semantic network of data where “headmaster” might be referenced in other contexts, you’d want to be this explicit.

Since I was having fun with the books, I also recorded every spell cast, their meaning, and who cast them. The header on a spell note would look like this:

type: spell

# etype: casts

General description of the spell

To get a graph of people and spells cast, on the graph search filter:

(/^type: person/ /\[\[[^#]*#etype casts/) OR /^type: spell/

This search will also pick up relationships between people, but the search term to the left of the OR limits people to only those who have cast spells. Obsidian does not yet have a way to save searches, but we can store them in a note with an ordered list of titles and search expressions for copy/paste.

I would dearly love to be able to visualize this on a timeline, but that will have to be outside of Obsidian. It would also be nice to work with dates in a comparative way, such as, “Who was/were the President(s) of Chad from 2001 - 2007?” but we don’t have any sort of numerical comparators. Still, I’d code it as I see fit, and do that sort of analysis outside of Obsidian. In Obsidian, we still get to visualize these relationships and walk them.

How about news and history?

How you’d want to use this type of organization method does depend on the types of questions you want to be able to ask. Obsidian can do some heavy lifting of visualizing relationships so long as you account for them in the notes, and then just walk the graph. Unfortunately it looks like Obsidian only implements a single graph algorithm, but there are quite a few. It would be nice if the Obsidian graph settings included algorithm type. For example, one algorithm organizes the data in clusters (similar to word clouds) while another makes circles, and yet another does what Obsidian does now. However I will say that as a general-purpose visualization, Obsidian chose the one that makes the most sense if we are to only have one. Combined with the search filter capability, we can get a lot out of it.

Certainly you would want a large collection of object types to include:

  • Person
  • Country
  • City
  • Event
  • Organization (CDC, WHO, United Nations, etc.)

But these can be developed as you encounter the need to represent something new. You’ll know you’re on the right track if, after a while, adding new attributes, object types, or relationship types becomes a rare event. Then just start walking the graph and find the connections.