Новые свойства Obsidian

1 сентября 2023

Новые свойства Obsidian

31 августа 2023 года в программе Obsidian появились новые свойства - свойства (properties).  Property - это некоторая характеристика заметки или объекта внешнего мира, описанного в заметке.  В качестве таких описываемых объектов могут выступать например все знакомые, и тогда свойствами описания объекта будут имя, фамилия, дата рождения, и так далее.  Свойства Obsidian позволяют легко и просто добавить к заметке в целом разнообразную информацию - даты, какие-то величины, ссылки. 

Свойства заметки - это просто строчки текста, расположенные в самом верху заметки между двумя комбинациями из трех минусов без пробелов (`---`).   Если вы разделяете куски заметки горизонтальной чертой - то может быть смысл подстраховаться и вместо `---` использовать `***`.   Кусок заметки между двух комбинаций `---` называется frontmatter (шапка, передок) и он подчиняется спецификации YAML. 

Свойства заметки могут иметь два представления - в виде предпросмотра или в виде исходного текста (source mode). Последний режим переключается принудительно выбором в меню и позволяет редактировать текст без оглядки на свойства. Иногда это бывает важно. 

У каждого свойства важны три характеристики - имя свойства (property), формат свойства и содержимое свойства (value).  В отношении имен свойств есть нюансы.  По спецификации YAML в отношении пары property: value действует одно правило - уникальность property.  И при этом допускаются любые символы, в том числе и русские буквы.   Но в Obsidian пошли другим путем и разрешили любые комбинации заглавных и строчных букв в составе property.  То есть надписи `Property:`, `property:` и `pROPERTY:` обозначают теперь одно и то же свойство.  

С буквами других языков не ясно - вроде бы допустимо, но не понятно.  Я предпочитаю по древней программистской привычке давать уникальные названия на английском языке.   Это заставляет дополнительно подумать о смысле названия свойства.  Европейские ученые в аналогичной ситуации формируют название из корней греческого или латинского языков.

На текущий момент доступны шесть форматов свойств: 
- text - строка текста с пробелами (если начать набирать `[[` то можно вставить ссылку на другую таблицу);
- list - одна или несколько строк текста, начинающихся с новой строки и знака `-`, если у списка нет значений - записывается комбинация `[]`, в качестве значений списка могут быть и ссылки; 
- number - число (ни разу не использовал пока);
- checkbox - специальный тип, допускающий значения да(true) и нет(false);
- date - формат для хранения даты, обычно записывается в виде `yyyy-mm-dd`. 
- date & time - формат для хранения даты и времени, обычно записывается как `yyyy-mm-ddThh:mm:ss`(mm - обозначает месяц или минуты).

Режим просмотра заметок source mode поможет разобраться со ссылками.  Ссылки в yaml по спецификации должны браться в кавычки, например `"[[Link]]"`, но кавычки не отображаются в режиме просмотра и не понимаются (пока) в режиме ввода. Необходимо просто набирать на клавиатуре `[[` и раскрывается список выбора ссылки. Дальше Obsidian сам дописывает кавычки и это можно проконтролировать в режиме source mode.  

Существуют несколько типов свойств, имеющих фиксированное поведение: 
- aliases - псевдонимы, используются для удобства наименования заметки на другом языке или в различных грамматических формах
- tags - тэги, ярлыки 
- cssclasses - маленькие стили оформления
Эти свойства всегда имеют тип списка. Но Obsidian понимает старые форматы ввода информации - тэги и стили в старой строке могут быть разделены запятой и пробелом. Obsidian поймет такой формат, но в случае редактирования запишет по новому. 

В случае использования запросов DataView описанное поведение тэгов и псевдонимов может вызвать неудобства.  Поэтому в запросе Dataview вместо строки `tags as Тэги,` теперь пишу `join(tags, ", ") as Тэги`. 

С псевдонимами есть два неудобства:
- ввод псевдонима должен завершаться возвратом каретки (Enter, стрелочка вниз и назад на клавиатуре),
- псевдоним не получится отредактировать просто - надо перейти в режим source mode, и уже там редактировать текст псевдонима. 

Общее удобство или неудобство свойств связано с режимом подстановки. Obsidian запоминает все возможные значения конкретного свойства и при начале ввода предлагает наиболее похожие варианты.  У меня часто используется поле свойств `source:` для указания источника информации - и теперь можно навести порядок в различных написаниях одного и того же источника.  Для поля `author:` удобно выбирать строку для конкретного часто встречающегося автора.  Причем выбор можно делать и мышкой в раскрывающемся списке. 

Поиск по свойствам реализован интересным образом. Можно просто найти все заметки, имеющие свойство, например `[type]`, или `[tags]`. А можно найти все заметки имеющие конкретное значение свойства, например `[type:article]` или `[tags:AI]` вместо более традиционного `tag:#AI`. 

Как это все может отразиться на личной картотеке знаний (также известной как zettelkasten)?  В картотеке может быть некоторое количество различных типов заметок.  З.Аренс в своей книге предлагал как минимум литературные и постоянные заметки.  Другие авторы могут использовать другие типы заметок.  У меня в ходу следующее множество типов заметок `{article, conspectus, insight, opinion, news, question, reference, toc, zitation}`. Раньше эти типы заметок обозначались тэгами `#fullarticle`, `#conspectus` и так далее.  Сейчас я постепенно перехожу со старого обозначения на новое и надеюсь со временем перестать обозначать тип заметки тэгом.  После такого перехода тип заметки не будет мешаться с тэгом содержимого, например на графе. 

Как это использовать на практике?   У меня есть шаблон заметки, который автоматически применяется в случае ее создания.  Этот шаблон содержит перечень основных свойств заметки, которые я регулярно использую: 

---
date: {{date:YYYY-MM-DD}}
type:
aliases:
tags: 
source: 
author: 
title: 
---
# 



***
source:

 

Альтернативный способ ввода новых свойств в существующую шапку - щелкнуть по строке `+Add property` и выбрать использованное ранее свойство или создать совсем новое.  Если щелкнуть по иконке справа от свойства - можно менять его тип, делать операции copy-paste или совсем убрать его.