{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "AK Region Product Schema", "description": "Minimum required fields and terms for metadata written for USFWS Alaska Region data products.", "$id": "ak-product-schema.json", "version": "1.0.1", "properties": { "metadata": { "properties": { "resourceInfo": { "properties": { "status": { "items": { "enum": [ "completed", "onGoing", "proposed", "accepted" ], "errorMessage": { "enum": "Product status in the 'Basic Information' section under the 'Main' tab must be one of: 'completed', 'onGoing', 'proposed', or 'accepted'" } } }, "resourceType": { "items": { "properties": { "type": { "not": { "enum": [ "product", "project" ] }, "errorMessage": { "not": "Resource type for products must not be 'product' or 'project' in the 'Resource Types' section under the 'Main' tab. Products should use a more specific type such as 'tabularDataset' or 'document'. For projects, use the custom profile for AK Region projects." } } } } }, "pointOfContact": { "allOf": [ { "contains": { "properties": { "role": { "const": "pointOfContact", "errorMessage": { "const": "The 'Point of Contact' section under the 'Main' tab must have at least one Data Steward listed with the role 'pointOfContact'." } } } } }, { "contains": { "properties": { "role": { "const": "custodian", "errorMessage": { "const": "The 'Point of Contact' section under the 'Main' tab must have at least one Data Custodian listed with the role 'custodian'." } } } } }, { "contains": { "properties": { "role": { "const": "owner", "errorMessage": { "const": "The 'Point of Contact' section under the 'Main' tab must have at least one Data Trustee listed with the role 'owner'." } } } } }, { "contains": { "properties": { "role": { "const": "originator", "errorMessage": { "const": "The 'Point of Contact' section under the 'Main' tab must have at least one Data Producer/Originator listed with the role 'originator'." } } } } } ], "items": { "properties": { "role": {}, "party": {} }, "required": [ "role", "party" ], "errorMessage": { "role": "Project data management personnel must be provided in the 'Point of Contact' section under the 'Main' tab. Roles that must be included are Data Trustee (owner), Data Steward (pointOfContact), Data Custodian (custodian), and Data Producer/Originator (originator).", "party": "At least one person must be assigned to each role in the 'Point of Contact' section under the 'Main' tab." } } }, "citation": { "properties": { "title": {}, "date": { "items": { "properties": { "date": {}, "dateType": {} }, "required": [ "date", "dateType" ], "errorMessage": { "required": { "date": "At least one date (e.g. acquisition, creation, revision) must be provided in the 'Citation' section under the 'Main' tab.", "dateType": "A type must be provided for dates in the 'Citation' section under the 'Main' tab." } } } }, "responsibleParty": { "allOf": [ { "contains": { "properties": { "role": { "const": "publisher", "errorMessage": { "const": "A responsible party with the role of 'publisher' must be listed in the 'Citation' section under the 'Main' tab." } } } } } ] }, "identifier": { "items": { "properties": { "identifier": {}, "namespace": {} }, "required": [ "identifier", "namespace" ], "errorMessage": { "required": { "identifier": "Provide an identifier (e.g. Digital Object Identifier (DOI), ISBN, UUID) for the product in the 'Citation' section under the 'Main' tab.", "namespace": "Provide the context (namespace) for the product identifier in the 'Citation' section under the 'Main' tab." } } } } }, "required": [ "title", "date", "responsibleParty" ], "errorMessage": { "required": { "title": "A short, descriptive product title must be provided in the 'Basic Information' section under the 'Main' tab. Product titles should be uniquely identifiable.", "date": "At least one date (e.g. acquisition, creation, revision) must be provided in the 'Citation' section under the 'Main' tab.", "responsibleParty": "A responsible party with the role of 'publisher' must be listed in the 'Citation' section under the 'Main' tab." } } }, "abstract": {}, "timePeriod": { "oneOf": [ { "properties": { "startDateTime": {}, "endDateTime": {} }, "anyOf": [ { "required": [ "startDateTime" ] }, { "required": [ "endDateTime" ] } ] } ], "errorMessage": { "oneOf": "A start date and/or an end date must be provided for this data product in the 'Time Period' section under the 'Main' tab." } }, "keyword": { "items": { "properties": { "keyword": {}, "thesaurus": {} }, "required": [ "keyword", "thesaurus" ], "errorMessage": { "required": { "keyword": "At least one keyword must be provided from each thesaurus under the 'Keywords' tab.", "thesaurus": "At least one keyword thesaurus must be provided under the 'Keywords' tab." } } }, "contains": { "properties": { "thesaurus": { "properties": { "title": { "const": "Global Change Master Directory (GCMD) Science Keywords", "errorMessage": { "const": "At least one keyword under the 'Keywords' tab must be from the Global Change Master Directory (GCMD) Science Keywords thesaurus." } } } } } } } }, "required": [ "status", "resourceType", "pointOfContact", "citation", "abstract", "timePeriod", "keyword" ], "errorMessage": { "required": { "status": "The current product status must be provided in the 'Basic Information' section under the 'Main' tab. Status must be one of: 'completed', 'onGoing', 'proposed', or 'accepted'", "resourceType": "Resource type must be provided in the 'Resource Types' section under the 'Main' tab. The resource type for products must not be 'product', but should instead use a more specific type (e.g. tabularDataset, collection, document).", "pointOfContact": "Project and product specific personnel must be provided in the 'Point of Contact' section under the 'Main' tab.", "abstract": "An abstract for the product must be provided in the 'Description' section under the 'Main' tab. Abstracts should summarize the product's purpose and goals.", "timePeriod": "A relevant time period for the product must be provided in the 'Time Period' section under the 'Main' tab.", "keyword": "Product keywords must be provided under the 'Keywords' tab. At least one keyword must be provided from the Global Change Master Directory (GCMD) Science Keywords thesaurus." } } }, "metadataInfo": { "properties": { "metadataStatus": {}, "metadataDate": { "items": { "properties": { "date": {}, "dateType": {} }, "required": [ "date", "dateType" ], "errorMessage": { "required": { "date": "A creation date for the metadata must be provided in the 'Basic Information' section under the 'Metadata' tab.", "dateType": "A date type must be provided for dates associated with the metadata in the 'Basic Information' section under the 'Metadata' tab." } } }, "contains": { "properties": { "dateType": { "const": "creation", "errorMessage": { "const": "At least one date with the type 'creation' must be provided in the 'Basic Information' section under the 'Metadata' tab." } } } } }, "metadataContact": { "allOf": [ { "contains": { "properties": { "role": { "const": "author", "errorMessage": { "const": "At least one metadata contact must have the role 'author' under the 'Metadata Contacts' section of the 'Metadata' tab." } } } } }, { "contains": { "properties": { "role": { "const": "pointOfContact", "errorMessage": { "const": "At least one metadata contact must have the role 'pointOfContact' under the 'Metadata Contacts' section of the 'Metadata' tab." } } } } } ], "items": { "properties": { "role": {}, "party": {} }, "required": [ "role", "party" ], "errorMessage": { "required": { "role": "A role must be provided in the 'Metadata Contacts' section under the 'Metadata' tab.", "party": "A contact must be provided in the 'Metadata Contacts' section under the 'Metadata' tab." } } } } }, "required": [ "metadataStatus", "metadataDate", "metadataContact" ], "errorMessage": { "required": { "metadataStatus": "The status of the metadata (e.g. onGoing, completed), must be provided in the 'Basic Information' section under the 'Metadata' tab.", "metadataDate": "The creation date of the metadata must be provided in the 'Basic Information' section under the 'Metadata' tab.", "metadataContact": "Contacts for metadata creation must be provided in the 'Metadata Contact' section under the 'Metadata' tab. Roles must include at least 'pointOfContact' and 'author'." } } }, "resourceDistribution": { "items": { "properties": { "distributor": { "items": { "properties": { "contact": { "properties": { "role": { "const": "distributor", "errorMessage": { "const": "Role for distributor in the 'Distributor' section under the 'Distribution' tab must be 'distributor'." } }, "party": {} }, "required": [ "role", "party" ], "errorMessage": { "required": { "role": "Indicate 'distributor' as the role for the product distributor under the 'Distribution' tab.", "party": "Indicate the organization that will distribute the product as the contact under the 'Distribution' tab." } } }, "transferOption": { "items": { "properties": { "onlineOption": { "items": { "properties": { "uri": {} }, "required": [ "uri" ], "errorMessage": { "required": { "uri": "A URI must be provided for an online option to access the resource under the 'Transfer Option' section of the 'Distributor' section under the 'Distribution' tab. The URI should link to either the direct download (URI that will automatically start a download) or the link to page where you can download the resource." } } } } }, "required": [ "onlineOption" ], "errorMessage": { "required": { "onlineOption": "An online option for distribution must be provided in the 'Transfer Option' section of the 'Distributor' section under the 'Distribution' tab." } } } } }, "required": [ "contact", "transferOption" ], "errorMessage": { "required": { "contact": "Provide a contact for distribution in the 'Distributor' section under the 'Distribution' tab.", "transferOption": "A transfer option must be provided for distribution in the 'Distributor' section under the 'Distribution' tab." } } } } }, "required": [ "distributor" ], "errorMessage": { "required": { "distributor": "Provide a distributor for the resource under the 'Distribution' tab." } } } }, "associatedResource": { "items": { "properties": { "associationType": {}, "resourceCitation": {} }, "required": [ "associationType", "resourceCitation" ], "errorMessage": { "required": { "associationType": "Data products with associations must have an association type listed under the 'Associations' tab.", "resourceCitation": "Provide the citation information for the associated resource under the 'Associations' tab." } } }, "contains": { "properties": { "associationType": { "const": "parentProject", "errorMessage": { "const": "At least one association type must be parentProject under the 'Associations' tab." } } } } } }, "required": [ "resourceInfo", "metadataInfo", "resourceDistribution" ], "errorMessage": { "required": { "resourceDistribution": "Resource distribution must be described under the 'Distribution' tab." } } }, "dataDictionary": {} }, "if": { "properties": { "metadata": { "properties": { "resourceInfo": { "properties": { "resourceType": { "contains": { "properties": { "type": { "const": "tabularDataset" } } } } } } } } } }, "then": { "required": [ "metadata", "dataDictionary" ], "errorMessage": { "required": { "dataDictionary": "Data products with the type 'tabularDataset' must be associated with a data dictionary under the 'Dictionaries' tab." } } }, "else": { "required": [ "metadata" ] }, "errorMessage": { "if": "If this data product is a tabular dataset, then it must be associated with a data dictionary under the 'Dictionaries' tab." } }