@stencila/schema
Version:
Stencila schema and other specifications
178 lines (177 loc) • 4.28 kB
JSON
{
"title": "Thing",
"@id": "schema:Thing",
"extends": "Entity",
"status": "stable",
"role": "base",
"category": "metadata",
"description": "The most generic type of item.",
"properties": {
"type": {
"@id": "schema:type",
"description": "The name of the type.",
"type": "string",
"enum": [
"Thing",
"Article",
"AudioObject",
"Brand",
"Collection",
"ContactPoint",
"CreativeWork",
"Datatable",
"DatatableColumn",
"Figure",
"Grant",
"ImageObject",
"MediaObject",
"MonetaryGrant",
"Organization",
"Periodical",
"Person",
"Product",
"PropertyValue",
"PublicationIssue",
"PublicationVolume",
"SoftwareApplication",
"SoftwareEnvironment",
"SoftwareSession",
"SoftwareSourceCode",
"Table",
"VideoObject",
"VolumeMount"
],
"default": "Thing",
"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",
"aliases": [
"alternateName"
]
},
"description": {
"@id": "schema:description",
"description": "A description of the item.",
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "Node.schema.json"
}
}
],
"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": [
{
"type": "string"
},
{
"$ref": "PropertyValue.schema.json"
}
]
},
"from": "Thing",
"aliases": [
"identifier"
]
},
"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"
}
},
"file": "Thing.schema.yaml",
"children": [
"Brand",
"ContactPoint",
"CreativeWork",
"DatatableColumn",
"Grant",
"Organization",
"Person",
"Product",
"PropertyValue",
"SoftwareEnvironment",
"SoftwareSession",
"VolumeMount"
],
"descendants": [
"Article",
"AudioObject",
"Brand",
"Collection",
"ContactPoint",
"CreativeWork",
"Datatable",
"DatatableColumn",
"Figure",
"Grant",
"ImageObject",
"MediaObject",
"MonetaryGrant",
"Organization",
"Periodical",
"Person",
"Product",
"PropertyValue",
"PublicationIssue",
"PublicationVolume",
"SoftwareApplication",
"SoftwareEnvironment",
"SoftwareSession",
"SoftwareSourceCode",
"Table",
"VideoObject",
"VolumeMount"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.stenci.la/v0/Thing.schema.json",
"source": "https://github.com/stencila/schema/blob/master/Thing.schema.yaml",
"type": "object",
"propertyAliases": {
"alternateName": "alternateNames",
"identifier": "identifiers"
},
"additionalProperties": false,
"required": [
"type"
]
}