Tabtree: различия между версиями
Denis.s (обсуждение | вклад) Нет описания правки |
Denis.s (обсуждение | вклад) Нет описания правки |
||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Файл:Tabtree scan 1.png|мини|справа|Tabtree [[СССЧ|Системной схемы старения человека]] c подсветкой синтаксиса в редакторе кода [[Atom IDE|Atom]]]] | |||
Формат для унифицированной записи данных, мета-данных и онтологий. Предназначен для удобства чтения больших объемов гетерогенных данных как компьютером, так и человеком. Основан на модели представления знаний в виде графа. | Формат для унифицированной записи данных, мета-данных и онтологий. Предназначен для удобства чтения больших объемов гетерогенных данных как компьютером, так и человеком. Основан на модели представления знаний в виде графа. | ||
== Принципы == | == Принципы == | ||
Строка 8: | Строка 9: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Айтем уникально определяется первым словом (идентификатор). Идентификатор элемента может содержать любые символы, за исключением пробельных. | * Айтем уникально определяется первым словом (идентификатор). Идентификатор элемента может содержать любые символы, за исключением пробельных. | ||
* Параметры айтема указываются парами ключ:значение. Каждая пара является отдельным словом и отделяется от соседних пар и идентификатора одиночным пробелом. | * Параметры айтема указываются парами ключ:значение. Каждая пара является отдельным словом и отделяется от соседних пар и идентификатора одиночным пробелом. Ключ и значение разделяются знаком двоеточия : (тоже без пробелов). | ||
* Айтемы состоят в | * Айтемы состоят в иерархических отношениях к друг другу. Иерархия задается знаками табуляции в начале строки перед идентификатором айтема. Уровень иерархии равен числу табуляций (в примере показывается знаком `→`), чем табуляций больше, тем глубже (ниже) уровень. | ||
<syntaxhighlight lang="Scheme"> | <syntaxhighlight lang="Scheme"> | ||
Россия type:страна capital:Москва | Россия type:страна capital:Москва | ||
Строка 23: | Строка 24: | ||
* Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "". | * Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "". | ||
* Если значение ключа - код, то он дается со всеми пробелами, но обрамляется обратными одинарными кавычками `` | * Если значение ключа - код, то он дается со всеми пробелами, но обрамляется обратными одинарными кавычками `` | ||
* Все, что идет за знаком точка с запятой ; - считается комментарием (как в Racket) | * Все, что идет за знаком точка с запятой ; - считается комментарием (как в [[Racket]]) | ||
== Наследование параметров == | == Наследование параметров == | ||
Если в | Если в айтеме имя параметра предваряет символ +, то этот параметр со своим значением наследуется всеми айтемами, лежащими по иерархии ниже данного айтема. Значение параметра в одном из нижележащих айтемов может переписаться, если такое же имя параметра с новым значением будет добавлено непосредственно в строку этого айтема. | ||
<syntaxhighlight lang="Scheme"> | <syntaxhighlight lang="Scheme"> | ||
item1 +parameter:10 ; parameter = 10 | item1 +parameter:10 ; parameter = 10 | ||
Строка 35: | Строка 36: | ||
== Multiline Tabtree == | == Multiline Tabtree == | ||
Когда у объектов много параметров (больше примерно 10), записывать их в одну строку становится неудобно. Для этого случая существует модификация формата TabTree - Multiline Tabtree. В ней объекты разделяются знаками . и <.> (просто точка - если голый идентификатор | Когда у объектов много параметров (больше примерно 10), записывать их в одну строку становится неудобно. Для этого случая существует модификация формата TabTree - Multiline Tabtree. В ней объекты разделяются знаками . и <.> (просто точка - если голый идентификатор объекта, без параметров) | ||
<syntaxhighlight lang="Scheme"> | <syntaxhighlight lang="Scheme"> | ||
Россия. | Россия. | ||
Строка 64: | Строка 65: | ||
== Использование 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://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 разделить данные и их представление], а значит увеличит эффективность сбора данных и их переносимость. | ||
* [https://github.com/prozion/th_world База знаний H+ wiki на github] | |||
== Идеологически близкие форматы == | == Идеологически близкие форматы == |
Текущая версия от 15:30, 12 марта 2021
Формат для унифицированной записи данных, мета-данных и онтологий. Предназначен для удобства чтения больших объемов гетерогенных данных как компьютером, так и человеком. Основан на модели представления знаний в виде графа.
Принципы[править]
- Основной элемент формата - это объект с параметрами. В терминологии Tabtree объекты называются айтем (item)
- Один айтем - одна строка (см. также про Multiline Tabtree ниже).
- Части айтема записываются через символ пробела
item_id parameter1:value1 parameter2:value2
- Айтем уникально определяется первым словом (идентификатор). Идентификатор элемента может содержать любые символы, за исключением пробельных.
- Параметры айтема указываются парами ключ:значение. Каждая пара является отдельным словом и отделяется от соседних пар и идентификатора одиночным пробелом. Ключ и значение разделяются знаком двоеточия : (тоже без пробелов).
- Айтемы состоят в иерархических отношениях к друг другу. Иерархия задается знаками табуляции в начале строки перед идентификатором айтема. Уровень иерархии равен числу табуляций (в примере показывается знаком `→`), чем табуляций больше, тем глубже (ниже) уровень.
Россия type:страна capital:Москва
→Ростов-на-Дону type:city
→→Говнярка type:vernacular_region status:сгорела
→Владикавказ type:city ir:Дзæуджыхъæу
→→Шалдон type:vernacular_region
Norge ru:Норвегия
→Oslo type:city
→→Grønland type:neighbourhood
- Если идентификатор состоит из нескольких слов, то знак пробела между ними заменяется на знак подчеркикания `_`. Если имя ключа состоит из нескольких слов, то обычно пробел между ними заменяется на дефис `-`
- Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "".
- Если значение ключа - код, то он дается со всеми пробелами, но обрамляется обратными одинарными кавычками ``
- Все, что идет за знаком точка с запятой ; - считается комментарием (как в Racket)
Наследование параметров[править]
Если в айтеме имя параметра предваряет символ +, то этот параметр со своим значением наследуется всеми айтемами, лежащими по иерархии ниже данного айтема. Значение параметра в одном из нижележащих айтемов может переписаться, если такое же имя параметра с новым значением будет добавлено непосредственно в строку этого айтема.
item1 +parameter:10 ; parameter = 10
→item2 parameter:100 ; parameter = 100
→item3 ; parameter = 10
item4 ; parameter не определен
Multiline Tabtree[править]
Когда у объектов много параметров (больше примерно 10), записывать их в одну строку становится неудобно. Для этого случая существует модификация формата TabTree - Multiline Tabtree. В ней объекты разделяются знаками . и <.> (просто точка - если голый идентификатор объекта, без параметров)
Россия.
→Ростов-на-Дону
type:city
<.>
→→Говнярка
type:vernacular_region
status:сгорела
<.>
Другой способ решения проблемы с большим числом параметров - разнесение параметров по разным айтемам, аналогично нормализации в базах данных, либо просто группированием более логически связанных параметров по айтемам.
Файловое расширение[править]
- Для Tabtree -
.tree
- Для Multiline Tabtree -
.mtree
Пример из нашей базы знаний[править]
; некоторые факты о трех компаниях ТГ направления
компании +type:ТГ
Криорус start:2005 hq:Москва d:"Единственная в России компания, которая занимается крионикой"
Alcor start:1972 hq:Scottsdale
Celularity start:2016 ceo:Robert_Hariri purchased-tech-from:Celgene_Corporation,Sorrento_Therapeutics,United_Theraupeutics,Human_Longevity
Использование Tabtree для бэкенда данных[править]
Формат используется и в самой H+ wiki для хранения данных, из которых потом генерируются списки и инфобоксы. Есть планы сопряжения Tabtree с расширением Semantic Wiki. Это позволит еще больше разделить данные и их представление, а значит увеличит эффективность сбора данных и их переносимость.