Obsidian Properties: Best Practices and Why?

I’d like to share my approach if I may.

At root, i.e. first level variables, I have data like created_at, and updated_at that record when the file was created and modified. I also have a unix_timestamp just in case something happens to created_at. They are handled automatically, so I don’t need to worry. I have title which copies the file name, but I am too lazy to fill it out sometimes. Status, which may be discharged (not expected to be updated), evergreen (expected to be updated continually), or sprout (expected to be updated and discharged), fleeting (anything else). Languages which is a list that shows target languages of the note. As a bilingual I imagine it will be helpful for me to sort notes by language, or a mix of languages. Aliases pretty standard. And genesis which tells me the origin of a note. For example, something that I wrote completely out of my head would be original. If I had an inspiration from a song, or have any other identifiable source that helped me write this note, that would be derived. If I make a note of something I have learned, like definition of a word “Velocity”, that would be external. Mixed would be a note that combines notes of derived/original and external origin. This variable helps me to keep track of how much of my own thoughts are in the vault. If there are too little, I can think of focusing on creating more derived/original notes.

Now, I have my own philosophy for this, and from now on starts the most interesting part. I mentioned root of the YAML variables because it is important. I treat all root variables like variables that belong to the file. For example, if I have a file type of “event”, I wouldn’t put the location of the building where the birthday party was at the root location variable. It is reserved for the location where I’ve taken the note (i.e. created the file). So, what do I do? I create a root variable called event and then populate it with variable location, name, date, address, etc. I feel like it is a robust and logical philosophy that allows to keep my YAML flexible and avoid as much interference in the future as possible.
So it looks like this:

type: event
event:
 location: [12345, 12345]
 type: birthday
 date: 2023-06-14T22:00:00.000Z
 state: passed

To keep track of my syntax I create meta files that describe templates for each of those variables. It makes it convenient. For example, if I want to get the length of a video I can just call video.length in the dataview, which makes sense since the file has type = video. Just length doesn’t make sense as it could be interpreted as a length of a file.
But as for as I know, properties do not support nesting yet? I wouldn’t tell as I’m not an insider. Also plugins like map view have no setting to specify which location variables to look at. So it does create some friction, but ultimately I think it is worth it.

8 Likes