{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "definitions": {
        "award": {
            "description": "The award made in support of the object.",
            "properties": {
                "awardIdentifier": {
                    "_format": "uri",
                    "description": "An HTTP URI for the award.",
                    "type": "string"
                },
                "awardName": {
                    "description": "The textual representation of the award identifier as issued by the sponsor.",
                    "type": "string"
                }
            },
            "required": [
                "awardName"
            ],
            "type": "object"
        },
        "license": {
            "properties": {
                "description": {
                    "description": "Text describing to what aspect of the object the license is applied.",
                    "type": "string"
                },
                "endDate": {
                    "_format": "date-time",
                    "description": "The date and time at which this resource will no longer be licensed in this way.",
                    "type": "string"
                },
                "startDate": {
                    "_format": "date-time",
                    "description": "The date and time at which the license will apply to this object. If the resource was always licensed this way, then this date can be omitted.",
                    "type": "string"
                },
                "uri": {
                    "_format": "uri",
                    "description": "The HTTP URI of the license of the object or--if startDate and endDate are included--in effect during the period listed.",
                    "type": "string"
                }
            },
            "required": [
                "uri"
            ],
            "type": "object"
        },
        "organization": {
            "description": "An organization or institution.",
            "properties": {
                "email": {
                    "_format": "uri",
                    "description": "An email address for this organization",
                    "type": "string"
                },
                "name": {
                    "description": "The name of the organization.",
                    "type": "string"
                },
                "sameAs": {
                    "description": "Identifiers that describe this organization",
                    "items": {
                        "_format": "uri",
                        "description": "A single HTTP URI that describes this organization",
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "required": [
                "name"
            ],
            "type": "object"
        },
        "otherProperties": {
            "properties": {
                "description": {
                    "description": "A description of this collection of properties.",
                    "type": "string"
                },
                "name": {
                    "description": "A name that describes this collection of properties.",
                    "type": "string"
                },
                "properties": {
                    "description": "The collection of key/value pair properties.",
                    "type": "object"
                },
                "uri": {
                    "_format": "uri",
                    "description": "A URI that points to the definition, schema, and/or vocabulary of this entry.",
                    "type": "string"
                }
            },
            "required": [
                "name",
                "properties"
            ],
            "type": "object"
        },
        "person": {
            "description": "A person that is a contributor to the research object.",
            "properties": {
                "additionalName": {
                    "description": "Also called the \"middle name\", this element will be derived from the creator.name by SHARE if not supplied by the source.",
                    "type": "string"
                },
                "affiliation": {
                    "description": "The organization(s) that this person is affiliated with. For example, a school/university.",
                    "items": {
                        "$ref": "#/definitions/organization"
                    },
                    "type": "array"
                },
                "email": {
                    "_format": "email",
                    "description": "The email address for this person.",
                    "type": "string"
                },
                "familyName": {
                    "description": "Also called the \"last name\", this element is preferred over using the combined \"name\" field.",
                    "type": "string"
                },
                "givenName": {
                    "description": "Also called the \"first name\", this element is preferred over using the combined \"name\" field.",
                    "type": "string"
                },
                "name": {
                    "description": "The name of the person if familyName, givenName, and/or additionalName.",
                    "type": "string"
                },
                "sameAs": {
                    "description": "An array of identifiers expressed as HTTP URIs that describe the person. For example, an ORCID, ResearcherID, arXiv author ID, ScopusID,  ISNI, or other unique identifier expressed as an HTTP URI.",
                    "items": {
                        "_format": "uri",
                        "description": "An HTTP URI that describes the person.",
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "required": [
                "name"
            ],
            "type": "object"
        },
        "sponsor": {
            "description": "This describes the sponsor of the resource.",
            "properties": {
                "sponsorIdentifier": {
                    "_format": "uri",
                    "description": "A globally unique identifier for the sponsor of the resource should be recorded here.",
                    "type": "string"
                },
                "sponsorName": {
                    "description": "The name of the entity responsible for sponsoring the resource, recorded here as text.",
                    "type": "string"
                }
            },
            "required": [
                "sponsorName"
            ],
            "type": "object"
        },
        "sponsorship": {
            "description": "A sponsorship associated with the resource.",
            "properties": {
                "award": {
                    "$ref": "#/definitions/award"
                },
                "sponsor": {
                    "$ref": "#/definitions/sponsor"
                }
            },
            "required": [
                "sponsor"
            ],
            "type": "object"
        }
    },
    "properties": {
        "contributors": {
            "description": "The people or organizations responsible for making contributions to an object.",
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/definitions/person"
                    },
                    {
                        "$ref": "#/definitions/organization"
                    }
                ]
            },
            "type": "array"
        },
        "description": {
            "description": "A textual description of the resource.",
            "type": "string"
        },
        "freeToRead": {
            "description": "A date range specifying when this research object will be accessible, without restrictsions such as fee or registration). If the object is free to read, then only the startDate is required.",
            "properties": {
                "endDate": {
                    "_format": "date",
                    "description": "The date and time at which restrictions such as fees or registrations will be in place limiting accessibility.",
                    "type": "string"
                },
                "startDate": {
                    "description": "The date and time at which the object will be accessible. If the resource was always free to read, then the date the object was created should be used.",
                    "format": "date",
                    "type": [
                        "string",
                        "null"
                    ]
                }
            },
            "required": [
                "startDate"
            ],
            "type": "object"
        },
        "languages": {
            "description": "The primary languages in which the content of the resource is presented. Values used for this element MUST conform to ISO 639\u20133. This offers two and three letter tags e.g. \"en\" or \"eng\" for English and \"en-GB\" for English used in the UK.",
            "items": {
                "pattern": "[a-z][a-z]?[a-z]",
                "type": [
                    "string",
                    "null"
                ]
            },
            "type": "array"
        },
        "licenses": {
            "description": "The licenses under which the object has been released.",
            "items": {
                "$ref": "#/definitions/license"
            },
            "type": "array"
        },
        "otherProperties": {
            "description": "Any structured or unstructured properties (properties that do or do not include URIs to definitions) that do not fall into the schema provided.",
            "items": {
                "$ref": "#/definitions/otherProperties"
            },
            "type": "array"
        },
        "providerUpdatedDateTime": {
            "_format": "date-time",
            "description": "The date and time the provider describing the object has been updated about either the creation or update of an object by its contributors. E.g., this may be the date a manuscript is published, but not necessarily the date the manuscript was written.",
            "type": "string"
        },
        "publisher": {
            "anyOf": [
                {
                    "$ref": "#/definitions/person"
                },
                {
                    "$ref": "#/definitions/organization"
                }
            ],
            "description": "This element contains the name of the entity, typically a 'publisher', responsible for making the version of record of the resource available. This could be a person, organisation or service",
            "type": "object"
        },
        "shareProperties": {
            "description": "Properties that are generated and/or organized by the SHARE system (e.g., timestamps of when SHARE processes data). These properities are used internally and are not guaranteed to remain consistent.",
            "type": "object"
        },
        "sponsorships": {
            "description": "Sponsorships associated with the object",
            "items": {
                "$ref": "#/definitions/sponsorship"
            },
            "type": "array"
        },
        "subjects": {
            "description": "The topic or domain of the object. Follows recommendations of http://dublincore.org/documents/2012/06/14/dcmi-terms/?v=elements#terms-subject",
            "items": {
                "type": "string"
            },
            "type": "array"
        },
        "tags": {
            "description": "Non-hierarchical terms or keywords assigned to an object to aid browsing or searching.",
            "items": {
                "type": "string"
            },
            "type": "array"
        },
        "title": {
            "description": "The title and any sub-titles of the resource.",
            "type": "string"
        },
        "uris": {
            "properties": {
                "anyOf": {
                    "descriptorUris": {
                        "description": "A persistent HTTP URI that points to a description of the research object.",
                        "items": {
                            "_format": "uri",
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "objectUris": {
                        "description": "A persistent HTTP URI that points directly to the research object.",
                        "items": {
                            "_format": "uri",
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "providerUris": {
                        "description": "The persistent HTTP URI that points to the object's record at the SHARE provider regardless of format.",
                        "items": {
                            "_format": "uri",
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "canonicalUri": {
                    "_format": "uri",
                    "description": "The preferred persistent HTTP URI that represents the research object. This should be repeated in exactly one other field in the uris object.",
                    "type": "string"
                }
            },
            "required": [
                "canonicalUri"
            ],
            "type": "object"
        },
        "version": {
            "description": "Infomation about this version of the object.",
            "properties": {
                "versionDateTime": {
                    "_format": "date-time",
                    "description": "The date and time the object was created or updated by its contributors. If the data for the object describes the first version of that object, it will be the date and time of object creation, otherwise it will be considered the date and time the object was updated.",
                    "type": "string"
                },
                "versionId": {
                    "description": "The name or number representing this version of the object."
                },
                "versionOf": {
                    "_format": "uri",
                    "description": "If the object is an update, the HTTP URI of the object the content is updating. Depending upon what the upate is relative to, that could be the object at creation or a previous version.",
                    "type": "string"
                }
            },
            "type": "object"
        }
    },
    "required": [
        "title",
        "contributors",
        "uris",
        "providerUpdatedDateTime"
    ],
    "type": "object"
}