{
  "title": "Person",
  "@id": "schema:Person",
  "extends": "Thing",
  "role": "secondary",
  "status": "stable",
  "category": "other",
  "description": "A person (alive, dead, undead, or fictional).",
  "parser": "person",
  "properties": {
    "type": {
      "@id": "schema:type",
      "description": "The name of the type.",
      "type": "string",
      "enum": [
        "Person"
      ],
      "default": "Person",
      "from": "Entity"
    },
    "id": {
      "@id": "schema:id",
      "description": "The identifier for this item.",
      "type": "string",
      "from": "Entity"
    },
    "meta": {
      "@id": "stencila:meta",
      "description": "Metadata associated with this item.",
      "type": "object",
      "from": "Entity"
    },
    "alternateNames": {
      "@id": "schema:alternateName",
      "description": "Alternate names (aliases) for the item.",
      "type": "array",
      "items": {
        "type": "string"
      },
      "from": "Thing",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "alternateName"
      ]
    },
    "description": {
      "@id": "schema:description",
      "description": "A description of the item.",
      "$comment": "Allows for the description to be an array of nodes (e.g. an array of inline content,\nor a couple of paragraphs), or a string. The `minItems` restriction avoids a string\nbeing coerced into an array with a single string item.\n",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "BlockContent.schema.json"
          }
        },
        {
          "type": "array",
          "items": {
            "$ref": "InlineContent.schema.json"
          },
          "minItems": 2
        },
        {
          "type": "string"
        }
      ],
      "from": "Thing"
    },
    "identifiers": {
      "@id": "schema:identifier",
      "description": "Any kind of identifier for any kind of Thing.",
      "$comment": "Some identifiers have specific properties e.g the `issn` property for\nthe `Periodical` type. These should be used in preference to this\nproperty which is intended for identifiers that do not yet have a\nspecific property. Identifiers can be represented as strings, but\nusing a `PropertyValue` will usually be better because it allows\nfor `propertyID` (i.e. the type of identifier).\n",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "PropertyValue.schema.json"
          },
          {
            "type": "string"
          }
        ]
      },
      "from": "Thing",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "identifier"
      ]
    },
    "images": {
      "@id": "schema:image",
      "description": "Images of the item.",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "ImageObject.schema.json"
          },
          {
            "type": "string",
            "format": "uri"
          }
        ]
      },
      "from": "Thing",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "image"
      ]
    },
    "name": {
      "@id": "schema:name",
      "description": "The name of the item.",
      "type": "string",
      "from": "Thing"
    },
    "url": {
      "@id": "schema:url",
      "description": "The URL of the item.",
      "type": "string",
      "format": "uri",
      "from": "Thing"
    },
    "address": {
      "@id": "schema:address",
      "description": "Postal address for the person.",
      "anyOf": [
        {
          "$ref": "PostalAddress.schema.json"
        },
        {
          "type": "string"
        }
      ],
      "from": "Person"
    },
    "affiliations": {
      "@id": "schema:affiliation",
      "description": "Organizations that the person is affiliated with.",
      "type": "array",
      "items": {
        "$ref": "Organization.schema.json"
      },
      "from": "Person",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "affiliation"
      ]
    },
    "emails": {
      "@id": "schema:email",
      "description": "Email addresses for the person.",
      "type": "array",
      "items": {
        "type": "string",
        "format": "email"
      },
      "from": "Person",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "email"
      ]
    },
    "familyNames": {
      "@id": "schema:familyName",
      "aliases": [
        "familyName",
        "surname",
        "surnames",
        "lastName",
        "lastNames"
      ],
      "description": "Family name. In the U.S., the last name of a person.",
      "$comment": "This can be used along with givenName instead of the name property.",
      "allOf": [
        {
          "parser": "ssi"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "from": "Person",
      "isArray": true,
      "isPlural": true
    },
    "funders": {
      "@id": "schema:funder",
      "description": "A person or organization that supports (sponsors) something through\nsome kind of financial contribution.\n",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "Organization.schema.json"
          },
          {
            "$ref": "Person.schema.json"
          }
        ]
      },
      "from": "Person",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "funder"
      ]
    },
    "givenNames": {
      "@id": "schema:givenName",
      "aliases": [
        "firstName",
        "firstNames",
        "givenName"
      ],
      "description": "Given name. In the U.S., the first name of a person.",
      "$comment": "This can be used along with familyName instead of the name property.",
      "allOf": [
        {
          "parser": "ssi"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "from": "Person",
      "isArray": true,
      "isPlural": true
    },
    "honorificPrefix": {
      "@id": "schema:honorificPrefix",
      "aliases": [
        "prefix"
      ],
      "description": "An honorific prefix preceding a person's name such as Dr/Mrs/Mr.",
      "type": "string",
      "from": "Person"
    },
    "honorificSuffix": {
      "@id": "schema:honorificSuffix",
      "aliases": [
        "suffix"
      ],
      "description": "An honorific suffix after a person's name such as MD/PhD/MSCSW.",
      "type": "string",
      "from": "Person"
    },
    "jobTitle": {
      "@id": "schema:jobTitle",
      "description": "The job title of the person (for example, Financial Manager).",
      "type": "string",
      "from": "Person"
    },
    "memberOf": {
      "@id": "schema:memberOf",
      "description": "An organization (or program membership) to which this person belongs.",
      "type": "array",
      "items": {
        "$ref": "Organization.schema.json"
      },
      "from": "Person",
      "isArray": true
    },
    "telephoneNumbers": {
      "@id": "schema:telephone",
      "aliases": [
        "telephone",
        "telephoneNumber"
      ],
      "description": "Telephone numbers for the person.",
      "type": "array",
      "items": {
        "type": "string"
      },
      "from": "Person",
      "isArray": true,
      "isPlural": true
    }
  },
  "examples": [
    {
      "type": "Person",
      "honorificPrefix": "Dr",
      "givenNames": [
        "Marie",
        "Skłodowska"
      ],
      "familyNames": [
        "Curie"
      ],
      "honorificSuffix": "PhD"
    }
  ],
  "file": "Person.schema.yaml",
  "children": [],
  "descendants": [],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://schema.stenci.la/v1/Person.schema.json",
  "source": "https://github.com/stencila/schema/blob/master/schema/Person.schema.yaml",
  "type": "object",
  "propertyAliases": {
    "alternateName": "alternateNames",
    "identifier": "identifiers",
    "image": "images",
    "affiliation": "affiliations",
    "email": "emails",
    "familyName": "familyNames",
    "surname": "familyNames",
    "surnames": "familyNames",
    "lastName": "familyNames",
    "lastNames": "familyNames",
    "funder": "funders",
    "firstName": "givenNames",
    "firstNames": "givenNames",
    "givenName": "givenNames",
    "prefix": "honorificPrefix",
    "suffix": "honorificSuffix",
    "telephone": "telephoneNumbers",
    "telephoneNumber": "telephoneNumbers"
  },
  "additionalProperties": false,
  "required": [
    "type"
  ]
}
