Recursive
{ "title": "Person", "$ref": "#/definitions/person", "definitions": { "person": { "type": "object", "id": "person", "defaultProperties": [ "fname", "lname", "bestFriend", "coworkers" ], "patternProperties": { "^cousin_[0-9]+$": { "$ref": "#/definitions/person" } }, "properties": { "fname": { "title": "first name", "type": "string" }, "lname": { "title": "last name", "type": "string" }, "bestFriend": { "title": "best friend", "oneOf": [ { "title": "none", "type": "null" }, { "title": "person", "$ref": "#/definitions/person" } ] }, "coworkers": { "type": "array", "items": { "title": "Coworker", "$ref": "#/definitions/person" } }, "mother": { "title": "mother", "$ref": "#/definitions/person" } } }, "year": { "type": "integer", "pattern": "^[0-9]{4}$", "minimum": 1900, "maximum": 2100 } } }