JSON-представление информационных ресурсов

Дата последней модификации документа: 16 апреля 2024.

Содержание

  1. Общие сведения
  2. Описание графа (инфоресурса)
  3. Описание вершины (понятия)
  4. Описание дуги (отношения)
  5. Описание типа набора дуг (отношений)
  6. Дополнительный (упрощенный) формат
  7. Примечания
    1. Пути
    2. Спецсимволы
  8. Примеры

1. Общие сведения

Платформа поддерживает работу с инфоресурсами, представленными в формате JSON. Эта поддержка включает в себя с одной стороны экспорт инфоресурсов в данный формат (при помощи редактора инфоресурсов), а с другой стороны - импорт в фонд пользователя (при помощи редактора инфоресурсов и административной системы). С помощью этого функционала становится возможным ручной (посредством системы управления и редактора инфоресурсов) и автоматический (см. документацию по API экспорта-импота) обмен данными со сторонними программами и платформами.

Платформа предлагает два основных формата json файлов: универсальный и онтологоориентированный (также предлагается дополнительный упрощенный формат - см. раздел 6). Различие между основными форматами заключается в способе именования атрибутов json и способе представления потомков вершины. В универсальном формате атрибуты имеют названия в виде англоязычных слов (title, name, path, comment и т.д.), все потомки вершины описываются под атрибутом successors. В онтологоориентированном формате атрибуты имеют названия в виде англоязычных слов с префиксным символом $ ($name, $path, ...), общий атрибут successors для потомков не используется, а вместо этого потомки группируются по их метавершинам, и каждая такая группа помещаются под отдельный атрибут, имеющий имя, совпадающее с именем (значением) этой метавершины (без префиксного символа $). Цель создания онтологоориентированного формата - более удобная навигация к потомкам определённого типа.

2. Описание графа (инфоресурса)

Описание основных сведений об инфоресурсе выполняется в фигурных скобках {} с помощью следующих атрибутов:

3. Описание вершины (понятия)

Описание каждой вершины инфоресурса (в том числе ссылок на вершины этого же и сторонних инфоресурсов) выполняется в фигурных скобках {} с помощью следующих атрибутов: Примечание: Описание корня инфоресурса выполняется на том же уровне, что и описание самого инфоресурса (в тех же {}).

4. Описание дуги (отношения)

Описание входящего в вершину отношения выполняется в рамках описания этой вершины с использованием следующих атрибутов:

5. Описание типа набора дуг (отношений)

Описание типа набора дуг, исходящих из некоторой вершины (при описании метаинформации), выполняется в рамках описания вершин - прямых потомков, у каждой из которых указывается в качестве метавершины (атрибут "meta") либо "описать вариант альтернативы", либо "описать элемент списка".

6. Дополнительный (упрощенный) формат

Упрощенный формат может быть использован только для экспорта инфоресурса. В таком формате выводятся только метки вершин (имена и значения) и метки их мета-вершин. То есть, не выводятся никакие служебные атрибуты, имена вершин являются именами атрибутов, а содержимое нетерминалов и значения терминалов - значениями атрибутов. Значения атрибута по-умолчанию есть объект и лишь в случае вывода нетерминалов, порожденных по мета-дуге со спецификатором "непустой список" (или "возможно пустой список"), и вывода значений терминалов - значение атрибута есть массив. При этом структура формата схожа с онтологоориентированным форматом - потомки выводятся не единым множеством в качестве значения атрибута successors, а распределены по их метапонятиям.

7. Примечания

7.1. Пути

7.2 Спецсимволы


8. Примеры


Путь есть метаинформация meta test 1, в которой под корнем присутствует нетерминал ~copy ~new Nonterm/1, а под ним терминал-сорт для создания строк ~list ~new-clone TermSort2.
Тогда универсальное json-представление этого инфоресурса выглядит так:
{
  "title" : "meta test 1",
  "path" : "user@dvo.ru/Мой Фонд/meta test 1$;",
  "date" : "01.01.2019-10:00:00.000",
  "owner_id" : 1000,
  "json_type" : "universal",
  "ontology" : "Платформа IACPaaS/Ядро платформы/Язык ИРУО$;",
  "context" :
  [
  ],
  "id" : 1,
  "name" : "meta test 1",
  "type" : "КОРЕНЬ",
  "meta" : "Язык ИРУО",
  "successors" :
  [
  {
    "id" : 2,
    "specifier" : "копия",
    "restrictor" : "new",
    "name" : "Nonterm/1",
    "type" : "НЕТЕРМИНАЛ",
    "meta" : "описать элемент списка",
    "successors" :
    [
    {
      "id" : 3,
      "specifier" : "возможно пустой список",
      "restrictor" : "new-clone",
      "name" : "TermSort2",
      "type" : "ТЕРМИНАЛ-СОРТ",
      "valtype" : "STRING",
      "meta" : "описать элемент списка",
      "rcomment" : "",
      "comment" : ""
    }
    ],
    "rcomment" : "",
    "comment" : ""
  }
  ],
  "comment" : ""
}

В свою очередь онтологоориентированное json-представление этого инфоресурса выглядит так:
{
  "$title" : "meta test 1",
  "$path" : "user@dvo.ru/Мой Фонд/meta test 1$;",
  "$date" : "01.01.2019-10:00:00.000",
  "$owner_id" : 1000,
  "$json_type" : "meta",
  "$ontology" : "Платформа IACPaaS/Ядро платформы/Язык ИРУО$;",
  "$context" :
  [
  ],
  "$id" : 1,
  "$name" : "meta test 1",
  "$type" : "КОРЕНЬ",
  "описать элемент списка" :
  [
  {
    "$id" : 2,
    "$specifier" : "копия",
    "$restrictor" : "new",
    "$name" : "Nonterm/1",
    "$type" : "НЕТЕРМИНАЛ",
    "$описать вариант альтернативы" :
    [
    ],
    "$описать элемент списка" :
    [
    {
      "$id" : 3,
      "$specifier" : "возможно пустой список",
      "$restrictor" : "new-clone",
      "$name" : "TermSort2",
      "$type" : "ТЕРМИНАЛ-СОРТ",
      "$valtype" : "STRING",
      "$rcomment" : "",
      "$comment" : ""
    }
    ],
    "$rcomment" : "",
    "$comment" : ""
  }
  ],
  "$описать вариант альтернативы" :
  [
  ],
  "$comment" : ""
}

По данной метаинформации создан целевой информационный ресурс, где по Nonterm/1 создано путём копирования понятие Nonterm/1, а под ним создана строка val"1 и строка-зависимый клон от врешины Nonterm/1.
Универсальный json для данного инфоресурса выглядит так:
{
  "title" : "target 1 by meta test 1",
  "path" : "user@dvo.ru/Мой Фонд/target 1 by meta test 1$;",
  "date" : "20.01.2019-10:00:00.00",
  "owner_id" : 1000,
  "json_type" : "universal",
  "ontology" : "user@dvo.ru/Мой Фонд/meta test 1$;",
  "context" :
  [
  ],
  "id" : 11,
  "name" : "target 1 by meta test 1",
  "type" : "КОРЕНЬ",
  "meta" : "meta test 1",
  "successors" :
  [
  {
    "id" : 12,
    "name" : "Nonterm/1",
    "type" : "НЕТЕРМИНАЛ",
    "meta" : "Nonterm/1",
    "successors" :
    [
    {
      "id" : 13,
      "value" : "val\"1",
      "type" : "ТЕРМИНАЛ-ЗНАЧЕНИЕ",
      "valtype" : "STRING",
      "meta" : "TermSort2",
      "rcomment" : "",
      "comment" : ""
    },
    {
      "id" : 14,
      "value" : "Nonterm/1",
      "type" : "ТЕРМИНАЛ-ЗНАЧЕНИЕ",
      "valtype" : "STRING",
      "meta" : "TermSort2",
      "original" : "user@dvo.ru/Мой Фонд/target 1 by meta test 1$/‴Nonterm/1‴;",
      "rcomment" : "",
      "comment" : ""
    }
    ],
    "rcomment" : "",
    "comment" : ""
  }
  ],
  "comment" : ""
}
Онтологоориентированный json для данного инфоресурса выглядит так:
{
  "$title" : "target 1 by meta test 1",
  "$path" : "user@dvo.ru/Мой Фонд/target 1 by meta test 1$;",
  "$date" : "20.01.2019-10:00:00.00",
  "$owner_id" : 1000,
  "$json_type" : "meta",
  "$ontology" : "user@dvo.ru/Мой Фонд/meta test 1$;",
  "$context" :
  [
  ],
  "$id" : 11,
  "$name" : "target 1 by meta test 1",
  "$type" : "КОРЕНЬ",
  "Nonterm1" :
  [
  {
    "$id" : 12,
    "$name" : "Nonterm/1",
    "$type" : "НЕТЕРМИНАЛ",
    "TermSort2" :
    [
    {
      "$id" : 13,
      "$value" : "val\"1",
      "$type" : "ТЕРМИНАЛ-ЗНАЧЕНИЕ",
      "$valtype" : "STRING",
      "$rcomment" : "",
      "$comment" : ""
    },
    {
      "$id" : 14,
      "$value" : "Nonterm/1",
      "$type" : "ТЕРМИНАЛ-ЗНАЧЕНИЕ",
      "$valtype" : "STRING",
      "$original" : "user@dvo.ru/Мой Фонд/target 1 by meta test 1$/‴Nonterm/1‴;",
      "$rcomment" : "",
      "$comment" : ""
    }
    ],
    "$rcomment" : "",
    "$comment" : ""
  }
  ],
  "$comment" : ""
}