Pull to refresh

WRIO Internet OS. Архитектура: Linked Data и JSON-LD

Reading time8 min
Views3.8K
По итогам опроса в “WRIO Internet OS. Введение”, это первый пост в серии призванной раскрыть технические детали. Информация сможет заинтересовать разработчиков желающих использовать в своих проектах следующие технологии: JSON-LD, блокчеин, Node.js и React. В конце поста вы найдете опрос, который позволит нам узнать, какая следующая тема была бы полезной и интересной для хабросообщества.

Вводное видео о проекте:
www.youtube.com/watch?v=JUiMijJ6tEg English version
www.youtube.com/watch?v=DxA6t2kax_k Русская версия

Сегодняшняя тема: Linked Data и JSON-LD. На примере своего опыта мы расскажем чем данный формат интересен и какие преимущества он предоставляет.


Linked Data, JSON-LD


Что такое Linked Data и JSON-LD? На хабре этот вопрос уже не раз обсуждался, но мы постараемся дать некоторые дополнительные детали и способы его применения.

Википедия подсказывает нам, что:
Linked Data (связанные данные) — это коллекция взаимосвязанных наборов данных во Всемирной паутине. Под этим термином может также пониматься описание методов публикования связанных между собой структурированных данных. Данные методы базируются на веб-стандартах: HTTP, RDF и URIs и позволяют распространять информацию в машиночитаемом виде. Это делает возможным работу с данными из разных источников, в том числе строить запросы.

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

В своей статье Design Issues: Linked Data сэр Тимоти Джон Бернерс-Ли выделяет четыре базовых принципа Linked Data:
  1. использовать URIs для определения сущностей
  2. использовать HTTP URIs таким образом, чтобы на эти сущности можно было ссылаться и чтобы они могли быть найденными человеком и программным клиентом
  3. предоставлять полезную информацию о сущности при условии, что её URI разыменован, используя такие стандарты, как RDF и SPARQL
  4. при публиковании данных в веб включать в описание ссылки на другие сущности (при наличии взаимосвязей) используя URI этих сущностей

    The Web enables us to link related documents. Similarly it enables us to link related data. The term Linked Data refers to a set of best practices for publishing and connecting structured data on the Web. Key technologies that support Linked Data are URIs (a generic means to identify entities or concepts in the world), HTTP (a simple yet universal mechanism for retrieving resources, or descriptions of resources), and RDF (a generic graph-based data model with which to structure and link data that describes things in the world).
    Contributor: Tom Heath, including excerpts from Bizer, Heath and Berners-Lee (2009) (PDF)

Его мысль можно сократить до одного предложения: Linked Data — не просто отдельные файлы, они представляют собой набор страниц связанных в единую семантическую сеть.

Если вы вебразработчик, то наверняка не раз отмечали, что из-за смешения данных и их представления, в случае необходимости обработки информации со стороннего сайта, необходимо изучать API либо разрабатывать парсер. Также сегодняшние веб-страницы легкочитаемы для человека, но не для машин и поисковых сервисов вроде Google. Поэтому им приходится разбирать страницу и пытаться анализировать полученную информацию. Для достижения более высоких позиций в поисковой выдаче некоторые сервисы отдельно подготавливают и отдают поисковым роботам данные в понятном для них виде. Обычно это JSON и в этом случае парсинг не нужен. Однако такой подход требует дополнительных усилий и финансовых затрат при разработке и поддержании сайта. Идея WRIO OS состоит в том, чтобы одна и та же структура сайта подходила как для пользователей, так и для машин. В итоге мы сохраняем данные чистыми: с минимальной HTML разметкой и без обычных дополнительных элементов необходимых для рендера страницы и ее отображения пользователю — этот функционал осуществляется отдельно с помощью WRIO OS тем, см. ниже.

Для понимания того, как поисковые роботы “видят” JSON-LD страницы мы подготовили примеры с визуализатором содержимого JSON-LD:
https://wrioos.com/jsonld-vis/view/?https://webrunes.com
https://wrioos.com/jsonld-vis/view/?https://aa.wr.io/ru/

Каждая такая страница — атомарные данные — представляет собой весь набор данных о единой, неделимой сущности: персона, организация, книга, фильм, песня и т.д. и построена по одной из схем в формате JSON-LD. Формат текстовый, простой и во многом схожий с JSON, обеспечивает свободную децентрализованную обработку / чтение страниц и отлично подходит для создания всевозможных сервисов использующих общедоступный пул связанных данных. То есть вы легко можете читать и использовать файлы лежащие на сторонних серверах также, как если бы они лежали на вашем (открытые данные, см. ниже).

Помимо этого, использование статических файлов JSON-LD вместо базы данных предоставляет множество других преимуществ:
  • нет необходимости в установке и поддержании БД. Связь файлов между собой осуществляется через ссылки в виде mentions
  • согласованность содержимого (см. ниже)
  • содержит только данные, следовательно имеет минимальный размер. Помимо этого JSON-LD — это текст, а значит отлично ужимается, что еще сильнее снижает трафик
  • текстовый формат = безопасность. Позволяет игнорировать все скрипты кроме исполняющего скрипта ноды (см. раздел “Как это работает на практике”)
  • легко может шифроваться end-to-end, а значит предоставлять защиту от прослушки и слежки
  • текстовый формат позволяет создать P2P интернет, передавая файлы через DHT
  • кэширование в браузере. Система способна работать в режиме offline first
  • децентрализация. Любой может присоединиться к расширению пула JSON-LD просто добавив новые файлы и связав их ссылками с существующими
  • поддержка и раздача статических данных проста, дешева, надежна — в случае сбоя может быть утеряна лишь часть данных лежащих на данном сервере
  • данные отлично понимают поисковые системы, что повышает позицию страницы и могут отображаться в поисковой выдаче в виде rich-сниппетов
  • и главная особенность — открывает дверь в семантический веб. Больше нет необходимости в SEO
  • семантика дает возможность создания новых типов сервисов, предоставлять новые возможности для рекомендательных систем, персонализированной рекламы и т.д.

Недостатки убирает один из наших проектов — Taglang, который предоставит дополнительный функционал для работы с JSON-LD свойственный для баз данных. О нем мы расскажем отдельно в случае заинтересованности хабрасообщества. Проект разрабатывается на базе блокчеин и представляет собой общедоступную децентрализованную БД ссылок на JSON-LD с тегами и метаданными.

Логическим продолжением Linked Data являются открытые данные (англ. open data) — концепция, отражающая идею о том, что данные должны быть свободно доступны для машиночитаемого использования и дальнейшей републикации без ограничений авторского права, патентов и других механизмов контроля (википедия, En). В свою очередь, открытые данные тесно связаны с концепцией Open Content (En) и являются необходимым элементом для развития свободного общества вне рамок устаревшего копирайта; открывают путь к новой парадигме Open Copyright — еще один наш проект, до которого, со временем, дойдет очередь рассказа.

Почему важны открытые данные? Тим Бернерс-Ли ответил на этот вопрос следующим образом:
The problem is the dominance of one search engine, one big social network, one Twitter for microblogging. We don’t have a technology problem, we have a social problem.” The problem is not google, or amazon, or facebook. The problem is that online users follow winner-take-all distribution. Is a structural distribution independent from the type of service. Making a new service will not change that.

Свободный перевод: Проблема в доминировании одной поисковой системы, одной соц.сети, одного Твиттера для микроблоггинга. Проблема не техническая, а социальная и не связана с гуглом, амазоном или фейсбуком. Проблема в том, что пользователи, отдавая свои данные централизованным сервисам пораждают массовый эффект — “победитель получает все”. Это структурная проблема распределения данных и создание очередного сервиса не спасет ситуацию.

Иными словами, решение — в создании свободного пула данных, которым не владеет один сервис, а общедоступен для всех и хранится децентрализовано — то, что и обеспечат расбросанные по всему вебу взаимосвязанные файлы в формате JSON-LD.

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

Сегодня, если вы хотите добавить текст с одной страницы на другую, в большинстве случаев вы можете это сделать лишь с помощью copy/paste. Естественно, в случае изменения оригинала, ваша вставка устареет, так как это кусок текста, который начинает жить своей жизнью отдельно от источника в момент создания. Также, в случае простого копирования текста, может быть нарушен копирайт вечно несчастных правовыжимателей. Согласованность данных решает первую проблему — связанности copy/paste с оригиналом — достаточно указать границы начала и конца цитаты из нужного файла и вместо копии в тесте будет отображена нужная вам часть теста из оригинального файла. Графически это можно изобразить так:
image
Следует заметить, для вставки необходима полная загрузка цитируемого JSON-LD, однако даже большие статьи — это лишь десятки kb и едва ли это можно назвать существенной проблемой.
Итог: согласованность данных решает проблему вставки информации из одного источника в другой, этакий глобальный OEmbed (En) без усилий со стороны авторов.

Open Content, о котором мы говорили ранее, решает проблему с копирайтом: в нашем случае автор будет получать часть пожертвований, а потому заинтересован в использовании своего текста на других страницах. Больше мы расскажем в посте об Open Copyright, однако даже без этого сегодня множество людей готовы вкладывать свои силы, знания и время в создание свободно доступной информации, что подтверждает опыт Википедии.

Суммируя все обозначенное выше: вместо отдельных сайтов с закрытой информацией, мы получаем общий пул данных, в развитии, пополнении и обработке которого может участвовать любой желающий; а возможность написания запросов в командной строке без необходимости в API, открывает радужные перспективы по созданию новых типов взаимосвязанных сервисов. Представление не смешано с данными, а сами они лежат в открытом, структурированном и широкораспространенном текстовом формате, который легко хранить, обрабатывать, шифровать и передавать.

Если вы хотите узнать больше о Linked Data и JSON-LD, то специально для вас мы подобрали ссылки по теме (En):
http://json-ld.org/ Data is messy and disconnected. JSON-LD organizes and connects it, creating a better Web.
http://linkeddata.org/ и http://linkeddata.org/guides-and-tutorials
https://developers.google.com/search/docs/guides/intro-structured-data
https://www.youtube.com/watch?v=4x_xzT5eF5Q What is Linked Data?
https://www.youtube.com/watch?v=vioCbTo3C-4 What is JSON-LD?
https://developers.google.com/structured-data/testing-tool/ проверка JSON-LD
http://www.markus-lanthaler.com/research/on-using-json-ld-to-create-evolvable-restful-services.pdf
SEO:
http://www.seoskeptic.com/json-ld-google-knowledge-graph-schema-org-seo/
http://manu.sporny.org/2013/json-ld-google-search/
https://ignitevisibility.com/everything-to-know-about-json-ld-for-seo/

Как это работает на практике


Для создания страницы в формате JSON-LD можно воспользоваться нашим сервисом (в разработке, может уходить временами оффлайн и в данный момент только базовый функционал), либо использовать любой текстовый редактор. Наши страницы пока еще содержат множество пустых полей, что обрабатывается тестировочным Google сервисом как ошибка, что со времнем будет исправлено. Тем не менее уже сегодня можно использовать хаб https://webrunes.com/ru в качестве примера. Его репозиторий находится здесь https://github.com/webRunes/webrunes.com-WRIO-Hub. Отредактированный JSON-LD можно сохранить на любом сервере: Github, Dropbox, Google Drive и пр. и получить собственный хаб.
image
  1. HTML с JSON-LD внутри. Черные стрелки — это mentions-ссылки, которые ведут на другие страницы зачастую лежащие на сторонних серверах
  2. каждый файл (1) содержит ссылку (2) вида
    <body><script type="text/javascript" src="https://wrioos.com/start.js"></script></body>
    
    которая ведет на одну из WRIO OS нод (любой желающий может поднять собственную). Эта ссылка нужна лишь для новых пользователей, в остальных случаях она игнорируется и используется нода выбранная пользователем
  3. start.js обрабатывает JSON-LD и динамически генерирует страницу (3) на базе выбранной темы — пока у нас она лишь одна https://github.com/webRunes/Default-WRIO-Theme
  4. помимо этого скрипт добавляет дополнительный функционал построенный на базе отдельных Node.js приложений (микросервисы): авторизация, комментирование, оплата и так далее. Каждое такое приложение можно рассматривать как плагин. Пользователь сможет собирать свой набор приложений

Если у вас появились вопросы, то, пожалуйста, оставляйте их в комментариях или пишите нам info@webrunes.com и мы обязательно ответим.

Спасибо за ваше внимание и время.
Only registered users can participate in poll. Log in, please.
Следующая тема
0% неинтересно, больше писать не надо0
47.37% блокчеин. Цели и примеры использования9
52.63% Ethereum. Причины выбора и использования в проекте. Смарт-контракты, примеры10
31.58% webGold (WRG). Криптовалюта основанная на ”золотом стандарте”. Построенна на базе Ethereum. Донаты вместо “лайков”. Причины создания6
15.79% Rating. На основе блокчеина, рассчитывается исходя из сумм пожертвований (webGold), децентрализованная система рейтинга3
21.05% Taglang. Привязка тегов к страницам и их хранение в блокчеине. Зачем и почему?4
15.79% Titter. Расширенные твиты: трансформация текста в картинку для преодоления лимита в 140 символов с возможностью передачи донатов в WRG. Работает в качестве системы комментирования к постам. Зачем и почему?3
15.79% Chess. Первая игра на базе Titter. Управление игрой через команды-твиты. Зачем и почему?3
31.58% Open Copyright. Пулл свободно доступных данных, знаний и контента. Платформа распространения с автоматическим распределением доходов авторам равным 1% от всех продаж на его основе. Написали книгу на основе контента, использовали фотографии, видео, аудио? Создали технический девайс? 1% автоматически будет распределен между соответствующими авторами. Отдельная и огромная тема юридической мороки с существующей патентной мафией — методы противостояния. Тему засилья копирайта мы начали с постов на GeekTimes: «Петиции в поддержку сокращения сроков действия авторского права» (https://geektimes.ru/post/165125/) и «Закон о защите авторских прав в цифровую эпоху: величайшая законная афера в мире» (https://geektimes.ru/post/166605/)6
36.84% как ведется разработка. Github, Docker, Travis, Cloudflare и AWS deploy7
47.37% Frontend. Опыт использования React9
57.89% Backend. Опыт использования Node.js11
19 users voted. 6 users abstained.
Tags:
Hubs:
+5
Comments2

Articles