JSON-LD («JavaScript 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 будет выглядеть следующим образом:
В примере выше в контексте можно отдельно описать префикс 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-граф (состоит из трёх триплетов, см. ниже) и, следовательно, семантику документа.
Примечания
Литература
Ссылки
|
---|
Продукты и стандарты | Рекомендации | |
---|
ООСО | |
---|
Рабочие проекты | |
---|
Руководства | |
---|
Инициативы | |
---|
Выведенные из использования | |
---|
Устаревшие | |
---|
|
---|
Организации | | Рабочие группы | |
---|
Группы сообщества и бизнеса | |
---|
Закрывшиеся группы | |
---|
|
---|
ПО | |
---|
Конференции | |
---|
|
---|
Основы | |
---|
Подразделы | |
---|
Приложения | |
---|
Связанные темы | |
---|
Стандарты | |
---|