Перейти к содержимому
Авторский вебсайт. Ошибки и проблемы гарантированы❗

Понятия плагина

Плагин Breadcrumbs использует следующие понятия.

Граф

Граф (Graph) — визуальное представление заметки на схеме.

Плагин Breadcrumbs представляет отношения между заметками в виде графа. Отличие от встроенного представления Obsidian в том, что Breadcrumbs указывает типы и наименования отношений между заметками, а в Obsidian этого нет.

Заметку представляют в виде узла, а отношения между заметками в виде ребра графа.

Для визуализации схемы отношений используют нотацию Mermaid, которую размечают в Markdown как блок кода.

Свойства узла

Свойства узла (Node Attributes) — свойство заметки, необходимое для установления отношений с другой заметкой.

Каждый узел графа Breadcrumbs отображает файл заметки в хранилище Obsidian. Любой узел использует свойства:

  • resolved. Означает — существует (resolved) или не существует (unresolved) в хранилище файл .md заметки.
  • aliases. Любые псевдонимы заметки, которые применяют для подписи на схеме.

Внимание

Не следует применять отношений к несуществующим (unresolved) заметкам, хотя это и возможно. Другие плагины, которые используют API плагина Breadcrumbs могут срабатывать некорректно.

Свойства отношения

Свойства отношения (Edge Attributes) — описание отношения между заметками.

Ребра графа отображают отношения между заметками. Отношения имеют следующие свойства (атрибуты):

  • field. Поле отношения графа.
  • explicit. Обозначение эксплицитного или имплицитного отношения.
  • source. Если отношение эксплицитное, то следует указать источник (edge builder), который добавил это отношение.
  • implied_kind. Если отношение имплицитное, следует указать правило, которое добавило это отношение.
  • round. Если отношение имплицитное, следует указать сколько раз (round) следует выполнить правило.

Сортировка отношений

Сортировка отношений (Edge Sorters) — критерии сортировки отношений между заметками.

Различные операции позволяют сортировать список отношений, в том числе и вложенных. Доступны следующие критерии сортировки:

  • basename. Сортировка по базовому имени целевой заметки.
  • basename_natural. Сортировка по базовому имени с использованием «естественного» порядка (natural sort order), благодаря чему заметки с номерами располагают как note-2, note-10, а не note-10, note-2.
  • path. Сортировка по полному пути к целевой заметке.
  • path_natural. : Сортировка по полному пути к целевой заметке, но с использованием естественного порядка сортировки.
  • field. Сортировка по полю отношения.
  • explicit. Сортировка по степени явности связи. Эксплицитные отношения (explicit) идут перед имплицитными (implied).
    • При совпадении свойства явности для эксплицитных отношений дополнительным критерием служит source, а для неявных — implied_kind.

Существуют и более сложные поля сортировки:

  • neighbour-field:<field>. Сортировка по пути к первому соседу заметки в указанном поле отношений. Полезно для сортировки по следующему соседу.

Обход графа

Обход графа — способ посещения каждого узла графа, начиная с указанного узла.

Существуют различные способы обхода подобно тому, как можно выбирать разные маршруты при перемещении по улицам города. К самым распространённым способам относят:

  • Поиск в глубину (Depth-first search). Идти по одной ветке, заходя в каждое ответвление, отходящее от неё.
  • Поиск в ширину (Breadth-first search). Начала осмотреть все ветви, прилегающие к начальному узлу. Затем все ветки второго кольца веток и так далее.

Группы полей отношения

_Группа полей отношения (Edge Field Groups) — именованный набор полей отношений, который используют для фильтрации отношений.

Вместо того, чтобы каждый раз указывать отдельные поля, можно один раз определить группу полей и вызывать её по наименованию. Например, можно присвоить наименование ups полям up, parent и broader. Любое представление, настроенное на использование группы «ups», будет выполнять обход только по этим трем полям.

Группы полей используют в настройках представлений (Views) для управления областью обхода.

Этапы имплицитных отношений (Implied Relation Rounds)

Этап имплицитных отношений (Implied Relation Rounds) отражает количество проходов плагина для поиска транзитивных отношений.

При генерации имплицитных отношений (implied edges) плагин действует пошагово. Он выполняет проходы в указанном порядке:

  • Отношения нулевого этапа (0). Эксплицитные ссылки, указанные в заметке. На каждом последующем этапе плагин анализирует существующие отношения и применяет правила транзитивности для создания новых отношений. Каждый проход увеличивает этап на единицу.
  • Отношения первого этапа (1). Имплицитные отношения, выстроенные на эксплицитных ссылках нулевого этапа. Эти отношения создают основу для поиска следующего кольца отношений на следующем этапе (проходе).

Внимание

Ограничение в 10 проходов — это максимальное количество этапов.

Транзитивность имплицитных отношений (Transitive Implied Relations)

Транзитивное имплицитное отношение — правило, объединяющее последовательность полей отношений для вывода нового отношения графа.

Каждое правило транзитивности включает следущие параметры:

  • chain. Упорядоченный список полей обхода узлов. Например, [up, up].
  • close_field. Поле, которое будет присвоено новому имплицитному отношению. Например, grandparent.
  • close_reversed. Булево значение true или false. Если указать true, это означает, что ребро направлено от конечного узла к начальному. Если указать false, это означает, что ребро направлено от начального узла к конечному.
  • rounds. Количество итераций (проходов) выполнения правила.

Транзитивное правило следует указать в настройках стороннего плагина Breadcrumbs. Далее: «Settings → Implied Relations → Transitive».

Например, правило chain: [up, up] и close_field: grandparent означает:

  • Если существуют явные ссылки о том, что «A →[up]→ B» и «B →[up]→ C», то существует имплицитное транзитивное отношение «A →[grandparent]→ C».

Параметры отображения узлов

Параметры отображения заметок (Show Node Options) определяют называть заметки в графическом представлении (Views) и блоках кода (Codeblocks).

Возможны следующие способы:

  • ext. Показывать наименование файла с раширением. Например, вместо «заметка» показывать «заметка.md».
  • folder. Показывать каталог файла. Например, “Каталог/заметка”.
  • alias. Показывать псевдоним (alias) заметки вместо её основного наименования. Псевдоним следует указать в метаданных.

Все эти способы доступны в настройках каждого представления (Trail, Prev-Next, Matrix, Tree, Codeblocks).

Фиксация представления

Фиксация представления (Lock View) —

Представления «Матрица» (Matrix View) и «Дерево» (Tree View) можно зафиксировать для определённого пути к заметке. В зафиксированном состоянии представление не будет обновлено при переходе между заметками. Оно привязано к той заметке, на которой зафиксировано.

Фиксация полезна в случае, если необходимо сохранить видимые отношения между заметками, просматривая другие заметки хранилища.

Поиск корня

Поиск корня (Find Root) — поиск вершины иерархического графа.

В режиме иерархии (Tree View) позможен поиск корня (вершины графа). Если в настройках включить данную возможность плагин вместо того, чтобы начать обход с текущего узла:

  • сначала пойдёт вверх, используя настроенную группу полей отношения;
  • найдёт вершину (корень) данной группы полей;
  • затем выстроит полную иерархию (дерево), начная с вершины и до низа.

Например:

  • в хранилище существуют ежедневные заметки с наименованиями в формате YYYY-MM-DD;
  • определено правило плагина с группой «ups», в которой указан список полей [year, month, week, day];
  • текущая открытая заметка «2029-04-15».

Для запроса построения дерева от корня плагин построит дерево от «2029» и ниже, а не от заметки «2029-04-15» и ниже.

Место записи отношений

Место записи отношений (Crumb Destination) —

В настройках плагина Breadcrumbs следует указать куда записывать найденные отношения к указанной заметке. Доступны два варианта:

  • frontmatter. Записать отношение в метаданные заметки. Например, up: [[note]].
  • dataview-inline. Записать ниже метаданных в виде встроенного поля Dataview. Например, up:: [[note]].

Поиск новых отношений происходит при запуске команд:

  • «Freeze Implied Edges». Зафиксировать имплицитные отношения.
  • «Threading». Создать цепочку.

Дополнительные сведения

Concepts