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": "xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "xmlns.com/foaf/0.1/workplaceHomepage",
      "@type": "@id"
    },
    "Person": "xmlns.com/foaf/0.1/Person"
  },
  "@id": "me.markus-lanthaler.com",
  "@type": "Person",
  "name": "Markus Lanthaler",
  "homepage": "www.tugraz.at/"
}

Сначала JSON-свойства name и homepage, а также тип объекта Person связываются с терминами словаря FOAF, затем значению свойства homepage назначается тип @id: это означает что значение свойства @id (в данном примере "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 будет выглядеть следующим образом:

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

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

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

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

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

Напишите отзыв о статье "JSON-LD"

Примечания

  1. [json-ld.org/spec/latest/json-ld-syntax/ JSON-LD Syntax 1.0] (27 декабря 2011). Проверено 30 декабря 2011.
  2. [www.w3.org/2011/rdf-wg/wiki/Main_Page RDF Working Group].
  3. 1 2 Lanthaler, Gütl, 2012.
  4. [patterns.dataincubator.org/book/follow-your-nose.html Follow Your Nose]. patterns.dataincubator.org. Проверено 19 сентября 2015.
  5. Антониу Г. и др. Принцип «Следуй за своим носом» // Семантический веб. — ДМК Пресс, 2015. — 240 с. — ISBN 978-5-97060-333-8.
  6. [www.w3.org/TR/json-ld/#default-vocabulary JSON-LD 1.0], 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). "[www.markus-lanthaler.com/research/on-using-json-ld-to-create-evolvable-restful-services.pdf On Using JSON-LD to Create Evolvable RESTful Services]" in WS-REST '12. Proceedings of the Third International Workshop on RESTful Design: 25—32, Lyon, France: ACM. DOI:[dx.doi.org/10.1145/2307819.2307827 10.1145/2307819.2307827]. Проверено 2015-09-19. 

Ссылки

  • [json-ld.org/ Официальный сайт JSON-LD]
  • Manu Sporny, Dave Longley, Gregg Kellogg, Markus Lanthaler, Niklas Lindström. JSON-LD 1.0 – [www.w3.org/TR/json-ld/ A JSON-based Serialization for Linked Data]. W3C Recommendation 16 January 2014.


Отрывок, характеризующий JSON-LD

Князь Андрей настоятельно обратился к Козловскому с вопросами.
– Сейчас, князь, – сказал Козловский. – Диспозиция Багратиону.
– А капитуляция?
– Никакой нет; сделаны распоряжения к сражению.
Князь Андрей направился к двери, из за которой слышны были голоса. Но в то время, как он хотел отворить дверь, голоса в комнате замолкли, дверь сама отворилась, и Кутузов, с своим орлиным носом на пухлом лице, показался на пороге.
Князь Андрей стоял прямо против Кутузова; но по выражению единственного зрячего глаза главнокомандующего видно было, что мысль и забота так сильно занимали его, что как будто застилали ему зрение. Он прямо смотрел на лицо своего адъютанта и не узнавал его.
– Ну, что, кончил? – обратился он к Козловскому.
– Сию секунду, ваше высокопревосходительство.
Багратион, невысокий, с восточным типом твердого и неподвижного лица, сухой, еще не старый человек, вышел за главнокомандующим.
– Честь имею явиться, – повторил довольно громко князь Андрей, подавая конверт.
– А, из Вены? Хорошо. После, после!
Кутузов вышел с Багратионом на крыльцо.
– Ну, князь, прощай, – сказал он Багратиону. – Христос с тобой. Благословляю тебя на великий подвиг.
Лицо Кутузова неожиданно смягчилось, и слезы показались в его глазах. Он притянул к себе левою рукой Багратиона, а правой, на которой было кольцо, видимо привычным жестом перекрестил его и подставил ему пухлую щеку, вместо которой Багратион поцеловал его в шею.
– Христос с тобой! – повторил Кутузов и подошел к коляске. – Садись со мной, – сказал он Болконскому.
– Ваше высокопревосходительство, я желал бы быть полезен здесь. Позвольте мне остаться в отряде князя Багратиона.
– Садись, – сказал Кутузов и, заметив, что Болконский медлит, – мне хорошие офицеры самому нужны, самому нужны.
Они сели в коляску и молча проехали несколько минут.
– Еще впереди много, много всего будет, – сказал он со старческим выражением проницательности, как будто поняв всё, что делалось в душе Болконского. – Ежели из отряда его придет завтра одна десятая часть, я буду Бога благодарить, – прибавил Кутузов, как бы говоря сам с собой.
Князь Андрей взглянул на Кутузова, и ему невольно бросились в глаза, в полуаршине от него, чисто промытые сборки шрама на виске Кутузова, где измаильская пуля пронизала ему голову, и его вытекший глаз. «Да, он имеет право так спокойно говорить о погибели этих людей!» подумал Болконский.
– От этого я и прошу отправить меня в этот отряд, – сказал он.
Кутузов не ответил. Он, казалось, уж забыл о том, что было сказано им, и сидел задумавшись. Через пять минут, плавно раскачиваясь на мягких рессорах коляски, Кутузов обратился к князю Андрею. На лице его не было и следа волнения. Он с тонкою насмешливостью расспрашивал князя Андрея о подробностях его свидания с императором, об отзывах, слышанных при дворе о кремском деле, и о некоторых общих знакомых женщинах.


Кутузов чрез своего лазутчика получил 1 го ноября известие, ставившее командуемую им армию почти в безвыходное положение. Лазутчик доносил, что французы в огромных силах, перейдя венский мост, направились на путь сообщения Кутузова с войсками, шедшими из России. Ежели бы Кутузов решился оставаться в Кремсе, то полуторастатысячная армия Наполеона отрезала бы его от всех сообщений, окружила бы его сорокатысячную изнуренную армию, и он находился бы в положении Мака под Ульмом. Ежели бы Кутузов решился оставить дорогу, ведшую на сообщения с войсками из России, то он должен был вступить без дороги в неизвестные края Богемских
гор, защищаясь от превосходного силами неприятеля, и оставить всякую надежду на сообщение с Буксгевденом. Ежели бы Кутузов решился отступать по дороге из Кремса в Ольмюц на соединение с войсками из России, то он рисковал быть предупрежденным на этой дороге французами, перешедшими мост в Вене, и таким образом быть принужденным принять сражение на походе, со всеми тяжестями и обозами, и имея дело с неприятелем, втрое превосходившим его и окружавшим его с двух сторон.
Кутузов избрал этот последний выход.
Французы, как доносил лазутчик, перейдя мост в Вене, усиленным маршем шли на Цнайм, лежавший на пути отступления Кутузова, впереди его более чем на сто верст. Достигнуть Цнайма прежде французов – значило получить большую надежду на спасение армии; дать французам предупредить себя в Цнайме – значило наверное подвергнуть всю армию позору, подобному ульмскому, или общей гибели. Но предупредить французов со всею армией было невозможно. Дорога французов от Вены до Цнайма была короче и лучше, чем дорога русских от Кремса до Цнайма.
В ночь получения известия Кутузов послал четырехтысячный авангард Багратиона направо горами с кремско цнаймской дороги на венско цнаймскую. Багратион должен был пройти без отдыха этот переход, остановиться лицом к Вене и задом к Цнайму, и ежели бы ему удалось предупредить французов, то он должен был задерживать их, сколько мог. Сам же Кутузов со всеми тяжестями тронулся к Цнайму.