Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| [[Файл:Tabtree scan 1.png|мини|справа|Tabtree [[СССЧ|Системной схемы старения человека]] c подсветкой синтаксиса в редакторе кода [[Atom IDE|Atom]]]]
| | Формат для унифицированной записи данных и мета-информации об этих данных. Также может использоваться для записи онтологий (как расширение описания мета-данных, ведь фактически онтология задает типы данных). |
| Формат для унифицированной записи данных, мета-данных и онтологий. Предназначен для удобства чтения больших объемов гетерогенных данных как компьютером, так и человеком. Основан на модели представления знаний в виде графа. | |
| == Принципы ==
| |
| * Основной элемент формата - это объект с параметрами. В терминологии Tabtree объекты называются ''айтем (item)''
| |
| * Один айтем - одна строка (см. также про Multiline Tabtree ниже).
| |
| * Части айтема записываются через символ пробела
| |
| <syntaxhighlight lang="Scheme">
| |
| item_id parameter1:value1 parameter2:value2
| |
| </syntaxhighlight>
| |
| * Айтем уникально определяется первым словом (идентификатор). Идентификатор элемента может содержать любые символы, за исключением пробельных.
| |
| * Параметры айтема указываются парами ключ:значение. Каждая пара является отдельным словом и отделяется от соседних пар и идентификатора одиночным пробелом. Ключ и значение разделяются знаком двоеточия : (тоже без пробелов).
| |
| * Айтемы состоят в иерархических отношениях к друг другу. Иерархия задается знаками табуляции в начале строки перед идентификатором айтема. Уровень иерархии равен числу табуляций (в примере показывается знаком `→`), чем табуляций больше, тем глубже (ниже) уровень.
| |
| <syntaxhighlight lang="Scheme">
| |
| Россия type:страна capital:Москва
| |
| →Ростов-на-Дону type:city
| |
| →→Говнярка type:vernacular_region status:сгорела
| |
| →Владикавказ type:city ir:Дзæуджыхъæу
| |
| →→Шалдон type:vernacular_region
| |
| Norge ru:Норвегия
| |
| →Oslo type:city
| |
| →→Grønland type:neighbourhood
| |
| </syntaxhighlight>
| |
| * Если идентификатор состоит из нескольких слов, то знак пробела между ними заменяется на знак подчеркикания `_`. Если имя ключа состоит из нескольких слов, то обычно пробел между ними заменяется на дефис `-`
| |
| * Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "".
| |
| * Если значение ключа - код, то он дается со всеми пробелами, но обрамляется обратными одинарными кавычками ``
| |
| * Все, что идет за знаком точка с запятой ; - считается комментарием (как в [[Racket]])
| |
| | |
| == Наследование параметров ==
| |
| Если в айтеме имя параметра предваряет символ +, то этот параметр со своим значением наследуется всеми айтемами, лежащими по иерархии ниже данного айтема. Значение параметра в одном из нижележащих айтемов может переписаться, если такое же имя параметра с новым значением будет добавлено непосредственно в строку этого айтема.
| |
| <syntaxhighlight lang="Scheme">
| |
| item1 +parameter:10 ; parameter = 10
| |
| →item2 parameter:100 ; parameter = 100
| |
| →item3 ; parameter = 10
| |
| item4 ; parameter не определен
| |
| </syntaxhighlight>
| |
| | |
| == Multiline Tabtree ==
| |
| Когда у объектов много параметров (больше примерно 10), записывать их в одну строку становится неудобно. Для этого случая существует модификация формата TabTree - Multiline Tabtree. В ней объекты разделяются знаками . и <.> (просто точка - если голый идентификатор объекта, без параметров)
| |
| <syntaxhighlight lang="Scheme">
| |
| Россия.
| |
| →Ростов-на-Дону
| |
| type:city
| |
| <.>
| |
| →→Говнярка
| |
| type:vernacular_region
| |
| status:сгорела
| |
| <.>
| |
| </syntaxhighlight>
| |
|
| |
|
| Другой способ решения проблемы с большим числом параметров - разнесение параметров по разным айтемам, аналогично нормализации в базах данных, либо просто группированием более логически связанных параметров по айтемам.
| | == Пример == |
| | |
| == Файловое расширение ==
| |
| * Для Tabtree - <code>.tree</code>
| |
| * Для Multiline Tabtree - <code>.mtree</code>
| |
| | |
| == Пример из нашей базы знаний == | |
| <syntaxhighlight lang="scheme" line> | | <syntaxhighlight lang="scheme" line> |
| ; некоторые факты о трех компаниях ТГ направления | | ; некоторые факты о трех компаниях ТГ направления |
Строка 64: |
Строка 11: |
|
| |
|
| == Использование Tabtree для бэкенда данных == | | == Использование Tabtree для бэкенда данных == |
| Формат используется и в самой '''H+ wiki''' для хранения данных, из которых потом генерируются списки и инфобоксы. Есть планы сопряжения Tabtree с расширением Semantic Wiki. Это позволит еще больше [https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D1%8F разделить данные и их представление], а значит увеличит эффективность сбора данных и их переносимость.
| | Данный формат используется и в самой '''H+ wiki''' для хранения данных, из которых потом генерируются списки и инфобоксы. Есть планы сопряжения Tabtree с расширением Semantic Wiki. Это позволит еще больше разделить данные и их представление, а значит увеличит эффективность сбора данных и их переносимость. |
| | |
| * [https://github.com/prozion/th_world База знаний H+ wiki на github]
| |
| | |
| == Идеологически близкие форматы ==
| |
| * [https://ru.wikipedia.org/wiki/YAML YAML]
| |
| * [https://ru.wikipedia.org/wiki/Org-mode Emacs Org-mode]
| |
| * [https://ru.wikipedia.org/wiki/Turtle Turtle]
| |