JSON-LD
| JSON-LD | |
|---|---|
| Орган стандартизации | Консорциум Всемирной паутины |
| Создан | 2010 |
| Опубликован | 16 января 2014 |
| Официальный сайт | w3.org/TR/json-ld… (англ.) |
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 будет выглядеть следующим образом:
@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" .
Примечания
- ↑ JSON-LD Syntax 1.0 (27 декабря 2011). Дата обращения: 30 декабря 2011. Архивировано 12 января 2012 года.
- ↑ RDF Working Group. Дата обращения: 6 июня 2015. Архивировано 12 июня 2015 года.
- ↑ 1 2 Lanthaler, Gütl, 2012.
- ↑ Follow Your Nose. patterns.dataincubator.org. Дата обращения: 19 сентября 2015. Архивировано 19 сентября 2015 года.
- ↑ Антониу Г. и др. Принцип «Следуй за своим носом» // Семантический веб. — ДМК Пресс, 2015. — 240 с. — ISBN 978-5-97060-333-8.
- ↑ 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.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.