Вот экземпляр JSON, показывающий время начала и окончания встречи:
{
"start time": "2015-02-19T08:00:00Z",
"end time": "2015-02-19T09:00:00Z"
}
Я могу указать структуру этого экземпляра с помощью схемы JSON: экземпляр должен содержать объект со свойством «время начала» и свойством «время окончания», и каждое свойство должно быть строкой в формате даты и времени. См. ниже схему JSON. Но чего я не могу указать, так это того, что собрание должно начаться до того, как оно закончится. То есть значение «время начала» должно быть меньше значения «время окончания». Некоторые люди называют эту зависимость от данных совместным ограничением. В мире XML существует замечательная и простая технология для выражения совместных ограничений: Schematron. Мне интересно, есть ли эквивалентная технология в мире JSON? Что бы вы использовали для декларативного описания отношения между значениями "время начала" и "время окончания"? (Примечание: написание кода на каком-либо языке программирования — это не то, что я подразумеваю под «декларативным описанием отношений». Я ищу декларативные средства для описания зависимостей данных, которые присутствуют в документах JSON, а не процедурный код. .)
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"meeting": {
"type": "object",
"properties": {
"start time": { "type": "string", "format": "date-time"},
"end time": { "type": "string", "format": "date-time"}
},
"required": [ "start time", "end time" ],
"additionalProperties": false
}
},
"$ref": "#/definitions/meeting"
}