Информационная среда на принципах Open Data

Информационная среда на принципах Open Data

Предлагаемая информационная среда является своего рода децентрализованной социальной сетью. Но в отличии от многих существующих решений — данная среда имеет ряд полезных свойств помимо децентрализации и создана на базе достаточно простых и стандартных технических решений (email, json, текстовые файлы и немного блокчейна). Что позволяет любому желающему с базовыми знаниями программирования создавать свои сервисы для данной среды.

Универсальный идентификатор

В любой онлайн среде идентификаторы пользователей и объектов — являются одной из ключевых элементов системы.

В данном случает в качестве идентификатора пользователя выступает email, который уже фактически стал общепринятым идентификатором для авторизации на сайтах и других сервисах (jaber, openId).

Фактически идентификатор пользователя в данной онлайн среде — это пара login+domain, которая для удобства записывается в привычном для большинства виде. При этом для большей децентрализации каждому пользователю желательно иметь свой домен. Что близко принципам индивеба, где в качестве пользовательского идентификатора используется домен. В нашем случае к своему домену пользователь добавляет никнейм что позволяет создавать несколько аккаунтов на одном домене (для друзей, например) и делает систему адресации более гибкой.

Такой формат идентификатора пользователя не привязан к какой-либо сети. Если пользователь размещает свои данные в TOR сети — то можно использовать домены в зоне .onion, если это сеть с DNS системой на блокчейне — то домены в зоне типа .bit. В итоге, формат адресации пользователей и их данных не зависит от сети, через которую они передаются (везде используется связка login+domain). Для желающих использовать в качестве идентификатора bitcoin/ethereum адрес можно доработать систему под использование псевдо email адресов вида [email protected]

Адресация объектов

Данная онлайн среда фактически является набором объектов, которые описаны в структурированном машиночитаемом виде, ссылаются на другие объекты и привязаны к определённому пользователю (email’у) или проекту/организации (домену).

В качестве идентификаторов объектов используются urn в пространстве имён urn:opendata. Например, профайл пользователя имеет адрес вида:

urn:opendata:profile:[email protected]

Комментарий пользователя имеет адрес вида:

urn:opendata:comment:[email protected]:08adbed93413782682fd25da77bd93c99dfd0548

где 08adbed93413782682fd25da77bd93c99dfd0548 — случайный sha-1 хэш, выступающий в роли id объекта, а [email protected] — владелец данного объекта.

Принцип публикации пользовательских данных

Имея под управлением свой домен пользователь может достаточно просто публиковать свои данные и контент. И в отличии от индибеба, для этого не требуется создавать сайт с html страницами, в которых встроены семантические данные.

Например, базовая информация о пользователе размещается в файле datarobots.txt, который находится по адресу вида

http://55334.ru/[email protected]/datarobots.txt

И имеет содержание такого формата:

Object: user
Services-Enabled: 55334.ru,newethnos.ru
Ethnos: newethnos
Delegate-Tokens: http://55334.ru/[email protected]/delegete.txt

То есть фактически — это набор строк с данными вида ключ->значение, спарсить которые — простая задача для любого человека с базовыми знаниями программирования. А редактировать данные при желании можно через обычный блокнот.

Более сложные данные (профайл, комментарий, пост и т. д.), имеющие свой urn — отдаются в виде JSON объекта по стандартному API (http://opendatahub.org/api_1.0?lang=ru), которое может находиться как на домене пользователя, так и на стороннем сайте, которому пользователь делегировал хранение, публикацию и редактирование своих данных (в строке Services-Enabled файла datarobots.txt). О подобных сторонних сервиса — написано ниже.

Простая онтология и JSON

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

Поэтому для описания объектов в такой среде достаточно использовать JSON вместо более сложного по структуре и парсингу XML (важно не забывать про необходимость низкого порога входа и масштабируемость).

Для получения объекта с известным нам urn — необходимо обратиться к домену пользователя, либо сторонним сервисам, которым пользователь делегировал управление его данными.

В данной онлайн среде каждый домен, на котором существует онлайн-сервис, также имеет свой datarobots.txt размещённый по адресу вида example.com/datarobots.txt с подобным содержанием:

Object: service
Api: http://newethnos.ru/api
Api-Version: http://opendatahub.org/api_1.0

Из которого мы может узнать, что получить данные об объекте можно по адресу вида:

http://newethnos.ru/api?urn=urn:opendata:profile:[email protected]

JSON объект имеет такую структуру:

{
    "urn": "urn:opendata:profile:[email protected]",
    "status": 1,
    "message": "Ok",
    "timestamp": 1596429631,
    "service": "example.com",
    "data": {
        "name": "John",
        "surname": "Gald",
        "gender": "male",
        "city": "Moscow",
        "img": "http://domain.com/image.jpg",
        "birthtime": 332467200,
        "community_friends": {
            "[email protected]": "1",
            "[email protected]": "0.5",
            "[email protected]": "0.7"
        },
        "interests_tags": "cars,cats,cinema",
        "mental_cards": {
            "no_alcohol@main": 8,
            "data_accumulation@main": 8,
            "open_data@main": 8
        }
    }
}

Сервисная архитектура

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

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

Помимо сервисов, позволяющих пользователям публиковать/редактировать данные — в онлайн среде предусмотрен ряд других сервисов, выполняющих относительно сложные задачи, которые достаточно проблематично реализовать на узлах конечных пользователей.

Одним из видов таких сервисов являются хабы данных ( opendatahub.org/ru — пример ), выполняющие роль своего рода веб архива, который собирает все публичные машиночитаемые данные пользователей и предоставляет к ним доступ по API.

Наличие сервисов в такой открытой децентрализованной онлайн среде существенно снижает порог входа для пользователей, так как отсутствует необходимость в установке и настройке собственного узла. В тоже время у пользователя остаётся контроль над своими данными (в любой момент можно сменить сервис которому делегирована публикация данных или создать свой узел).

Если же пользователю вообще не интересно владение своими данными и он не имеет своего домена или знакомого с доменом — то по умолчанию его данными управляет opendatahub.org.

За чей счёт всё это?

Пожалуй главная проблема практически всех подобных децентрализованных проектов — это невозможность их монетизации на уровне, достаточном для стабильного развития и поддержки.

Для покрытия расходов на разработку и маркетинг в данной онлайн среде используются donate + tokens.

Все пожертвования, которые пользователи вносят внутренним проектам/сервисам — являются общедоступными, машиночитаемыми и привязаны к email. Что позволяет учитывать их, например, при вычислении внутрисетевого социального рейтинга и публиковать на страницах пользователей. Когда пожертвования перестают быть анонимными, то фактически пользователи не жертвуют, а “скидываются” на поддержку общей информационной среды. Также как люди скидываются на ремонт мест общего пользования с соответствующим отношением к тем людям, которые отказались скинуться.

Помимо пожертвований, для привлечения средств используются токены эмитированные в ограниченном количестве (400.000), которые начисляются всем кто вносит пожертвования в основной фонд (ethnogenesis).

Дополнительные функции токенов

Каждый токен — является “ключом” для доступа в данную онлайн среду. То есть пользоваться сервисами и быть частью онлайн среды можно только при наличии хотя бы 1 токена, который привязывается к email.

Токены являются хорошим спам-фильтром из-за своей ограниченности. Чем больше в системе пользователей — тем сложнее получить токен и тем более затратно создавать ботов.

Люди, их данные и социальные связи — важнее технологий

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

Создаваемая социальная общность, участники которой имеют свои универсальные идентификаторы (email и свой домен) и структурированные данные (с URN адресами, онтологией и JSON объектами) при появлении лучшего технического решения — может перенести все эти данные в другую онлайн среду, сохранив при этом сформированные связи (рейтинги, оценки) и контент.

В данном посте описан один из элементов сетевой самоорганизованной общности, которая помимо децентрализованной онлайн среды включает в себя ряд оффлайн направлений, которые увеличивают пользу от онлайн среды и являются “заказчиками”, во многом определяющими её функционал. Но это уже темы для других статей, не имеющих прямого отношения к IT и технологиям.

Источник: habr.com