Tabtree: различия между версиями
Denis.s (обсуждение | вклад) |
Denis.s (обсуждение | вклад) Нет описания правки |
||
Строка 5: | Строка 5: | ||
* Один айтем - одна строка (см. также про Multiline Tabtree ниже). | * Один айтем - одна строка (см. также про Multiline Tabtree ниже). | ||
* Части айтема записываются через символ пробела | * Части айтема записываются через символ пробела | ||
<syntaxhighlight lang="Scheme"> | |||
item_id parameter1:value1 parameter2:value2 | 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> | |||
* Если идентификатор состоит из нескольких слов, то знак пробела между ними заменяется на знак подчеркикания `_`. Если имя ключа состоит из нескольких слов, то обычно пробел между ними заменяется на дефис `-` | * Если идентификатор состоит из нескольких слов, то знак пробела между ними заменяется на знак подчеркикания `_`. Если имя ключа состоит из нескольких слов, то обычно пробел между ними заменяется на дефис `-` | ||
* Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "". | * Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "". |
Версия от 14:55, 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. Это позволит еще больше разделить данные и их представление, а значит увеличит эффективность сбора данных и их переносимость.