Hello everyone, Iām new to the community; discovered Obsidian about a week or so ago. Iāve been enjoying reading use cases and potential solutions (and helping out where I can) as I think about how to leverage Obsidian features.
I have noticed that the more rigid the application (in terms of features and how they can be used) the easier to adopt, but less useful. Conversely, an application with a cornucopia of foundational features but no rigid strictures in their use leads to slower adoption, with the common questions being, āHow do I use it?ā Thatās where we are.
On the one hand, Obsidian is very powerful. On the other hand, I wish it had more analysis features and visualizations; once you put all of your notes in one place, it becomes critical that you can look at the data in different ways to make discoveries. Still, Obsidian is very powerful, and as Spidermanās Uncle once said, āWith great power comes great responsibility.ā
As I continue to review Obsidianās capabilities and prognosticate on potential future features (it being a young product,) Iām constantly thinking about how to structure data so that I can analyze it in different ways, even if that means outside of Obsidian for certain functions. Itās important to think about note / data structure at the start, because one doesnāt want oneās notes to be like the āroach motel for data - it goes in but doesnāt come out.ā Nor would one want to face thousands of notes that have to be restructured.
Reading the OPās question and subsequent dialogue got me to thinking. Iāve never done any formal news/history tracking, but like most people Iāve certainly āconnected the dotsā in my head after reading a few articles, and have wanted to record these discoveries / observations. One tool Iāve found useful in many contexts is the semantic network. Simply put, I like to represent information as nodes of objects / concepts, connected with edges that have definitions representing relationships. There are several very expensive tools that do this as a primary function, but theyāre very expensive and I think used by 3-letter agencies. One affordable tool that can do it for personal data is Tinderbox. When I read the OP question, I began wondering about how I would represent a semantic network in Obsidian. This isnāt straightforward because in Obsidian, edges arenāt named.
Iād like to start with some observations from the dialogue Iāve read here:
-
Hashtags are just a construct that Obsidian recognizes and can predefine the search term for you. Meaning, you can make your own identifiers and rely on the powerful search capability to not only limit your analysis to a subset of data, but also limit the graph.
-
Letās face it, once you amass enough notes, seeing the whole graph at once isnāt all that useful. Iām embarrassed to say that it took me several days to realize that the graph has a search field that allows powerful querying, if you structure your data right. Of course, what ārightā means is entirely up to you.
After reading through this topic thread, I decided to turn to Obsidian to see if I could whip up something quickly to demonstrate how I could use Obsidian to visualize data. I promised my kids that I would read the Harry Potter series since they did, twice. When a story has a lot of characters I start to get confused about relationships, so I kept a paper semantic network to keep it straight in my head. I want to see if I can do this in Obsidian. Iām using this example because itās at hand, and I think you can use it to represent other forms of data and relationships. It took me about 10 minutes to set up.
For my network, each node would be a āthingā that has a type. One type of thing is a person. Edges define things like relationships and verbs. Since this is something Iām doing in an existing vault of other objects, I wonāt bother using hashtags, but rely on my own defined keys instead. Here is the example note for Harry Potter:
type: person
# etype: knows
# etype: friendof
# etype: parentof
This note represents the Character Harry Potter. The type of object is āpersonā. Below this, you see three headings. I need a way to define edge meaning and Iāve used a heading as a key called etype, because we can link to them easily, and know what they mean. The list of etypes here are NOT attributes of Harry Potter, but rather, which edges this object is allowed to accept. After creating some other characters and relationships between them, I went to the graph and specified this search filter:
/^type: person/
This vault has many notes and objects, but Iām only interested in the relationships between people. I get this graph:

Unfortunately thereās no way to put a name on an edge. We see that James Potter has some relationship to Harry Potter and Lily potter. Looking at the James Potter note (object) we find this:
James Potter:
type: person
etype: spouse
Lily Potter > etype spouse
Harry Potter > etype parentof
The last two lines show those two relationships, and you can see how defining the edge type as a header on the target note, we make it clear on the source note what is being defined: James Potter is the spouse of Lily and parent of Harry.
Alas, Dumbledore isnāt associated with anyone. If we want to ask a simple question like, who are friends of Harry Potter, we can select the Harry Potter note and check the backlinks. If you have data with many varying types of associations, this could be a long list of other types of relationships, so we can get a more concise list by looking in the forward direction with a regular search:
/\[\[Harry Potter#etype friendof/
And we get a concise list of Harryās friends. sadly, if we want to do deeper analysis involving higher degrees of separation or inferences, weāll have to step outside of Obsidian. But at least thatās somewhat easy. I just answered a question earlier today about extracting the edges from a graph. If we want to ask the same question (who are Harryās friends) outside of obsidian, on a Mac, open a terminal window, cd to the vault root directory, and issue this command:
egrep -roI ā\[\[Harry Potter#etype friendofā
and you will receive the same list. If you too want to extract all edges for outside analysis, a cheap way is:
egrep -roI ā\[\[[^]|^]+ā | sed ās/:\[\[/ -> /ā
The point is this. If weāre careful about how we set up our ontology, we can do a surprising amount of analysis on any number of topics, with minimal tools. Iām confidant that you could manage news and history if the data is broken down to component parts.