JSON-LD

JSON-LD
Изображение логотипа
Орган стандартизации Консорциум Всемирной паутины
Создан 2010
Опубликован 16 января 2014
Официальный сайт w3.org/TR/json-ld… (англ.)

JSON-LDJavaScript Object Notation for Linked Data» — объектная нотация JavaScript для связанных данных) — один из методов передачи связанных данных с использованием текстового формата JSON. Формат имеет целью упростить усилия разработчиков по преобразованию существующих JSON-данных в JSON-LD.[1] JSON-LD является рекомендацией W3C и разрабатывался Linking Data Community Group, а затем — RDF Working Group[2].

JSON-LD использует понятие контекста (context) для поддержки модели данных RDF. Контекст связывает свойства объектов в JSON-документе с элементами онтологии. Для установления соответствия между синтаксисом JSON-LD и RDF значения JSON-LD должны быть преобразованы к определённому типу или помечены маркером языка. Контекст может находиться непосредственно в JSON-LD-документе или располагаться по указанному для контекста URL. Например, для обычных JSON-документов контекст может быть указан в заголовке Link протокола HTTP[3].

Пример

Следующий пример[3] описывает человека (Person) в терминах онтологии из словаря FOAF.

{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/workplaceHomepage",
      "@type": "@id"
    },
    "Person": "http://xmlns.com/foaf/0.1/Person"
  },
  "@id": "http://me.markus-lanthaler.com",
  "@type": "Person",
  "name": "Markus Lanthaler",
  "homepage": "http://www.tugraz.at/"
}

Сначала JSON-свойства name и homepage, а также тип объекта Person связываются с терминами словаря FOAF, затем значению свойства homepage назначается тип @id: это означает, что значение свойства @id (в данном примере «http://xmlns.com/foaf/0.1/workplaceHomepage») служит для поля homepage уникальным идентификатором (IRI) и определяет контекст, в котором следует обрабатывать данные поля homepage. Это позволяет однозначно описать в JSON-документе объект Person, основываясь на модели RDF, определив все поля в объекте при помощи IRI. Использование работающих (resolvable) ссылок на типы данных в формате IRI позволяет встраивать такие объекты в другие RDF-документы, которые содержат больше информации, а также даёт возможность клиентам получить новые данные, просто пройдя по таким ссылкам. Этот принцип также известен как Follow Your Nose (в буквальном переводе — «следуй за своим носом»)[4][5].

Поскольку все данные имеют семантические аннотации, RDF-парсер сможет определить, что этот документ содержит информацию о человеке (по свойству «@type» содержащему значение «Person»). Помимо этого RDF-парсер понимает словарь FOAF и по этому словарю сможет определить, какое свойство JSON-объекта содержит имя человека (name) а в каком хранится адрес его домашней страницы (homepage).

Для сравнения, эта же информация в формате RDF/N3 будет выглядеть следующим образом:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://me.markus-lanthaler.com/> a foaf:Person ;
    foaf:name "Markus Lanthaler" ;
    foaf:workplaceHomepage <http://www.tugraz.at/> .

В примере выше в контексте можно отдельно описать префикс foaf. В этом случае описание свойств можно укоротить:

{
  "@context": {
    "foaf": "http://xmlns.com/foaf/0.1/",
    "name": "foaf:name",
    "homepage": {
      "@id": "foaf:workplaceHomepage",
      "@type": "@id"
    },
    ...
  }
}

Наиболее часто используемый словарь можно сделать словарём по умолчанию (ключевое слово @vocab). В этом случае имена без префиксов пространства имён будут трактоваться как принадлежащие этому словарю[6]:

{
  "@context": {
    "@vocab": "http://xmlns.com/foaf/0.1/"
  },
  ...
}

Разумеется, приведённые различия являются чисто синтаксическими, не влияющими на представляемый документом RDF-граф (состоит из трёх триплетов, см. ниже) и, следовательно, семантику документа.

 <http://me.markus-lanthaler.com/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
 <http://me.markus-lanthaler.com/> <http://xmlns.com/foaf/0.1/workplaceHomepage> <http://www.tugraz.at/> .
 <http://me.markus-lanthaler.com/> <http://xmlns.com/foaf/0.1/name> "Markus Lanthaler" .

Примечания

  1. JSON-LD Syntax 1.0  (неопр.) (27 декабря 2011). Дата обращения: 30 декабря 2011. Архивировано 12 января 2012 года.
  2. RDF Working Group  (неопр.). Дата обращения: 6 июня 2015. Архивировано 12 июня 2015 года.
  3. 1 2 Lanthaler, Gütl, 2012.
  4. Follow Your Nose  (неопр.). patterns.dataincubator.org. Дата обращения: 19 сентября 2015. Архивировано 19 сентября 2015 года.
  5. Антониу Г. и др. Принцип «Следуй за своим носом» // Семантический веб. — ДМК Пресс, 2015. — 240 с. — ISBN 978-5-97060-333-8.
  6. JSON-LD 1.0 Архивная копия от 1 июня 2013 на Wayback Machine, Default vocabulary

Литература

  • Cesare Pautasso, Erik Wilde, Rosa Alarcon. REST: Advanced Research Topics and Practical Applications. — Springer Science & Business Media, 2013. — ISBN 978-1-4614-9299-3.
  • Lanthaler, Markus and Gütl, Christian (2012). "On Using JSON-LD to Create Evolvable RESTful Services" (PDF). Proceedings of the Third International Workshop on RESTful Design. WS-REST '12. Lyon, France: ACM. pp. 25—32. doi:10.1145/2307819.2307827. Дата обращения: 19 сентября 2015.{{cite conference}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)

Ссылки

  • Официальный сайт JSON-LD
  • Manu Sporny, Dave Longley, Gregg Kellogg, Markus Lanthaler, Niklas Lindström. JSON-LD 1.0 — A JSON-based Serialization for Linked Data. W3C Recommendation 16 January 2014.
Перейти к шаблону «Стандарты W3C»
Продукты
и стандарты
Рекомендации
ООСО
  • IndieAuth[англ.]
  • XAdES[англ.]
  • XBL[англ.]
  • XHTML+SMIL[англ.]
  • XUP[англ.]
Рабочие проекты
Руководства
  • Руководящие принципы доступности веб-контента[англ.]
Инициативы
  • Markup Validation Service[англ.]
  • Web Accessibility Initiative[англ.]
  • WebPlatform[англ.]
Выведенные
из использования
Устаревшие
Организации
Рабочие группы
  • TAG[англ.]
  • CSS
  • SVG[англ.]
  • WebAuthn[англ.]
  • WHATWG
Группы сообщества и бизнеса
  • Web Advertising BG[англ.]
Закрывшиеся группы
  • Device Description (DDWG)[англ.]
  • HTML[англ.]
  • Multimodal Interaction Activity (MMI)[англ.]
ПО
Браузеры
  • Line Mode (1990–)[англ.]
  • Arena (1993–98)[англ.]
  • Agora (1994–97)[англ.]
  • Argo (1994–97)[англ.]
  • Amaya (браузер/редактор, 1996–2012)
Конференции
Перейти к шаблону «Семантическая паутина»
Основы
Подразделы
Приложения
Связанные темы
Стандарты
  • История: Plain Old Semantic HTML
  • DAML+OIL