{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://arkid.researchark.eu/arkid-product.schema.json",
	"title": "Product ArkID (DataCite v4.6 Compatible)",
	"description": "Schema for representing Product ArkIDs, tracking research outputs, publications, prototypes, and other concrete results. The ArkID system provides standardized identification while maintaining full compatibility with DataCite Metadata Schema v4.6 for interoperability with global research infrastructure.",
	"type": "object",
	"version": "2.0.0",
	"lastUpdated": "2025-08-10",
	"properties": {
		"arkidProduct": {
			"allOf": [
				{ "$ref": "https://arkid.researchark.eu/reference-catalogue.schema.json#/$defs/arkdIdentifier" }
			],
			"description": "Unique ArkID for the product, compliant with ISO 27729 (ISNI) standard. The ArkID is a 16-digit number prefixed with 'ARKD-' that uniquely identifies the research product."
		},
		"productDetails": {
			"type": "object",
			"properties": {
				"productName": {
					"type": "string",
					"description": "The name or title of the research product."
				},
				"productType": {
					"type": "string",
					"enum": [
						"Audiovisual",
						"Award",
						"Book",
						"BookChapter",
						"Collection",
						"ComputationalNotebook",
						"ConferencePaper",
						"ConferenceProceeding",
						"DataPaper",
						"Dataset",
						"Dissertation",
						"Event",
						"Image",
						"Instrument",
						"InteractiveResource",
						"Journal",
						"JournalArticle",
						"Model",
						"OutputManagementPlan",
						"PeerReview",
						"PhysicalObject",
						"Preprint",
						"Project",
						"Report",
						"Service",
						"Software",
						"Sound",
						"Standard",
						"StudyRegistration",
						"Text",
						"Workflow",
						"Other"
					],
					"description": "The type of research product, aligned with DataCite v4.6 resourceTypeGeneral controlled vocabulary."
				},
				"productSubtype": {
					"type": "string",
					"description": "A more specific categorization of the product type, if applicable."
				}
			},
			"required": ["productName", "productType"]
		},
		"creationDate": {
			"type": "string",
			"format": "date-time",
			"description": "The date and time when the product was created or published."
		},
		"description": {
			"type": "string",
			"description": "A detailed description of the product, explaining its purpose, features, and significance."
		},
		"originatingProject": {
			"allOf": [
				{ "$ref": "https://arkid.researchark.eu/reference-catalogue.schema.json#/$defs/arkpIdentifier" }
			],
			"description": "The unique ArkID for the project that produced this output, if applicable."
		},
		"originatingIdea": {
			"allOf": [
				{ "$ref": "https://arkid.researchark.eu/reference-catalogue.schema.json#/$defs/arkiIdentifier" }
			],
			"description": "The unique ArkID for the original idea that led to this product, if applicable."
		},
		"associatedPeople": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"arkidUser": {
						"allOf": [
							{ "$ref": "https://arkid.researchark.eu/reference-catalogue.schema.json#/$defs/arkuIdentifier" }
						],
						"description": "The unique ArkID for the person associated with this product."
					},
					"orcidId": {
						"type": "string",
						"pattern": "^\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
						"description": "The unique ORCID identifier for the person, in the format 'xxxx-xxxx-xxxx-xxxx'."
					},
					"name": {
						"type": "object",
						"properties": {
							"firstName": {
								"type": "string",
								"description": "The first name of the person."
							},
							"lastName": {
								"type": "string",
								"description": "The last name of the person."
							}
						},
						"required": ["firstName", "lastName"]
					},
					"contributionType": {
						"type": "string",
						"enum": [
							"Creator",
							"ContactPerson",
							"DataCollector",
							"DataCurator",
							"DataManager",
							"Distributor",
							"Editor",
							"HostingInstitution",
							"Producer",
							"ProjectLeader",
							"ProjectManager",
							"ProjectMember",
							"RegistrationAgency",
							"RegistrationAuthority",
							"RelatedPerson",
							"Researcher",
							"ResearchGroup",
							"RightsHolder",
							"Sponsor",
							"Supervisor",
							"Translator",
							"WorkPackageLeader",
							"Other"
						],
						"description": "The type of contribution made by this person to the product, aligned with DataCite v4.6 contributorType controlled vocabulary."
					},
					"contributionDate": {
						"type": "string",
						"format": "date",
						"description": "The date when the contribution was made."
					}
				},
				"required": ["contributionType"],
				"anyOf": [
					{ "required": ["arkidUser"] },
					{ "required": ["orcidId"] },
					{ "required": ["name"] }
				]
			}
		},
		"associatedOrganizations": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"arkidOrg": {
						"allOf": [
							{ "$ref": "https://arkid.researchark.eu/reference-catalogue.schema.json#/$defs/arkoIdentifier" }
						],
						"description": "The unique ArkID for the organization associated with this product."
					},
					"rorId": {
						"type": "string",
						"pattern": "^https?://ror.org/[a-z0-9]{9}$",
						"description": "The unique Research Organization Registry (ROR) identifier for the organization."
					},
					"organizationName": {
						"type": "string",
						"description": "The name of the organization if no identifier is available."
					},
					"contributionType": {
						"type": "string",
						"enum": [
							"Funding Organization",
							"Supporting Organization",
							"Owning Organization",
							"Publishing Organization",
							"Developing Organization",
							"Hosting Organization"
						],
						"description": "The type of contribution or relationship the organization has with this product."
					}
				},
				"required": ["contributionType"],
				"anyOf": [
					{ "required": ["arkidOrg"] },
					{ "required": ["rorId"] },
					{ "required": ["organizationName"] }
				]
			}
		},
		"externalIdentifiers": {
			"type": "object",
			"properties": {
				"doi": {
					"type": "string",
					"pattern": "^10.\\d{4,9}/[-._;()/A-Z0-9]+$",
					"description": "The Digital Object Identifier (DOI) for the product."
				},
				"isbn": {
					"type": "string",
					"pattern": "^(97(8|9))\\d{9}(\\d|X)$",
					"description": "The International Standard Book Number (ISBN) for the product."
				},
				"issn": {
					"type": "string",
					"pattern": "^\\d{4}-\\d{3}[\\dX]$",
					"description": "The International Standard Serial Number (ISSN) for the product."
				},
				"eissn": {
					"type": "string",
					"pattern": "^\\d{4}-\\d{3}[\\dX]$",
					"description": "The Electronic ISSN for the product."
				},
				"arxivId": {
					"type": "string",
					"pattern": "^\\d{4}.\\d{4,5}$",
					"description": "The arXiv identifier for the product."
				},
				"pmid": {
					"type": "string",
					"pattern": "^\\d+$",
					"description": "PubMed identifier."
				},
				"handle": {
					"type": "string",
					"description": "Handle System identifier."
				},
				"ark": {
					"type": "string",
					"description": "Archival Resource Key identifier."
				},
				"urn": {
					"type": "string",
					"description": "Uniform Resource Name."
				},
				"purl": {
					"type": "string",
					"format": "uri",
					"description": "Persistent Uniform Resource Locator."
				},
				"url": {
					"type": "string",
					"format": "uri",
					"description": "A URL where the product can be accessed."
				},
				"relatedIdentifiers": {
					"type": "array",
					"items": {
						"type": "object",
						"properties": {
							"relatedIdentifier": {
								"type": "string",
								"description": "The related identifier value."
							},
							"relatedIdentifierType": {
								"type": "string",
								"enum": [
									"ARK",
									"arXiv",
									"bibcode",
									"DOI",
									"EAN13",
									"EISSN",
									"Handle",
									"IGSN",
									"ISBN",
									"ISSN",
									"ISTC",
									"LISSN",
									"LSID",
									"PMID",
									"PURL",
									"UPC",
									"URL",
									"URN",
									"w3id"
								],
								"description": "Type of the related identifier, aligned with DataCite v4.6 relatedIdentifierType."
							},
							"relationType": {
								"type": "string",
								"enum": [
									"IsCitedBy",
									"Cites",
									"IsSupplementTo",
									"IsSupplementedBy",
									"IsContinuedBy",
									"Continues",
									"IsDescribedBy",
									"Describes",
									"HasMetadata",
									"IsMetadataFor",
									"HasVersion",
									"IsVersionOf",
									"IsNewVersionOf",
									"IsPreviousVersionOf",
									"IsPartOf",
									"HasPart",
									"IsPublishedIn",
									"IsReferencedBy",
									"References",
									"IsDocumentedBy",
									"Documents",
									"IsCompiledBy",
									"Compiles",
									"IsVariantFormOf",
									"IsOriginalFormOf",
									"IsIdenticalTo",
									"IsReviewedBy",
									"Reviews",
									"IsDerivedFrom",
									"IsSourceOf",
									"IsRequiredBy",
									"Requires",
									"IsObsoletedBy",
									"Obsoletes"
								],
								"description": "Relationship type, aligned with DataCite v4.6 relationType."
							},
							"resourceTypeGeneral": {
								"type": "string",
								"enum": [
									"Audiovisual",
									"Award",
									"Book",
									"BookChapter",
									"Collection",
									"ComputationalNotebook",
									"ConferencePaper",
									"ConferenceProceeding",
									"DataPaper",
									"Dataset",
									"Dissertation",
									"Event",
									"Image",
									"Instrument",
									"InteractiveResource",
									"Journal",
									"JournalArticle",
									"Model",
									"OutputManagementPlan",
									"PeerReview",
									"PhysicalObject",
									"Preprint",
									"Project",
									"Report",
									"Service",
									"Software",
									"Sound",
									"Standard",
									"StudyRegistration",
									"Text",
									"Workflow",
									"Other"
								],
								"description": "Resource type of the related item."
							}
						},
						"required": ["relatedIdentifier", "relatedIdentifierType", "relationType"]
					}
				}
			}
		},
		"versionInformation": {
			"type": "object",
			"properties": {
				"versionNumber": {
					"type": "string",
					"description": "The version number of the product."
				},
				"releaseDate": {
					"type": "string",
					"format": "date",
					"description": "The release date of this version."
				},
				"previousVersion": {
					"type": "string",
					"pattern": "^ARKD-\\\\d{4}-\\\\d{4}-\\\\d{4}-\\\\d{3}[0-9X]$",
					"description": "The ArkID of the previous version of this product, if applicable."
				},
				"changes": {
					"type": "string",
					"description": "A description of changes from the previous version."
				}
			},
			"required": ["versionNumber"]
		},
		"licenseInformation": {
			"type": "object",
			"properties": {
				"licenseName": {
					"type": "string",
					"description": "The name of the license under which the product is released."
				},
				"licenseUrl": {
					"type": "string",
					"format": "uri",
					"description": "A URL pointing to the full license text."
				},
				"openAccess": {
					"type": "boolean",
					"description": "Indicates whether the product is open access."
				}
			}
		},
		"publicationStatus": {
			"type": "string",
			"enum": [
				"Published",
				"In Press",
				"Accepted",
				"Under Review",
				"Submitted",
				"Draft",
				"Released",
				"Prototype",
				"Production",
				"Deprecated"
			],
			"description": "The current publication or release status of the product."
		},
		"keywords": {
			"type": "array",
			"items": {
				"type": "string"
			},
			"description": "A list of keywords or tags that describe the main themes and topics of the product."
		},
		"language": {
			"type": "string",
			"pattern": "^[a-z]{2,3}(-[A-Z]{2})?$",
			"description": "The primary language of the product, using ISO 639 language codes with optional ISO 3166 country codes."
		},
		"citations": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"arkidProduct": {
						"type": "string",
						"pattern": "^ARKD-\\\\d{4}-\\\\d{4}-\\\\d{4}-\\\\d{3}[0-9X]$",
						"description": "The unique ArkID for a product that cites or is cited by this product."
					},
					"doi": {
						"type": "string",
						"pattern": "^10.\\d{4,9}/[-._;()/A-Z0-9]+$",
						"description": "The DOI of a product that cites or is cited by this product."
					},
					"citationType": {
						"type": "string",
						"enum": [
							"Cites",
							"IsCitedBy",
							"Builds Upon",
							"IsBuiltUpon"
						],
						"description": "The type of citation relationship."
					}
				},
				"required": ["citationType"],
				"anyOf": [
					{ "required": ["arkidProduct"] },
					{ "required": ["doi"] }
				]
			}
		},
		"publisher": {
			"type": "string",
			"description": "Publisher of the product, required for DataCite compatibility.",
			"default": "ArkPub by ResearchArk"
		},
		"publicationYear": {
			"type": "integer",
			"minimum": 1900,
			"maximum": 2100,
			"description": "Year when the product was published, required for DataCite compatibility."
		},
		"subjects": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"subject": {
						"type": "string",
						"description": "Subject or keyword describing the product."
					},
					"subjectScheme": {
						"type": "string",
						"description": "Name of the subject scheme or classification."
					},
					"schemeURI": {
						"type": "string",
						"format": "uri",
						"description": "URI of the subject scheme."
					},
					"valueURI": {
						"type": "string",
						"format": "uri",
						"description": "URI of the subject value."
					},
					"classificationCode": {
						"type": "string",
						"description": "Classification code within the scheme."
					}
				},
				"required": ["subject"]
			},
			"description": "Subjects, keywords, or classification codes describing the product."
		},
		"descriptions": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"description": {
						"type": "string",
						"description": "The description text."
					},
					"descriptionType": {
						"type": "string",
						"enum": [
							"Abstract",
							"Methods",
							"SeriesInformation",
							"TableOfContents",
							"TechnicalInfo",
							"Other"
						],
						"description": "Type of description, aligned with DataCite v4.6 descriptionType."
					},
					"lang": {
						"type": "string",
						"pattern": "^[a-z]{2,3}(-[A-Z]{2})?$",
						"description": "Language of the description (ISO 639 language code)."
					}
				},
				"required": ["description", "descriptionType"]
			},
			"description": "Additional descriptions with specified types."
		},
		"dates": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"date": {
						"type": "string",
						"format": "date-time",
						"description": "Date in ISO 8601 format."
					},
					"dateType": {
						"type": "string",
						"enum": [
							"Accepted",
							"Available",
							"Copyrighted",
							"Collected",
							"Coverage",
							"Created",
							"Issued",
							"Submitted",
							"Updated",
							"Valid",
							"Withdrawn",
							"Other"
						],
						"description": "Type of date, aligned with DataCite v4.6 dateType."
					},
					"dateInformation": {
						"type": "string",
						"description": "Additional information about the date."
					}
				},
				"required": ["date", "dateType"]
			},
			"description": "Important dates with specified types."
		},
		"rights": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"rights": {
						"type": "string",
						"description": "Rights information."
					},
					"rightsURI": {
						"type": "string",
						"format": "uri",
						"description": "URI pointing to rights information."
					},
					"rightsIdentifier": {
						"type": "string",
						"description": "Rights identifier (e.g., license identifier)."
					},
					"rightsIdentifierScheme": {
						"type": "string",
						"description": "Scheme of the rights identifier."
					}
				}
			},
			"description": "Rights and licensing information."
		},
		"fundingReferences": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"funderName": {
						"type": "string",
						"description": "Name of the funding organization."
					},
					"funderIdentifier": {
						"type": "string",
						"description": "Identifier for the funding organization."
					},
					"funderIdentifierType": {
						"type": "string",
						"description": "Type of funder identifier (e.g., Crossref Funder ID, ROR)."
					},
					"awardNumber": {
						"type": "string",
						"description": "Award or grant number."
					},
					"awardURI": {
						"type": "string",
						"format": "uri",
						"description": "URI of the award."
					},
					"awardTitle": {
						"type": "string",
						"description": "Title of the award or grant."
					},
					"arkidFunding": {
						"type": "string",
						"pattern": "^ARKF-\\\\d{4}-\\\\d{4}-\\\\d{4}-\\\\d{3}[0-9X]$",
						"description": "Associated ArkID funding identifier (ARKF)."
					}
				},
				"required": ["funderName"]
			},
			"description": "Information about funding sources supporting the product."
		},
		"formats": {
			"type": "array",
			"items": {
				"type": "string"
			},
			"description": "Technical formats of the product (MIME types)."
		},
		"sizes": {
			"type": "array",
			"items": {
				"type": "string"
			},
			"description": "Size information (file size, dimensions, duration, etc.)."
		},
		"mediaType": {
			"type": "string",
			"description": "The primary MIME type of the product, if applicable."
		},
		"dataciteMetadata": {
			"type": "object",
			"description": "Additional DataCite-specific metadata for full compliance.",
			"properties": {
				"verificationStatus": {
					"type": "string",
					"enum": ["Pending", "Verified", "Rejected"],
					"default": "Pending",
					"description": "Verification status of the product metadata."
				},
				"submissionSource": {
					"type": "string",
					"enum": ["ArkPub", "API", "Import"],
					"default": "ArkPub",
					"description": "Source of the metadata submission."
				},
				"geoLocations": {
					"type": "array",
					"items": {
						"type": "object",
						"properties": {
							"geoLocationPlace": {
								"type": "string",
								"description": "Geographic location name."
							},
							"geoLocationPoint": {
								"type": "object",
								"properties": {
									"pointLongitude": {"type": "number"},
									"pointLatitude": {"type": "number"}
								},
								"required": ["pointLongitude", "pointLatitude"]
							},
							"geoLocationBox": {
								"type": "object",
								"properties": {
									"westBoundLongitude": {"type": "number"},
									"eastBoundLongitude": {"type": "number"},
									"southBoundLatitude": {"type": "number"},
									"northBoundLatitude": {"type": "number"}
								},
								"required": ["westBoundLongitude", "eastBoundLongitude", "southBoundLatitude", "northBoundLatitude"]
							}
						}
					},
					"description": "Geographic locations relevant to the product."
				}
			}
		}
	},
	"required": [
		"arkidProduct",
		"productDetails",
		"creationDate",
		"publisher"
	],
	"additionalProperties": false
} 
