diff --git a/datacite/mod.ts b/datacite/mod.ts new file mode 100644 index 0000000000..146de107ad --- /dev/null +++ b/datacite/mod.ts @@ -0,0 +1,29 @@ +/** + * DataCite Metadata Schema JSON Schemas + * + * The DataCite Metadata Working Group publishes a schema as XSD: + * https://github.com/datacite/schema/tree/master/source/meta + * + * Invenio Software publishes JSON Schema versions: + * https://github.com/inveniosoftware/datacite/tree/master/datacite/schemas + * + * This package re-exports the Invenio Software JSON Schemas for easier consumption. + * The schemas are licensed under BSD-3-Clause (see ./schemas/LICENSE). + */ +export { default as schema40 } from "./schemas/datacite-v4.0.json" with { type: "json" }; +export { default as schema41 } from "./schemas/datacite-v4.1.json" with { type: "json" }; +export { default as schema42 } from "./schemas/datacite-v4.2.json" with { type: "json" }; +export { default as schema43 } from "./schemas/datacite-v4.3.json" with { type: "json" }; +export { default as schema44 } from "./schemas/datacite-v4.4.json" with { type: "json" }; +export { default as schema45 } from "./schemas/datacite-v4.5.json" with { type: "json" }; + +export const latest = schema45; +export const versions = { + "4": schema45, + "4.5": schema45, + "4.4": schema44, + "4.3": schema43, + "4.2": schema42, + "4.1": schema41, + "4.0": schema40, +}; diff --git a/datacite/schemas/LICENSE b/datacite/schemas/LICENSE new file mode 100644 index 0000000000..002023d770 --- /dev/null +++ b/datacite/schemas/LICENSE @@ -0,0 +1,37 @@ +DataCite is free software; you can redistribute it and/or modify +it under the terms of the Revised BSD License quoted below. + +Copyright (C) 2015-2018 CERN. +Copyright (C) 2018 Center for Open Science. +Copyright (C) 2019-2024 Caltech. +Copyright (C) 2024 Institute of Biotechnology of the Czech Academy of Sciences. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/datacite/schemas/datacite-v4.0.json b/datacite/schemas/datacite-v4.0.json new file mode 100644 index 0000000000..84460feaf0 --- /dev/null +++ b/datacite/schemas/datacite-v4.0.json @@ -0,0 +1,607 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "datacite-v4.0.json", + "title": "DataCite v4.0", + "description": "JSON representation of the DataCite v4.0 schema.", + "additionalProperties": false, + "definitions": { + "doi": { + "description": "Digital object identifier.", + "type": "string", + "pattern": "10\\..+/.+" + }, + "year": { + "type": "string" + }, + "language": { + "description": "Allowed values are taken from IETF BCP 47, ISO 639-1 language codes.", + "type": "string" + }, + "uri": { + "description": "For adding future URI validation.", + "type": "string" + }, + "nameIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nameIdentifier": { + "type": "string" + }, + "nameIdentifierScheme": { + "type": "string" + }, + "schemeURI": { + "$ref": "#/definitions/uri" + } + }, + "additionalProperties": false, + "required": [ + "nameIdentifier", + "nameIdentifierScheme" + ] + } + } + }, + "type": "object", + "properties": { + "identifier": { + "description": "A persistent identifier that identifies a resource. Currently, only DOI is allowed.", + "type": "object", + "properties": { + "identifier": { + "$ref": "#/definitions/doi" + }, + "identifierType": { + "enum": [ + "DOI" + ] + } + }, + "additionalProperties": false, + "required": [ + "identifier", + "identifierType" + ] + }, + "creators": { + "description": "The main researchers involved working on the data, or the authors of the publication in priority order. May be a corporate/institutional or personal name. Format: Family, Given", + "type": "array", + "items": { + "creatorName": { + "type": "string" + }, + "nameIdentifiers": { + "$ref": "#/definitions/nameIdentifiers" + }, + "affiliations": { + "type": "array", + "items": { + "type": "string" + } + }, + "familyName": { + "type": "string" + }, + "givenName": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "creatorName" + ] + }, + "titles": { + "type": "array", + "items": { + "description": "A name or title by which a resource is known.", + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1 + }, + "type": { + "description": "WARNING: This field has been superseded by 'titleType'", + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "titleType": { + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + } + }, + "publisher": { + "description": "The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource. This property will be used to formulate the citation, so consider the prominence of the role. In the case of datasets, \"publish\" is understood to mean making the data available to the community of researchers.", + "type": "string", + "minLength": 1 + }, + "publicationYear": { + "description": "Year when the data is made publicly available. If an embargo period has been in effect, use the date when the embargo period ends. In the case of datasets, \"publish\" is understood to mean making the data available on a specific date to the community of researchers. If there is no standard publication year value, use the date that would be preferred from a citation perspective.", + "$ref": "#/definitions/year" + }, + "subjects": { + "type": "array", + "items": { + "description": "Subject, keywords, classification codes, or key phrases describing the resource.", + "type": "object", + "properties": { + "subject": { + "type": "string" + }, + "subjectScheme": { + "type": "string" + }, + "schemeURI": { + "$ref": "#/definitions/uri" + }, + "valueURI": { + "$ref": "#/definitions/uri" + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "minProperties": 1 + } + }, + "contributors": { + "description": "The institution or person responsible for collecting, creating, or otherwise contributing to the developement of the dataset. The personal name format should be: Family, Given.", + "type": "array", + "items": { + "type": "object", + "properties": { + "contributorType": { + "enum": [ + "ContactPerson", + "DataCollector", + "DataCurator", + "DataManager", + "Distributor", + "Editor", + "HostingInstitution", + "Other", + "Producer", + "ProjectLeader", + "ProjectManager", + "ProjectMember", + "RegistrationAgency", + "RegistrationAuthority", + "RelatedPerson", + "ResearchGroup", + "RightsHolder", + "Researcher", + "Sponsor", + "Supervisor", + "WorkPackageLeader" + ] + }, + "contributorName": { + "type": "string" + }, + "nameIdentifiers": { + "$ref": "#/definitions/nameIdentifiers" + }, + "affiliations": { + "type": "array", + "items": { + "type": "string" + } + }, + "familyName": { + "type": "string" + }, + "givenName": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "contributorName", + "contributorType" + ] + } + }, + "dates": { + "description": "Different dates relevant to the work.", + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "description": "YYYY,YYYY-MM-DD, YYYY-MM-DDThh:mm:ssTZD or any other format or level of granularity described in W3CDTF. Use RKMS-ISO8601 standard for depicting date ranges.", + "type": "string" + }, + "dateType": { + "enum": [ + "Accepted", + "Available", + "Collected", + "Copyrighted", + "Created", + "Issued", + "Submitted", + "Updated", + "Valid" + ] + } + }, + "additionalProperties": false, + "required": ["dateType"] + } + }, + "language": { + "description": "Primary language of the resource.", + "$ref": "#/definitions/language" + }, + "resourceType": { + "description": "The type of a resource. You may enter an additional free text description. The format is open, but the preferred format is a single term of some detail so that a pair can be formed with the sub-property.", + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "resourceTypeGeneral": { + "description": "The general type of a resource.", + "enum": [ + "Audiovisual", + "Collection", + "Dataset", + "Event", + "Image", + "InteractiveResource", + "Model", + "PhysicalObject", + "Service", + "Software", + "Sound", + "Text", + "Workflow", + "Other" + ] + } + }, + "additionalProperties": false, + "required": ["resourceTypeGeneral"] + }, + "alternateIdentifiers": { + "description": "An identifier or identifiers other than the primary Identifier applied to the resource being registered. This may be any alphanumeric string which is unique within its domain of issue. May be used for local identifiers. AlternateIdentifier should be used for another identifier of the same instance (same location, same file).", + "type": "array", + "items": { + "type": "object", + "properties": { + "alternateIdentifier": { + "type": "string" + }, + "alternateIdentifierType": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "alternateIdentifier", + "alternateIdentifierType" + ] + } + }, + "relatedIdentifiers": { + "description": "Identifiers of related resources. Use this property to indicate subsets of properties, as appropriate.", + "type": "array", + "items": { + "type": "object", + "properties": { + "relatedIdentifier": { + "type": "string" + }, + "relatedIdentifierType": { + "enum": [ + "ARK", + "arXiv", + "bibcode", + "DOI", + "EAN13", + "EISSN", + "Handle", + "IGSN", + "ISBN", + "ISSN", + "ISTC", + "LISSN", + "LSID", + "PMID", + "PURL", + "UPC", + "URL", + "URN" + ] + }, + "relationType": { + "enum": [ + "IsCitedBy", + "Cites", + "IsSupplementTo", + "IsSupplementedBy", + "IsContinuedBy", + "Continues", + "IsNewVersionOf", + "IsPreviousVersionOf", + "IsPartOf", + "HasPart", + "IsReferencedBy", + "References", + "IsDocumentedBy", + "Documents", + "IsCompiledBy", + "Compiles", + "IsVariantFormOf", + "IsOriginalFormOf", + "IsIdenticalTo", + "HasMetadata", + "IsMetadataFor", + "Reviews", + "IsReviewedBy", + "IsDerivedFrom", + "IsSourceOf" + ] + }, + "relatedMetadataScheme": { + "type": "string" + }, + "schemeURI": { + "$ref": "#/definitions/uri" + } + }, + "additionalProperties": false, + "required": [ + "relatedIdentifier", + "relationType", + "relatedIdentifierType" + ] + } + }, + "sizes": { + "description": "Unstructures size information about the resource.", + "type": "array", + "items": { + "type": "string" + } + }, + "formats": { + "description": "Technical format of the resource. Use file extension or MIME type where possible.", + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "description": "Version number of the resource. If the primary resource has changed the version number increases. Register a new identifier for a major version change. Individual stewards need to determine which are major vs. minor versions. May be used in conjunction with properties 11 and 12 (AlternateIdentifier and RelatedIdentifier) to indicate various information updates. May be used in conjunction with property 17 (Description) to indicate the nature and file/record range of version.", + "type": "string" + }, + "rightsList": { + "description": "Any rights information for this resource. Provide a rights management statement for the resource or reference a service providing such information. Include embargo information if applicable. Use the complete title of a license and include version information if applicable.", + "type": "array", + "items": { + "type": "object", + "properties": { + "rightsURI": { + "$ref": "#/definitions/uri" + }, + "rights": { + "type": "string" + } + }, + "additionalProperties": false, + "minProperties": 1 + } + }, + "descriptions": { + "description": "All additional information that does not fit in any of the other categories. May be used for technical information. It is a best practice to supply a description.", + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "minLength": 1 + }, + "descriptionType": { + "type": "string", + "description": "The type of the description.", + "enum": [ + "Abstract", + "Methods", + "SeriesInformation", + "TableOfContents", + "TechnicalInfo", + "Other" + ] + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "required": [ + "description", + "descriptionType" + ] + } + }, + "fundingReferences": { + "description": "Information about financial support (funding) for the resource being registered.", + "type": "array", + "items": { + "type": "object", + "properties": { + "funderName": { + "description": "Name of the funding provider.", + "type": "string" + }, + "funderIdentifier": { + "description": "Uniquely identifies a funding entity, according to various types.", + "type": "object", + "properties": { + "funderIdentifier": { + "type": "string" + }, + "funderIdentifierType": { + "type": "string", + "enum": [ + "ISNI", + "GRID", + "Crossref Funder ID", + "Other" + ] + } + }, + "additionalProperties": false, + "required": [ + "funderIdentifier", + "funderIdentifierType" + ] + }, + "awardNumber": { + "description": "The code assigned by the funder to a sponsored award (grant).", + "type": "object", + "properties": { + "awardNumber": { + "type": "string" + }, + "awardURI": { + "$ref": "#/definitions/uri" + } + }, + "additionalProperties": false, + "required": ["awardNumber"] + }, + "awardTitle": { + "description": "The human readable title of the award (grant).", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["funderName"] + } + }, + "geoLocations": { + "description": "Spatial region or named place where the data was gathered or about which the data is focused.", + "type": "array", + "items": { + "type": "object", + "properties": { + "geoLocationPoint": { + "description": "A point location in space.", + "type": "object", + "properties": { + "pointLongitude": { + "description": "Longitudinal dimension of point.", + "type": "number" + }, + "pointLatitude": { + "description": "Latitudinal dimension of point.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "pointLongitude", + "pointLatitude" + ] + }, + "geoLocationBox": { + "description": "The spatial limits of a box.", + "type": "object", + "properties": { + "westBoundLongitude": { + "description": "Western longitudinal dimension of box.", + "type": "number" + }, + "eastBoundLongitude": { + "description": "Eastern longitudinal dimension of box.", + "type": "number" + }, + "southBoundLatitude": { + "description": "Southern latitudinal dimension of box.", + "type": "number" + }, + "northBoundLatitude": { + "description": "Northern latitudinal dimension of box.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "westBoundLongitude", + "eastBoundLongitude", + "southBoundLatitude", + "northBoundLatitude" + ] + }, + "geoLocationPlace": { + "description": "Spatial region or named place where the data was gathered or about which the data is focused.", + "type": "string" + }, + "geoLocationPolygon": { + "description": "A drawn polygon area, defined by a set of points and lines connecting the points in a closed chain.", + "type": "object", + "properties": { + "polygonPoints": { + "description": "A point location in a polygon.", + "type": "array", + "minItems": 3, + "items": { + "type": "object", + "properties": { + "pointLongitude": { + "description": "Longitudinal dimension of point.", + "type": "number" + }, + "pointLatitude": { + "description": "Latitudinal dimension of point.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "pointLongitude", + "pointLatitude" + ] + } + } + }, + "additionalProperties": false, + "required": ["polygonPoints"] + } + } + } + } + }, + "required": [ + "identifier", + "creators", + "titles", + "publisher", + "publicationYear", + "resourceType" + ] +} diff --git a/datacite/schemas/datacite-v4.1.json b/datacite/schemas/datacite-v4.1.json new file mode 100644 index 0000000000..2714172db8 --- /dev/null +++ b/datacite/schemas/datacite-v4.1.json @@ -0,0 +1,700 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "datacite-v4.1.json", + "title": "DataCite v4.1", + "description": "JSON representation of the DataCite v4.1 schema.", + "additionalProperties": false, + "definitions": { + "doi": { + "description": "Digital object identifier.", + "type": "string", + "pattern": "10\\..+/.+" + }, + "year": { + "type": "string" + }, + "language": { + "description": "Allowed values are taken from IETF BCP 47, ISO 639-1 language codes.", + "type": "string" + }, + "uri": { + "description": "For adding future URI validation.", + "type": "string" + }, + "nameIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nameIdentifier": { + "type": "string" + }, + "nameIdentifierScheme": { + "type": "string" + }, + "schemeURI": { + "$ref": "#/definitions/uri" + } + }, + "additionalProperties": false, + "required": [ + "nameIdentifier", + "nameIdentifierScheme" + ] + } + } + }, + "type": "object", + "properties": { + "identifier": { + "description": "A persistent identifier that identifies a resource. Currently, only DOI is allowed.", + "type": "object", + "properties": { + "identifier": { + "$ref": "#/definitions/doi" + }, + "identifierType": { + "enum": [ + "DOI" + ] + } + }, + "additionalProperties": false, + "required": [ + "identifier", + "identifierType" + ] + }, + "creators": { + "description": "The main researchers involved working on the data, or the authors of the publication in priority order. May be a corporate/institutional or personal name. Format: Family, Given", + "type": "array", + "items": { + "creatorName": { + "type": "string" + }, + "nameType": { + "enum": [ + "Organisational", + "Personal" + ] + }, + "nameIdentifiers": { + "$ref": "#/definitions/nameIdentifiers" + }, + "affiliations": { + "type": "array", + "items": { + "type": "string" + } + }, + "familyName": { + "type": "string" + }, + "givenName": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "creatorName" + ] + }, + "titles": { + "type": "array", + "items": { + "description": "A name or title by which a resource is known.", + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1 + }, + "type": { + "description": "WARNING: This field has been superseded by 'titleType'", + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "titleType": { + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + } + }, + "publisher": { + "description": "The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource. This property will be used to formulate the citation, so consider the prominence of the role. In the case of datasets, \"publish\" is understood to mean making the data available to the community of researchers.", + "type": "string", + "minLength": 1 + }, + "publicationYear": { + "description": "Year when the data is made publicly available. If an embargo period has been in effect, use the date when the embargo period ends. In the case of datasets, \"publish\" is understood to mean making the data available on a specific date to the community of researchers. If there is no standard publication year value, use the date that would be preferred from a citation perspective.", + "$ref": "#/definitions/year" + }, + "subjects": { + "type": "array", + "items": { + "description": "Subject, keywords, classification codes, or key phrases describing the resource.", + "type": "object", + "properties": { + "subject": { + "type": "string" + }, + "subjectScheme": { + "type": "string" + }, + "schemeURI": { + "$ref": "#/definitions/uri" + }, + "valueURI": { + "$ref": "#/definitions/uri" + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "minProperties": 1 + } + }, + "contributors": { + "description": "The institution or person responsible for collecting, creating, or otherwise contributing to the developement of the dataset. The personal name format should be: Family, Given.", + "type": "array", + "items": { + "type": "object", + "properties": { + "contributorType": { + "enum": [ + "ContactPerson", + "DataCollector", + "DataCurator", + "DataManager", + "Distributor", + "Editor", + "HostingInstitution", + "Other", + "Producer", + "ProjectLeader", + "ProjectManager", + "ProjectMember", + "RegistrationAgency", + "RegistrationAuthority", + "RelatedPerson", + "ResearchGroup", + "RightsHolder", + "Researcher", + "Sponsor", + "Supervisor", + "WorkPackageLeader" + ] + }, + "contributorName": { + "type": "string" + }, + "nameType": { + "enum": [ + "Organisational", + "Personal" + ] + }, + "nameIdentifiers": { + "$ref": "#/definitions/nameIdentifiers" + }, + "affiliations": { + "type": "array", + "items": { + "type": "string" + } + }, + "familyName": { + "type": "string" + }, + "givenName": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "contributorName", + "contributorType" + ] + } + }, + "dates": { + "description": "Different dates relevant to the work.", + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "description": "YYYY,YYYY-MM-DD, YYYY-MM-DDThh:mm:ssTZD or any other format or level of granularity described in W3CDTF. Use RKMS-ISO8601 standard for depicting date ranges.", + "type": "string" + }, + "dateType": { + "enum": [ + "Accepted", + "Available", + "Collected", + "Copyrighted", + "Created", + "Issued", + "Submitted", + "Updated", + "Valid", + "Other" + ] + }, + "dateInformation": { + "description": "Specific information about the date.", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["dateType"] + } + }, + "language": { + "description": "Primary language of the resource.", + "$ref": "#/definitions/language" + }, + "resourceType": { + "description": "The type of a resource. You may enter an additional free text description. The format is open, but the preferred format is a single term of some detail so that a pair can be formed with the sub-property.", + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "resourceTypeGeneral": { + "description": "The general type of a resource.", + "enum": [ + "Audiovisual", + "Collection", + "DataPaper", + "Dataset", + "Event", + "Image", + "InteractiveResource", + "Model", + "PhysicalObject", + "Service", + "Software", + "Sound", + "Text", + "Workflow", + "Other" + ] + } + }, + "additionalProperties": false, + "required": ["resourceTypeGeneral"] + }, + "alternateIdentifiers": { + "description": "An identifier or identifiers other than the primary Identifier applied to the resource being registered. This may be any alphanumeric string which is unique within its domain of issue. May be used for local identifiers. AlternateIdentifier should be used for another identifier of the same instance (same location, same file).", + "type": "array", + "items": { + "type": "object", + "properties": { + "alternateIdentifier": { + "type": "string" + }, + "alternateIdentifierType": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "alternateIdentifier", + "alternateIdentifierType" + ] + } + }, + "relatedIdentifiers": { + "description": "Identifiers of related resources. Use this property to indicate subsets of properties, as appropriate.", + "type": "array", + "items": { + "type": "object", + "properties": { + "relatedIdentifier": { + "type": "string" + }, + "relatedIdentifierType": { + "enum": [ + "ARK", + "arXiv", + "bibcode", + "DOI", + "EAN13", + "EISSN", + "Handle", + "IGSN", + "ISBN", + "ISSN", + "ISTC", + "LISSN", + "LSID", + "PMID", + "PURL", + "UPC", + "URL", + "URN" + ] + }, + "relationType": { + "enum": [ + "IsCitedBy", + "Cites", + "IsSupplementTo", + "IsSupplementedBy", + "IsContinuedBy", + "Continues", + "IsDescribedBy", + "Describes", + "HasMetadata", + "IsMetadataFor", + "HasVersion", + "IsVersionOf", + "IsNewVersionOf", + "IsPreviousVersionOf", + "IsPartOf", + "HasPart", + "IsReferencedBy", + "References", + "IsDocumentedBy", + "Documents", + "IsCompiledBy", + "Compiles", + "IsVariantFormOf", + "IsOriginalFormOf", + "IsIdenticalTo", + "Reviews", + "IsReviewedBy", + "IsDerivedFrom", + "IsSourceOf", + "IsRequiredBy", + "Requires" + ] + }, + "resourceTypeGeneral": { + "description": "The general type of a resource.", + "enum": [ + "Audiovisual", + "Collection", + "DataPaper", + "Dataset", + "Event", + "Image", + "InteractiveResource", + "Model", + "PhysicalObject", + "Service", + "Software", + "Sound", + "Text", + "Workflow", + "Other" + ] + }, + "relatedMetadataScheme": { + "type": "string" + }, + "schemeURI": { + "$ref": "#/definitions/uri" + } + }, + "additionalProperties": false, + "required": [ + "relatedIdentifier", + "relationType", + "relatedIdentifierType" + ] + } + }, + "sizes": { + "description": "Unstructures size information about the resource.", + "type": "array", + "items": { + "type": "string" + } + }, + "formats": { + "description": "Technical format of the resource. Use file extension or MIME type where possible.", + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "description": "Version number of the resource. If the primary resource has changed the version number increases. Register a new identifier for a major version change. Individual stewards need to determine which are major vs. minor versions. May be used in conjunction with properties 11 and 12 (AlternateIdentifier and RelatedIdentifier) to indicate various information updates. May be used in conjunction with property 17 (Description) to indicate the nature and file/record range of version.", + "type": "string" + }, + "rightsList": { + "description": "Any rights information for this resource. Provide a rights management statement for the resource or reference a service providing such information. Include embargo information if applicable. Use the complete title of a license and include version information if applicable.", + "type": "array", + "items": { + "type": "object", + "properties": { + "rightsURI": { + "$ref": "#/definitions/uri" + }, + "rights": { + "type": "string" + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "minProperties": 1 + } + }, + "descriptions": { + "description": "All additional information that does not fit in any of the other categories. May be used for technical information. It is a best practice to supply a description.", + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "minLength": 1 + }, + "descriptionType": { + "type": "string", + "description": "The type of the description.", + "enum": [ + "Abstract", + "Methods", + "SeriesInformation", + "TableOfContents", + "TechnicalInfo", + "Other" + ] + }, + "lang": { + "$ref": "#/definitions/language" + } + }, + "additionalProperties": false, + "required": [ + "description", + "descriptionType" + ] + } + }, + "fundingReferences": { + "description": "Information about financial support (funding) for the resource being registered.", + "type": "array", + "items": { + "type": "object", + "properties": { + "funderName": { + "description": "Name of the funding provider.", + "type": "string" + }, + "funderIdentifier": { + "description": "Uniquely identifies a funding entity, according to various types.", + "type": "object", + "properties": { + "funderIdentifier": { + "type": "string" + }, + "funderIdentifierType": { + "type": "string", + "enum": [ + "ISNI", + "GRID", + "Crossref Funder ID", + "Other" + ] + } + }, + "additionalProperties": false, + "required": [ + "funderIdentifier", + "funderIdentifierType" + ] + }, + "awardNumber": { + "description": "The code assigned by the funder to a sponsored award (grant).", + "type": "object", + "properties": { + "awardNumber": { + "type": "string" + }, + "awardURI": { + "$ref": "#/definitions/uri" + } + }, + "additionalProperties": false, + "required": ["awardNumber"] + }, + "awardTitle": { + "description": "The human readable title of the award (grant).", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["funderName"] + } + }, + "geoLocations": { + "description": "Spatial region or named place where the data was gathered or about which the data is focused.", + "type": "array", + "items": { + "type": "object", + "properties": { + "geoLocationPoint": { + "description": "A point location in space.", + "type": "object", + "properties": { + "pointLongitude": { + "description": "Longitudinal dimension of point.", + "type": "number" + }, + "pointLatitude": { + "description": "Latitudinal dimension of point.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "pointLongitude", + "pointLatitude" + ] + }, + "geoLocationBox": { + "description": "The spatial limits of a box.", + "type": "object", + "properties": { + "westBoundLongitude": { + "description": "Western longitudinal dimension of box.", + "type": "number" + }, + "eastBoundLongitude": { + "description": "Eastern longitudinal dimension of box.", + "type": "number" + }, + "southBoundLatitude": { + "description": "Southern latitudinal dimension of box.", + "type": "number" + }, + "northBoundLatitude": { + "description": "Northern latitudinal dimension of box.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "westBoundLongitude", + "eastBoundLongitude", + "southBoundLatitude", + "northBoundLatitude" + ] + }, + "geoLocationPlace": { + "description": "Spatial region or named place where the data was gathered or about which the data is focused.", + "type": "string" + }, + "geoLocationPolygon": { + "description": "WARNING: This field has been superseded by 'geoLocationPolygons'.", + "type": "object", + "properties": { + "polygonPoints": { + "description": "A point location in a polygon. WARNING: Last point will be automatically added.", + "type": "array", + "minItems": 4, + "items": { + "type": "object", + "properties": { + "pointLongitude": { + "description": "Longitudinal dimension of point.", + "type": "number" + }, + "pointLatitude": { + "description": "Latitudinal dimension of point.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "pointLongitude", + "pointLatitude" + ] + } + } + } + }, + "geoLocationPolygons": { + "description": "A drawn polygon area, defined by a set of points and lines connecting the points in a closed chain.", + "type": "array", + "items": { + "type": "object", + "properties": { + "polygonPoints": { + "description": "A point location in a polygon.", + "type": "array", + "minItems": 4, + "items": { + "type": "object", + "properties": { + "pointLongitude": { + "description": "Longitudinal dimension of point.", + "type": "number" + }, + "pointLatitude": { + "description": "Latitudinal dimension of point.", + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "pointLongitude", + "pointLatitude" + ] + } + }, + "inPolygonPoint": { + "description": "For any bound area that is larger than half the earth, define a (random) point inside.", + "type": "object", + "properties": { + "pointLongitude": { + "description": "Longitudinal dimension of point.", + "type": "number" + }, + "pointLatitude": { + "description": "Latitudinal dimension of point.", + "type": "number" + } + } + } + }, + "additionalProperties": false, + "required": ["polygonPoints"] + } + } + } + } + } + }, + "required": [ + "identifier", + "creators", + "titles", + "publisher", + "publicationYear", + "resourceType" + ] +} diff --git a/datacite/schemas/datacite-v4.2.json b/datacite/schemas/datacite-v4.2.json new file mode 100644 index 0000000000..24168f4374 --- /dev/null +++ b/datacite/schemas/datacite-v4.2.json @@ -0,0 +1,480 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + + "definitions": { + "nameType": { + "type": "string", + "enum": [ + "Organizational", + "Personal" + ] + }, + "nameIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nameIdentifier": {"type": "string"}, + "nameIdentifierScheme": {"type": "string"}, + "schemeURI": {"type": "string", "format": "uri"} + }, + "required": ["nameIdentifier", "nameIdentifierScheme"] + }, + "uniqueItems": true + }, + "affiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "affiliation": {"type": "string"} + }, + "required": ["affiliation"] + }, + "uniqueItems": true + }, + "titleType": { + "type": "string", + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "contributorType": { + "type": "string", + "enum": [ + "ContactPerson", + "DataCollector", + "DataCurator", + "DataManager", + "Distributor", + "Editor", + "HostingInstitution", + "Producer", + "ProjectLeader", + "ProjectManager", + "ProjectMember", + "RegistrationAgency", + "RegistrationAuthority", + "RelatedPerson", + "Researcher", + "ResearchGroup", + "RightsHolder", + "Sponsor", + "Supervisor", + "WorkPackageLeader", + "Other" + ] + }, + "date": { + "type": "string", + "anyOf": [ + {"format": "year"}, + {"format": "yearmonth"}, + {"format": "date"}, + {"format": "datetime"}, + {"format": "year-range"}, + {"format": "yearmonth-range"}, + {"format": "date-range"}, + {"format": "datetime-range"} + ] + }, + "dateType": { + "type": "string", + "enum": [ + "Accepted", + "Available", + "Copyrighted", + "Collected", + "Created", + "Issued", + "Submitted", + "Updated", + "Valid", + "Withdrawn", + "Other" + ] + }, + "resourceTypeGeneral": { + "type": "string", + "enum": [ + "Audiovisual", + "Collection", + "DataPaper", + "Dataset", + "Event", + "Image", + "InteractiveResource", + "Model", + "PhysicalObject", + "Service", + "Software", + "Sound", + "Text", + "Workflow", + "Other" + ] + }, + "relatedIdentifierType": { + "type": "string", + "enum": [ + "ARK", + "arXiv", + "bibcode", + "DOI", + "EAN13", + "EISSN", + "Handle", + "IGSN", + "ISBN", + "ISSN", + "ISTC", + "LISSN", + "LSID", + "PMID", + "PURL", + "UPC", + "URL", + "URN", + "w3id" + ] + }, + "relationType": { + "type": "string", + "enum": [ + "IsCitedBy", + "Cites", + "IsSupplementTo", + "IsSupplementedBy", + "IsContinuedBy", + "Continues", + "IsDescribedBy", + "Describes", + "HasMetadata", + "IsMetadataFor", + "HasVersion", + "IsVersionOf", + "IsNewVersionOf", + "IsPreviousVersionOf", + "IsPartOf", + "HasPart", + "IsReferencedBy", + "References", + "IsDocumentedBy", + "Documents", + "IsCompiledBy", + "Compiles", + "IsVariantFormOf", + "IsOriginalFormOf", + "IsIdenticalTo", + "IsReviewedBy", + "Reviews", + "IsDerivedFrom", + "IsSourceOf", + "IsRequiredBy", + "Requires", + "IsObsoletedBy", + "Obsoletes" + ] + }, + "descriptionType": { + "type": "string", + "enum": [ + "Abstract", + "Methods", + "SeriesInformation", + "TableOfContents", + "TechnicalInfo", + "Other" + ] + }, + "geoLocationPoint": { + "type": "object", + "properties": { + "pointLongitude": {"type": "string", "format": "longitude"}, + "pointLatitude": {"type": "string", "format": "latitude"} + }, + "required": ["pointLongitude", "pointLatitude"] + }, + "funderIdentifierType": { + "type": "string", + "enum": [ + "ISNI", + "GRID", + "Crossref Funder ID", + "Other" + ] + } + }, + + "type": "object", + + "properties": { + "types": { + "type": "object", + "properties": { + "resourceType": {"type": "string"}, + "resourceTypeGeneral": {"$ref": "#/definitions/resourceTypeGeneral"} + }, + "required": ["resourceType", "resourceTypeGeneral"] + }, + "identifiers": { + "type": "array", + "items":{ + "type": "object", + "properties": { + "identifier": {"type": "string"}, + "identifierType": {"type": "string"} + }, + "required": ["identifier", "identifierType"] + }, + "minItems": 1, + "uniqueItems": true + }, + "creators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "nameType": {"$ref": "#/definitions/nameType"}, + "givenName": {"type": "string"}, + "familyName": {"type": "string"}, + "nameIdentifiers": {"$ref": "#/definitions/nameIdentifiers"}, + "affiliations": {"$ref": "#/definitions/affiliations"}, + "lang": {"type": "string"} + }, + "required": ["name"] + }, + "minItems": 1, + "uniqueItems": true + }, + "titles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": {"type": "string"}, + "titleType": {"$ref": "#/definitions/titleType"}, + "lang": {"type": "string"} + }, + "required": ["title"] + }, + "minItems": 1, + "uniqueItems": true + }, + "publisher": { + "type": "string" + }, + "publicationYear": { + "type": "string", + "format": "year" + }, + "subjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "subject": {"type": "string"}, + "subjectScheme": {"type": "string"}, + "schemeURI": {"type": "string", "format": "uri"}, + "valueURI": {"type": "string", "format": "uri"}, + "lang": {"type": "string"} + }, + "required": ["subject"] + }, + "uniqueItems": true + }, + "contributors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "contributorType": {"$ref": "#/definitions/contributorType"}, + "name": {"type": "string"}, + "nameType": {"$ref": "#/definitions/nameType"}, + "givenName": {"type": "string"}, + "familyName": {"type": "string"}, + "nameIdentifiers": {"$ref": "#/definitions/nameIdentifiers"}, + "affiliations": {"$ref": "#/definitions/affiliations"}, + "lang": {"type": "string"} + }, + "required": ["contributorType", "name"] + }, + "uniqueItems": true + }, + "dates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": {"$ref": "#/definitions/date"}, + "dateType": {"$ref": "#/definitions/dateType"}, + "dateInformation": {"type": "string"} + }, + "required": ["date", "dateType"] + }, + "uniqueItems": true + }, + "language": { + "type": "string", + "$comment": "Primary language of the resource. Allowed values are taken from IETF BCP 47, ISO 639-1 language codes." + }, + "alternateIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alternateIdentifier": {"type": "string"}, + "alternateIdentifierType": {"type": "string"} + }, + "required": ["alternateIdentifier", "alternateIdentifierType"] + }, + "uniqueItems": true + }, + "relatedIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "relatedIdentifier": {"type": "string"}, + "relatedIdentifierType": {"$ref": "#/definitions/relatedIdentifierType"}, + "relationType": {"$ref": "#/definitions/relationType"}, + "relatedMetadataScheme": {"type": "string"}, + "schemeURI": {"type": "string", "format": "uri"}, + "schemeType": {"type": "string"}, + "resourceTypeGeneral": {"$ref": "#/definitions/resourceTypeGeneral"} + }, + "required": ["relatedIdentifier", "relatedIdentifierType", "relationType"], + "if": { + "properties": { + "relationType": {"enum": ["HasMetadata", "IsMetadataFor"]} + } + }, + "else": { + "$comment": "these properties may only be used with relation types HasMetadata/IsMetadataFor", + "properties": { + "relatedMetadataScheme": false, + "schemeURI": false, + "schemeType": false + } + } + }, + "uniqueItems": true + }, + "sizes": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "formats": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "version": { + "type": "string" + }, + "rightsList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "rights": {"type": "string"}, + "rightsURI": {"type": "string", "format": "uri"}, + "rightsIdentifier": {"type": "string"}, + "rightsIdentifierScheme": {"type": "string"}, + "schemeURI": {"type": "string", "format": "uri"}, + "lang": {"type": "string"} + } + }, + "uniqueItems": true + }, + "descriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": {"type": "string"}, + "descriptionType": {"$ref": "#/definitions/descriptionType"}, + "lang": {"type": "string"} + }, + "required": ["description", "descriptionType"] + }, + "uniqueItems": true + }, + "geoLocations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "geoLocationPlace": {"type": "string"}, + "geoLocationPoint": {"$ref": "#/definitions/geoLocationPoint"}, + "geoLocationBox": { + "type": "object", + "properties": { + "westBoundLongitude": {"type": "string", "format": "longitude"}, + "eastBoundLongitude": {"type": "string", "format": "longitude"}, + "southBoundLatitude": {"type": "string", "format": "latitude"}, + "northBoundLatitude": {"type": "string", "format": "latitude"} + }, + "required": ["westBoundLongitude", "eastBoundLongitude", "southBoundLatitude", "northBoundLatitude"] + }, + "geoLocationPolygons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "polygonPoints": { + "type": "array", + "items": {"$ref": "#/definitions/geoLocationPoint"}, + "minItems": 4 + }, + "inPolygonPoint": {"$ref": "#/definitions/geoLocationPoint"} + }, + "required": ["polygonPoints"] + }, + "uniqueItems": true + } + } + }, + "uniqueItems": true + }, + "fundingReferences": { + "type": "array", + "items": { + "type": "object", + "properties": { + "funderName": {"type": "string"}, + "funderIdentifier": {"type": "string"}, + "funderIdentifierType": {"$ref": "#/definitions/funderIdentifierType"}, + "awardNumber": {"type": "string"}, + "awardURI": {"type": "string", "format": "uri"}, + "awardTitle": {"type": "string"} + }, + "required": ["funderName"] + }, + "uniqueItems": true + }, + "schemaVersion": { + "type": "string", + "const": "http://datacite.org/schema/kernel-4" + } + }, + + "required": [ + "identifiers", + "creators", + "titles", + "publisher", + "publicationYear", + "types", + "schemaVersion" + ] +} diff --git a/datacite/schemas/datacite-v4.3.json b/datacite/schemas/datacite-v4.3.json new file mode 100644 index 0000000000..1dcb8b5627 --- /dev/null +++ b/datacite/schemas/datacite-v4.3.json @@ -0,0 +1,495 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "id": "datacite-v4.3.json", + "title": "DataCite v4.3", + "description": "JSON representation of the DataCite v4.3 schema.", + "additionalProperties": false, + "definitions": { + "nameType": { + "type": "string", + "enum": [ + "Organizational", + "Personal" + ] + }, + "nameIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nameIdentifier": {"type": "string"}, + "nameIdentifierScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"} + }, + "required": ["nameIdentifier", "nameIdentifierScheme"] + }, + "uniqueItems": true + }, + "affiliation": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "affiliationIdentifier": {"type": "string"}, + "affiliationIdentifierScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"} + }, + "required": ["name"] + }, + "uniqueItems": true + }, + "titleType": { + "type": "string", + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "contributorType": { + "type": "string", + "enum": [ + "ContactPerson", + "DataCollector", + "DataCurator", + "DataManager", + "Distributor", + "Editor", + "HostingInstitution", + "Producer", + "ProjectLeader", + "ProjectManager", + "ProjectMember", + "RegistrationAgency", + "RegistrationAuthority", + "RelatedPerson", + "Researcher", + "ResearchGroup", + "RightsHolder", + "Sponsor", + "Supervisor", + "WorkPackageLeader", + "Other" + ] + }, + "date": { + "type": "string", + "anyOf": [ + {"format": "year"}, + {"format": "yearmonth"}, + {"format": "date"}, + {"format": "datetime"}, + {"format": "year-range"}, + {"format": "yearmonth-range"}, + {"format": "date-range"}, + {"format": "datetime-range"} + ] + }, + "dateType": { + "type": "string", + "enum": [ + "Accepted", + "Available", + "Copyrighted", + "Collected", + "Created", + "Issued", + "Submitted", + "Updated", + "Valid", + "Withdrawn", + "Other" + ] + }, + "resourceTypeGeneral": { + "type": "string", + "enum": [ + "Audiovisual", + "Collection", + "DataPaper", + "Dataset", + "Event", + "Image", + "InteractiveResource", + "Model", + "PhysicalObject", + "Service", + "Software", + "Sound", + "Text", + "Workflow", + "Other" + ] + }, + "relatedIdentifierType": { + "type": "string", + "enum": [ + "ARK", + "arXiv", + "bibcode", + "DOI", + "EAN13", + "EISSN", + "Handle", + "IGSN", + "ISBN", + "ISSN", + "ISTC", + "LISSN", + "LSID", + "PMID", + "PURL", + "UPC", + "URL", + "URN", + "w3id" + ] + }, + "relationType": { + "type": "string", + "enum": [ + "IsCitedBy", + "Cites", + "IsSupplementTo", + "IsSupplementedBy", + "IsContinuedBy", + "Continues", + "IsDescribedBy", + "Describes", + "HasMetadata", + "IsMetadataFor", + "HasVersion", + "IsVersionOf", + "IsNewVersionOf", + "IsPreviousVersionOf", + "IsPartOf", + "HasPart", + "IsReferencedBy", + "References", + "IsDocumentedBy", + "Documents", + "IsCompiledBy", + "Compiles", + "IsVariantFormOf", + "IsOriginalFormOf", + "IsIdenticalTo", + "IsReviewedBy", + "Reviews", + "IsDerivedFrom", + "IsSourceOf", + "IsRequiredBy", + "Requires", + "IsObsoletedBy", + "Obsoletes" + ] + }, + "descriptionType": { + "type": "string", + "enum": [ + "Abstract", + "Methods", + "SeriesInformation", + "TableOfContents", + "TechnicalInfo", + "Other" + ] + }, + "geoLocationPoint": { + "type": "object", + "properties": { + "pointLongitude": {"type": "string", "format": "longitude"}, + "pointLatitude": {"type": "string", "format": "latitude"} + }, + "required": ["pointLongitude", "pointLatitude"] + }, + "funderIdentifierType": { + "type": "string", + "enum": [ + "ISNI", + "GRID", + "Crossref Funder ID", + "ROR", + "Other" + ] + } + }, + + "type": "object", + + "properties": { + "types": { + "type": "object", + "properties": { + "resourceType": {"type": "string"}, + "resourceTypeGeneral": {"$ref": "#/definitions/resourceTypeGeneral"} + }, + "required": ["resourceType", "resourceTypeGeneral"] + }, + "identifiers": { + "type": "array", + "items":{ + "type": "object", + "properties": { + "identifier": {"type": "string"}, + "identifierType": {"type": "string"} + }, + "required": ["identifier", "identifierType"] + }, + "minItems": 1, + "uniqueItems": true + }, + "creators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "nameType": {"$ref": "#/definitions/nameType"}, + "givenName": {"type": "string"}, + "familyName": {"type": "string"}, + "nameIdentifiers": {"$ref": "#/definitions/nameIdentifiers"}, + "affiliation": {"$ref": "#/definitions/affiliation"}, + "lang": {"type": "string"} + }, + "required": ["name"] + }, + "minItems": 1, + "uniqueItems": true + }, + "titles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": {"type": "string"}, + "titleType": {"$ref": "#/definitions/titleType"}, + "lang": {"type": "string"} + }, + "required": ["title"] + }, + "minItems": 1, + "uniqueItems": true + }, + "publisher": { + "type": "string" + }, + "publicationYear": { + "type": "string", + "format": "year" + }, + "subjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "subject": {"type": "string"}, + "subjectScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"}, + "valueUri": {"type": "string", "format": "uri"}, + "lang": {"type": "string"} + }, + "required": ["subject"] + }, + "uniqueItems": true + }, + "contributors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "contributorType": {"$ref": "#/definitions/contributorType"}, + "name": {"type": "string"}, + "nameType": {"$ref": "#/definitions/nameType"}, + "givenName": {"type": "string"}, + "familyName": {"type": "string"}, + "nameIdentifiers": {"$ref": "#/definitions/nameIdentifiers"}, + "affiliation": {"$ref": "#/definitions/affiliation"}, + "lang": {"type": "string"} + }, + "required": ["contributorType", "name"] + }, + "uniqueItems": true + }, + "dates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": {"$ref": "#/definitions/date"}, + "dateType": {"$ref": "#/definitions/dateType"}, + "dateInformation": {"type": "string"} + }, + "required": ["date", "dateType"] + }, + "uniqueItems": true + }, + "language": { + "type": "string", + "$comment": "Primary language of the resource. Allowed values are taken from IETF BCP 47, ISO 639-1 language codes." + }, + "alternateIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alternateIdentifier": {"type": "string"}, + "alternateIdentifierType": {"type": "string"} + }, + "required": ["alternateIdentifier", "alternateIdentifierType"] + }, + "uniqueItems": true + }, + "relatedIdentifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "relatedIdentifier": {"type": "string"}, + "relatedIdentifierType": {"$ref": "#/definitions/relatedIdentifierType"}, + "relationType": {"$ref": "#/definitions/relationType"}, + "relatedMetadataScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"}, + "schemeType": {"type": "string"}, + "resourceTypeGeneral": {"$ref": "#/definitions/resourceTypeGeneral"} + }, + "required": ["relatedIdentifier", "relatedIdentifierType", "relationType"], + "if": { + "properties": { + "relationType": {"enum": ["HasMetadata", "IsMetadataFor"]} + } + }, + "else": { + "$comment": "these properties may only be used with relation types HasMetadata/IsMetadataFor", + "properties": { + "relatedMetadataScheme": false, + "schemeUri": false, + "schemeType": false + } + } + }, + "uniqueItems": true + }, + "sizes": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "formats": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "version": { + "type": "string" + }, + "rightsList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "rights": {"type": "string"}, + "rightsUri": {"type": "string", "format": "uri"}, + "rightsIdentifier": {"type": "string"}, + "rightsIdentifierScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"}, + "lang": {"type": "string"} + } + }, + "uniqueItems": true + }, + "descriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": {"type": "string"}, + "descriptionType": {"$ref": "#/definitions/descriptionType"}, + "lang": {"type": "string"} + }, + "required": ["description", "descriptionType"] + }, + "uniqueItems": true + }, + "geoLocations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "geoLocationPlace": {"type": "string"}, + "geoLocationPoint": {"$ref": "#/definitions/geoLocationPoint"}, + "geoLocationBox": { + "type": "object", + "properties": { + "westBoundLongitude": {"type": "string", "format": "longitude"}, + "eastBoundLongitude": {"type": "string", "format": "longitude"}, + "southBoundLatitude": {"type": "string", "format": "latitude"}, + "northBoundLatitude": {"type": "string", "format": "latitude"} + }, + "required": ["westBoundLongitude", "eastBoundLongitude", "southBoundLatitude", "northBoundLatitude"] + }, + "geoLocationPolygons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "polygonPoints": { + "type": "array", + "items": {"$ref": "#/definitions/geoLocationPoint"}, + "minItems": 4 + }, + "inPolygonPoint": {"$ref": "#/definitions/geoLocationPoint"} + }, + "required": ["polygonPoints"] + }, + "uniqueItems": true + } + } + }, + "uniqueItems": true + }, + "fundingReferences": { + "type": "array", + "items": { + "type": "object", + "properties": { + "funderName": {"type": "string"}, + "funderIdentifier": {"type": "string"}, + "funderIdentifierType": {"$ref": "#/definitions/funderIdentifierType"}, + "awardNumber": {"type": "string"}, + "awardUri": {"type": "string", "format": "uri"}, + "awardTitle": {"type": "string"} + }, + "required": ["funderName"] + }, + "uniqueItems": true + }, + "schemaVersion": { + "type": "string", + "const": "http://datacite.org/schema/kernel-4" + }, + "container": { + "type": "object", + "properties": { + "type": {"type": "string"}, + "title": {"type": "string"}, + "firstPage": {"type": "string"} + } + } + }, + + "required": [ + "identifiers", + "creators", + "titles", + "publisher", + "publicationYear", + "types", + "schemaVersion" + ] +} diff --git a/datacite/schemas/datacite-v4.5.json b/datacite/schemas/datacite-v4.5.json new file mode 100644 index 0000000000..5ff24238ed --- /dev/null +++ b/datacite/schemas/datacite-v4.5.json @@ -0,0 +1,628 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema#", + "id": "datacite-v4.5.json", + "title": "DataCite v4.5", + "description": "JSON representation of the DataCite v4.5 schema.", + "additionalProperties": false, + "definitions": { + "nameType": { + "type": "string", + "enum": [ + "Organizational", + "Personal" + ] + }, + "nameIdentifiers": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "nameIdentifier": {"type": "string"}, + "nameIdentifierScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"} + }, + "required": ["nameIdentifier", "nameIdentifierScheme"] + }, + "uniqueItems": true + }, + "affiliation": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": {"type": "string"}, + "affiliationIdentifier": {"type": "string"}, + "affiliationIdentifierScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"} + }, + "required": ["name"] + }, + "uniqueItems": true + }, + "person": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "nameType": {"$ref": "#/definitions/nameType"}, + "givenName": {"type": "string"}, + "familyName": {"type": "string"}, + "nameIdentifiers": {"$ref": "#/definitions/nameIdentifiers"}, + "affiliation": {"$ref": "#/definitions/affiliation"}, + "lang": {"type": "string"} + }, + "required": ["name"] + }, + "creator": { + "type": "object", + "allOf": [{ "$ref": "#/definitions/person" }], + "unevaluatedProperties": false + }, + "contributor": { + "type": "object", + "allOf": [{ "$ref": "#/definitions/person" }], + "unevaluatedProperties": false, + "properties": { + "contributorType": {"$ref": "#/definitions/contributorType"} + }, + "required": ["name", "contributorType"] + }, + "contributorType": { + "type": "string", + "enum": [ + "ContactPerson", + "DataCollector", + "DataCurator", + "DataManager", + "Distributor", + "Editor", + "HostingInstitution", + "Producer", + "ProjectLeader", + "ProjectManager", + "ProjectMember", + "RegistrationAgency", + "RegistrationAuthority", + "RelatedPerson", + "Researcher", + "ResearchGroup", + "RightsHolder", + "Sponsor", + "Supervisor", + "WorkPackageLeader", + "Other" + ] + }, + "titleType": { + "type": "string", + "enum": [ + "AlternativeTitle", + "Subtitle", + "TranslatedTitle", + "Other" + ] + }, + "longitude": { + "type": "number", + "maximum": 180, + "minimum": -180 + }, + "latitude": { + "type": "number", + "maximum": 90, + "minimum": -90 + }, + "date": { + "type": "string", + "anyOf": [ + {"format": "year"}, + {"format": "yearmonth"}, + {"format": "date"}, + {"format": "datetime"}, + {"format": "year-range"}, + {"format": "yearmonth-range"}, + {"format": "date-range"}, + {"format": "datetime-range"} + ] + }, + "dateType": { + "type": "string", + "enum": [ + "Accepted", + "Available", + "Copyrighted", + "Collected", + "Created", + "Issued", + "Submitted", + "Updated", + "Valid", + "Withdrawn", + "Other" + ] + }, + "resourceTypeGeneral": { + "type": "string", + "enum": [ + "Audiovisual", + "Book", + "BookChapter", + "Collection", + "ComputationalNotebook", + "ConferencePaper", + "ConferenceProceeding", + "DataPaper", + "Dataset", + "Dissertation", + "Event", + "Image", + "Instrument", + "InteractiveResource", + "Journal", + "JournalArticle", + "Model", + "OutputManagementPlan", + "PeerReview", + "PhysicalObject", + "Preprint", + "Report", + "Service", + "Software", + "Sound", + "Standard", + "StudyRegistration", + "Text", + "Workflow", + "Other" + ] + }, + "relatedIdentifierType": { + "type": "string", + "enum": [ + "ARK", + "arXiv", + "bibcode", + "DOI", + "EAN13", + "EISSN", + "Handle", + "IGSN", + "ISBN", + "ISSN", + "ISTC", + "LISSN", + "LSID", + "PMID", + "PURL", + "UPC", + "URL", + "URN", + "w3id" + ] + }, + "relationType": { + "type": "string", + "enum": [ + "IsCitedBy", + "Cites", + "IsCollectedBy", + "Collects", + "IsSupplementTo", + "IsSupplementedBy", + "IsContinuedBy", + "Continues", + "IsDescribedBy", + "Describes", + "HasMetadata", + "IsMetadataFor", + "HasVersion", + "IsVersionOf", + "IsNewVersionOf", + "IsPartOf", + "IsPreviousVersionOf", + "IsPublishedIn", + "HasPart", + "IsReferencedBy", + "References", + "IsDocumentedBy", + "Documents", + "IsCompiledBy", + "Compiles", + "IsVariantFormOf", + "IsOriginalFormOf", + "IsIdenticalTo", + "IsReviewedBy", + "Reviews", + "IsDerivedFrom", + "IsSourceOf", + "IsRequiredBy", + "Requires", + "IsObsoletedBy", + "Obsoletes" + ] + }, + "relatedObject": { + "type": "object", + "properties": { + "relationType": {"$ref": "#/definitions/relationType"}, + "relatedMetadataScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"}, + "schemeType": {"type": "string"}, + "resourceTypeGeneral": {"$ref": "#/definitions/resourceTypeGeneral"} + }, + "required": ["relationType"] + }, + "relatedObjectIf": { + "properties": { + "relationType": {"enum": ["HasMetadata", "IsMetadataFor"]} + } + }, + "relatedObjectElse": { + "$comment": "these properties may only be used with relation types HasMetadata/IsMetadataFor", + "properties": { + "relatedMetadataScheme": false, + "schemeUri": false, + "schemeType": false + } + }, + "descriptionType": { + "type": "string", + "enum": [ + "Abstract", + "Methods", + "SeriesInformation", + "TableOfContents", + "TechnicalInfo", + "Other" + ] + }, + "geoLocationPoint": { + "type": "object", + "additionalProperties": false, + "properties": { + "pointLongitude": {"$ref": "#/definitions/longitude"}, + "pointLatitude": {"$ref": "#/definitions/latitude"} + }, + "required": ["pointLongitude", "pointLatitude"] + }, + "funderIdentifierType": { + "type": "string", + "enum": [ + "ISNI", + "GRID", + "Crossref Funder ID", + "ROR", + "Other" + ] + }, + "publicationYear": { + "type": "string", + "pattern": "^[0-9]{4}$" + } + }, + "type": "object", + "properties": { + "doi": {"type": "string", "pattern" : "^10[.][0-9]{4,9}[/][^\\s]+$"}, + "prefix":{"type": "string", "pattern": "^10[.][0-9]{4,9}$"}, + "suffix":{"type": "string", "pattern": "^[^\\s]+$"}, + "event" : { + "type": "string", + "enum": [ + "hide", + "register", + "publish" + ] + }, + "url": {"type": "string", "format": "uri"}, + "types": { + "type": "object", + "additionalProperties": false, + "properties": { + "resourceType": {"type": "string"}, + "resourceTypeGeneral": {"$ref": "#/definitions/resourceTypeGeneral"} + }, + "required": ["resourceTypeGeneral"] + }, + "creators": { + "type": "array", + "items": { + "type": "object", + "allOf": [{ "$ref": "#/definitions/creator" }], + "required": ["name"] + }, + "minItems": 1 + }, + "titles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "title": {"type": "string"}, + "titleType": {"$ref": "#/definitions/titleType"}, + "lang": {"type": "string"} + }, + "required": ["title"] + }, + "minItems": 1, + "uniqueItems": true + }, + "publisher": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": {"type":"string"}, + "publisherIdentifier": {"type":"string"}, + "publisherIdentifierScheme": {"type":"string"}, + "schemeUri": {"type":"string", "format": "uri"}, + "lang": {"type":"string"} + }, + "required": ["name"] + }, + "publicationYear": {"$ref": "#/definitions/publicationYear"}, + "subjects": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "subject": {"type": "string"}, + "subjectScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"}, + "valueUri": {"type": "string", "format": "uri"}, + "classificationCode": {"type": "string"}, + "lang": {"type": "string"} + }, + "required": ["subject"] + }, + "uniqueItems": true + }, + "contributors": { + "type": "array", + "items": { + "type": "object", + "allOf": [{ "$ref": "#/definitions/contributor" }], + "required": ["contributorType", "name"] + } + }, + "dates": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "date": {"$ref": "#/definitions/date"}, + "dateType": {"$ref": "#/definitions/dateType"}, + "dateInformation": {"type": "string"} + }, + "required": ["date", "dateType"] + }, + "uniqueItems": true + }, + "language": { + "type": "string", + "$comment": "Primary language of the resource. Allowed values are taken from IETF BCP 47, ISO 639-1 language codes." + }, + "alternateIdentifiers": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "alternateIdentifier": {"type": "string"}, + "alternateIdentifierType": {"type": "string"} + }, + "required": ["alternateIdentifier", "alternateIdentifierType"] + }, + "uniqueItems": true + }, + "relatedIdentifiers": { + "type": "array", + "items": { + "type": "object", + "allOf": [{ "$ref": "#/definitions/relatedObject"}], + "unevaluatedProperties": false, + "properties": { + "relatedIdentifier": {"type": "string"}, + "relatedIdentifierType": {"$ref": "#/definitions/relatedIdentifierType"} + }, + "required": ["relatedIdentifier", "relatedIdentifierType", "relationType"], + "if": {"$ref": "#/definitions/relatedObjectIf"}, + "else": {"$ref": "#/definitions/relatedObjectElse"} + } + }, + "relatedItems": { + "type": "array", + "items": { + "type": "object", + "allOf": [{ "$ref": "#/definitions/relatedObject"}], + "unevaluatedProperties": false, + "properties": { + "relatedItemIdentifier": { + "type": "object", + "additionalProperties": false, + "properties": { + "relatedItemIdentifier": {"type": "string"}, + "relatedItemIdentifierType": {"$ref": "#/definitions/relatedIdentifierType"} + }, + "required": ["relatedItemIdentifier", "relatedItemIdentifierType"] + }, + "relatedItemType": {"$ref": "#/definitions/resourceTypeGeneral"}, + "creators": { + "type": "array", + "items": { + "type": "object", + "unevaluatedProperties": false, + "allOf": [{ "$ref": "#/definitions/creator" }], + "required": ["name"] + } + }, + "contributors": { + "type": "array", + "items": { + "type": "object", + "unevaluatedProperties": false, + "allOf": [{ "$ref": "#/definitions/contributor" }], + "required": ["contributorType", "name"] + } + }, + "titles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "title": {"type": "string"}, + "titleType": {"$ref": "#/definitions/titleType"}, + "lang": {"type": "string"} + }, + "required": ["title"] + }, + "minItems": 1, + "uniqueItems": true + }, + "publicationYear": {"$ref": "#/definitions/publicationYear"}, + "volume": {"type": "string"}, + "issue": {"type": "string"}, + "firstPage": {"type": "string"}, + "lastPage": {"type": "string"}, + "edition": {"type": "string"}, + "publisher": {"type": "string"}, + "number": {"type":"string"}, + "numberType": { + "type": "string", + "enum": [ + "Article", + "Chapter", + "Report", + "Other" + ] + } + }, + "required": ["titles", "relatedItemType", "relationType"], + "if": {"$ref": "#/definitions/relatedObjectIf"}, + "else": {"$ref": "#/definitions/relatedObjectElse"} + }, + "uniqueItems": true + }, + "sizes": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "formats": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "version": { + "type": "string" + }, + "rightsList": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "rights": {"type": "string"}, + "rightsUri": {"type": "string", "format": "uri"}, + "rightsIdentifier": {"type": "string"}, + "rightsIdentifierScheme": {"type": "string"}, + "schemeUri": {"type": "string", "format": "uri"}, + "lang": {"type": "string"} + } + }, + "uniqueItems": true + }, + "descriptions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "description": {"type": "string"}, + "descriptionType": {"$ref": "#/definitions/descriptionType"}, + "lang": {"type": "string"} + }, + "required": ["description", "descriptionType"] + }, + "uniqueItems": true + }, + "geoLocations": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "geoLocationPlace": {"type": "string"}, + "geoLocationPoint": {"$ref": "#/definitions/geoLocationPoint"}, + "geoLocationBox": { + "type": "object", + "additionalProperties": false, + "properties": { + "westBoundLongitude": {"$ref": "#/definitions/longitude"}, + "eastBoundLongitude": {"$ref": "#/definitions/longitude"}, + "southBoundLatitude": {"$ref": "#/definitions/latitude"}, + "northBoundLatitude": {"$ref": "#/definitions/latitude"} + }, + "required": ["westBoundLongitude", "eastBoundLongitude", "southBoundLatitude", "northBoundLatitude"] + }, + "geoLocationPolygon": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "polygonPoint": {"$ref": "#/definitions/geoLocationPoint"}, + "inPolygonPoint": {"$ref": "#/definitions/geoLocationPoint"} + } + } + } + } + }, + "uniqueItems": true + }, + "fundingReferences": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "funderName": {"type": "string"}, + "funderIdentifier": {"type": "string"}, + "funderIdentifierType": {"$ref": "#/definitions/funderIdentifierType"}, + "awardNumber": {"type": "string"}, + "awardUri": {"type": "string", "format": "uri"}, + "awardTitle": {"type": "string"} + }, + "required": ["funderName"] + }, + "uniqueItems": true + }, + "schemaVersion": { + "type": "string", + "const": "http://datacite.org/schema/kernel-4" + }, + "container": { + "type": "object", + "properties": { + "type": {"type": "string"}, + "title": {"type": "string"}, + "firstPage": {"type": "string"} + } + } + }, + "required": [ + "creators", + "titles", + "publisher", + "publicationYear", + "types", + "schemaVersion" + ] +}