JSON
- 1 year ago
- 0
- 0
JSON-LD (« J ava S cript O bject N otation for L inked D ata» — объектная нотация JavaScript для связанных данных) — один из методов передачи связанных данных с использованием текстового формата JSON . Формат имеет целью упростить усилия разработчиков по преобразованию существующих JSON-данных в JSON-LD. JSON-LD является рекомендацией W3C и разрабатывался Linking Data Community Group, а затем — RDF Working Group .
JSON-LD использует понятие контекста (context) для поддержки модели данных RDF . Контекст связывает свойства объектов в JSON-документе с элементами онтологии . Для установления соответствия между синтаксисом JSON-LD и RDF значения JSON-LD должны быть преобразованы к определённому типу или помечены маркером языка. Контекст может находиться непосредственно в JSON-LD-документе или располагаться по указанному для контекста URL. Например, для обычных JSON-документов контекст может быть указан в заголовке Link протокола HTTP .
Следующий пример описывает человека (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
(в буквальном переводе — «следуй за своим носом»)
.
Поскольку все данные имеют семантические аннотации, RDF-парсер сможет определить, что этот документ содержит информацию о человеке (по свойству «@type» содержащему значение «Person»). Помимо этого RDF-парсер понимает словарь FOAF и по этому словарю сможет определить, какое свойство JSON-объекта содержит имя человека (
name
) а в каком хранится адрес его домашней страницы (
homepage
).
Для сравнения, эта же информация в формате RDF/N3 будет выглядеть следующим образом:
@prefix foaf: <> . @prefix rdf: <> . @prefix rdfs: <> . @prefix xml: <> . @prefix xsd: <> . <> a foaf:Person ; foaf:name "Markus Lanthaler" ; foaf:workplaceHomepage <> .
В примере выше в контексте можно отдельно описать префикс foaf. В этом случае описание свойств можно укоротить:
{ "@context": { "foaf": "http://xmlns.com/foaf/0.1/", "name": "foaf:name", "homepage": { "@id": "foaf:workplaceHomepage", "@type": "@id" }, ... } }
Наиболее часто используемый словарь можно сделать словарём по умолчанию (ключевое слово
@vocab
). В этом случае имена без префиксов пространства имён будут трактоваться как принадлежащие этому словарю
:
{ "@context": { "@vocab": "http://xmlns.com/foaf/0.1/" }, ... }
Разумеется, приведённые различия являются чисто синтаксическими, не влияющими на представляемый документом RDF-граф (состоит из трёх триплетов, см. ниже) и, следовательно, семантику документа.
<> <> <> . <> <> <> . <> <> "Markus Lanthaler" .