datapackage
Version:
Utilities to work with Data Packages as defined on specs.frictionlessdata.io
940 lines (939 loc) • 226 kB
JSON
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Fiscal Data Package",
"description": "Fiscal Data Package is a simple specification for data access and delivery of fiscal data.",
"type": "object",
"allOf": [
{
"title": "Tabular Data Package",
"description": "Tabular Data Package",
"type": "object",
"required": [
"resources",
"profile"
],
"properties": {
"profile": {
"enum": [
"tabular-data-package"
],
"propertyOrder": 10,
"title": "Profile",
"description": "The profile of this descriptor.",
"context": "Every Package and Resource descriptor has a profile. The default profile, if none is declared, is `data-package` for Package and `data-resource` for Resource.",
"type": "string",
"examples": [
"{\n \"profile\": \"tabular-data-package\"\n}\n",
"{\n \"profile\": \"http://example.com/my-profiles-json-schema.json\"\n}\n"
]
},
"name": {
"propertyOrder": 20,
"title": "Name",
"description": "An identifier string. Lower case characters with `.`, `_`, `-` and `/` are allowed.",
"type": "string",
"pattern": "^([-a-z0-9._/])+$",
"context": "This is ideally a url-usable and human-readable name. Name `SHOULD` be invariant, meaning it `SHOULD NOT` change when its parent descriptor is updated.",
"examples": [
"{\n \"name\": \"my-nice-name\"\n}\n"
]
},
"id": {
"propertyOrder": 30,
"title": "ID",
"description": "A property reserved for globally unique identifiers. Examples of identifiers that are unique include UUIDs and DOIs.",
"context": "A common usage pattern for Data Packages is as a packaging format within the bounds of a system or platform. In these cases, a unique identifier for a package is desired for common data handling workflows, such as updating an existing package. While at the level of the specification, global uniqueness cannot be validated, consumers using the `id` property `MUST` ensure identifiers are globally unique.",
"type": "string",
"examples": [
"{\n \"id\": \"b03ec84-77fd-4270-813b-0c698943f7ce\"\n}\n",
"{\n \"id\": \"http://dx.doi.org/10.1594/PANGAEA.726855\"\n}\n"
]
},
"title": {
"propertyOrder": 40,
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"propertyOrder": 50,
"format": "textarea",
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"homepage": {
"propertyOrder": 60,
"title": "Home Page",
"description": "The home on the web that is related to this data package.",
"type": "string",
"format": "uri",
"examples": [
"{\n \"homepage\": \"http://example.com/\"\n}\n"
]
},
"created": {
"propertyOrder": 70,
"title": "Created",
"description": "The datetime on which this descriptor was created.",
"context": "The datetime must conform to the string formats for datetime as described in [RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6)",
"type": "string",
"format": "date-time",
"examples": [
"{\n \"created\": \"1985-04-12T23:20:50.52Z\"\n}\n"
]
},
"contributors": {
"propertyOrder": 80,
"title": "Contributors",
"description": "The contributors to this descriptor.",
"type": "array",
"minItems": 1,
"items": {
"title": "Contributor",
"description": "A contributor to this descriptor.",
"properties": {
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"path": {
"title": "Path",
"description": "A fully qualified URL, or a POSIX file path..",
"type": "string",
"examples": [
"{\n \"path\": \"file.csv\"\n}\n",
"{\n \"path\": \"http://example.com/file.csv\"\n}\n"
],
"context": "Implementations need to negotiate the type of path provided, and dereference the data accordingly."
},
"email": {
"title": "Email",
"description": "An email address.",
"type": "string",
"format": "email",
"examples": [
"{\n \"email\": \"example@example.com\"\n}\n"
]
},
"organisation": {
"title": "Organization",
"description": "An organizational affiliation for this contributor.",
"type": "string"
},
"role": {
"type": "string",
"enum": [
"publisher",
"author",
"maintainer",
"wrangler",
"contributor"
],
"default": "contributor"
}
},
"required": [
"title"
],
"context": "Use of this property does not imply that the person was the original creator of, or a contributor to, the data in the descriptor, but refers to the composition of the descriptor itself."
},
"examples": [
"{\n \"contributors\": [\n {\n \"title\": \"Joe Bloggs\"\n }\n ]\n}\n",
"{\n \"contributors\": [\n {\n \"title\": \"Joe Bloggs\",\n \"email\": \"joe@example.com\",\n \"role\": \"author\"\n }\n ]\n}\n"
]
},
"keywords": {
"propertyOrder": 90,
"title": "Keywords",
"description": "A list of keywords that describe this package.",
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"examples": [
"{\n \"keywords\": [\n \"data\",\n \"fiscal\",\n \"transparency\"\n ]\n}\n"
]
},
"image": {
"propertyOrder": 100,
"title": "Image",
"description": "A image to represent this package.",
"type": "string",
"examples": [
"{\n \"image\": \"http://example.com/image.jpg\"\n}\n",
"{\n \"image\": \"relative/to/image.jpg\"\n}\n"
]
},
"licenses": {
"propertyOrder": 110,
"title": "Licenses",
"description": "The license(s) under which this package is published.",
"type": "array",
"minItems": 1,
"items": {
"title": "License",
"description": "A license for this descriptor.",
"type": "object",
"properties": {
"name": {
"title": "Open Definition license identifier",
"description": "MUST be an Open Definition license identifier, see http://licenses.opendefinition.org/",
"type": "string",
"pattern": "^([-a-zA-Z0-9._])+$"
},
"path": {
"title": "Path",
"description": "A fully qualified URL, or a POSIX file path..",
"type": "string",
"examples": [
"{\n \"path\": \"file.csv\"\n}\n",
"{\n \"path\": \"http://example.com/file.csv\"\n}\n"
],
"context": "Implementations need to negotiate the type of path provided, and dereference the data accordingly."
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
}
},
"context": "Use of this property does not imply that the person was the original creator of, or a contributor to, the data in the descriptor, but refers to the composition of the descriptor itself."
},
"context": "This property is not legally binding and does not guarantee that the package is licensed under the terms defined herein.",
"examples": [
"{\n \"licenses\": [\n {\n \"name\": \"odc-pddl-1.0\",\n \"uri\": \"http://opendatacommons.org/licenses/pddl/\"\n }\n ]\n}\n"
]
},
"resources": {
"propertyOrder": 120,
"title": "Tabular Data Resources",
"description": "An `array` of Tabular Data Resource objects, each compliant with the [Tabular Data Resource](/tabular-data-resource/) specification.",
"type": "array",
"minItems": 1,
"items": {
"title": "Tabular Data Resource",
"description": "A Tabular Data Resource.",
"type": "object",
"oneOf": [
{
"required": [
"name",
"data",
"schema",
"profile"
]
},
{
"required": [
"name",
"path",
"schema",
"profile"
]
}
],
"properties": {
"profile": {
"enum": [
"tabular-data-resource"
],
"propertyOrder": 10,
"title": "Profile",
"description": "The profile of this descriptor.",
"context": "Every Package and Resource descriptor has a profile. The default profile, if none is declared, is `data-package` for Package and `data-resource` for Resource.",
"type": "string",
"examples": [
"{\n \"profile\": \"tabular-data-package\"\n}\n",
"{\n \"profile\": \"http://example.com/my-profiles-json-schema.json\"\n}\n"
]
},
"name": {
"propertyOrder": 20,
"title": "Name",
"description": "An identifier string. Lower case characters with `.`, `_`, `-` and `/` are allowed.",
"type": "string",
"pattern": "^([-a-z0-9._/])+$",
"context": "This is ideally a url-usable and human-readable name. Name `SHOULD` be invariant, meaning it `SHOULD NOT` change when its parent descriptor is updated.",
"examples": [
"{\n \"name\": \"my-nice-name\"\n}\n"
]
},
"path": {
"propertyOrder": 30,
"title": "Path",
"description": "A reference to the data for this resource, as either a path as a string, or an array of paths as strings. of valid URIs.",
"oneOf": [
{
"title": "Path",
"description": "A fully qualified URL, or a POSIX file path..",
"type": "string",
"examples": [
"{\n \"path\": \"file.csv\"\n}\n",
"{\n \"path\": \"http://example.com/file.csv\"\n}\n"
],
"context": "Implementations need to negotiate the type of path provided, and dereference the data accordingly."
},
{
"type": "array",
"minItems": 1,
"items": {
"title": "Path",
"description": "A fully qualified URL, or a POSIX file path..",
"type": "string",
"examples": [
"{\n \"path\": \"file.csv\"\n}\n",
"{\n \"path\": \"http://example.com/file.csv\"\n}\n"
],
"context": "Implementations need to negotiate the type of path provided, and dereference the data accordingly."
},
"examples": [
"[ \"file.csv\" ]\n",
"[ \"http://example.com/file.csv\" ]\n"
]
}
],
"context": "The dereferenced value of each referenced data source in `path` `MUST` be commensurate with a native, dereferenced representation of the data the resource describes. For example, in a *Tabular* Data Resource, this means that the dereferenced value of `path` `MUST` be an array.",
"examples": [
"{\n \"path\": [\n \"file.csv\",\n \"file2.csv\"\n ]\n}\n",
"{\n \"path\": [\n \"http://example.com/file.csv\",\n \"http://example.com/file2.csv\"\n ]\n}\n",
"{\n \"path\": \"http://example.com/file.csv\"\n}\n"
]
},
"data": {
"propertyOrder": 230,
"title": "Data",
"description": "Inline data for this resource."
},
"schema": {
"propertyOrder": 40,
"title": "Table Schema",
"description": "A Table Schema for this resource, compliant with the [Table Schema](/tableschema/) specification.",
"type": "object",
"required": [
"fields"
],
"properties": {
"fields": {
"type": "array",
"minItems": 1,
"items": {
"title": "Table Schema Field",
"type": "object",
"anyOf": [
{
"type": "object",
"title": "String Field",
"description": "The field contains strings, that is, sequences of characters.",
"required": [
"name"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"type": {
"description": "The type keyword, which `MUST` be a value of `string`.",
"enum": [
"string"
]
},
"format": {
"description": "The format keyword options for `string` are `default`, `email`, `uri`, `binary`, and `uuid`.",
"context": "The following `format` options are supported:\n * **default**: any valid string.\n * **email**: A valid email address.\n * **uri**: A valid URI.\n * **binary**: A base64 encoded string representing binary data.\n * **uuid**: A string that is a uuid.",
"enum": [
"default",
"email",
"uri",
"binary",
"uuid"
],
"default": "default"
},
"constraints": {
"title": "Constraints",
"description": "The following constraints are supported for `string` fields.",
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "Indicates whether a property must have a value for each instance.",
"context": "An empty string is considered to be a missing value."
},
"unique": {
"type": "boolean",
"description": "When `true`, each value for the property `MUST` be unique."
},
"pattern": {
"type": "string",
"description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.",
"context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)."
},
"enum": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
"minLength": {
"type": "integer",
"description": "An integer that specifies the minimum length of a value."
},
"maxLength": {
"type": "integer",
"description": "An integer that specifies the maximum length of a value."
}
}
},
"rdfType": {
"type": "string",
"description": "The RDF type for this field."
}
},
"examples": [
"{\n \"name\": \"name\",\n \"type\": \"string\"\n}\n",
"{\n \"name\": \"name\",\n \"type\": \"string\",\n \"format\": \"email\"\n}\n",
"{\n \"name\": \"name\",\n \"type\": \"string\",\n \"constraints\": {\n \"minLength\": 3,\n \"maxLength\": 35\n }\n}\n"
]
},
{
"type": "object",
"title": "Number Field",
"description": "The field contains numbers of any kind including decimals.",
"context": "The lexical formatting follows that of decimal in [XMLSchema](https://www.w3.org/TR/xmlschema-2/#decimal): a non-empty finite-length sequence of decimal digits separated by a period as a decimal indicator. An optional leading sign is allowed. If the sign is omitted, '+' is assumed. Leading and trailing zeroes are optional. If the fractional part is zero, the period and following zero(es) can be omitted. For example: '-1.23', '12678967.543233', '+100000.00', '210'.\n\nThe following special string values are permitted (case does not need to be respected):\n - NaN: not a number\n - INF: positive infinity\n - -INF: negative infinity\n\nA number `MAY` also have a trailing:\n - exponent: this `MUST` consist of an E followed by an optional + or - sign followed by one or more decimal digits (0-9)\n - percentage: the percentage sign: `%`. In conversion percentages should be divided by 100.\n\nIf both exponent and percentages are present the percentage `MUST` follow the exponent e.g. '53E10%' (equals 5.3).",
"required": [
"name"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"type": {
"description": "The type keyword, which `MUST` be a value of `number`.",
"enum": [
"number"
]
},
"format": {
"description": "There are no format keyword options for `number`: only `default` is allowed.",
"enum": [
"default"
],
"default": "default"
},
"bareNumber": {
"type": "boolean",
"title": "bareNumber",
"description": "a boolean field with a default of `true`. If `true` the physical contents of this field must follow the formatting constraints already set out. If `false` the contents of this field may contain leading and/or trailing non-numeric characters (which implementors MUST therefore strip). The purpose of `bareNumber` is to allow publishers to publish numeric data that contains trailing characters such as percentages e.g. `95%` or leading characters such as currencies e.g. `€95` or `EUR 95`. Note that it is entirely up to implementors what, if anything, they do with stripped text.",
"default": true
},
"decimalChar": {
"type": "string",
"description": "A string whose value is used to represent a decimal point within the number. The default value is `.`."
},
"groupChar": {
"type": "string",
"description": "A string whose value is used to group digits within the number. The default value is `null`. A common value is `,` e.g. '100,000'."
},
"constraints": {
"title": "Constraints",
"description": "The following constraints are supported for `number` fields.",
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "Indicates whether a property must have a value for each instance.",
"context": "An empty string is considered to be a missing value."
},
"unique": {
"type": "boolean",
"description": "When `true`, each value for the property `MUST` be unique."
},
"pattern": {
"type": "string",
"description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.",
"context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)."
},
"enum": {
"oneOf": [
{
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
{
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "number"
}
}
]
},
"minimum": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
}
]
},
"maximum": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
}
},
"rdfType": {
"type": "string",
"description": "The RDF type for this field."
}
},
"examples": [
"{\n \"name\": \"field-name\",\n \"type\": \"number\"\n}\n",
"{\n \"name\": \"field-name\",\n \"type\": \"number\",\n \"constraints\": {\n \"enum\": [ \"1.00\", \"1.50\", \"2.00\" ]\n }\n}\n"
]
},
{
"type": "object",
"title": "Integer Field",
"description": "The field contains integers - that is whole numbers.",
"context": "Integer values are indicated in the standard way for any valid integer.",
"required": [
"name",
"type"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"type": {
"description": "The type keyword, which `MUST` be a value of `integer`.",
"enum": [
"integer"
]
},
"format": {
"description": "There are no format keyword options for `integer`: only `default` is allowed.",
"enum": [
"default"
],
"default": "default"
},
"bareNumber": {
"type": "boolean",
"title": "bareNumber",
"description": "a boolean field with a default of `true`. If `true` the physical contents of this field must follow the formatting constraints already set out. If `false` the contents of this field may contain leading and/or trailing non-numeric characters (which implementors MUST therefore strip). The purpose of `bareNumber` is to allow publishers to publish numeric data that contains trailing characters such as percentages e.g. `95%` or leading characters such as currencies e.g. `€95` or `EUR 95`. Note that it is entirely up to implementors what, if anything, they do with stripped text.",
"default": true
},
"constraints": {
"title": "Constraints",
"description": "The following constraints are supported for `integer` fields.",
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "Indicates whether a property must have a value for each instance.",
"context": "An empty string is considered to be a missing value."
},
"unique": {
"type": "boolean",
"description": "When `true`, each value for the property `MUST` be unique."
},
"pattern": {
"type": "string",
"description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.",
"context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)."
},
"enum": {
"oneOf": [
{
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
{
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "integer"
}
}
]
},
"minimum": {
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"maximum": {
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
}
}
},
"rdfType": {
"type": "string",
"description": "The RDF type for this field."
}
},
"examples": [
"{\n \"name\": \"age\",\n \"type\": \"integer\",\n \"constraints\": {\n \"unique\": true,\n \"minimum\": 100,\n \"maximum\": 9999\n }\n}\n"
]
},
{
"type": "object",
"title": "Date Field",
"description": "The field contains temporal date values.",
"required": [
"name",
"type"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"type": {
"description": "The type keyword, which `MUST` be a value of `date`.",
"enum": [
"date"
]
},
"format": {
"description": "The format keyword options for `date` are `default`, `any`, and `{PATTERN}`.",
"context": "The following `format` options are supported:\n * **default**: An ISO8601 format string of YYYY-MM-DD.\n * **any**: Any parsable representation of a date. The implementing library can attempt to parse the datetime via a range of strategies.\n * **{PATTERN}**: The value can be parsed according to `{PATTERN}`, which `MUST` follow the date formatting syntax of C / Python [strftime](http://strftime.org/).",
"default": "default"
},
"constraints": {
"title": "Constraints",
"description": "The following constraints are supported for `date` fields.",
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "Indicates whether a property must have a value for each instance.",
"context": "An empty string is considered to be a missing value."
},
"unique": {
"type": "boolean",
"description": "When `true`, each value for the property `MUST` be unique."
},
"enum": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
"minimum": {
"type": "string"
},
"maximum": {
"type": "string"
}
}
},
"rdfType": {
"type": "string",
"description": "The RDF type for this field."
}
},
"examples": [
"{\n \"name\": \"date_of_birth\",\n \"type\": \"date\"\n}\n",
"{\n \"name\": \"date_of_birth\",\n \"type\": \"date\",\n \"constraints\": {\n \"minimum\": \"01-01-1900\"\n }\n}\n",
"{\n \"name\": \"date_of_birth\",\n \"type\": \"date\",\n \"format\": \"MM-DD-YYYY\"\n}\n"
]
},
{
"type": "object",
"title": "Time Field",
"description": "The field contains temporal time values.",
"required": [
"name",
"type"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"type": {
"description": "The type keyword, which `MUST` be a value of `time`.",
"enum": [
"time"
]
},
"format": {
"description": "The format keyword options for `time` are `default`, `any`, and `{PATTERN}`.",
"context": "The following `format` options are supported:\n * **default**: An ISO8601 format string for time.\n * **any**: Any parsable representation of a date. The implementing library can attempt to parse the datetime via a range of strategies.\n * **{PATTERN}**: The value can be parsed according to `{PATTERN}`, which `MUST` follow the date formatting syntax of C / Python [strftime](http://strftime.org/).",
"default": "default"
},
"constraints": {
"title": "Constraints",
"description": "The following constraints are supported for `time` fields.",
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "Indicates whether a property must have a value for each instance.",
"context": "An empty string is considered to be a missing value."
},
"unique": {
"type": "boolean",
"description": "When `true`, each value for the property `MUST` be unique."
},
"enum": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
"minimum": {
"type": "string"
},
"maximum": {
"type": "string"
}
}
},
"rdfType": {
"type": "string",
"description": "The RDF type for this field."
}
},
"examples": [
"{\n \"name\": \"appointment_start\",\n \"type\": \"time\"\n}\n",
"{\n \"name\": \"appointment_start\",\n \"type\": \"time\",\n \"format\": \"any\"\n}\n"
]
},
{
"type": "object",
"title": "Date Time Field",
"description": "The field contains temporal datetime values.",
"required": [
"name",
"type"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {
"title": "Title",
"description": "A human-readable title.",
"type": "string",
"examples": [
"{\n \"title\": \"My Package Title\"\n}\n"
]
},
"description": {
"title": "Description",
"description": "A text description. Markdown is encouraged.",
"type": "string",
"examples": [
"{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n"
]
},
"type": {
"description": "The type keyword, which `MUST` be a value of `datetime`.",
"enum": [
"datetime"
]
},
"format": {
"description": "The format keyword options for `datetime` are `default`, `any`, and `{PATTERN}`.",
"context": "The following `format` options are supported:\n * **default**: An ISO8601 format string for datetime.\n * **any**: Any parsable representation of a date. The implementing library can attempt to parse the datetime via a range of strategies.\n * **{PATTERN}**: The value can be parsed according to `{PATTERN}`, which `MUST` follow the date formatting syntax of C / Python [strftime](http://strftime.org/).",
"default": "default"
},
"constraints": {
"title": "Constraints",
"description": "The following constraints are supported for `datetime` fields.",
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "Indicates whether a property must have a value for each instance.",
"context": "An empty string is considered to be a missing value."
},
"unique": {
"type": "boolean",
"description": "When `true`, each value for the property `MUST` be unique."
},
"enum": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
"minimum": {
"type": "string"
},
"maximum": {
"type": "string"
}
}
},
"rdfType": {
"type": "string",
"description": "The RDF type for this field."
}
},
"examples": [
"{\n \"name\": \"timestamp\",\n \"type\": \"datetime\"\n}\n",
"{\n \"name\": \"timestamp\",\n \"type\": \"datetime\",\n \"format\": \"default\"\n}\n"
]
},
{
"type": "object",
"title": "Year Field",
"description": "A calendar year, being an integer with 4 digits. Equivalent to [gYear in XML Schema](https://www.w3.org/TR/xmlschema-2/#gYear)",
"required": [
"name",
"type"
],
"properties": {
"name": {
"title": "Name",
"description": "A name for this field.",
"type": "string"
},
"title": {