{
  "title": "Collection",
  "@id": "schema:Collection",
  "extends": "CreativeWork",
  "category": "works",
  "role": "secondary",
  "status": "stable",
  "description": "A collection of CreativeWorks or other artifacts.",
  "$comment": "This is an implementation of schema.org [`Collection`](https://schema.org/Collection).\nThe `Collection` type allows you to represent a collection of various `CreativeWork`\nnode types, such as [`Article`](./Article), [`Datatable`](./Datatable) or [`Table`](./Table).\n\nThe schema.org `Collection` has a `collectionSize` property but has not been added here\nbecause it is somewhat redundant e.g. a developer could use `collection.parts.length` instead.\n",
  "properties": {
    "type": {
      "@id": "schema:type",
      "description": "The name of the type.",
      "type": "string",
      "enum": [
        "Collection"
      ],
      "default": "Collection",
      "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"
    },
    "about": {
      "@id": "schema:about",
      "description": "The subject matter of the content.",
      "$comment": "Consistent with https://schema.org/about, this property allows for\nlinking to one of more `Thing` nodes. This could for example include\na `Person` (e.g for a bibliography) or a `DefinedTerm` (e.g. for\nsubject areas the creative work relates to).\n",
      "type": "array",
      "items": {
        "$ref": "ThingTypes.schema.json"
      },
      "from": "CreativeWork",
      "isArray": true
    },
    "authors": {
      "@id": "schema:author",
      "description": "The authors of this creative work.",
      "type": "array",
      "allOf": [
        {
          "parser": "csi"
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "$ref": "Person.schema.json"
              },
              {
                "$ref": "Organization.schema.json"
              }
            ]
          }
        }
      ],
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "author"
      ]
    },
    "comments": {
      "@id": "schema:comment",
      "description": "Comments about this creative work.",
      "type": "array",
      "items": {
        "$ref": "Comment.schema.json"
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "comment"
      ]
    },
    "content": {
      "@id": "stencila:content",
      "description": "The structured content of this creative work c.f. property `text`.",
      "type": "array",
      "items": {
        "$ref": "Node.schema.json"
      },
      "from": "CreativeWork",
      "isArray": true
    },
    "dateCreated": {
      "@id": "schema:dateCreated",
      "description": "Date/time of creation.",
      "allOf": [
        {
          "$ref": "Date.schema.json"
        }
      ],
      "from": "CreativeWork"
    },
    "dateReceived": {
      "@id": "schema:dateReceived",
      "description": "Date/time that work was received.",
      "allOf": [
        {
          "$ref": "Date.schema.json"
        }
      ],
      "from": "CreativeWork"
    },
    "dateAccepted": {
      "@id": "stencila:dateAccepted",
      "description": "Date/time of acceptance.",
      "$comment": "This is not yet a schema.org property but the term is used\n[in Dublin Core](http://purl.org/dc/terms/dateAccepted).\n",
      "allOf": [
        {
          "$ref": "Date.schema.json"
        }
      ],
      "from": "CreativeWork"
    },
    "dateModified": {
      "@id": "schema:dateModified",
      "description": "Date/time of most recent modification.",
      "allOf": [
        {
          "$ref": "Date.schema.json"
        }
      ],
      "from": "CreativeWork"
    },
    "datePublished": {
      "@id": "schema:datePublished",
      "aliases": [
        "date"
      ],
      "description": "Date of first publication.",
      "allOf": [
        {
          "$ref": "Date.schema.json"
        }
      ],
      "from": "CreativeWork"
    },
    "editors": {
      "@id": "schema:editor",
      "description": "People who edited the `CreativeWork`.",
      "type": "array",
      "items": {
        "$ref": "Person.schema.json"
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "editor"
      ]
    },
    "funders": {
      "@id": "schema:funder",
      "description": "People or organizations that funded the `CreativeWork`.",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "Person.schema.json"
          },
          {
            "$ref": "Organization.schema.json"
          }
        ]
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "funder"
      ]
    },
    "fundedBy": {
      "@id": "stencila:fundedBy",
      "description": "Grants that funded the `CreativeWork`; reverse of `fundedItems`.",
      "$comment": "This follows the proposal [here](https://github.com/schemaorg/schemaorg/issues/2258)\nfor a property that is the reverse of `fundedItems`.\nIt is an any because a `CreativeWork` may have been funded through more than\none `Grant`.\n",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "Grant.schema.json"
          },
          {
            "$ref": "MonetaryGrant.schema.json"
          }
        ]
      },
      "from": "CreativeWork",
      "isArray": true
    },
    "genre": {
      "@id": "schema:genre",
      "description": "Genre of the creative work, broadcast channel or group.",
      "type": "array",
      "items": {
        "type": "string"
      },
      "from": "CreativeWork",
      "isArray": true
    },
    "keywords": {
      "@id": "schema:keywords",
      "description": "Keywords or tags used to describe this content.\nMultiple entries in a keywords list are typically delimited by commas.\n",
      "allOf": [
        {
          "parser": "csi"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "keyword"
      ]
    },
    "isPartOf": {
      "@id": "schema:isPartOf",
      "description": "An item or other CreativeWork that this CreativeWork is a part of.\n",
      "$ref": "CreativeWorkTypes.schema.json",
      "from": "CreativeWork"
    },
    "licenses": {
      "@id": "schema:license",
      "description": "License documents that applies to this content, typically indicated by URL.\n",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "CreativeWorkTypes.schema.json"
          },
          {
            "type": "string",
            "format": "uri"
          }
        ]
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "license"
      ]
    },
    "maintainers": {
      "@id": "schema:maintainer",
      "description": "The people or organizations who maintain this CreativeWork.",
      "$comment": "A maintainer of a Dataset, SoftwareApplication, or other CreativeWork.\nA maintainer is a Person or Organization that manages contributions to,\nand/or publication of, some (typically complex) artifact. It is common for\ndistributions of software and data to be based on \"upstream\" sources.\nWhen maintainer is applied to a specific version of something e.g. a particular\nversion or packaging of a Dataset, it is always possible that the upstream\nsource has a different maintainer. The isBasedOn property can be used to\nindicate such relationships between datasets to make the different maintenance\nroles clear. Similarly in the case of software, a package may have dedicated\nmaintainers working on integration into software distributions such as Ubuntu,\nas well as upstream maintainers of the underlying work.\n",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "Person.schema.json"
          },
          {
            "$ref": "Organization.schema.json"
          }
        ]
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "aliases": [
        "maintainer"
      ]
    },
    "parts": {
      "@id": "schema:hasParts",
      "aliases": [
        "hasParts",
        "part"
      ],
      "description": "Elements of the collection which can be a variety of different elements,\nsuch as Articles, Datatables, Tables and more.\n",
      "type": "array",
      "items": {
        "$ref": "CreativeWorkTypes.schema.json"
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true,
      "isOverride": true
    },
    "publisher": {
      "@id": "schema:publisher",
      "description": "A publisher of the CreativeWork.\n",
      "anyOf": [
        {
          "$ref": "Person.schema.json"
        },
        {
          "$ref": "Organization.schema.json"
        }
      ],
      "from": "CreativeWork"
    },
    "references": {
      "@id": "schema:citation",
      "aliases": [
        "citations",
        "reference"
      ],
      "description": "References to other creative works, such as another publication,\nweb page, scholarly article, etc.\n",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "CreativeWorkTypes.schema.json"
          },
          {
            "type": "string"
          }
        ]
      },
      "from": "CreativeWork",
      "isArray": true,
      "isPlural": true
    },
    "text": {
      "@id": "schema:text",
      "description": "The textual content of this creative work.",
      "type": "string",
      "from": "CreativeWork"
    },
    "title": {
      "@id": "schema:headline",
      "description": "The title of the creative work.",
      "aliases": [
        "headline"
      ],
      "$comment": "Allows for the title to include inline content (e.g `Strong`, `Math`)\nor a string. The title can not be block content e.g `Paragraph`.\nThe `minItems` restriction avoids a string being coerced into an array\nwith a single string item.\n",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "InlineContent.schema.json"
          },
          "minItems": 2
        },
        {
          "type": "string"
        }
      ],
      "from": "CreativeWork"
    },
    "version": {
      "@id": "schema:version",
      "description": "The version of the creative work.",
      "$comment": "In this case `string` is listed as an alternative before `number` to\navoid semantic version numbers e.g. `1.0` being parsed, and subsequently\nencoded, as `1` thereby resulting in loss of information.\n",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "from": "CreativeWork"
    }
  },
  "required": [
    "type",
    "parts"
  ],
  "file": "Collection.schema.yaml",
  "children": [],
  "descendants": [],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://schema.stenci.la/v1/Collection.schema.json",
  "source": "https://github.com/stencila/schema/blob/master/schema/Collection.schema.yaml",
  "type": "object",
  "additionalProperties": false,
  "propertyAliases": {
    "alternateName": "alternateNames",
    "identifier": "identifiers",
    "image": "images",
    "author": "authors",
    "comment": "comments",
    "date": "datePublished",
    "editor": "editors",
    "funder": "funders",
    "keyword": "keywords",
    "license": "licenses",
    "maintainer": "maintainers",
    "hasParts": "parts",
    "part": "parts",
    "citations": "references",
    "reference": "references",
    "headline": "title"
  }
}
