diff --git a/.github/workflows/update-gbif-catalogs.yml b/.github/workflows/update-gbif-catalogs.yml new file mode 100644 index 00000000000..a9d8583df8d --- /dev/null +++ b/.github/workflows/update-gbif-catalogs.yml @@ -0,0 +1,65 @@ +name: Update GBIF catalogs + +on: + workflow_dispatch: + schedule: + - cron: '0 6 1 * *' + +permissions: + contents: write + pull-requests: write + +concurrency: + group: update-gbif-catalogs + cancel-in-progress: true + +jobs: + update: + name: Generate GBIF catalogs + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version-file: specifyweb/frontend/js_src/package.json + cache: npm + cache-dependency-path: specifyweb/frontend/js_src/package-lock.json + + - name: Install frontend dependencies + working-directory: specifyweb/frontend/js_src + run: npm ci + + - name: Generate GBIF catalogs + working-directory: specifyweb/frontend/js_src + run: npm run dwca:catalog + + - name: Check for catalog changes + id: changes + run: | + if git diff --quiet -- \ + specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifCores.json \ + specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifExtensions.json; then + echo 'changed=false' >> "$GITHUB_OUTPUT" + else + echo 'changed=true' >> "$GITHUB_OUTPUT" + fi + + - name: Open update pull request if catalogs changed + if: steps.changes.outputs.changed == 'true' + uses: peter-evans/create-pull-request@v7 + with: + commit-message: 'chore(dwca): update GBIF catalogs' + title: 'Update GBIF catalogs' + body: | + Updates the generated GBIF core and extension catalogs from the GBIF registry. + + This pull request was created automatically by the monthly catalog refresh. + branch: automation/update-gbif-catalogs + delete-branch: true + add-paths: | + specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifCores.json + specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifExtensions.json diff --git a/specifyweb/backend/export/dwca.py b/specifyweb/backend/export/dwca.py index 1ad6722e9ea..b9d6e54db7e 100644 --- a/specifyweb/backend/export/dwca.py +++ b/specifyweb/backend/export/dwca.py @@ -15,6 +15,7 @@ from specifyweb.backend.stored_queries.execution import query_to_csv from specifyweb.backend.stored_queries.queryfield import QueryField, EphemeralField from specifyweb.backend.stored_queries.models import session_context +from specifyweb.specify.datamodel import datamodel logger = logging.getLogger(__name__) ET.register_namespace('eml', 'eml://ecoinformatics.org/eml-2.1.1') @@ -22,6 +23,28 @@ class DwCAException(Exception): pass +OCCURRENCE_CORE_ROW_TYPE = 'http://rs.tdwg.org/dwc/terms/Occurrence' +OCCURRENCE_IDENTIFIER_TERM = 'http://rs.tdwg.org/dwc/terms/occurrenceID' +CORE_IDENTIFIER_TERMS = { + 'http://rs.tdwg.org/dwc/terms/Event': 'http://rs.tdwg.org/dwc/terms/eventID', + 'http://rs.tdwg.org/dwc/terms/Taxon': 'http://rs.tdwg.org/dwc/terms/taxonID', +} +CORE_TABLE_NAMES = { + 'http://rs.tdwg.org/dwc/terms/Event': 'collectingevent', + 'http://rs.tdwg.org/dwc/terms/Taxon': 'taxon', +} + + +def get_core_identifier_term(row_type): + return CORE_IDENTIFIER_TERMS.get(row_type, OCCURRENCE_IDENTIFIER_TERM) + + +def get_core_table(row_type): + return datamodel.get_table_strict( + CORE_TABLE_NAMES.get(row_type, 'collectionobject') + ) + + # from https://stackoverflow.com/a/17402424 def prettify(elem): """Return a pretty-printed XML string for the Element. @@ -34,7 +57,12 @@ class Stanza(namedtuple('Stanza', 'is_core row_type constant_fields export_field "Represents either a core or extension definition." @classmethod def from_xml(cls, node): - queries = [Query.from_xml(query_node) for query_node in node.find('queries')] + if 'rowType' not in node.attrib: + raise DwCAException(_("Definition is missing a row type.")) + queries_node = node.find('queries') + if queries_node is None: + raise DwCAException(_("Definition doesn't include any queries.")) + queries = [Query.from_xml(query_node) for query_node in queries_node] export_fields, id_field_idx = cls.get_export_fields(queries) constant_fields = [ConstantField.from_xml(fn) for fn in node.findall('field')] @@ -113,16 +141,21 @@ class Query(namedtuple('Query', 'tableid file_name query_fields')): """ @classmethod def from_xml(cls, query_node): - return cls( - tableid = int(query_node.attrib['contextTableId']), + if 'contextTableId' not in query_node.attrib or 'name' not in query_node.attrib: + raise DwCAException(_("Query is missing its table or file name.")) + try: + return cls( + tableid = int(query_node.attrib['contextTableId']), - file_name = query_node.attrib['name'], + file_name = query_node.attrib['name'], - query_fields = [ - QueryDefField.from_xml(field_node) - for field_node in query_node - ], - ) + query_fields = [ + QueryDefField.from_xml(field_node) + for field_node in query_node + ], + ) + except ValueError as error: + raise DwCAException(_("Query contains invalid attributes.")) from error def get_export_fields(self): return tuple( @@ -182,10 +215,7 @@ def from_xml(cls, node): def make_dwca(collection, user, definition, output_file, eml=None): output_dir = mkdtemp() try: - element_tree = ET.fromstring(definition) - - core_stanza = Stanza.from_xml(element_tree.find('core')) - extension_stanzas = [Stanza.from_xml(node) for node in element_tree.findall('extension')] + core_stanza, extension_stanzas = validate_definition(definition) output_node = ET.Element('archive') output_node.set('xmlns', "http://rs.tdwg.org/dwc/text/") @@ -206,7 +236,13 @@ def make_dwca(collection, user, definition, output_file, eml=None): core_ids = set() def collect_ids(row): - core_ids.add(row[core_stanza.id_field_idx + 1]) + core_id = row[core_stanza.id_field_idx + 1] + if core_id in core_ids: + raise DwCAException(_( + "The core query returned duplicate occurrenceID values. " + "Each core row must have a unique occurrenceID." + )) + core_ids.add(core_id) return True with session_context() as session: @@ -229,6 +265,59 @@ def filter_ids(row): finally: shutil.rmtree(output_dir) + +def validate_stanzas(core_stanza, extension_stanzas): + if core_stanza is None or not core_stanza.is_core: + raise DwCAException(_("Definition must include exactly one core.")) + + core_row_type = getattr(core_stanza, 'row_type', OCCURRENCE_CORE_ROW_TYPE) + core_identifier_term = get_core_identifier_term(core_row_type) + core_id = core_stanza.export_fields[core_stanza.id_field_idx] + if core_id.term != core_identifier_term: + raise DwCAException(_( + "The core identifier must use the identifier term for its core row type." + )) + if any(field.term is None for field in core_stanza.export_fields): + raise DwCAException(_("Every displayed core field must have a term.")) + for stanza in extension_stanzas: + extension_id = stanza.export_fields[stanza.id_field_idx] + if extension_id.term != core_identifier_term: + raise DwCAException(_( + "Every extension identifier must use the core identifier term." + )) + if any(field.term is None for field in stanza.export_fields): + raise DwCAException(_("Every displayed extension field must have a term.")) + + +def validate_definition(definition): + try: + element_tree = ET.fromstring(definition) + except (ET.ParseError, TypeError) as error: + raise DwCAException(_("Definition is not valid XML.")) from error + + cores = element_tree.findall('core') + if len(cores) != 1: + raise DwCAException(_("Definition must include exactly one core.")) + try: + core_stanza = Stanza.from_xml(cores[0]) + core_table_id = get_core_table(core_stanza.row_type).tableId + extension_stanzas = [ + Stanza.from_xml(node) for node in element_tree.findall('extension') + ] + except ValueError as error: + raise DwCAException(_("Definition contains invalid query attributes.")) from error + if any( + query.tableid != core_table_id + for stanza in [core_stanza, *extension_stanzas] + for query in stanza.queries + ): + raise DwCAException(_( + "All Darwin Core queries must use the base table associated with the core " + "row type." + )) + validate_stanzas(core_stanza, extension_stanzas) + return core_stanza, extension_stanzas + def write_eml(source, output_path, pub_date=None, package_id=None): if pub_date is None: pub_date = date.today() diff --git a/specifyweb/backend/export/tests.py b/specifyweb/backend/export/tests.py index 501deb776c1..7304a231c98 100644 --- a/specifyweb/backend/export/tests.py +++ b/specifyweb/backend/export/tests.py @@ -5,8 +5,12 @@ Replace this with more appropriate tests for your application. """ +from collections import namedtuple from django.test import TestCase +from specifyweb.specify.datamodel import datamodel + +from .dwca import DwCAException, ExportField, validate_definition, validate_stanzas class SimpleTest(TestCase): def test_basic_addition(self): @@ -14,3 +18,50 @@ def test_basic_addition(self): Tests that 1 + 1 always equals 2. """ self.assertEqual(1 + 1, 2) + +class DwcaValidationTest(TestCase): + @staticmethod + def stanza(is_core, fields, index=0): + return namedtuple('TestStanza', 'is_core export_fields id_field_idx')( + is_core, fields, index + ) + + def test_requires_matching_extension_identifier(self): + core = self.stanza( + True, + [ExportField(0, 'http://rs.tdwg.org/dwc/terms/occurrenceID', True)], + ) + extension = self.stanza(False, [ExportField(0, 'eventID', True)]) + with self.assertRaises(DwCAException): + validate_stanzas(core, [extension]) + + def test_allows_multiple_extensions(self): + occurrence_id = 'http://rs.tdwg.org/dwc/terms/occurrenceID' + core = self.stanza(True, [ExportField(0, occurrence_id, True)]) + extension = self.stanza(False, [ExportField(0, occurrence_id, True)]) + validate_stanzas(core, [extension, extension]) + + def test_uses_core_row_type_base_table(self): + collecting_event_id = datamodel.get_table_strict('collectingevent').tableId + collection_object_id = datamodel.get_table_strict('collectionobject').tableId + definition = f''' + + + + + + + + + + ''' + validate_definition(definition) + + invalid_definition = definition.replace( + f'contextTableId="{collecting_event_id}"', + f'contextTableId="{collection_object_id}"', + ) + with self.assertRaises(DwCAException): + validate_definition(invalid_definition) diff --git a/specifyweb/backend/export/views.py b/specifyweb/backend/export/views.py index 9381d36166d..6b8cfeac7d4 100644 --- a/specifyweb/backend/export/views.py +++ b/specifyweb/backend/export/views.py @@ -14,7 +14,7 @@ from django.views.decorators.cache import never_cache from django.views.decorators.http import require_POST -from .dwca import make_dwca, prettify +from .dwca import DwCAException, make_dwca, prettify, validate_definition from .extract_query import extract_query as extract from .feed import FEED_DIR, get_feed_resource, update_feed from specifyweb.backend.context.app_resource import get_app_resource @@ -118,7 +118,14 @@ def export(request): eml_resource = request.POST.get('metadata', None) - definition, _, __ = get_app_resource(collection, user, dwca_resource) + resolved_definition = get_app_resource(collection, user, dwca_resource) + if resolved_definition is None: + return HttpResponseBadRequest('DwCA definition resource was not found') + definition, _, __ = resolved_definition + try: + validate_definition(definition) + except DwCAException as error: + return HttpResponseBadRequest(str(error)) if eml_resource is not None: eml, _, __ = get_app_resource(collection, user, eml_resource) diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/Editor.tsx b/specifyweb/frontend/js_src/lib/components/AppResources/Editor.tsx index b3b48965c77..bcb1492a9a4 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/Editor.tsx +++ b/specifyweb/frontend/js_src/lib/components/AppResources/Editor.tsx @@ -167,7 +167,9 @@ export function AppResourceEditor({ const isEditingForm = typeof toResource(resource, 'SpViewSetObj') === 'object'; // When editing a form, don't render the page inside of
to avoid #3357 - const renderInForm = !isEditingForm; + const renderInForm = + !isEditingForm && + appResource.get('mimeType') !== 'application/vnd.specify.dwca+xml'; const headerButtons = (
diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/TabDefinitions.tsx b/specifyweb/frontend/js_src/lib/components/AppResources/TabDefinitions.tsx index 32576883d96..2fcacf391cf 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/TabDefinitions.tsx +++ b/specifyweb/frontend/js_src/lib/components/AppResources/TabDefinitions.tsx @@ -20,6 +20,7 @@ import type { SpViewSetObj, } from '../DataModel/types'; import { RssExportFeedEditor } from '../ExportFeed'; +import { DwcaDefinitionEditor } from '../DwcaDefinition/DwcaDefinition'; import { exportFeedSpec } from '../ExportFeed/spec'; import { ExpressSearchConfigResourceEditor } from '../ExpressSearchConfig/ExpressSearchConfigEditor'; import { FieldFormattersEditor } from '../FieldFormatters/Editor'; @@ -168,6 +169,10 @@ export const visualAppResourceEditors = f.store< visual: RssExportFeedEditor, xml: generateXmlEditor(exportFeedSpec), }, + dwcaDefinition: { + visual: DwcaDefinitionEditor, + xml: generateXmlEditor(undefined), + }, expressSearchConfig: { visual: ExpressSearchConfigResourceEditor, xml: AppResourceTextEditor, diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/AppResourcesFilters.test.tsx b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/AppResourcesFilters.test.tsx index 471c51d4d04..8a9453fb530 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/AppResourcesFilters.test.tsx +++ b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/AppResourcesFilters.test.tsx @@ -61,6 +61,7 @@ describe('AppResourcesFilters', () => { 'dataEntryTables', 'dataObjectFormatters', 'defaultUserPreferences', + 'dwcaDefinition', 'expressSearchConfig', 'interactionsTables', 'label', diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/CreateAppResource.test.tsx b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/CreateAppResource.test.tsx index cbf9483ddf8..37b027f67ef 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/CreateAppResource.test.tsx +++ b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/CreateAppResource.test.tsx @@ -58,7 +58,7 @@ describe('CreateAppResource', () => { // This is a lot more cleaner than the inner HTML expect(getByRole('dialog').textContent).toMatchInlineSnapshot( - `"Select Resource TypeTypeDocumentationLabelDocumentationReportDocumentationDefault User PreferencesDocumentationLeaflet LayersDocumentationRSS Export FeedDocumentationExpress Search ConfigDocumentationType SearchesDocumentationWeb LinksDocumentationField FormattersDocumentationRecord FormattersDocumentationData Entry TablesDocumentationInteractions TablesDocumentationOther XML ResourceOther JSON ResourceOther Properties ResourceOther ResourceCancel"` + `"Select Resource TypeTypeDocumentationLabelDocumentationReportDocumentationDefault User PreferencesDocumentationLeaflet LayersDocumentationRSS Export FeedDocumentationDarwin Core definitionExpress Search ConfigDocumentationType SearchesDocumentationWeb LinksDocumentationField FormattersDocumentationRecord FormattersDocumentationData Entry TablesDocumentationInteractions TablesDocumentationOther XML ResourceOther JSON ResourceOther Properties ResourceOther ResourceCancel"` ); }); diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/allAppResources.test.ts b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/allAppResources.test.ts index 293b78f890a..dc03a0a9ac3 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/allAppResources.test.ts +++ b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/allAppResources.test.ts @@ -2,25 +2,26 @@ import { allAppResources } from '../filtersHelpers'; test('allAppResources', () => { expect(allAppResources).toMatchInlineSnapshot(` - [ - "collectionPreferences", - "dataEntryTables", - "dataObjectFormatters", - "defaultUserPreferences", - "expressSearchConfig", - "interactionsTables", - "label", - "leafletLayers", - "otherAppResources", - "otherJsonResource", - "otherPropertiesResource", - "otherXmlResource", - "report", - "rssExportFeed", - "typeSearches", - "uiFormatters", - "userPreferences", - "webLinks", - ] - `); +[ + "collectionPreferences", + "dataEntryTables", + "dataObjectFormatters", + "defaultUserPreferences", + "dwcaDefinition", + "expressSearchConfig", + "interactionsTables", + "label", + "leafletLayers", + "otherAppResources", + "otherJsonResource", + "otherPropertiesResource", + "otherXmlResource", + "report", + "rssExportFeed", + "typeSearches", + "uiFormatters", + "userPreferences", + "webLinks", +] +`); }); diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/defaultAppResourceFilters.test.ts b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/defaultAppResourceFilters.test.ts index 4be98addc17..f39980db099 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/defaultAppResourceFilters.test.ts +++ b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/defaultAppResourceFilters.test.ts @@ -9,6 +9,7 @@ test('defaultAppResourceFilters', () => { "dataObjectFormatters", "defaultUserPreferences", "expressSearchConfig", + "dwcaDefinition", "interactionsTables", "label", "leafletLayers", diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/types.tsx b/specifyweb/frontend/js_src/lib/components/AppResources/types.tsx index 8a0b8f089da..53f512de311 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/types.tsx +++ b/specifyweb/frontend/js_src/lib/components/AppResources/types.tsx @@ -1,5 +1,6 @@ import type { LocalizedString } from 'typesafe-i18n'; +import { dwcaText } from '../../localization/dwca'; import { preferencesText } from '../../localization/preferences'; import { reportsText } from '../../localization/report'; import { resourcesText } from '../../localization/resources'; @@ -127,6 +128,14 @@ export const appResourceSubTypes = ensure>()({ icon: icons.upload, label: resourcesText.rssExportFeed(), }, + dwcaDefinition: { + mimeType: 'application/vnd.specify.dwca+xml', + name: undefined, + documentationUrl: undefined, + icon: icons.upload, + label: dwcaText.dwcaDefinition(), + useTemplate: false, + }, expressSearchConfig: { mimeType: 'text/xml', name: 'ExpressSearchConfig', diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/DwcaDefinition.tsx b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/DwcaDefinition.tsx new file mode 100644 index 00000000000..2d76e42a6a1 --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/DwcaDefinition.tsx @@ -0,0 +1,1693 @@ +import React from 'react'; + +import { useSearchParameter } from '../../hooks/navigation'; +import { useAsyncState } from '../../hooks/useAsyncState'; +import { commonText } from '../../localization/common'; +import { dwcaText } from '../../localization/dwca'; +import { queryText } from '../../localization/query'; +import { resourcesText } from '../../localization/resources'; +import type { RA } from '../../utils/types'; +import { localized } from '../../utils/types'; +import { replaceItem } from '../../utils/utils'; +import type { AppResourceTabProps } from '../AppResources/TabDefinitions'; +import { ErrorMessage } from '../Atoms'; +import { Button } from '../Atoms/Button'; +import { className } from '../Atoms/className'; +import { Input, Label, Select } from '../Atoms/Form'; +import { icons } from '../Atoms/Icons'; +import { Link } from '../Atoms/Link'; +import { fetchCollection } from '../DataModel/collection'; +import type { SerializedResource } from '../DataModel/helperTypes'; +import type { SpecifyResource } from '../DataModel/legacyTypes'; +import { fetchResource } from '../DataModel/resource'; +import type { SpecifyTable } from '../DataModel/specifyTable'; +import { + deserializeResource, + serializeResource, +} from '../DataModel/serializers'; +import { fetchContext as fetchTables, tables } from '../DataModel/tables'; +import type { SpQuery, SpQueryField } from '../DataModel/types'; +import { getField } from '../DataModel/helpers'; +import { userInformation } from '../InitialContext/userInformation'; +import { getFieldBlockerKey, useSaveBlockers } from '../DataModel/saveBlockers'; +import { createQuery } from '../QueryBuilder'; +import { QueryBuilder } from '../QueryBuilder/Wrapped'; +import { parseQueryFields } from '../QueryBuilder/helpers'; +import type { QueryField } from '../QueryBuilder/helpers'; +import { Dialog, dialogClassNames, LoadingScreen } from '../Molecules/Dialog'; +import gbifCores from './data/gbifCores.json'; +import { defaultTemplates, type DwcaTemplate } from './data/defaultTemplates'; +import { coreTermPatterns, occurrenceIdTerm } from './data/coreTermPatterns'; +import gbifExtensions from './data/gbifExtensions.json'; + +type ExtensionDefinition = (typeof gbifExtensions)[number]; +type CoreDefinition = (typeof gbifCores)[number]; +type Definition = CoreDefinition | ExtensionDefinition; +type Mapping = { + readonly extension: boolean; + readonly coreRowType: string; + readonly baseTable: SpecifyTable; + readonly extensionDefinition: Definition | undefined; + readonly rowType: string; + readonly fileName: string; + readonly query: SpecifyResource; + readonly fields: RA>; + readonly terms: RA; +}; + +type TermDefinition = { + readonly name: string; + readonly title?: string; + readonly description?: string; + readonly vocabulary?: string; + readonly iri?: string; + readonly group?: string; + readonly required?: boolean; +}; + +const customTermOption = '__custom__'; +const customRowTypeOption = '__custom_row_type__'; +const customExtensionOption = '__custom_extension__'; +const dwcaTabParameter = 'dwcaTab'; +const occurrenceCoreRowType = 'http://rs.tdwg.org/dwc/terms/Occurrence'; +const coreDefinitions: readonly CoreDefinition[] = gbifCores; +const occurrenceCore = coreDefinitions.find( + ({ rowType }) => rowType === occurrenceCoreRowType +)!; +const coreIdentifierTerms: Readonly> = { + 'http://rs.tdwg.org/dwc/terms/Event': 'http://rs.tdwg.org/dwc/terms/eventID', + 'http://rs.tdwg.org/dwc/terms/Taxon': 'http://rs.tdwg.org/dwc/terms/taxonID', +}; +const getCoreIdentifierTerm = (rowType: string): string => + coreIdentifierTerms[rowType] ?? occurrenceIdTerm; + +export function getBaseTableForCore(coreRowType: string): SpecifyTable { + switch (coreRowType) { + case 'http://rs.tdwg.org/dwc/terms/Event': + return tables.CollectingEvent; + case 'http://rs.tdwg.org/dwc/terms/Taxon': + return tables.Taxon; + default: + return tables.CollectionObject; + } +} + +type MappingTabMapping = Pick & + Partial>; + +function slugifyTabValue(value: string): string { + return ( + value + .replace(/([a-z0-9])([A-Z])/g, '$1-$2') + .toLowerCase() + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-|-$/g, '') || 'custom' + ); +} + +export function getMappingTabValue(mapping: MappingTabMapping): string { + if (!mapping.extension) return 'core'; + return slugifyTabValue( + mapping.extensionDefinition?.name ?? + mapping.rowType.split(/[\/#]/).at(-1) ?? + '' + ); +} + +export function getMappingTabValues( + mappings: ReadonlyArray +): RA { + const occurrences = new Map(); + return mappings.map((mapping) => { + const base = getMappingTabValue(mapping); + const occurrence = occurrences.get(base) ?? 0; + occurrences.set(base, occurrence + 1); + return occurrence === 0 ? base : `${base}-${occurrence + 1}`; + }); +} + +function getMappingTabIndex( + mappings: ReadonlyArray, + tabValues: ReadonlyArray, + tabValue: string | undefined +): number { + if (tabValue === undefined) return -1; + const index = tabValues.indexOf(tabValue); + if (index >= 0) return index; + + // Keep links generated by the previous URL format working. + const oldPrefix = 'extension:'; + if (!tabValue.startsWith(oldPrefix)) return -1; + const rowType = tabValue.slice(oldPrefix.length); + return mappings.findIndex( + (mapping) => mapping.extension && mapping.rowType === rowType + ); +} + +export function getMappingTerm( + mapping: { + readonly extension: boolean; + readonly rowType?: string; + readonly fields: ReadonlyArray<{ readonly stringId: string }>; + readonly terms: RA; + }, + field: Partial> & + Partial> +): string | undefined { + const fieldIndex = getMappingFieldIndex(mapping, field); + return !mapping.extension && fieldIndex === 0 + ? getCoreIdentifierTerm(mapping.rowType ?? occurrenceCoreRowType) + : mapping.terms[fieldIndex]; +} + +function getMappingFieldIndex( + mapping: { + readonly fields: ReadonlyArray<{ readonly stringId: string }>; + }, + field: Partial> & + Partial> +): number { + if (field.sourceStringId !== undefined) { + const exactIndex = mapping.fields.findIndex( + ({ stringId }) => + stringId.toLowerCase() === field.sourceStringId!.toLowerCase() + ); + if (exactIndex >= 0) return exactIndex; + } + if (field.mappingPath !== undefined) { + const pathKey = JSON.stringify(field.mappingPath).toLowerCase(); + const pathIndex = mapping.fields.findIndex( + (candidate) => fieldTermKey(candidate) === pathKey + ); + if (pathIndex >= 0) return pathIndex; + } + return field.sourceIndex ?? field.id ?? -1; +} + +export function updateMappingTerm( + mapping: Mapping, + field: Pick & + Partial>, + term: string | undefined +): Mapping { + const fieldIndex = getMappingFieldIndex(mapping, field); + if (fieldIndex < 0 || fieldIndex >= mapping.fields.length) return mapping; + return { + ...mapping, + terms: replaceItem(mapping.terms, fieldIndex, term), + }; +} + +export function getSerializedMappingTerm( + mapping: { + readonly fields: ReadonlyArray<{ readonly stringId: string }>; + readonly terms: RA; + }, + field: { readonly stringId: string }, + fallbackIndex: number +): string | undefined { + const fieldIndex = mapping.fields.findIndex( + ({ stringId }) => stringId.toLowerCase() === field.stringId.toLowerCase() + ); + const resolvedIndex = fieldIndex >= 0 ? fieldIndex : fallbackIndex; + return mapping.terms[resolvedIndex]; +} + +const groupLabel = (group: string | undefined): string => { + const label = group?.split('#').at(-1) ?? ''; + return label === '' ? '' : label[0].toUpperCase() + label.slice(1); +}; + +function getTermNameParts(name: string): RA { + return name.split(/[\/#]/).filter((part) => part !== ''); +} + +export function getTermDisplayLabel( + term: Pick, + terms: ReadonlyArray> +): string { + const title = term.title ?? term.name; + const duplicateTitles = terms.filter( + (candidate) => (candidate.title ?? candidate.name) === title + ); + if (duplicateTitles.length < 2) return title; + + const parts = getTermNameParts(term.name); + const qualifier = Array.from({ length: parts.length }, (_, index) => + parts.slice(-(index + 1)).join('/') + ).find((candidate) => + duplicateTitles.every( + (candidateTerm) => + candidateTerm.name === term.name || + getTermNameParts(candidateTerm.name) + .slice(candidate.split('/').length * -1) + .join('/') !== candidate + ) + ); + + return dwcaText.dwcaTermWithQualifier({ + title, + qualifier: qualifier ?? term.name, + }); +} + +export const defaultRowTypes = Array.from( + new Set(gbifExtensions.map(({ rowType }) => rowType)) +); + +export const defaultCoreRowTypes = Array.from( + new Set(coreDefinitions.map(({ rowType }) => rowType)) +); + +export const getExtensionDefinitionForRowType = ( + rowType: string +): ExtensionDefinition | undefined => + gbifExtensions.find((extension) => extension.rowType === rowType); + +export const getCoreDefinitionForRowType = ( + rowType: string +): CoreDefinition | undefined => + coreDefinitions.find((core) => core.rowType === rowType); + +export function isExtensionApplicableToCore( + extension: Pick, + coreRowType: string +): boolean { + const subject = extension.subject.trim(); + if (subject === '') return true; + const core = getCoreDefinitionForRowType(coreRowType); + if (core === undefined) return true; + return subject.split(/\s+/).includes(`dwc:${core.name}`); +} + +const getRowTypeOptionLabel = (rowType: string): string => + getCoreDefinitionForRowType(rowType)?.title ?? + getExtensionDefinitionForRowType(rowType)?.title ?? + rowType; + +function TermInfoDialog({ + term, + extension, + onClose, +}: { + readonly term: TermDefinition; + readonly extension: boolean; + readonly onClose: () => void; +}): JSX.Element { + return ( + {commonText.close()}} + onClose={onClose} + > +
+
+
{dwcaText.dwcaTerm()}
+
{term.title ?? term.name}
+
+
+
{dwcaText.dwcaVocabulary()}
+
+ {term.vocabulary === undefined ? ( + extension ? ( + dwcaText.dwcaExtension() + ) : ( + dwcaText.dwcaDefinition() + ) + ) : ( + + {localized(term.vocabulary)} + + )} +
+
+
+
{dwcaText.dwcaGroup()}
+
{groupLabel(term.group) || dwcaText.dwcaNoGroupSpecified()}
+
+
+
{dwcaText.dwcaIri()}
+
+ + {localized(term.iri ?? term.name)} + +
+
+
+
{dwcaText.dwcaRequired()}
+
{term.required === true ? queryText.yes() : commonText.no()}
+
+
+
{dwcaText.dwcaDescription()}
+
{term.description || dwcaText.dwcaNoDescriptionAvailable()}
+
+
+
+ ); +} + +export function getTemplateMapping( + template: DwcaTemplate, + mapping: Pick, + coreRowType?: string +): Mapping | undefined { + if ( + !template.targets.some( + (target) => + target.extension === mapping.extension && + target.rowType === mapping.rowType + ) + ) + return undefined; + if ( + coreRowType !== undefined && + !isTemplateApplicableToCore(template, coreRowType) + ) + return undefined; + return parseDefinition(template.definition).find( + (candidate) => + candidate.extension === mapping.extension && + candidate.rowType === mapping.rowType + ); +} + +export function isTemplateApplicableToCore( + template: DwcaTemplate, + coreRowType: string +): boolean { + if (template.coreRowTypes !== undefined) + return template.coreRowTypes.includes(coreRowType); + return template.targets.some((target) => + target.extension + ? isExtensionApplicableToCore( + getExtensionDefinitionForRowType(target.rowType) ?? { subject: '' }, + coreRowType + ) + : target.rowType === coreRowType + ); +} + +const getFields = ( + query: SpecifyResource +): RA> => { + const fields = + (query.get('fields') as unknown) ?? + (serializeResource(query) as unknown as { readonly fields?: unknown }) + .fields; + return Array.isArray(fields) + ? fields.map((field) => + serializeResource(field as unknown as SpecifyResource) + ) + : []; +}; + +const normalizeStringId = (stringId: string, table: SpecifyTable): string => + stringId.includes('.') + ? stringId + : `${table.tableId}.${table.name.toLowerCase()}.${stringId}`; + +/* + * QueryBuilder writes the current relationship names into stringId. Older + * DwCA XML can contain the same field with only relationship table IDs (for + * example `1,9-determinations,4.taxon.Kingdom`). Match those representations + * by their resolved query path as well as by their serialized stringId. + */ +function fieldTermKey( + field: Pick, 'stringId'> & + Partial> +): string { + try { + const [parsed] = parseQueryFields([ + field as SerializedResource, + ]); + return parsed === undefined + ? field.stringId.toLowerCase() + : JSON.stringify(parsed.mappingPath).toLowerCase(); + } catch { + return field.stringId.toLowerCase(); + } +} + +function fieldShapesEqual( + left: RA>, + right: RA> +): boolean { + try { + const shape = (fields: RA>) => + parseQueryFields(fields).map( + ({ mappingPath, sortType, isDisplay, filters }) => ({ + mappingPath, + sortType, + isDisplay, + filters, + }) + ); + return JSON.stringify(shape(left)) === JSON.stringify(shape(right)); + } catch { + return false; + } +} + +function availableTermNames( + extension: boolean, + definition: Definition | undefined, + coreRowType: string +): ReadonlySet { + return new Set( + (extension + ? [ + ( + getCoreDefinitionForRowType(coreRowType) ?? occurrenceCore + ).fields.find( + ({ name }) => name === getCoreIdentifierTerm(coreRowType) + ), + ...(definition?.fields ?? []), + ] + : (definition ?? occurrenceCore).fields + ) + .map((term) => term?.name) + .filter((name): name is string => name !== undefined) + ); +} + +export function updateMappingFields( + mapping: Mapping, + newFields: RA> +): Mapping { + const oldMetadata = new Map>(); + mapping.fields.forEach((field, index) => { + const key = fieldTermKey(field); + oldMetadata.set(key, [ + ...(oldMetadata.get(key) ?? []), + mapping.terms[index], + ]); + }); + const oldStringIds = new Map( + mapping.fields.map((field, index) => [ + field.stringId.toLowerCase(), + mapping.terms[index], + ]) + ); + const availableTerms = availableTermNames( + mapping.extension, + mapping.extensionDefinition, + mapping.coreRowType + ); + const fields = [...newFields]; + if (!mapping.extension) { + const automaticTerms = autoMapCoreFields(fields, availableTerms); + const occurrenceIndex = fields.findIndex( + (field, index) => + (oldStringIds.get(field.stringId.toLowerCase()) ?? + oldMetadata.get(fieldTermKey(field))?.[0] ?? + automaticTerms[index]) === getCoreIdentifierTerm(mapping.coreRowType) + ); + if (occurrenceIndex > 0) { + const [occurrence] = fields.splice(occurrenceIndex, 1); + fields.unshift(occurrence); + } + } + const autoMapped = autoMapCoreFields(fields, availableTerms); + const usedTerms = new Set(); + const terms = fields.map((field, index) => { + const key = fieldTermKey(field); + const oldTerm = oldStringIds.get(field.stringId.toLowerCase()); + const pathTerms = oldMetadata.get(key); + const pathTerm = pathTerms?.[0]; + if (pathTerms !== undefined) oldMetadata.set(key, pathTerms.slice(1)); + const candidateTerm = oldTerm ?? pathTerm ?? autoMapped[index]; + if (candidateTerm === undefined) return undefined; + // Pick-list terms may only be mapped once. Custom terms are intentionally + // left untouched, even when they are not present in the catalogs. + if (availableTerms.has(candidateTerm)) { + if (usedTerms.has(candidateTerm)) return undefined; + usedTerms.add(candidateTerm); + } + return candidateTerm; + }); + const updatedMapping = { + ...mapping, + query: mapping.query.set('fields', fields), + fields, + terms, + }; + return mapping.extension + ? updatedMapping + : ensureIdentifierTerm(updatedMapping); +} + +function autoMapCoreFields( + fields: RA>, + availableTerms: ReadonlySet +): RA { + const usedTerms = new Set(); + const terms = fields.map((field) => { + const stringId = field.stringId.toLowerCase(); + const match = Object.entries(coreTermPatterns).find( + ([term, patterns]) => + availableTerms.has(term) && + !usedTerms.has(term) && + patterns.some((pattern) => stringId.includes(pattern)) + )?.[0]; + if (match !== undefined) usedTerms.add(match); + return match; + }); + return terms; +} + +function newMapping( + extension: boolean, + definition: Definition | undefined, + coreRowType = occurrenceCoreRowType +): Mapping { + const baseTable = getBaseTableForCore(coreRowType); + const query = createQuery( + definition?.name ?? (extension ? 'extension' : 'core'), + baseTable + ); + return ensureIdentifierTerm({ + extension, + coreRowType, + baseTable, + extensionDefinition: definition, + rowType: extension + ? (definition?.rowType ?? '') + : (definition?.rowType ?? coreRowType), + fileName: definition + ? `${definition.name}.csv` + : extension + ? '' + : 'core.csv', + query, + fields: [], + terms: [], + }); +} + +function mappingFromQuery( + mapping: Mapping, + query: SpecifyResource +): Mapping { + const fields = getFields(query); + return ensureIdentifierTerm( + updateMappingFields( + { + ...mapping, + // A seed query is a complete replacement. Do not let terms from the + // previous mapping attach to the new query by array position. + fields: [], + terms: [], + query: query + .set('fields', fields) + .set('contextTableId', mapping.baseTable.tableId), + }, + fields + ) + ); +} + +const isCoreIdentifierField = ( + mapping: Pick, + field: SerializedResource +): boolean => { + const stringId = field.stringId.toLowerCase(); + const pattern = `${mapping.baseTable.name.toLowerCase()}.guid`; + return stringId === pattern || stringId.endsWith(`.${pattern}`); +}; + +export function ensureIdentifierTerm(mapping: Mapping): Mapping { + const identifierIndex = mapping.fields.findIndex((field) => + isCoreIdentifierField(mapping, field) + ); + const identifierStringId = `${mapping.baseTable.tableId}.${mapping.baseTable.name.toLowerCase()}.guid`; + const identifierTerm = getCoreIdentifierTerm(mapping.coreRowType); + const fields = + identifierIndex >= 0 + ? [ + { + ...mapping.fields[identifierIndex]!, + stringId: identifierStringId, + isDisplay: true, + }, + ...mapping.fields.filter((_, index) => index !== identifierIndex), + ] + : [ + serializeResource( + new tables.SpQueryField.Resource({ + stringId: identifierStringId, + isRelFld: false, + operStart: 8, + startValue: '', + isNot: false, + isDisplay: true, + position: 0, + sortType: 0, + isStrict: false, + }) + ), + ...mapping.fields, + ]; + const positionedFields = fields.map((field, position) => ({ + ...field, + position, + })); + const terms = [ + identifierTerm, + ...mapping.terms + .filter((_, index) => index !== identifierIndex) + .map((term) => (term === identifierTerm ? undefined : term)), + ]; + return { + ...mapping, + query: mapping.query.set('fields', positionedFields), + fields: positionedFields, + terms, + }; +} + +function ExtensionDialog({ + extensions, + coreRowType, + queries, + onAdd, + onClose, +}: { + readonly extensions: RA; + readonly coreRowType: string; + readonly queries: RA>; + readonly onAdd: ( + extension: ExtensionDefinition | undefined, + query?: SpecifyResource, + template?: DwcaTemplate + ) => void; + readonly onClose: () => void; +}): JSX.Element { + const [extensionName, setExtensionName] = React.useState(''); + const [queryName, setQueryName] = React.useState(''); + const extension = extensions.find(({ name }) => name === extensionName); + const isFromScratch = extensionName === customExtensionOption; + const templates = + extension === undefined + ? [] + : defaultTemplates.filter( + (template) => + isTemplateApplicableToCore(template, coreRowType) && + template.targets.some( + ({ extension: isExtension, rowType }) => + isExtension && rowType === extension.rowType + ) + ); + return ( + + {commonText.cancel()} + { + if (extension === undefined && !isFromScratch) return; + if (isFromScratch) { + onAdd(undefined); + onClose(); + return; + } + const query = queries.find( + ({ id }) => `query:${id}` === queryName + ); + onAdd( + extension, + query === undefined ? undefined : deserializeResource(query), + templates.find( + (template) => queryName === `template:${template.name}` + ) + ); + onClose(); + }} + > + + {icons.plus} + {commonText.add()} + + +
+ } + onClose={onClose} + > +
+ + {dwcaText.dwcaExtension()} + + + {extension !== undefined && ( + + {dwcaText.dwcaChooseTemplateOrQuery()} + + + )} + {extension !== undefined && + templates.length === 0 && + queries.length === 0 && ( +

+ {dwcaText.dwcaNoDefaultOrSaved({ + default: resourcesText.default(), + query: queryText.query(), + extension: dwcaText.dwcaExtension(), + })} +

+ )} +
+ + ); +} + +export function parseDefinition(data: string | null): RA { + if (typeof data !== 'string' || data.trim() === '') return []; + const root = new DOMParser().parseFromString(data, 'text/xml'); + if (root.querySelector('parsererror')) return []; + const core = Array.from(root.documentElement.children).find( + ({ tagName }) => tagName === 'core' + ); + const extensions = Array.from(root.documentElement.children).filter( + ({ tagName }) => tagName === 'extension' + ); + const coreRowType = core?.getAttribute('rowType') ?? occurrenceCoreRowType; + const baseTable = getBaseTableForCore(coreRowType); + return [core, ...extensions] + .filter((stanza): stanza is Element => stanza !== undefined) + .map((stanza, index) => { + const queryNode = stanza.querySelector('queries > query'); + const extension = stanza.tagName === 'extension'; + const table = baseTable; + const fieldNodes = Array.from(queryNode?.children ?? []).filter( + ({ tagName }) => tagName === 'field' || tagName === 'id' + ); + const fields = fieldNodes.map( + (field, position) => + new tables.SpQueryField.Resource({ + stringId: normalizeStringId( + field.getAttribute('stringId') ?? '', + table + ), + isRelFld: field.getAttribute('isRelFld') === 'true', + operStart: Number(field.getAttribute('oper') ?? 0), + startValue: field.getAttribute('value') ?? '', + isNot: field.getAttribute('isNot') === 'true', + formatName: field.getAttribute('formatName'), + isDisplay: field.tagName === 'id' || field.hasAttribute('term'), + // QueryBuilder uses position to establish the persistent field + // ID used by the term mapper. Without it every imported field + // defaults to position 0 and those IDs become unreliable. + position, + sortType: 0, + isStrict: false, + }) + ); + const query = createQuery( + queryNode?.getAttribute('name') ?? + `${stanza.tagName.toLowerCase()}-${index}`, + table + ); + query.set('contextTableId', baseTable.tableId); + query.set('fields', fields); + const rowType = stanza.getAttribute('rowType') ?? ''; + const extensionDefinition = extension + ? getExtensionDefinitionForRowType(rowType) + : getCoreDefinitionForRowType(rowType); + const explicitTerms = fieldNodes.map( + (field) => field.getAttribute('term') ?? undefined + ); + const serializedFields = fields.map(serializeResource); + const automaticTerms = autoMapCoreFields( + serializedFields, + availableTermNames(extension, extensionDefinition, coreRowType) + ); + return ensureIdentifierTerm({ + extension, + coreRowType, + baseTable, + extensionDefinition, + rowType, + fileName: extensionDefinition + ? `${extensionDefinition.name}.csv` + : extension + ? (queryNode?.getAttribute('name') ?? `${index}.csv`) + : 'core.csv', + query, + fields: serializedFields, + // Legacy definitions often omitted terms for recognizable fields. + // Populate only missing terms; explicit and custom values remain intact. + terms: explicitTerms.map( + (term, fieldIndex) => term ?? automaticTerms[fieldIndex] + ), + }); + }); +} + +function prettyXml(data: string): string { + const document = new DOMParser().parseFromString(data, 'text/xml'); + if (document.querySelector('parsererror')) return data; + const indent = ' '; + const format = (element: Element, depth: number): void => { + const children = Array.from(element.children); + if (children.length === 0) return; + const hasText = Array.from(element.childNodes).some( + (node) => + node.nodeType === Node.TEXT_NODE && (node.nodeValue ?? '').trim() !== '' + ); + children.forEach((child) => format(child, depth + 1)); + if (hasText) return; + Array.from(element.childNodes) + .filter((node) => node.nodeType === Node.TEXT_NODE) + .forEach((node) => element.removeChild(node)); + children.forEach((child) => + element.insertBefore( + document.createTextNode(`\n${indent.repeat(depth + 1)}`), + child + ) + ); + element.appendChild(document.createTextNode(`\n${indent.repeat(depth)}`)); + }; + format(document.documentElement, 0); + return new XMLSerializer().serializeToString(document); +} + +export function serializeDefinition(mappings: RA): string { + const document = new DOMParser().parseFromString('', 'text/xml'); + const root = document.documentElement; + mappings.forEach((mapping) => { + const stanza = document.createElement( + mapping.extension ? 'extension' : 'core' + ); + stanza.setAttribute('rowType', mapping.rowType); + const queries = document.createElement('queries'); + const query = document.createElement('query'); + query.setAttribute('name', mapping.fileName); + query.setAttribute('contextTableId', String(mapping.baseTable.tableId)); + let displayIndex = 0; + let idIndex = -1; + mapping.fields.forEach((field, index) => { + const term = getSerializedMappingTerm(mapping, field, index); + const isId = + field.isDisplay === true && + term === getCoreIdentifierTerm(mapping.coreRowType); + const node = document.createElement(isId ? 'id' : 'field'); + node.setAttribute('stringId', field.stringId); + node.setAttribute('oper', String(field.operStart)); + node.setAttribute('value', field.startValue); + node.setAttribute('isNot', String(field.isNot)); + node.setAttribute('isRelFld', String(field.isRelFld)); + if (field.formatName !== null) + node.setAttribute('formatName', field.formatName ?? ''); + if (typeof term === 'string' && term.length > 0) + node.setAttribute('term', term); + query.append(node); + if (field.isDisplay === true) { + if (isId) idIndex = displayIndex; + displayIndex += 1; + } + }); + queries.append(query); + stanza.append(queries); + const id = document.createElement(mapping.extension ? 'coreid' : 'id'); + id.setAttribute('index', String(idIndex)); + stanza.append(id); + root.append(stanza); + }); + return prettyXml(new XMLSerializer().serializeToString(root)); +} + +function TermPicker({ + mapping, + field, + fieldIndex, + onChange: handleChange, +}: { + readonly mapping: Mapping; + readonly field: QueryField; + readonly fieldIndex: number; + readonly onChange: (mapping: Mapping) => void; +}): JSX.Element | null { + const [isEditing, setIsEditing] = React.useState(false); + const [showInfo, setShowInfo] = React.useState(false); + const mappingFieldIndex = getMappingFieldIndex(mapping, { + ...field, + id: fieldIndex, + }); + const isIdentifier = mappingFieldIndex === 0; + const terms = mapping.extension + ? [ + ( + getCoreDefinitionForRowType(mapping.coreRowType) ?? occurrenceCore + ).fields.find( + ({ name }) => name === getCoreIdentifierTerm(mapping.coreRowType) + )!, + ...(mapping.extensionDefinition?.fields ?? []).filter( + ({ name }) => name !== getCoreIdentifierTerm(mapping.coreRowType) + ), + ] + : (mapping.extensionDefinition?.fields ?? occurrenceCore.fields); + const value = getMappingTerm(mapping, field) ?? ''; + const options: RA = terms.map( + ({ name, title, description, vocabulary, iri, group, required }) => ({ + name, + title: title ?? name, + description, + vocabulary, + iri, + group, + required, + }) + ); + const selectedTerm = options.find(({ name }) => name === value); + const isCustomTerm = value !== '' && selectedTerm === undefined; + const groupedOptions = new Map>(); + options.forEach((option) => { + const label = groupLabel(option.group) || dwcaText.dwcaUnspecifiedGroup(); + groupedOptions.set(label, [...(groupedOptions.get(label) ?? []), option]); + }); + return ( +
+ {isEditing || isCustomTerm ? ( + { + if (value === '') { + handleChange(updateMappingTerm(mapping, field, undefined)); + setIsEditing(false); + } + }} + onValueChange={(term): void => + handleChange(updateMappingTerm(mapping, field, term || undefined)) + } + /> + ) : ( +
+ + setShowInfo(true)} + /> +
+ )} + {showInfo && selectedTerm !== undefined && ( + setShowInfo(false)} + /> + )} +
+ ); +} + +function QueryMapping({ + mapping, + hasMappingsToReset, + onCoreChange, + onChange: handleChange, + onRemove, + onTemplate, +}: { + readonly mapping: Mapping; + readonly hasMappingsToReset: boolean; + readonly onCoreChange: (rowType: string) => void; + readonly onChange: (mapping: Mapping) => void; + readonly onRemove?: () => void; + readonly onTemplate?: (template: DwcaTemplate) => void; +}): JSX.Element { + const queryBuilderInitialized = React.useRef(false); + React.useEffect(() => { + queryBuilderInitialized.current = false; + }, [mapping.query]); + const [queries] = useAsyncState( + React.useCallback( + () => + fetchCollection('SpQuery', { + limit: 0, + domainFilter: false, + contextTableId: mapping.baseTable.tableId, + specifyUser: userInformation.id, + }), + [mapping.baseTable.tableId] + ), + false + ); + const fields = mapping.fields; + const collectionObjectQueries = + queries?.records.filter( + (query) => query.contextTableId === mapping.baseTable.tableId + ) ?? []; + const rowTypeDefaults = mapping.extension + ? defaultRowTypes + : defaultCoreRowTypes; + const isCustomRowType = + mapping.rowType !== '' && !rowTypeDefaults.includes(mapping.rowType); + const [isEditingRowType, setIsEditingRowType] = React.useState(false); + const [pendingCoreRowType, setPendingCoreRowType] = React.useState< + string | undefined + >(); + const isIdentifierField = (field: QueryField): boolean => + (field.sourceIndex ?? field.id) === 0; + const handleRowTypeChange = (rowType: string): void => { + const extensionDefinition = mapping.extension + ? getExtensionDefinitionForRowType(rowType) + : getCoreDefinitionForRowType(rowType); + const previousDefaultFileName = + mapping.extensionDefinition === undefined + ? '' + : `${mapping.extensionDefinition.name}.csv`; + const fileName = + mapping.extension && + extensionDefinition !== undefined && + (mapping.fileName === '' || mapping.fileName === previousDefaultFileName) + ? `${extensionDefinition.name}.csv` + : mapping.fileName; + const next = { + ...mapping, + coreRowType: mapping.extension ? mapping.coreRowType : rowType, + baseTable: mapping.extension + ? mapping.baseTable + : getBaseTableForCore(rowType), + rowType, + fileName, + extensionDefinition, + }; + handleChange(updateMappingFields(next, mapping.fields)); + }; + const availableTemplates = defaultTemplates.filter( + (template) => + isTemplateApplicableToCore(template, mapping.coreRowType) && + template.targets.some( + ({ extension, rowType }) => + extension === mapping.extension && rowType === mapping.rowType + ) + ); + return ( +
+
+ + {resourcesText.fileName()} + + handleChange({ ...mapping, fileName }) + } + /> + + + {dwcaText.dwcaRowType()} + {isCustomRowType || (isEditingRowType && mapping.rowType === '') ? ( + { + if (mapping.rowType === '') setIsEditingRowType(false); + }} + onValueChange={(rowType): void => handleRowTypeChange(rowType)} + /> + ) : ( + + )} + + {(onTemplate !== undefined || queries !== undefined) && ( + + {dwcaText.dwcaChooseTemplateOrQuery()} + + + )} + {onRemove !== undefined && ( + + {localized(`${commonText.remove()} ${dwcaText.dwcaExtension()}`)} + + )} +
+ ( + + )} + onChange={({ fields: newFields }): void => { + /* + * QueryBuilder emits changes for its pending empty state and then + * for its initial state. Neither callback is a user edit. The + * second callback can also rewrite legacy XML stringIds, so compare + * resolved query paths rather than serialized IDs. + */ + if (!queryBuilderInitialized.current) { + if ( + newFields.length === 0 || + fieldShapesEqual(mapping.fields, newFields) + ) { + if (newFields.length > 0) queryBuilderInitialized.current = true; + return; + } + queryBuilderInitialized.current = true; + } + handleChange(updateMappingFields(mapping, newFields)); + }} + canRemoveField={(field): boolean => !isIdentifierField(field)} + isFieldReadOnly={isIdentifierField} + /> + {fields.length === 0 && ( +

{dwcaText.dwcaAddField({ query: queryText.query() })}

+ )} + {pendingCoreRowType !== undefined && ( + + { + const isCustom = pendingCoreRowType === customRowTypeOption; + onCoreChange(isCustom ? '' : pendingCoreRowType); + setIsEditingRowType(isCustom); + setPendingCoreRowType(undefined); + }} + > + {commonText.change()} + + {commonText.cancel()} + + } + header={dwcaText.dwcaChangeCoreConfirmation()} + isOpen + onClose={(): void => setPendingCoreRowType(undefined)} + > + {dwcaText.dwcaChangeCoreConfirmationDescription()} + + )} +
+ ); +} + +export function DwcaDefinitionEditor(props: AppResourceTabProps): JSX.Element { + const [isDataModelLoaded = false] = useAsyncState( + React.useCallback(() => fetchTables.then(() => true), []), + false + ); + return isDataModelLoaded ? ( + + ) : ( + + ); +} + +function DwcaDefinitionEditorLoaded({ + appResource, + data, + onChange: handleChange, +}: AppResourceTabProps): JSX.Element { + const [mappings, setMappings] = React.useState>(() => { + const parsed = parseDefinition(data); + return parsed.some(({ extension }) => !extension) + ? parsed + : [newMapping(false, occurrenceCore), ...parsed]; + }); + const [tabValue, setTabValue] = useSearchParameter(dwcaTabParameter); + const tabValues = React.useMemo( + () => getMappingTabValues(mappings), + [mappings] + ); + const tabIndex = getMappingTabIndex(mappings, tabValues, tabValue); + const tab = Math.max(0, tabIndex); + const coreRowType = + mappings.find(({ extension }) => !extension)?.rowType ?? + occurrenceCoreRowType; + const baseTable = getBaseTableForCore(coreRowType); + const [showExtensionPicker, setShowExtensionPicker] = React.useState(false); + const [queries] = useAsyncState( + React.useCallback( + () => + fetchCollection('SpQuery', { + limit: 0, + domainFilter: false, + contextTableId: baseTable.tableId, + specifyUser: userInformation.id, + }), + [baseTable.tableId] + ), + false + ); + const appResourceDataField = React.useMemo( + () => getField(appResource.specifyTable, 'spAppResourceDatas'), + [appResource.specifyTable] + ); + const [, setSaveBlockers] = useSaveBlockers( + appResource, + appResourceDataField + ); + const missingRequiredTerms = React.useMemo( + () => + mappings.flatMap((mapping) => { + const identifierTerm = getCoreIdentifierTerm(mapping.coreRowType); + const missingIdentifier = mapping.terms.includes(identifierTerm) + ? [] + : [ + dwcaText.dwcaRequiredTerm({ + title: identifierTerm.split(/[\/#]/).at(-1) ?? identifierTerm, + name: identifierTerm, + }), + ]; + dwcaText.dwcaRequiredTerm({ + title: identifierTerm.split(/[\/#]/).at(-1) ?? identifierTerm, + name: identifierTerm, + }), + ]; + if (!mapping.extension) return missingIdentifier; + const required = (mapping.extensionDefinition?.fields ?? []).filter( + ({ required }) => required === true + ); + return [ + ...missingIdentifier, + ...required + .filter(({ name }) => !mapping.terms.includes(name)) + .map(({ title, name }) => + dwcaText.dwcaRequiredTerm({ title: title ?? name, name }) + ), + ]; + }), + [mappings] + ); + React.useEffect(() => { + setSaveBlockers( + missingRequiredTerms.length === 0 + ? [] + : [ + dwcaText.dwcaMapRequiredTerms({ + terms: missingRequiredTerms.join(', '), + }), + ], + getFieldBlockerKey(appResourceDataField, 'dwca-required-terms') + ); + }, [appResourceDataField, missingRequiredTerms, setSaveBlockers]); + const hasDuplicateFileNames = React.useMemo(() => { + const fileNames = mappings + .map(({ fileName }) => fileName.trim().toLowerCase()) + .filter((fileName) => fileName !== ''); + return new Set(fileNames).size !== fileNames.length; + }, [mappings]); + React.useEffect(() => { + setSaveBlockers( + hasDuplicateFileNames ? [dwcaText.dwcaFileNamesMustBeUnique()] : [], + getFieldBlockerKey(appResourceDataField, 'dwca-file-names') + ); + }, [appResourceDataField, hasDuplicateFileNames, setSaveBlockers]); + React.useEffect(() => { + if (tabValue === undefined) return; + if (tabIndex === -1) setTabValue(undefined); + else if (tabValues[tabIndex] !== tabValue) setTabValue(tabValues[tabIndex]); + }, [setTabValue, tabIndex, tabValues, tabValue]); + const update = (next: RA): void => { + const selectedCoreRowType = + next.find(({ extension }) => !extension)?.rowType ?? + occurrenceCoreRowType; + const selectedBaseTable = getBaseTableForCore(selectedCoreRowType); + const normalized = next.map((mapping) => + mapping.coreRowType === selectedCoreRowType && + mapping.baseTable.tableId === selectedBaseTable.tableId + ? mapping + : { + ...mapping, + coreRowType: selectedCoreRowType, + baseTable: selectedBaseTable, + query: mapping.query.set( + 'contextTableId', + selectedBaseTable.tableId + ), + } + ); + setMappings(normalized); + if (tabValue !== undefined) { + const nextActive = normalized[tab] ?? normalized[0]; + const nextTabValue = + getMappingTabValues(normalized)[ + nextActive === undefined ? -1 : normalized.indexOf(nextActive) + ]; + if (nextTabValue !== tabValue) setTabValue(nextTabValue); + } + handleChange(serializeDefinition(normalized)); + }; + const availableExtensions = gbifExtensions.filter( + (extension) => + isExtensionApplicableToCore(extension, coreRowType) && + !mappings.some( + (mapping) => mapping.extensionDefinition?.rowType === extension.rowType + ) + ); + const active = (mappings[tab] ?? mappings[0])!; + const hasMappingsToReset = + mappings.length > 1 || + (mappings.find(({ extension }) => !extension)?.fields.length ?? 0) > 1; + const handleCoreChange = (rowType: string): void => { + const nextCore = newMapping( + false, + getCoreDefinitionForRowType(rowType), + rowType + ); + update([nextCore]); + setTabValue('core'); + setShowExtensionPicker(false); + }; + const handleAddExtension = ( + extension: ExtensionDefinition | undefined, + query?: SpecifyResource, + template?: DwcaTemplate + ): void => { + const base = newMapping(true, extension, coreRowType); + if (extension === undefined) { + const next = [...mappings, base]; + update(next); + setTabValue(getMappingTabValues(next).at(-1)); + return; + } + if (query !== undefined) { + const mapping = mappingFromQuery(base, query); + const next = [...mappings, mapping]; + update(next); + setTabValue(getMappingTabValues(next).at(-1)); + } else if (template !== undefined) { + const parsed = parseDefinition(template.definition).find( + (candidate) => + candidate.extension && candidate.rowType === extension.rowType + ); + const mapping = + parsed === undefined + ? base + : ensureIdentifierTerm({ + ...parsed, + coreRowType, + baseTable, + query: parsed.query.set('contextTableId', baseTable.tableId), + extensionDefinition: extension, + }); + const next = [...mappings, mapping]; + update(next); + setTabValue(getMappingTabValues(next).at(-1)); + } else { + const next = [...mappings, base]; + update(next); + setTabValue(getMappingTabValues(next).at(-1)); + } + }; + return ( +
+ {missingRequiredTerms.length > 0 && ( + + {dwcaText.dwcaMapRequiredTerms({ + terms: missingRequiredTerms.join(', '), + })} + + )} +
+ {mappings.map((mapping, index) => ( + { + const nextTabValue = tabValues[index]; + if (nextTabValue !== tabValue) setTabValue(nextTabValue); + }} + > + {localized( + mapping.extension + ? (mapping.extensionDefinition?.title ?? + dwcaText.dwcaExtension()) + : dwcaText.dwcaCore() + )} + + ))} + setShowExtensionPicker((shown) => !shown)} + > + {icons.plus} + +
+ {showExtensionPicker && availableExtensions.length > 0 && ( + query.contextTableId === baseTable.tableId + ) ?? [] + } + coreRowType={coreRowType} + onAdd={handleAddExtension} + onClose={(): void => setShowExtensionPicker(false)} + /> + )} + update(replaceItem(mappings, tab, next))} + onRemove={ + active.extension + ? (): void => update(mappings.filter((_, index) => index !== tab)) + : undefined + } + onTemplate={(template): void => { + const replacement = getTemplateMapping(template, active, coreRowType); + if (replacement === undefined) return; + update([ + ...mappings.slice(0, tab), + { + ...replacement, + coreRowType, + baseTable, + query: replacement.query.set('contextTableId', baseTable.tableId), + }, + ...mappings.slice(tab + 1), + ]); + }} + /> +
+ ); +} diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/__tests__/DwcaDefinition.test.ts b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/__tests__/DwcaDefinition.test.ts new file mode 100644 index 00000000000..23c23e1139b --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/__tests__/DwcaDefinition.test.ts @@ -0,0 +1,802 @@ +import { + parseQueryFields, + unParseQueryFields, +} from '../../QueryBuilder/helpers'; +import { requireContext } from '../../../tests/helpers'; +import { + getMappingTerm, + getMappingTabValue, + getMappingTabValues, + getSerializedMappingTerm, + ensureIdentifierTerm, + defaultRowTypes, + defaultCoreRowTypes, + getBaseTableForCore, + getCoreDefinitionForRowType, + getExtensionDefinitionForRowType, + isExtensionApplicableToCore, + isTemplateApplicableToCore, + getTermDisplayLabel, + getTemplateMapping, + parseDefinition, + serializeDefinition, + updateMappingTerm, + updateMappingFields, +} from '../DwcaDefinition'; +import { defaultTemplates } from '../data/defaultTemplates'; + +const occurrenceId = 'http://rs.tdwg.org/dwc/terms/occurrenceID'; +const kingdom = 'http://rs.tdwg.org/dwc/terms/kingdom'; + +requireContext(); + +describe('DwCA query field term mapping', () => { + test('uses the core or row type as the mapping URL value', () => { + expect( + getMappingTabValue({ extension: false, rowType: 'occurrence' }) + ).toBe('core'); + expect( + getMappingTabValue({ + extension: true, + rowType: 'http://rs.tdwg.org/dwc/terms/Identification', + }) + ).toBe('identification'); + }); + + test('disambiguates duplicate extension tab names', () => { + expect( + getMappingTabValues([ + { + extension: true, + rowType: 'http://example.org/Multimedia', + }, + { + extension: true, + rowType: 'http://example.org/Multimedia', + }, + ]) + ).toEqual(['multimedia', 'multimedia-2']); + }); + + test('adds the GUID occurrenceID field to empty mappings', () => { + const [core, extension] = parseDefinition(` + + + + + + + + + `); + + for (const mapping of [core, extension]) { + expect(mapping?.fields[0]?.stringId).toBe('1.collectionobject.guid'); + expect(mapping?.terms[0]).toBe(occurrenceId); + } + }); + + test('uses the serialized field index rather than the rendered line id', () => { + const mapping = { + extension: false, + fields: [ + { stringId: '1.collectionobject.guid' }, + { stringId: 'taxon.Kingdom' }, + ], + terms: [occurrenceId, kingdom], + } as const; + + expect( + getMappingTerm(mapping, { + id: 0, + sourceIndex: 1, + sourceStringId: 'taxon.Kingdom', + }) + ).toBe(kingdom); + }); + + test('keeps custom terms verbatim', () => { + const custom = 'https://example.org/terms/myCustomTerm'; + expect( + getMappingTerm( + { extension: true, fields: [{ stringId: 'custom' }], terms: [custom] }, + { id: 0, sourceIndex: 0 } + ) + ).toBe(custom); + }); + + test('serializes terms by field identity after query fields are reordered', () => { + const custom = 'https://example.org/terms/myCustomTerm'; + const mapping = { + fields: [ + { stringId: '1.collectionobject.guid' }, + { stringId: '1,9-determinations,4-preferredTaxon.taxon.Kingdom' }, + ], + terms: [occurrenceId, custom], + } as const; + + expect( + getSerializedMappingTerm( + mapping, + { stringId: '1,9-determinations,4-preferredTaxon.taxon.Kingdom' }, + 0 + ) + ).toBe(custom); + }); + + test('does not fall back to another term when the matching field is unmapped', () => { + const mapping = { + extension: true, + fields: [ + { stringId: '1.collectionobject.guid' }, + { stringId: '1.collectionobject.catalogNumber' }, + ], + terms: [occurrenceId, undefined], + } as const; + + expect( + getMappingTerm(mapping, { + id: 0, + sourceIndex: 1, + sourceStringId: '1.collectionobject.catalogNumber', + }) + ).toBe(undefined); + }); + + test('updates a term by field identity after fields move', () => { + const [mapping] = + parseDefinition(` + + + `); + if (mapping === undefined) throw new Error('Mapping was not parsed'); + + const moved = { + ...mapping, + fields: [mapping.fields[1]!, mapping.fields[0]!], + terms: [undefined, occurrenceId], + }; + expect( + updateMappingTerm( + moved, + { + sourceIndex: 0, + sourceStringId: '1.collectionobject.guid', + }, + kingdom + ).terms + ).toEqual([undefined, kingdom]); + }); + + test('automaps a newly inserted field instead of using its position', () => { + const catalogNumber = 'http://rs.tdwg.org/dwc/terms/catalogNumber'; + const [mapping] = + parseDefinition(` + + + `); + if (mapping === undefined) throw new Error('Mapping was not parsed'); + + const [guid, catalog] = mapping.fields; + const verbatimElevation = { + ...catalog, + stringId: '1,10,2.locality.verbatimelevation', + position: 1, + }; + const updated = updateMappingFields(mapping, [ + { ...guid!, position: 0 }, + verbatimElevation, + { ...catalog!, position: 2 }, + ]); + + expect(updated.terms).toEqual([ + occurrenceId, + 'http://rs.tdwg.org/dwc/terms/verbatimElevation', + catalogNumber, + ]); + }); + + test('loads relationship fields with their XML terms into the mapper model', () => { + const xml = ` + + + + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + const queryFields = parseQueryFields(mapping.fields); + expect(queryFields.map((field) => getMappingTerm(mapping, field))).toEqual([ + occurrenceId, + kingdom, + 'http://rs.tdwg.org/dwc/terms/phylum', + 'http://rs.tdwg.org/dwc/terms/class', + ]); + }); + + test('keeps a displayed relationship field displayed through QueryBuilder conversion', () => { + const xml = ` + + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + const converted = unParseQueryFields( + 'CollectionObject', + parseQueryFields(mapping.fields) + ); + const preparation = converted.find(({ stringId }) => + stringId.includes('preparations') + ); + expect(preparation?.isDisplay).toBe(true); + expect(getSerializedMappingTerm(mapping, preparation!, 1)).toBe( + 'http://rs.tdwg.org/dwc/terms/preparations' + ); + }); + + test('does not drop a relationship term when QueryBuilder marks the field hidden', () => { + const xml = ` + + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + const hiddenMapping = { + ...mapping, + fields: mapping.fields.map((field, index) => + index === 1 ? { ...field, isDisplay: false } : field + ), + }; + + expect(serializeDefinition([hiddenMapping])).toContain( + 'term="http://rs.tdwg.org/dwc/terms/preparations"' + ); + }); + + test('preserves terms when QueryBuilder canonicalizes raw XML field identities', () => { + const xml = ` + + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + const roundTrippedFields = unParseQueryFields( + 'CollectionObject', + parseQueryFields(mapping.fields) + ); + const [roundTrippedField] = roundTrippedFields.slice(1); + expect( + getMappingTerm(mapping, { + id: 0, + sourceIndex: 1, + sourceStringId: + roundTrippedField?.stringId ?? + '1,9-determinations,4-preferredTaxon.taxon.Kingdom', + }) + ).toBe(kingdom); + }); + + test('puts an existing collection object GUID first and maps it to occurrenceID', () => { + const xml = ` + + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + const updated = ensureIdentifierTerm(mapping); + expect(updated.fields[0]?.stringId).toBe('1.collectionobject.guid'); + expect(updated.terms[0]).toBe(occurrenceId); + }); + + test('inserts a collection object GUID when a seed query does not contain one', () => { + const xml = ` + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + const updated = ensureIdentifierTerm(mapping); + expect(updated.fields[0]?.stringId).toBe('1.collectionobject.guid'); + expect(updated.terms[0]).toBe(occurrenceId); + }); + + test('normalizes the core identifier to the displayed collection object GUID', () => { + const xml = ` + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + const updated = ensureIdentifierTerm(mapping); + expect(updated.fields[0]).toMatchObject({ + stringId: '1.collectionobject.guid', + isDisplay: true, + }); + expect(updated.terms[0]).toBe(occurrenceId); + }); + + test('provides all built-in row types as defaults', () => { + expect(defaultRowTypes).toContain('http://rs.tdwg.org/ac/terms/Multimedia'); + expect(defaultRowTypes).toContain( + 'http://rs.tdwg.org/dwc/terms/MeasurementOrFact' + ); + }); + + test('provides GBIF Event and Taxon as selectable cores', () => { + expect(defaultCoreRowTypes).toEqual( + expect.arrayContaining([ + 'http://rs.tdwg.org/dwc/terms/Event', + 'http://rs.tdwg.org/dwc/terms/Taxon', + ]) + ); + const event = getCoreDefinitionForRowType( + 'http://rs.tdwg.org/dwc/terms/Event' + ); + expect( + event?.fields.some( + (field) => field.name === 'http://rs.tdwg.org/dwc/terms/eventID' + ) + ).toBe(true); + }); + + test('uses the identifier term for the selected core', () => { + const [mapping] = parseDefinition( + `` + ); + if (mapping === undefined) throw new Error('Event mapping was not parsed'); + + expect(mapping.baseTable.name).toBe('CollectingEvent'); + expect(mapping.query.get('contextTableId')).toBe(mapping.baseTable.tableId); + expect(mapping.terms[0]).toBe('http://rs.tdwg.org/dwc/terms/eventID'); + expect(serializeDefinition([mapping])).toContain( + 'term="http://rs.tdwg.org/dwc/terms/eventID"' + ); + }); + + test('uses the selected core table for extension mappings', () => { + const [mapping, extension] = parseDefinition( + `` + ); + if (mapping === undefined || extension === undefined) + throw new Error('Event mappings were not parsed'); + + expect(mapping.baseTable.name).toBe('CollectingEvent'); + expect(extension.baseTable.name).toBe('CollectingEvent'); + expect(serializeDefinition([mapping, extension])).toContain( + `contextTableId="${extension.baseTable.tableId}"` + ); + }); + + test('resolves core base tables', () => { + expect( + getBaseTableForCore('http://rs.tdwg.org/dwc/terms/Occurrence').name + ).toBe('CollectionObject'); + expect(getBaseTableForCore('http://rs.tdwg.org/dwc/terms/Event').name).toBe( + 'CollectingEvent' + ); + expect(getBaseTableForCore('http://rs.tdwg.org/dwc/terms/Taxon').name).toBe( + 'Taxon' + ); + }); + + test('filters default templates by core', () => { + expect( + isTemplateApplicableToCore( + defaultTemplates[0]!, + 'http://rs.tdwg.org/dwc/terms/Occurrence' + ) + ).toBe(true); + expect( + isTemplateApplicableToCore( + defaultTemplates[0]!, + 'http://rs.tdwg.org/dwc/terms/Event' + ) + ).toBe(false); + }); + + test('resolves extension definitions from their row types', () => { + expect( + getExtensionDefinitionForRowType('http://rs.tdwg.org/ac/terms/Multimedia') + ).toMatchObject({ + name: 'Multimedia', + title: 'Audiovisual Media Description', + }); + expect( + getExtensionDefinitionForRowType('https://example.org/row-type') + ).toBe(undefined); + }); + + test('filters extensions by their applicable core', () => { + const event = getExtensionDefinitionForRowType( + 'http://rs.tdwg.org/eco/terms/Event' + ); + const measurement = getExtensionDefinitionForRowType( + 'http://rs.tdwg.org/dwc/terms/MeasurementOrFact' + ); + if (event === undefined || measurement === undefined) + throw new Error('Expected GBIF extension definitions were not found'); + + expect( + isExtensionApplicableToCore(event, 'http://rs.tdwg.org/dwc/terms/Event') + ).toBe(true); + expect( + isExtensionApplicableToCore( + event, + 'http://rs.tdwg.org/dwc/terms/Occurrence' + ) + ).toBe(false); + expect( + isExtensionApplicableToCore( + measurement, + 'http://rs.tdwg.org/dwc/terms/Taxon' + ) + ).toBe(true); + }); + + test('disambiguates duplicate term titles in the term picker', () => { + const terms = [ + { + name: 'http://rs.tdwg.org/ac/terms/commenterLiteral', + title: 'Commenter', + }, + { + name: 'http://rs.tdwg.org/ac/terms/commenter', + title: 'Commenter', + }, + ] as const; + + expect(getTermDisplayLabel(terms[0], terms)).toBe( + 'Commenter (commenterLiteral)' + ); + expect(getTermDisplayLabel(terms[1], terms)).toBe('Commenter (commenter)'); + }); + + test('does not automatically map core patterns unavailable to an extension', () => { + const xml = ` + + `; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) + throw new Error('Extension mapping was not parsed'); + + expect(mapping.terms).toEqual([occurrenceId, undefined]); + }); + + test('automatically maps model-backed GBIF extension fields', () => { + const fields = [ + [ + '1,111-collectionObjectAttachments,41.attachment.title', + 'http://purl.org/dc/terms/title', + ], + [ + '1,111-collectionObjectAttachments,41.attachment.fileCreatedDate', + 'http://rs.tdwg.org/ac/terms/digitizationDate', + ], + [ + '1,111-collectionObjectAttachments,41.attachment.guid', + 'http://purl.org/dc/terms/identifier', + ], + [ + '1,111-collectionObjectAttachments,41.attachment.type', + 'http://purl.org/dc/elements/1.1/type', + ], + [ + '1,111-collectionObjectAttachments,41.attachment.subtype', + 'http://rs.tdwg.org/ac/terms/subtype', + ], + [ + '1,111-collectionObjectAttachments,41.attachment.mimeType', + 'http://purl.org/dc/elements/1.1/format', + ], + [ + '1,111-collectionObjectAttachments,41.attachment.attachment', + 'http://rs.tdwg.org/ac/terms/accessURI', + ], + ] as const; + const xml = `${fields + .map(([stringId]) => ``) + .join('')}`; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) + throw new Error('Extension mapping was not parsed'); + + expect(mapping.terms).toEqual([ + occurrenceId, + ...fields.map(([, term]) => term), + ]); + }); + + test('limits templates to the matching mapping', () => { + const coreTemplate = defaultTemplates[0]; + const extensionTemplate = defaultTemplates[1]; + expect( + getTemplateMapping(coreTemplate, { + extension: false, + rowType: 'http://rs.tdwg.org/dwc/terms/Occurrence', + })?.extension + ).toBe(false); + expect( + getTemplateMapping(extensionTemplate, { + extension: true, + rowType: 'http://rs.tdwg.org/ac/terms/Multimedia', + })?.extension + ).toBe(true); + expect( + getTemplateMapping(extensionTemplate, { + extension: true, + rowType: 'http://rs.gbif.org/terms/1.0/MeasurementOrFacts', + }) + ).toBe(undefined); + }); + + test('automatically maps the expanded core default field patterns', () => { + const fields = [ + ['1.collectionobject.guid', occurrenceId], + [ + '1.collectionobject.text1', + 'http://rs.tdwg.org/dwc/terms/collectionCode', + ], + [ + '1,23,26,96,94.institution.altName', + 'http://rs.tdwg.org/dwc/terms/institutionID', + ], + [ + '1,23,26,96,94.institution.copyright', + 'http://purl.org/dc/terms/license', + ], + [ + '1,23,26,96,94.institution.termsOfUse', + 'http://purl.org/dc/terms/accessRights', + ], + [ + '1,23.collection.collectionType', + 'http://rs.tdwg.org/dwc/terms/basisOfRecord', + ], + [ + '1,23.collection.description', + 'http://rs.tdwg.org/dwc/terms/datasetName', + ], + ['1,23.collection.guid', 'http://rs.tdwg.org/dwc/terms/datasetID'], + [ + '1.collectionobject.altCatalogNumber', + 'http://rs.tdwg.org/dwc/terms/otherCatalogNumbers', + ], + [ + '1.collectionobject.timestampModified', + 'http://purl.org/dc/terms/modified', + ], + [ + '1,9-determinations,4.taxon.Species Author', + 'http://rs.tdwg.org/dwc/terms/scientificNameAuthorship', + ], + [ + '1,9-determinations,4.taxon.fullName', + 'http://rs.tdwg.org/dwc/terms/scientificName', + ], + [ + '1,9-determinations,4,77-definitionItem.taxontreedefitem.name', + 'http://rs.tdwg.org/dwc/terms/taxonRank', + ], + [ + '1,9-determinations,5-determiner.agent.determiner', + 'http://rs.tdwg.org/dwc/terms/identifiedBy', + ], + [ + '1,9-determinations.determination.typeStatusName', + 'http://rs.tdwg.org/dwc/terms/typeStatus', + ], + [ + '1,10.collectingevent.stationFieldNumber', + 'http://rs.tdwg.org/dwc/terms/eventID', + ], + [ + '1,10.collectingevent.method', + 'http://rs.tdwg.org/dwc/terms/samplingProtocol', + ], + [ + '1,10.collectingevent.startDateVerbatim', + 'http://rs.tdwg.org/dwc/terms/verbatimEventDate', + ], + [ + '1,10.collectingevent.endTime', + 'http://rs.tdwg.org/dwc/terms/eventTime', + ], + [ + '1,10.collectingevent.verbatimLocality', + 'http://rs.tdwg.org/dwc/terms/verbatimLocality', + ], + [ + '1,10,92,4-hostTaxon.taxon.hostTaxon', + 'http://rs.tdwg.org/dwc/terms/associatedTaxa', + ], + [ + '1,10.collectingevent.startDateNumericDay', + 'http://rs.tdwg.org/dwc/terms/day', + ], + [ + '1,10.collectingevent.startDateNumericMonth', + 'http://rs.tdwg.org/dwc/terms/month', + ], + [ + '1,10.collectingevent.startDateNumericYear', + 'http://rs.tdwg.org/dwc/terms/year', + ], + [ + '1,10,92.collectingeventattribute.number13', + 'http://rs.tdwg.org/dwc/terms/minimumDepthInMeters', + ], + [ + '1,10,92.collectingeventattribute.number12', + 'http://rs.tdwg.org/dwc/terms/maximumDepthInMeters', + ], + [ + '1,93.collectionobjectattribute.text10', + 'http://rs.tdwg.org/dwc/terms/sex', + ], + [ + '1,93.collectionobjectattribute.text12', + 'http://rs.tdwg.org/dwc/terms/lifeStage', + ], + ['1,10,2.locality.localityName', 'http://rs.tdwg.org/dwc/terms/locality'], + [ + '1,10,2.locality.latLongMethod', + 'http://rs.tdwg.org/dwc/terms/georeferenceSources', + ], + [ + '1,10,2,123-geoCoordDetails.geocoorddetail.geoRefRemarks', + 'http://rs.tdwg.org/dwc/terms/georeferenceRemarks', + ], + [ + '1,10,2,123-geoCoordDetails.geocoorddetail.geoRefDetDate', + 'http://rs.tdwg.org/dwc/terms/georeferencedDate', + ], + [ + '1,10,2,123-geoCoordDetails,5-geoRefDetBy.agent.geoRefDetBy', + 'http://rs.tdwg.org/dwc/terms/georeferencedBy', + ], + [ + '1,10,2,3.geography.geography', + 'http://rs.tdwg.org/dwc/terms/higherGeography', + ], + [ + '1,10,2.locality.maxElevation', + 'http://rs.tdwg.org/dwc/terms/maximumElevationInMeters', + ], + [ + '1,10,2.locality.minElevation', + 'http://rs.tdwg.org/dwc/terms/minimumElevationInMeters', + ], + [ + '1,10,2.locality.verbatimElevation', + 'http://rs.tdwg.org/dwc/terms/verbatimElevation', + ], + [ + '1,10,2.locality.verbatimLatitude', + 'http://rs.tdwg.org/dwc/terms/verbatimLatitude', + ], + [ + '1,10,2.locality.verbatimLongitude', + 'http://rs.tdwg.org/dwc/terms/verbatimLongitude', + ], + [ + '1,10,2,123.geoCoordDetails.geocoorddetail.protocol', + 'http://rs.tdwg.org/dwc/terms/georeferenceProtocol', + ], + [ + '1,10,2,123.geoCoordDetails.geocoorddetail.geoRefVerificationStatus', + 'http://rs.tdwg.org/dwc/terms/georeferenceVerificationStatus', + ], + [ + '1,10,2.localitydetail.waterBody', + 'http://rs.tdwg.org/dwc/terms/waterBody', + ], + [ + '1,63-preparations.preparation.preparations', + 'http://rs.tdwg.org/dwc/terms/preparations', + ], + [ + '1,10,92.collectingeventattribute.text17', + 'http://rs.tdwg.org/dwc/terms/habitat', + ], + ['1,10,2.locality.elevationMethod', undefined], + ] as const; + const xml = `${fields + .map(([stringId]) => ``) + .join('')}`; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + expect(mapping.terms).toEqual(fields.map(([, term]) => term)); + }); + + test('automatically maps newly supported default schema fields', () => { + const fields = [ + [ + '1,23.collection.collectionName', + 'http://rs.tdwg.org/dwc/terms/datasetName', + ], + [ + '1,9-determinations,4.taxon.author', + 'http://rs.tdwg.org/dwc/terms/scientificNameAuthorship', + ], + [ + '1,9-determinations.determination.determiner', + 'http://rs.tdwg.org/dwc/terms/identifiedBy', + ], + [ + '1,10.collectingevent.endDateVerbatim', + 'http://rs.tdwg.org/dwc/terms/verbatimEventDate', + ], + [ + '1,10.collectingevent.verbatimDate', + 'http://rs.tdwg.org/dwc/terms/verbatimEventDate', + ], + [ + '1,10,2,3.geography.fullName', + 'http://rs.tdwg.org/dwc/terms/higherGeography', + ], + ] as const; + + fields.forEach(([stringId, term]) => { + const [mapping] = parseDefinition( + `` + ); + expect(mapping?.terms).toContain(term); + }); + }); + + test('automatically maps the remaining Darwin Core taxon ranks', () => { + const fields = [ + [ + '1,9-determinations,4.taxon.Superfamily', + 'http://rs.tdwg.org/dwc/terms/superfamily', + ], + [ + '1,9-determinations,4.taxon.Subfamily', + 'http://rs.tdwg.org/dwc/terms/subfamily', + ], + [ + '1,9-determinations,4.taxon.Tribe', + 'http://rs.tdwg.org/dwc/terms/tribe', + ], + [ + '1,9-determinations,4.taxon.Subtribe', + 'http://rs.tdwg.org/dwc/terms/subtribe', + ], + [ + '1,9-determinations,4.taxon.Subgenus', + 'http://rs.tdwg.org/dwc/terms/subgenus', + ], + [ + '1,9-determinations,4.taxon.Subgenus', + 'http://rs.tdwg.org/dwc/terms/infragenericEpithet', + ], + [ + '1,9-determinations,4.taxon.Genus', + 'http://rs.tdwg.org/dwc/terms/genus', + ], + [ + '1,9-determinations,4.taxon.Genus', + 'http://rs.tdwg.org/dwc/terms/genericName', + ], + [ + '1,9-determinations,4.taxon.Cultivar', + 'http://rs.tdwg.org/dwc/terms/cultivarEpithet', + ], + ] as const; + const xml = `${fields + .map(([stringId]) => ``) + .join('')}`; + const [mapping] = parseDefinition(xml); + if (mapping === undefined) throw new Error('Core mapping was not parsed'); + + expect(mapping.terms).toEqual([ + occurrenceId, + ...fields.map(([, term]) => term), + ]); + }); +}); diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/coreTermPatterns.ts b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/coreTermPatterns.ts new file mode 100644 index 00000000000..6e95123ddcb --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/coreTermPatterns.ts @@ -0,0 +1,392 @@ +export const occurrenceIdTerm = 'http://rs.tdwg.org/dwc/terms/occurrenceID'; + +// Darwin Core core mappings. These are also reused by extensions whenever an +// extension exposes the same Darwin Core term. +const darwinCoreTermPatterns: Readonly> = { + // These must precede eventDate because numeric date-part IDs also contain + // "collectingevent.startdate". + 'http://rs.tdwg.org/dwc/terms/day': [ + 'collectingevent.startdatenumericday', + 'collectingevent.enddatenumericday', + ], + 'http://rs.tdwg.org/dwc/terms/month': [ + 'collectingevent.startdatenumericmonth', + 'collectingevent.enddatenumericmonth', + ], + 'http://rs.tdwg.org/dwc/terms/year': [ + 'collectingevent.startdatenumericyear', + 'collectingevent.enddatenumericyear', + ], + 'http://rs.tdwg.org/dwc/terms/verbatimEventDate': [ + 'collectingevent.startdateverbatim', + 'collectingevent.enddateverbatim', + 'collectingevent.verbatimdate', + ], + 'http://rs.tdwg.org/dwc/terms/eventDate': [ + 'collectingevent.startdate', + 'collectingevent.enddate', + ], + 'http://rs.tdwg.org/dwc/terms/basisOfRecord': ['collection.collectiontype'], + 'http://rs.tdwg.org/dwc/terms/datasetName': [ + 'collection.description', + 'collection.collectionname', + ], + 'http://rs.tdwg.org/dwc/terms/datasetID': ['collection.guid'], + 'http://rs.tdwg.org/dwc/terms/institutionID': ['institution.altname'], + 'http://purl.org/dc/terms/license': [ + 'institution.copyright', + 'institution.disclaimer', + 'attachment.license', + ], + 'http://purl.org/dc/terms/accessRights': ['institution.termsofuse'], + 'http://purl.org/dc/terms/modified': ['.timestampmodified'], + 'http://rs.tdwg.org/dwc/terms/otherCatalogNumbers': ['.altcatalognumber'], + 'http://rs.tdwg.org/dwc/terms/scientificName': [ + 'preferredtaxon.fullname', + 'taxon.fullname', + ], + 'http://rs.tdwg.org/dwc/terms/scientificNameAuthorship': [ + 'taxon.species author', + 'taxon.author', + ], + [occurrenceIdTerm]: ['collectionobject.guid'], + 'http://rs.tdwg.org/dwc/terms/continent': ['geography.continent'], + 'http://rs.tdwg.org/dwc/terms/country': ['geography.country'], + 'http://rs.tdwg.org/dwc/terms/eventTime': [ + 'collectingevent.starttime', + 'collectingevent.endtime', + ], + 'http://rs.tdwg.org/dwc/terms/geodeticDatum': ['locality.datum'], + 'http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters': [ + 'geocoorddetail.maxuncertaintyest', + ], + // This only works if the rank is named exactly 'Country' + 'http://rs.tdwg.org/dwc/terms/countryCode': [ + 'geography.Country geographyCode', + ], + 'http://rs.tdwg.org/dwc/terms/decimalLatitude': ['locality.latitude1'], + 'http://rs.tdwg.org/dwc/terms/decimalLongitude': ['locality.longitude1'], + 'http://rs.tdwg.org/dwc/terms/individualCount': [ + 'collectionobject.countamt', + 'collectionobjectattribute.countamt', + ], + 'http://rs.tdwg.org/dwc/terms/organismQuantity': [ + 'collectionobject.countamt', + 'collectionobjectattribute.countamt', + ], + 'http://rs.tdwg.org/dwc/terms/sex': ['collectionobjectattribute.text10'], + 'http://rs.tdwg.org/dwc/terms/lifeStage': [ + 'collectionobjectattribute.text12', + ], + 'http://rs.tdwg.org/dwc/terms/habitat': ['collectingeventattribute.text17'], + 'http://rs.tdwg.org/dwc/terms/kingdom': ['taxon.kingdom'], + 'http://rs.tdwg.org/dwc/terms/phylum': ['taxon.phylum'], + 'http://rs.tdwg.org/dwc/terms/class': ['taxon.class'], + 'http://rs.tdwg.org/dwc/terms/order': ['taxon.order'], + 'http://rs.tdwg.org/dwc/terms/superfamily': ['taxon.superfamily'], + 'http://rs.tdwg.org/dwc/terms/family': ['taxon.family'], + 'http://rs.tdwg.org/dwc/terms/subfamily': ['taxon.subfamily'], + 'http://rs.tdwg.org/dwc/terms/tribe': ['taxon.tribe'], + 'http://rs.tdwg.org/dwc/terms/subtribe': ['taxon.subtribe'], + 'http://rs.tdwg.org/dwc/terms/genus': ['taxon.genus'], + 'http://rs.tdwg.org/dwc/terms/genericName': ['taxon.genus'], + 'http://rs.tdwg.org/dwc/terms/subgenus': ['taxon.subgenus'], + 'http://rs.tdwg.org/dwc/terms/infragenericEpithet': ['taxon.subgenus'], + 'http://rs.tdwg.org/dwc/terms/specificEpithet': ['taxon.species'], + 'http://rs.tdwg.org/dwc/terms/infraspecificEpithet': ['taxon.subspecies'], + 'http://rs.tdwg.org/dwc/terms/cultivarEpithet': ['taxon.cultivar'], + 'http://rs.tdwg.org/dwc/terms/taxonRank': ['taxontreedefitem.name'], + 'http://rs.tdwg.org/dwc/terms/eventID': [ + 'collectingevent.guid', + 'collectingevent.stationfieldnumber', + ], + 'http://rs.tdwg.org/dwc/terms/recordNumber': ['fieldnumber'], + 'http://rs.tdwg.org/dwc/terms/identifiedBy': [ + 'agent.determiner', + 'determination.determiner', + 'determiner.determiners', + ], + 'http://rs.tdwg.org/dwc/terms/typeStatus': ['determination.typestatusname'], + 'http://rs.tdwg.org/dwc/terms/parentEventID': ['collectingtrip.guid'], + 'http://rs.tdwg.org/dwc/terms/waterBody': ['localitydetail.waterbody'], + 'http://rs.tdwg.org/dwc/terms/catalogNumber': ['.catalognumber'], + 'http://rs.tdwg.org/dwc/terms/recordedBy': ['.collectors'], + 'http://rs.tdwg.org/dwc/terms/stateProvince': ['geography.state'], + 'http://rs.tdwg.org/dwc/terms/county': ['geography.county'], + 'http://rs.tdwg.org/dwc/terms/maximumDepthInMeters': [ + 'localitydetail.enddepth', + 'collectingeventattribute.number12', + ], + 'http://rs.tdwg.org/dwc/terms/minimumDepthInMeters': [ + 'localitydetail.startdepth', + 'collectingeventattribute.number13', + ], + 'http://rs.tdwg.org/dwc/terms/locality': ['locality.localityname'], + 'http://rs.tdwg.org/dwc/terms/island': ['localitydetail.island'], + 'http://rs.tdwg.org/dwc/terms/islandGroup': ['localitydetail.islandgroup'], + 'http://rs.tdwg.org/dwc/terms/locationRemarks': ['locality.remarks'], + 'http://rs.tdwg.org/dwc/terms/georeferenceSources': [ + 'locality.latlongmethod', + ], + 'http://rs.tdwg.org/dwc/terms/collectionCode': [ + 'collection.code', + 'collectionobject.text1', + ], + 'http://rs.tdwg.org/dwc/terms/eventRemarks': ['collectingevent.remarks'], + 'http://rs.tdwg.org/dwc/terms/institutionCode': ['institution.code'], + 'http://rs.tdwg.org/dwc/terms/fieldNumber': ['fieldnumber'], + 'http://rs.tdwg.org/dwc/terms/dateIdentified': ['determineddate'], + 'http://rs.tdwg.org/dwc/terms/locationID': ['locality.guid'], + 'http://rs.tdwg.org/dwc/terms/georeferenceRemarks': [ + 'geocoorddetail.georefremarks', + ], + 'http://rs.tdwg.org/dwc/terms/georeferencedDate': [ + 'geocoorddetail.georefdetdate', + ], + 'http://rs.tdwg.org/dwc/terms/georeferencedBy': ['georefdetby'], + 'http://rs.tdwg.org/dwc/terms/georeferenceProtocol': [ + 'geocoorddetail.protocol', + ], + 'http://rs.tdwg.org/dwc/terms/georeferenceVerificationStatus': [ + 'geocoorddetail.georefverificationstatus', + ], + 'http://rs.tdwg.org/dwc/terms/higherGeography': [ + 'geography.geography', + 'geography.fullname', + ], + 'http://rs.tdwg.org/dwc/terms/samplingProtocol': ['collectingevent.method'], + 'http://rs.tdwg.org/dwc/terms/verbatimLocality': [ + 'collectingevent.verbatimlocality', + ], + 'http://rs.tdwg.org/dwc/terms/associatedTaxa': ['hosttaxon.taxon.hosttaxon'], + 'http://rs.tdwg.org/dwc/terms/preparations': [ + 'preparations.preparation.preparations', + ], + 'http://rs.tdwg.org/dwc/terms/occurrenceRemarks': [ + 'collectionobject.remarks', + ], + 'http://rs.tdwg.org/dwc/terms/maximumElevationInMeters': [ + 'locality.maxelevation', + ], + 'http://rs.tdwg.org/dwc/terms/minimumElevationInMeters': [ + 'locality.minelevation', + ], + 'http://rs.tdwg.org/dwc/terms/verbatimElevation': [ + 'locality.verbatimelevation', + ], + 'http://rs.tdwg.org/dwc/terms/verbatimLatitude': [ + 'locality.verbatimlatitude', + ], + 'http://rs.tdwg.org/dwc/terms/verbatimLongitude': [ + 'locality.verbatimlongitude', + ], +}; + +// GBIF extension mappings. Keep these limited to fields that have a known +// Specify data-model source. Terms in gbifExtensions.json without a reliable +// source stay available for manual mapping instead of receiving a guess. +const gbifExtensionTermPatterns: Readonly> = { + // Audiovisual Core (AC) and the GBIF media extensions. + 'http://purl.org/dc/terms/identifier': [ + 'attachment.guid', + 'referencework.guid', + ], + 'http://purl.org/dc/elements/1.1/type': ['attachment.type'], + 'http://purl.org/dc/terms/type': [ + 'attachment.type', + 'referencework.referenceworktype', + ], + 'http://rs.tdwg.org/ac/terms/subtype': ['attachment.subtype'], + 'http://rs.tdwg.org/audubon_core/subtype': ['attachment.subtype'], + 'http://purl.org/dc/terms/title': ['attachment.title', 'referencework.title'], + 'http://purl.org/dc/terms/description': [ + 'attachment.metadatatext', + 'referencework.remarks', + ], + 'http://purl.org/dc/elements/1.1/format': ['attachment.mimetype'], + 'http://purl.org/dc/terms/format': ['attachment.mimetype'], + 'http://purl.org/dc/elements/1.1/creator': ['attachment.credit'], + 'http://purl.org/dc/terms/created': [ + 'attachment.filecreateddate', + 'attachment.dateimaged', + 'referencework.workdate', + ], + 'http://purl.org/dc/terms/date': ['referencework.workdate'], + 'http://purl.org/dc/terms/publisher': [ + 'institution.name', + 'referencework.publisher', + ], + 'http://purl.org/dc/terms/rightsHolder': [ + 'attachment.copyrightholder', + 'institution.name', + ], + 'http://purl.org/dc/terms/source': ['referencework.uri', 'institution.uri'], + 'http://rs.tdwg.org/ac/terms/digitizationDate': [ + 'attachment.filecreateddate', + 'attachment.dateimaged', + ], + 'http://rs.tdwg.org/ac/terms/captureDevice': ['attachment.capturedevice'], + 'http://rs.tdwg.org/ac/terms/subjectOrientation': [ + 'attachment.subjectorientation', + ], + 'http://rs.tdwg.org/ac/terms/licenseLogoURL': ['attachment.licenselogourl'], + 'http://rs.tdwg.org/ac/terms/accessURI': [ + // This is a formatted Attachment relationship field exposed by QueryBuilder. + 'attachment.attachment', + ], + + // GBIF Types and Specimen / Identification extensions. + 'http://rs.tdwg.org/dwc/terms/collectionID': ['collection.guid'], + 'http://rs.gbif.org/terms/1.0/verbatimLabel': ['collectionobject.remarks'], + 'http://rs.tdwg.org/dwc/terms/identificationID': ['determination.guid'], + 'http://rs.tdwg.org/dwc/terms/identificationQualifier': [ + 'determination.qualifier', + ], + 'http://rs.tdwg.org/dwc/terms/identificationRemarks': [ + 'determination.remarks', + ], + 'http://rs.tdwg.org/dwc/terms/taxonID': ['taxon.guid'], + 'http://rs.tdwg.org/dwc/terms/scientificNameID': ['taxon.guid'], + 'http://rs.tdwg.org/dwc/terms/acceptedNameUsageID': ['taxon.guid'], + 'http://rs.tdwg.org/dwc/terms/parentNameUsageID': ['taxon.guid'], + 'http://rs.tdwg.org/dwc/terms/originalNameUsageID': ['taxon.guid'], + 'http://rs.tdwg.org/dwc/terms/nameAccordingToID': ['referencework.guid'], + 'http://rs.tdwg.org/dwc/terms/namePublishedInID': ['referencework.guid'], + 'http://rs.tdwg.org/dwc/terms/taxonConceptID': ['taxon.guid'], + 'http://rs.tdwg.org/dwc/terms/taxonRemarks': ['taxon.remarks'], + 'http://rs.tdwg.org/dwc/terms/vernacularName': ['taxon.commonname'], + + // GBIF Reference and EOL reference extensions. + 'http://purl.org/ontology/bibo/pages': ['referencework.pages'], + 'http://purl.org/ontology/bibo/volume': ['referencework.volume'], + 'http://purl.org/ontology/bibo/uri': ['referencework.uri'], + 'http://purl.org/ontology/bibo/doi': ['referencework.doi'], + 'http://eol.org/schema/reference/publicationType': [ + 'referencework.referenceworktype', + ], + 'http://eol.org/schema/reference/primaryTitle': ['referencework.title'], + + // Chronometric Age / Date extensions. + 'http://rs.tdwg.org/chrono/terms/verbatimChronometricAge': [ + 'absoluteage.absoluteage', + 'relativeage.verbatimname', + ], + 'http://zooarchnet.org/dwc/terms/verbatimChronometricAge': [ + 'absoluteage.absoluteage', + 'relativeage.verbatimname', + ], + 'http://rs.tdwg.org/chrono/terms/chronometricAgeProtocol': [ + 'absoluteage.datingmethod', + 'relativeage.datingmethod', + ], + 'http://zooarchnet.org/dwc/terms/chronometricAgeProtocol': [ + 'absoluteage.datingmethod', + 'relativeage.datingmethod', + ], + 'http://zooarchnet.org/dwc/terms/chronometricDateProtocol': [ + 'absoluteage.datingmethod', + 'relativeage.datingmethod', + ], + 'http://rs.tdwg.org/chrono/terms/chronometricAgeUncertaintyInYears': [ + 'absoluteage.ageuncertainty', + 'relativeage.ageuncertainty', + ], + 'http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyInYears': [ + 'absoluteage.ageuncertainty', + 'relativeage.ageuncertainty', + ], + 'http://rs.tdwg.org/chrono/terms/chronometricAgeDeterminedDate': [ + 'absoluteage.date1', + 'relativeage.date1', + ], + 'http://rs.tdwg.org/chrono/terms/chronometricAgeRemarks': [ + 'absoluteage.remarks', + 'relativeage.remarks', + ], + 'http://zooarchnet.org/dwc/terms/chronometricAgeRemarks': [ + 'absoluteage.remarks', + 'relativeage.remarks', + ], + + // GGBN DNA, material sample, loan, and permit extensions. + 'http://rs.gbif.org/terms/pcr_primer_forward': [ + 'dnaprimer.primersequenceforward', + ], + 'http://rs.gbif.org/terms/pcr_primer_reverse': [ + 'dnaprimer.primersequencereverse', + ], + 'http://rs.gbif.org/terms/pcr_primer_name_forward': [ + 'dnaprimer.primernameforward', + ], + 'http://rs.gbif.org/terms/pcr_primer_name_reverse': [ + 'dnaprimer.primernamereverse', + ], + 'http://rs.gbif.org/terms/pcr_primer_reference': [ + 'dnaprimer.primerreferencecitationforward', + 'dnaprimer.primerreferencecitationreverse', + ], + 'http://rs.gbif.org/terms/dna_sequence': ['dnasequence.genesequence'], + 'http://data.ggbn.org/schemas/ggbn/terms/materialSampleType': [ + 'materialsample.ggbn_materialsampletype', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/concentration': [ + 'materialsample.ggbn_concentration', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/concentrationUnit': [ + 'materialsample.ggbn_concentrationunit', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_230': [ + 'materialsample.ggbn_absorbanceratio260_230', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_280': [ + 'materialsample.ggbn_absorbanceratio260_280', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/volume': [ + 'materialsample.ggbn_volume', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/volumeUnit': [ + 'materialsample.ggbn_volumeunit', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/weight': [ + 'materialsample.ggbn_weight', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/weightUnit': [ + 'materialsample.ggbn_weightunit', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/purificationMethod': [ + 'materialsample.ggbn_purificationmethod', + 'dnaprimer.purificationmethod', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/qualityCheckDate': [ + 'materialsample.ggbn_qualitycheckdate', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/quality': [ + 'materialsample.ggbn_quality', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/qualityRemarks': [ + 'materialsample.ggbn_qualityremarks', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/sampleDesignation': [ + 'materialsample.ggbn_sampledesignation', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/permitType': ['permit.type'], + 'http://data.ggbn.org/schemas/ggbn/terms/permitStatus': ['permit.status'], + 'http://data.ggbn.org/schemas/ggbn/terms/permitStatusQualifier': [ + 'permit.statusqualifier', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/permitText': ['permit.permittext'], + 'http://data.ggbn.org/schemas/ggbn/terms/blockedUntil': [ + 'loan.currentduedate', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/loanConditions': [ + 'loan.specialconditions', + ], + 'http://data.ggbn.org/schemas/ggbn/terms/loanDate': ['loan.loandate'], + 'http://data.ggbn.org/schemas/ggbn/terms/loanIdentifier': ['loan.loannumber'], + 'http://purl.org/dc/terms/disposition': ['loan.purposeofloan'], +}; + +export const coreTermPatterns: Readonly> = { + ...darwinCoreTermPatterns, + ...gbifExtensionTermPatterns, +}; diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/defaultTemplates.ts b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/defaultTemplates.ts new file mode 100644 index 00000000000..344ed871695 --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/defaultTemplates.ts @@ -0,0 +1,196 @@ +export type DwcaTemplate = { + readonly name: string; + readonly coreRowTypes?: readonly string[]; + readonly definition: string; + readonly targets: readonly { + readonly extension: boolean; + readonly rowType: string; + }[]; +}; + +/** Shared starting points supplied with Specify. These remain XML so the + * visual editor can load them using the same path as user-created resources. + */ +export const defaultTemplates: readonly DwcaTemplate[] = [ + { + name: 'Specify → Darwin Core Occurrence', + coreRowTypes: ['http://rs.tdwg.org/dwc/terms/Occurrence'], + targets: [ + { + extension: false, + rowType: 'http://rs.tdwg.org/dwc/terms/Occurrence', + }, + ], + definition: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`, + }, + { + name: 'Specify → Audiovisual Core', + coreRowTypes: ['http://rs.tdwg.org/dwc/terms/Occurrence'], + targets: [ + { + extension: true, + rowType: 'http://rs.tdwg.org/ac/terms/Multimedia', + }, + ], + definition: ` + + + + + + + + + + + + + + + + + + + +`, + }, + { + name: 'Specify → EOL References Extension', + coreRowTypes: ['http://rs.tdwg.org/dwc/terms/Occurrence'], + targets: [ + { + extension: true, + rowType: 'http://eol.org/schema/reference/Reference', + }, + ], + definition: ` + + + + + + + + + + + + + + + + + + + + +`, + }, + { + name: 'Specify → Identification History Extension', + coreRowTypes: ['http://rs.tdwg.org/dwc/terms/Occurrence'], + targets: [ + { + extension: true, + rowType: 'http://rs.tdwg.org/dwc/terms/Identification', + }, + ], + definition: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`, + }, +]; diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifCores.json b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifCores.json new file mode 100644 index 00000000000..526a3f6dd12 --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifCores.json @@ -0,0 +1,3164 @@ +[ + { + "name": "Event", + "title": "Darwin Core Event", + "identifier": "http://rs.tdwg.org/dwc/terms/Event", + "url": "http://rs.gbif.org/core/dwc_event_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/dwc/terms/Event", + "namespace": "http://rs.tdwg.org/dwc/terms/", + "issued": "2026-02-12", + "description": "Support for Darwin Core Event-based records.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/elements/1.1/type", + "title": "Type", + "required": false, + "description": "The nature or genre of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/type", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/modified", + "title": "Date Modified", + "required": false, + "description": "Date on which the resource was changed.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/modified", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/elements/1.1/language", + "title": "Language", + "required": false, + "description": "A language of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/language", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/license", + "title": "License", + "required": false, + "description": "A legal document giving official permission to do something with the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/license", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/rightsHolder", + "title": "Rights Holder", + "required": false, + "description": "A person or organization owning or managing rights over the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rightsHolder", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/accessRights", + "title": "Access Rights", + "required": false, + "description": "Information about who can access the resource or an indication of its security status.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/accessRights", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/bibliographicCitation", + "title": "Bibliographic Citation", + "required": false, + "description": "A bibliographic reference for the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/bibliographicCitation", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/references", + "title": "References", + "required": false, + "description": "A related resource that is referenced, cited, or otherwise pointed to by the described resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/references", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionID", + "title": "Institution ID", + "required": false, + "description": "An identifier for the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "Dataset ID", + "required": false, + "description": "An identifier for the set of data. May be a global unique identifier or an identifier specific to a collection or institution.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionCode", + "title": "Institution Code", + "required": false, + "description": "The name (or acronym) in use by the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionCode", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetName", + "title": "Dataset Name", + "required": false, + "description": "The name identifying the data set from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetName", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/ownerInstitutionCode", + "title": "Owner Institution Code", + "required": false, + "description": "The name (or acronym) in use by the institution having ownership of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/ownerInstitutionCode", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/informationWithheld", + "title": "Information Withheld", + "required": false, + "description": "Additional information that exists, but that has not been shared in the given record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/informationWithheld", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dataGeneralizations", + "title": "Data Generalizations", + "required": false, + "description": "Actions taken to make the shared data less specific or complete than in its original form. Suggests that alternative data of higher quality may be available on request.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dataGeneralizations", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dynamicProperties", + "title": "Dynamic Properties", + "required": false, + "description": "A list of additional measurements, facts, characteristics, or assertions about the record. Meant to provide a mechanism for structured content.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dynamicProperties", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventID", + "title": "Event ID", + "required": false, + "description": "An identifier for the set of information associated with a dwc:Event (something that occurs at a place and time). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventID", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentEventID", + "title": "Parent Event ID", + "required": false, + "description": "An identifier for the broader dwc:Event that groups this and potentially other dwc:Events.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentEventID", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventType", + "title": "Event Type", + "required": false, + "description": "The nature of the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventType", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/fieldNumber", + "title": "Field Number", + "required": false, + "description": "An identifier given to the dwc:Event in the field. Often serves as a link between field notes and the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/fieldNumber", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventDate", + "title": "Event Date", + "required": false, + "description": "The date-time or interval during which a dwc:Event occurred. For occurrences, this is the date-time when the dwc:Event was recorded. Not suitable for a time in a geological context.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventDate", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventTime", + "title": "Event Time", + "required": false, + "description": "The time or interval during which a dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventTime", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/startDayOfYear", + "title": "Start Day Of Year", + "required": false, + "description": "The earliest integer day of the year on which the dwc:Event occurred (1 for January 1, 365 for December 31, except in a leap year, in which case it is 366).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/startDayOfYear", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/endDayOfYear", + "title": "End Day Of Year", + "required": false, + "description": "The latest integer day of the year on which the dwc:Event occurred (1 for January 1, 365 for December 31, except in a leap year, in which case it is 366).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/endDayOfYear", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/year", + "title": "Year", + "required": false, + "description": "The four-digit year in which the dwc:Event occurred, according to the Common Era Calendar.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/year", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/month", + "title": "Month", + "required": false, + "description": "The integer month in which the dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/month", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/day", + "title": "Day", + "required": false, + "description": "The integer day of the month on which the dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/day", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimEventDate", + "title": "Verbatim EventDate", + "required": false, + "description": "The verbatim original representation of the date and time information for a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimEventDate", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/habitat", + "title": "Habitat", + "required": false, + "description": "A category or description of the habitat in which the dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/habitat", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/samplingProtocol", + "title": "Sampling Protocol", + "required": false, + "description": "The names of, references to, or descriptions of the methods or protocols used during a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/samplingProtocol", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sampleSizeValue", + "title": "Sample Size Value", + "required": false, + "description": "A numeric value for a measurement of the size (time duration, length, area, or volume) of a sample in a sampling dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sampleSizeValue", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sampleSizeUnit", + "title": "Sample Size Unit", + "required": false, + "description": "The unit of measurement of the size (time duration, length, area, or volume) of a sample in a sampling dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sampleSizeUnit", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/samplingEffort", + "title": "Sampling Effort", + "required": false, + "description": "The amount of effort expended during a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/samplingEffort", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/fieldNotes", + "title": "Field Notes", + "required": false, + "description": "One of a) an indicator of the existence of, b) a reference to (publication, URI), or c) the text of notes taken in the field about the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/fieldNotes", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventRemarks", + "title": "Event Remarks", + "required": false, + "description": "Comments or notes about the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventRemarks", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "Location ID", + "required": false, + "description": "An identifier for the set of dcterms:Location information. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherGeographyID", + "title": "Higher Geography ID", + "required": false, + "description": "An identifier for the geographic region within which the dcterms:Location occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherGeographyID", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherGeography", + "title": "Higher Geography", + "required": false, + "description": "A list (concatenated and separated) of geographic names less specific than the information captured in the dwc:locality term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherGeography", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/continent", + "title": "Continent", + "required": false, + "description": "The name of the continent in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/continent", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/waterBody", + "title": "Water Body", + "required": false, + "description": "The name of the water body in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/waterBody", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/islandGroup", + "title": "Island Group", + "required": false, + "description": "The name of the island group in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/islandGroup", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/island", + "title": "Island", + "required": false, + "description": "The name of the island on or near which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/island", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/country", + "title": "Country", + "required": false, + "description": "The name of the country or major administrative unit in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/country", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/countryCode", + "title": "Country Code", + "required": false, + "description": "The standard code for the country in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/countryCode", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/stateProvince", + "title": "First Order Division", + "required": false, + "description": "The name of the next smaller administrative region than country (state, province, canton, department, region, etc.) in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/stateProvince", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/county", + "title": "Second Order Division", + "required": false, + "description": "The full, unabbreviated name of the next smaller administrative region than stateProvince (county, shire, department, etc.) in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/county", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/municipality", + "title": "Third Order Division", + "required": false, + "description": "The full, unabbreviated name of the next smaller administrative region than county (city, municipality, etc.) in which the dcterms:Location occurs. Do not use this term for a nearby named place that does not contain the actual dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/municipality", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locality", + "title": "Locality", + "required": false, + "description": "The specific description of the place.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locality", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLocality", + "title": "Verbatim Locality", + "required": false, + "description": "The original textual description of the place.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLocality", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumElevationInMeters", + "title": "Minimum Elevation In Meters", + "required": false, + "description": "The lower limit of the range of elevation (altitude, usually above sea level), in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumElevationInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumElevationInMeters", + "title": "Maximum Elevation In Meters", + "required": false, + "description": "The upper limit of the range of elevation (altitude, usually above sea level), in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumElevationInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimElevation", + "title": "Verbatim Elevation", + "required": false, + "description": "The original description of the elevation (altitude, usually above sea level) of the Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimElevation", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verticalDatum", + "title": "Vertical Datum", + "required": false, + "description": "The vertical datum used as the reference upon which the values in the elevation terms are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verticalDatum", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumDepthInMeters", + "title": "Minimum Depth In Meters", + "required": false, + "description": "The lesser depth of a range of depth below the local surface, in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumDepthInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumDepthInMeters", + "title": "Maximum Depth In Meters", + "required": false, + "description": "The greater depth of a range of depth below the local surface, in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumDepthInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimDepth", + "title": "Verbatim Depth", + "required": false, + "description": "The original description of the depth below the local surface.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimDepth", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumDistanceAboveSurfaceInMeters", + "title": "Minimum Distance Above Surface In Meters", + "required": false, + "description": "The lesser distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumDistanceAboveSurfaceInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumDistanceAboveSurfaceInMeters", + "title": "Maximum Distance Above Surface In Meters", + "required": false, + "description": "The greater distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumDistanceAboveSurfaceInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationAccordingTo", + "title": "Location According To", + "required": false, + "description": "Information about the source of this dcterms:Location information. Could be a publication (gazetteer), institution, or team of individuals.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationAccordingTo", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationRemarks", + "title": "Location Remarks", + "required": false, + "description": "Comments or notes about the dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationRemarks", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/decimalLatitude", + "title": "Decimal Latitude", + "required": false, + "description": "The geographic latitude (in decimal degrees, using the spatial reference system given in dwc:geodeticDatum) of the geographic center of a dcterms:Location. Positive values are north of the Equator, negative values are south of it. Legal values lie between -90 and 90, inclusive.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/decimalLatitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/decimalLongitude", + "title": "Decimal Longitude", + "required": false, + "description": "The geographic longitude (in decimal degrees, using the spatial reference system given in dwc:geodeticDatum) of the geographic center of a dcterms:Location. Positive values are east of the Greenwich Meridian, negative values are west of it. Legal values lie between -180 and 180, inclusive.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/decimalLongitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/geodeticDatum", + "title": "Geodetic Datum", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which the geographic coordinates given in dwc:decimalLatitude and dwc:decimalLongitude are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/geodeticDatum", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters", + "title": "Coordinate Uncertainty In Meters", + "required": false, + "description": "The horizontal distance (in meters) from the given dwc:decimalLatitude and dwc:decimalLongitude describing the smallest circle containing the whole of the dcterms:Location. Leave the value empty if the uncertainty is unknown, cannot be estimated, or is not applicable (because there are no coordinates). Zero is not a valid value for this term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/coordinatePrecision", + "title": "Coordinate Precision", + "required": false, + "description": "A decimal representation of the precision of the coordinates given in the dwc:decimalLatitude and dwc:decimalLongitude.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/coordinatePrecision", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/pointRadiusSpatialFit", + "title": "Point Radius Spatial Fit", + "required": false, + "description": "The ratio of the area of the point-radius (dwc:decimalLatitude, dwc:decimalLongitude, dwc:coordinateUncertaintyInMeters) to the area of the true (original, or most specific) spatial representation of the dcterms:Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given point-radius does not completely contain the original representation. The dwc:pointRadiusSpatialFit is undefined (and should be left empty) if the original representation is any geometry without area (e.g., a point or polyline) and without uncertainty and the given georeference is not that same geometry (without uncertainty). If both the original and the given georeference are the same point, the dwc:pointRadiusSpatialFit is 1.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/pointRadiusSpatialFit", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimCoordinates", + "title": "Verbatim Coordinates", + "required": false, + "description": "The verbatim original spatial coordinates of the dcterms:Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in dwc:verbatimSRS and the coordinate system should be stored in dwc:verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimCoordinates", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "title": "Verbatim Latitude", + "required": false, + "description": "The verbatim original latitude of the dcterms:Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in dwc:verbatimSRS and the coordinate system should be stored in dwc:verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "title": "Verbatim Longitude", + "required": false, + "description": "The verbatim original longitude of the dcterms:Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in dwc:verbatimSRS and the coordinate system should be stored in dwc:verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimCoordinateSystem", + "title": "Verbatim Coordinate System", + "required": false, + "description": "The coordinate format for the dwc:verbatimLatitude and dwc:verbatimLongitude or the dwc:verbatimCoordinates of the dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimCoordinateSystem", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimSRS", + "title": "Verbatim SRS", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which coordinates given in dwc:verbatimLatitude and dwc:verbatimLongitude, or dwc:verbatimCoordinates are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimSRS", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintWKT", + "title": "Footprint WKT", + "required": false, + "description": "A Well-Known Text (WKT) representation of the shape (footprint, geometry) that defines the dcterms:Location. A dcterms:Location may have both a point-radius representation (see dwc:decimalLatitude) and a footprint representation, and they may differ from each other.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintWKT", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintSRS", + "title": "Footprint SRS", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which the geometry given in dwc:footprintWKT is based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintSRS", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintSpatialFit", + "title": "Footprint Spatial Fit", + "required": false, + "description": "The ratio of the area of the dwc:footprintWKT to the area of the true (original, or most specific) spatial representation of the dcterms:Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given dwc:footprintWKT does not completely contain the original representation. The dwc:footprintSpatialFit is undefined (and should be left empty) if the original representation is any geometry without area (e.g., a point or polyline) and without uncertainty and the given georeference is not that same geometry (without uncertainty). If both the original and the given georeference are the same point, the dwc:footprintSpatialFit is 1.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintSpatialFit", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferencedBy", + "title": "Georeferenced By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the georeference (spatial representation) for the dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferencedBy", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferencedDate", + "title": "Georeferenced Date", + "required": false, + "description": "The date on which the dcterms:Location was georeferenced.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferencedDate", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceProtocol", + "title": "Georeference Protocol", + "required": false, + "description": "A description or reference to the methods used to determine the spatial footprint, coordinates, and uncertainties.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceProtocol", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceSources", + "title": "Georeference Sources", + "required": false, + "description": "A list (concatenated and separated) of maps, gazetteers, or other resources used to georeference the dcterms:Location, described specifically enough to allow anyone in the future to use the same resources.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceSources", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceRemarks", + "title": "Georeference Remarks", + "required": false, + "description": "Comments or notes about the spatial description determination, explaining assumptions made in addition or opposition to the those formalized in the method referred to in dwc:georeferenceProtocol.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceRemarks", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/geologicalContextID", + "title": "Geological Context ID", + "required": false, + "description": "An identifier for the set of information associated with a dwc:GeologicalContext (the location within a geological context, such as stratigraphy). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/geologicalContextID", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestEonOrLowestEonothem", + "title": "Earliest Eon Or Lowest Eonothem", + "required": false, + "description": "The full name of the earliest possible geochronologic eon or lowest chrono-stratigraphic eonothem or the informal name ("Precambrian") attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestEonOrLowestEonothem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestEonOrHighestEonothem", + "title": "Latest Eon Or Highest Eonothem", + "required": false, + "description": "The full name of the latest possible geochronologic eon or highest chrono-stratigraphic eonothem or the informal name ("Precambrian") attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestEonOrHighestEonothem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestEraOrLowestErathem", + "title": "Earliest Era Or Lowest Erathem", + "required": false, + "description": "The full name of the earliest possible geochronologic era or lowest chronostratigraphic erathem attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestEraOrLowestErathem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestEraOrHighestErathem", + "title": "Latest Era Or Highest Erathem", + "required": false, + "description": "The full name of the latest possible geochronologic era or highest chronostratigraphic erathem attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestEraOrHighestErathem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestPeriodOrLowestSystem", + "title": "Earliest Period Or Lowest System", + "required": false, + "description": "The full name of the earliest possible geochronologic period or lowest chronostratigraphic system attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestPeriodOrLowestSystem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestPeriodOrHighestSystem", + "title": "Latest Period Or Highest System", + "required": false, + "description": "The full name of the latest possible geochronologic period or highest chronostratigraphic system attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestPeriodOrHighestSystem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestEpochOrLowestSeries", + "title": "Earliest Epoch Or Lowest Series", + "required": false, + "description": "The full name of the earliest possible geochronologic epoch or lowest chronostratigraphic series attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestEpochOrLowestSeries", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestEpochOrHighestSeries", + "title": "Latest Epoch Or Highest Series", + "required": false, + "description": "The full name of the latest possible geochronologic epoch or highest chronostratigraphic series attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestEpochOrHighestSeries", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestAgeOrLowestStage", + "title": "Earliest Age Or Lowest Stage", + "required": false, + "description": "The full name of the earliest possible geochronologic age or lowest chronostratigraphic stage attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestAgeOrLowestStage", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestAgeOrHighestStage", + "title": "Latest Age Or Highest Stage", + "required": false, + "description": "The full name of the latest possible geochronologic age or highest chronostratigraphic stage attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestAgeOrHighestStage", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lowestBiostratigraphicZone", + "title": "Lowest Biostratigraphic Zone", + "required": false, + "description": "The full name of the lowest possible geological biostratigraphic zone of the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lowestBiostratigraphicZone", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/highestBiostratigraphicZone", + "title": "Highest Biostratigraphic Zone", + "required": false, + "description": "The full name of the highest possible geological biostratigraphic zone of the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/highestBiostratigraphicZone", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lithostratigraphicTerms", + "title": "Lithostratigraphic Terms", + "required": false, + "description": "The combination of all lithostratigraphic names for the rock from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lithostratigraphicTerms", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/group", + "title": "Group", + "required": false, + "description": "The full name of the lithostratigraphic group from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/group", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/formation", + "title": "Formation", + "required": false, + "description": "The full name of the lithostratigraphic formation from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/formation", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/member", + "title": "Member", + "required": false, + "description": "The full name of the lithostratigraphic member from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/member", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/bed", + "title": "Bed", + "required": false, + "description": "The full name of the lithostratigraphic bed from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/bed", + "group": "GeologicalContext" + } + ] + }, + { + "name": "Occurrence", + "title": "Darwin Core Occurrence", + "identifier": "http://rs.tdwg.org/dwc/terms/Occurrence", + "url": "http://rs.gbif.org/core/dwc_occurrence_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/dwc/terms/Occurrence", + "namespace": "http://rs.tdwg.org/dwc/terms/", + "issued": "2026-02-12", + "description": "Support for Darwin Core Occurrence-based records.", + "subject": "dwc:Event dwc:Taxon", + "fields": [ + { + "name": "http://purl.org/dc/elements/1.1/type", + "title": "Type", + "required": false, + "description": "The nature or genre of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/type", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/modified", + "title": "Date Modified", + "required": false, + "description": "Date on which the resource was changed.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/modified", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/elements/1.1/language", + "title": "Language", + "required": false, + "description": "A language of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/language", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/license", + "title": "License", + "required": false, + "description": "A legal document giving official permission to do something with the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/license", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/rightsHolder", + "title": "Rights Holder", + "required": false, + "description": "A person or organization owning or managing rights over the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rightsHolder", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/accessRights", + "title": "Access Rights", + "required": false, + "description": "Information about who can access the resource or an indication of its security status.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/accessRights", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/bibliographicCitation", + "title": "Bibliographic Citation", + "required": false, + "description": "A bibliographic reference for the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/bibliographicCitation", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/references", + "title": "References", + "required": false, + "description": "A related resource that is referenced, cited, or otherwise pointed to by the described resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/references", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/feedbackURL", + "title": "Feedback URL", + "required": false, + "description": "A uniform resource locator (URL) that points to a webpage on which a form may be submitted to gather feedback about the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/feedbackURL", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionID", + "title": "Institution ID", + "required": false, + "description": "An identifier for the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/collectionID", + "title": "Collection ID", + "required": false, + "description": "An identifier for the collection or dataset from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/collectionID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "Dataset ID", + "required": false, + "description": "An identifier for the set of data. May be a global unique identifier or an identifier specific to a collection or institution.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionCode", + "title": "Institution Code", + "required": false, + "description": "The name (or acronym) in use by the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionCode", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/collectionCode", + "title": "Collection Code", + "required": false, + "description": "The name, acronym, coden, or initialism identifying the collection or data set from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/collectionCode", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetName", + "title": "Dataset Name", + "required": false, + "description": "The name identifying the data set from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetName", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/ownerInstitutionCode", + "title": "Owner Institution Code", + "required": false, + "description": "The name (or acronym) in use by the institution having ownership of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/ownerInstitutionCode", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/basisOfRecord", + "title": "Basis Of Record", + "required": true, + "description": "The specific nature of the data record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/basisOfRecord", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/informationWithheld", + "title": "Information Withheld", + "required": false, + "description": "Additional information that exists, but that has not been shared in the given record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/informationWithheld", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dataGeneralizations", + "title": "Data Generalizations", + "required": false, + "description": "Actions taken to make the shared data less specific or complete than in its original form. Suggests that alternative data of higher quality may be available on request.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dataGeneralizations", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dynamicProperties", + "title": "Dynamic Properties", + "required": false, + "description": "A list of additional measurements, facts, characteristics, or assertions about the record. Meant to provide a mechanism for structured content.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dynamicProperties", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "title": "Occurrence ID", + "required": false, + "description": "An identifier for the dwc:Occurrence (as opposed to a particular digital record of the dwc:Occurrence). In the absence of a persistent global unique identifier, construct one from a combination of identifiers in the record that will most closely make the dwc:occurrenceID globally unique.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/catalogNumber", + "title": "Catalog Number", + "required": false, + "description": "An identifier (preferably unique) for the record within the data set or collection.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/catalogNumber", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/recordNumber", + "title": "Record Number", + "required": false, + "description": "An identifier given to the dwc:Occurrence at the time it was recorded. Often serves as a link between field notes and a dwc:Occurrence record, such as a specimen collector's number.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/recordNumber", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/recordedBy", + "title": "Recorded By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations responsible for recording the original dwc:Occurrence. The primary collector or observer, especially one who applies a personal identifier (dwc:recordNumber), should be listed first.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/recordedBy", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/recordedByID", + "title": "Recorded By ID", + "required": false, + "description": "A list (concatenated and separated) of the globally unique identifier for the person, people, groups, or organizations responsible for recording the original dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/recordedByID", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/individualCount", + "title": "Individual Count", + "required": false, + "description": "The number of individuals present at the time of the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/individualCount", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/organismQuantity", + "title": "Organism Quantity", + "required": false, + "description": "A number or enumeration value for the quantity of dwc:Organisms.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/organismQuantity", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/organismQuantityType", + "title": "Organism Quantity Type", + "required": false, + "description": "The type of quantification system used for the quantity of dwc:Organisms.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/organismQuantityType", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sex", + "title": "Sex", + "required": false, + "description": "The sex of the biological individual(s) represented in the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sex", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lifeStage", + "title": "Life Stage", + "required": false, + "description": "The age class or life stage of the dwc:Organism(s) at the time the dwc:Occurrence was recorded.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lifeStage", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/reproductiveCondition", + "title": "Reproductive Condition", + "required": false, + "description": "The reproductive condition of the biological individual(s) represented in the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/reproductiveCondition", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/caste", + "title": "Caste", + "required": false, + "description": "Categorisation of individuals for eusocial species (including some mammals and arthropods).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/caste", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/behavior", + "title": "Behavior", + "required": false, + "description": "The behavior shown by the subject at the time the dwc:Occurrence was recorded.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/behavior", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/vitality", + "title": "Vitality", + "required": false, + "description": "An indication of whether a dwc:Organism was alive or dead at the time of collection or observation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/vitality", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/establishmentMeans", + "title": "Establishment Means", + "required": false, + "description": "Statement about whether a dwc:Organism has been introduced to a given place and time through the direct or indirect activity of modern humans.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/establishmentMeans", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/degreeOfEstablishment", + "title": "Degree of Establishment", + "required": false, + "description": "The degree to which a dwc:Organism survives, reproduces, and expands its range at the given place and time.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/degreeOfEstablishment", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/pathway", + "title": "Pathway", + "required": false, + "description": "The process by which a dwc:Organism came to be in a given place at a given time.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/pathway", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceVerificationStatus", + "title": "Georeference Verification Status", + "required": false, + "description": "A categorical description of the extent to which the georeference has been verified to represent the best possible spatial description for the dcterms:Location of the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceVerificationStatus", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceStatus", + "title": "Occurrence Status", + "required": false, + "description": "A statement about the presence or absence of a dwc:Taxon at a dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceStatus", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedMedia", + "title": "Associated Media", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, global unique identifier, URI) of media associated with the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedMedia", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedOccurrences", + "title": "Associated Occurrences", + "required": false, + "description": "A list (concatenated and separated) of identifiers of other dwc:Occurrence records and their associations to this dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedOccurrences", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedReferences", + "title": "Associated References", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, bibliographic reference, global unique identifier, URI) of literature associated with the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedReferences", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedTaxa", + "title": "Associated Taxa", + "required": false, + "description": "A list (concatenated and separated) of identifiers or names of dwc:Taxon records and the associations of this dwc:Occurrence to each of them.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedTaxa", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/otherCatalogNumbers", + "title": "Other Catalog Numbers", + "required": false, + "description": "A list (concatenated and separated) of previous or alternate fully qualified catalog numbers or other human-used identifiers for the same dwc:Occurrence, whether in the current or any other data set or collection.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/otherCatalogNumbers", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceRemarks", + "title": "Occurrence Remarks", + "required": false, + "description": "Comments or notes about the dwc:Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceRemarks", + "group": "Occurrence" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/organismID", + "title": "Organism ID", + "required": false, + "description": "An identifier for the dwc:Organism instance (as opposed to a particular digital record of the dwc:Organism). May be a globally unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/organismID", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/organismName", + "title": "Organism Name", + "required": false, + "description": "A textual name or label assigned to a dwc:Organism instance.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/organismName", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/organismScope", + "title": "Organism Scope", + "required": false, + "description": "A description of the kind of dwc:Organism instance. Can be used to indicate whether the dwc:Organism instance represents a discrete organism or if it represents a particular type of aggregation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/organismScope", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedOrganisms", + "title": "Associated Organisms", + "required": false, + "description": "A list (concatenated and separated) of identifiers of other dwc:Organisms and the associations of this dwc:Organism to each of them.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedOrganisms", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/previousIdentifications", + "title": "Previous Identifications", + "required": false, + "description": "A list (concatenated and separated) of previous assignments of names to the dwc:Organism.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/previousIdentifications", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/organismRemarks", + "title": "Organism Remarks", + "required": false, + "description": "Comments or notes about the dwc:Organism instance.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/organismRemarks", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/causeOfDeath", + "title": "Cause Of Death", + "required": false, + "description": "An indication of the known or suspected cause of death of a dwc:Organism.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/causeOfDeath", + "group": "Organism" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/materialEntityID", + "title": "Material Entity ID", + "required": false, + "description": "An identifier for a particular instance of a dwc:MaterialEntity.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/materialEntityID", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/digitalSpecimenID", + "title": "Digital Specimen Identifier", + "required": false, + "description": "An identifier for a particular instance of a Digital Specimen.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/digitalSpecimenID", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/materialEntityType", + "title": "Material Entity Type", + "required": false, + "description": "A category that best matches the nature of a dwc:MaterialEntity.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/materialEntityType", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/discipline", + "title": "Discipline", + "required": false, + "description": "The primary branch or branches of knowledge represented by the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/discipline", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/preparations", + "title": "Preparations", + "required": false, + "description": "A list (concatenated and separated) of preparations and preservation methods for a dwc:MaterialEntity.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/preparations", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/disposition", + "title": "Disposition", + "required": false, + "description": "The current state of a dwc:MaterialEntity with respect to a collection.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/disposition", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLabel", + "title": "Verbatim Label", + "required": false, + "description": "The content of this term should include no embellishments, prefixes, headers or other additions made to the text. Abbreviations must not be expanded and supposed misspellings must not be corrected. Lines or breakpoints between blocks of text that could be verified by seeing the original labels or images of them may be used. Examples of material entities include preserved specimens, fossil specimens, and material samples. Best practice is to use UTF-8 for all characters. Best practice is to add comment “verbatimLabel derived from human transcription” in dwc:occurrenceRemarks.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLabel", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedSequences", + "title": "Associated Sequences", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, global unique identifier, URI) of genetic sequence information associated with the dwc:MaterialEntity.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedSequences", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/materialEntityRemarks", + "title": "Material Entity Remarks", + "required": false, + "description": "Comments or notes about the dwc:MaterialEntity instance.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/materialEntityRemarks", + "group": "MaterialEntity" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/materialSampleID", + "title": "Material Sample ID", + "required": false, + "description": "An identifier for the dwc:MaterialSample (as opposed to a particular digital record of the dwc:MaterialSample). In the absence of a persistent global unique identifier, construct one from a combination of identifiers in the record that will most closely make the dwc:materialSampleID globally unique.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/materialSampleID", + "group": "MaterialSample" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventID", + "title": "Event ID", + "required": false, + "description": "An identifier for the set of information associated with a dwc:Event (something that occurs at a place and time). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventID", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentEventID", + "title": "Parent Event ID", + "required": false, + "description": "An identifier for the broader dwc:Event that groups this and potentially other dwc:Events.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentEventID", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventType", + "title": "Event Type", + "required": false, + "description": "The nature of the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventType", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/projectTitle", + "title": "Project Title", + "required": false, + "description": "A list (concatenated and separated) of titles or names for projects that contributed to a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/projectTitle", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/projectID", + "title": "Project ID", + "required": false, + "description": "A list (concatenated and separated) of identifiers for projects that contributed to a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/projectID", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/ac/terms/fundingAttribution", + "title": "Funding Attribution", + "required": false, + "description": "Text description of organizations or individuals who funded the creation of the resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/fundingAttribution", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/fundingAttributionID", + "title": "Funding Attribution ID", + "required": false, + "description": "A list (concatenated and separated) of the globally unique identifiers for the funding organizations or agencies that supported the project.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/fundingAttributionID", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/fieldNumber", + "title": "Field Number", + "required": false, + "description": "An identifier given to the dwc:Event in the field. Often serves as a link between field notes and the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/fieldNumber", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventDate", + "title": "Event Date", + "required": false, + "description": "The date-time or interval during which a dwc:Event occurred. For occurrences, this is the date-time when the dwc:Event was recorded. Not suitable for a time in a geological context.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventDate", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventTime", + "title": "Event Time", + "required": false, + "description": "The time or interval during which a dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventTime", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/startDayOfYear", + "title": "Start Day Of Year", + "required": false, + "description": "The earliest integer day of the year on which the dwc:Event occurred (1 for January 1, 365 for December 31, except in a leap year, in which case it is 366).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/startDayOfYear", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/endDayOfYear", + "title": "End Day Of Year", + "required": false, + "description": "The latest integer day of the year on which the dwc:Event occurred (1 for January 1, 365 for December 31, except in a leap year, in which case it is 366).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/endDayOfYear", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/year", + "title": "Year", + "required": false, + "description": "The four-digit year in which the dwc:Event occurred, according to the Common Era Calendar.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/year", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/month", + "title": "Month", + "required": false, + "description": "The integer month in which the dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/month", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/day", + "title": "Day", + "required": false, + "description": "The integer day of the month on which the dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/day", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimEventDate", + "title": "Verbatim EventDate", + "required": false, + "description": "The verbatim original representation of the date and time information for a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimEventDate", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/habitat", + "title": "Habitat", + "required": false, + "description": "A category or description of the habitat in which the dwc:Event occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/habitat", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/samplingProtocol", + "title": "Sampling Protocol", + "required": false, + "description": "The names of, references to, or descriptions of the methods or protocols used during a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/samplingProtocol", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sampleSizeValue", + "title": "Sample Size Value", + "required": false, + "description": "A numeric value for a measurement of the size (time duration, length, area, or volume) of a sample in a sampling dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sampleSizeValue", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sampleSizeUnit", + "title": "Sample Size Unit", + "required": false, + "description": "The unit of measurement of the size (time duration, length, area, or volume) of a sample in a sampling dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sampleSizeUnit", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/samplingEffort", + "title": "Sampling Effort", + "required": false, + "description": "The amount of effort expended during a dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/samplingEffort", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/fieldNotes", + "title": "Field Notes", + "required": false, + "description": "One of a) an indicator of the existence of, b) a reference to (publication, URI), or c) the text of notes taken in the field about the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/fieldNotes", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventRemarks", + "title": "Event Remarks", + "required": false, + "description": "Comments or notes about the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventRemarks", + "group": "Event" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "Location ID", + "required": false, + "description": "An identifier for the set of dcterms:Location information. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherGeographyID", + "title": "Higher Geography ID", + "required": false, + "description": "An identifier for the geographic region within which the dcterms:Location occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherGeographyID", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherGeography", + "title": "Higher Geography", + "required": false, + "description": "A list (concatenated and separated) of geographic names less specific than the information captured in the dwc:locality term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherGeography", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/continent", + "title": "Continent", + "required": false, + "description": "The name of the continent in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/continent", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/waterBody", + "title": "Water Body", + "required": false, + "description": "The name of the water body in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/waterBody", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/islandGroup", + "title": "Island Group", + "required": false, + "description": "The name of the island group in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/islandGroup", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/island", + "title": "Island", + "required": false, + "description": "The name of the island on or near which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/island", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/country", + "title": "Country", + "required": false, + "description": "The name of the country or major administrative unit in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/country", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/countryCode", + "title": "Country Code", + "required": false, + "description": "The standard code for the country in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/countryCode", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/stateProvince", + "title": "First Order Division", + "required": false, + "description": "The name of the next smaller administrative region than country (state, province, canton, department, region, etc.) in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/stateProvince", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/county", + "title": "Second Order Division", + "required": false, + "description": "The full, unabbreviated name of the next smaller administrative region than stateProvince (county, shire, department, etc.) in which the dcterms:Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/county", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/municipality", + "title": "Third Order Division", + "required": false, + "description": "The full, unabbreviated name of the next smaller administrative region than county (city, municipality, etc.) in which the dcterms:Location occurs. Do not use this term for a nearby named place that does not contain the actual dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/municipality", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locality", + "title": "Locality", + "required": false, + "description": "The specific description of the place.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locality", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLocality", + "title": "Verbatim Locality", + "required": false, + "description": "The original textual description of the place.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLocality", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumElevationInMeters", + "title": "Minimum Elevation In Meters", + "required": false, + "description": "The lower limit of the range of elevation (altitude, usually above sea level), in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumElevationInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumElevationInMeters", + "title": "Maximum Elevation In Meters", + "required": false, + "description": "The upper limit of the range of elevation (altitude, usually above sea level), in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumElevationInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimElevation", + "title": "Verbatim Elevation", + "required": false, + "description": "The original description of the elevation (altitude, usually above sea level) of the Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimElevation", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verticalDatum", + "title": "Vertical Datum", + "required": false, + "description": "The vertical datum used as the reference upon which the values in the elevation terms are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verticalDatum", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumDepthInMeters", + "title": "Minimum Depth In Meters", + "required": false, + "description": "The lesser depth of a range of depth below the local surface, in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumDepthInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumDepthInMeters", + "title": "Maximum Depth In Meters", + "required": false, + "description": "The greater depth of a range of depth below the local surface, in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumDepthInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimDepth", + "title": "Verbatim Depth", + "required": false, + "description": "The original description of the depth below the local surface.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimDepth", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumDistanceAboveSurfaceInMeters", + "title": "Minimum Distance Above Surface In Meters", + "required": false, + "description": "The lesser distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumDistanceAboveSurfaceInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumDistanceAboveSurfaceInMeters", + "title": "Maximum Distance Above Surface In Meters", + "required": false, + "description": "The greater distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumDistanceAboveSurfaceInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationAccordingTo", + "title": "Location According To", + "required": false, + "description": "Information about the source of this dcterms:Location information. Could be a publication (gazetteer), institution, or team of individuals.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationAccordingTo", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationRemarks", + "title": "Location Remarks", + "required": false, + "description": "Comments or notes about the dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationRemarks", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/decimalLatitude", + "title": "Decimal Latitude", + "required": false, + "description": "The geographic latitude (in decimal degrees, using the spatial reference system given in dwc:geodeticDatum) of the geographic center of a dcterms:Location. Positive values are north of the Equator, negative values are south of it. Legal values lie between -90 and 90, inclusive.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/decimalLatitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/decimalLongitude", + "title": "Decimal Longitude", + "required": false, + "description": "The geographic longitude (in decimal degrees, using the spatial reference system given in dwc:geodeticDatum) of the geographic center of a dcterms:Location. Positive values are east of the Greenwich Meridian, negative values are west of it. Legal values lie between -180 and 180, inclusive.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/decimalLongitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/geodeticDatum", + "title": "Geodetic Datum", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which the geographic coordinates given in dwc:decimalLatitude and dwc:decimalLongitude are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/geodeticDatum", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters", + "title": "Coordinate Uncertainty In Meters", + "required": false, + "description": "The horizontal distance (in meters) from the given dwc:decimalLatitude and dwc:decimalLongitude describing the smallest circle containing the whole of the dcterms:Location. Leave the value empty if the uncertainty is unknown, cannot be estimated, or is not applicable (because there are no coordinates). Zero is not a valid value for this term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/coordinatePrecision", + "title": "Coordinate Precision", + "required": false, + "description": "A decimal representation of the precision of the coordinates given in the dwc:decimalLatitude and dwc:decimalLongitude.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/coordinatePrecision", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/pointRadiusSpatialFit", + "title": "Point Radius Spatial Fit", + "required": false, + "description": "The ratio of the area of the point-radius (dwc:decimalLatitude, dwc:decimalLongitude, dwc:coordinateUncertaintyInMeters) to the area of the true (original, or most specific) spatial representation of the dcterms:Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given point-radius does not completely contain the original representation. The dwc:pointRadiusSpatialFit is undefined (and should be left empty) if the original representation is any geometry without area (e.g., a point or polyline) and without uncertainty and the given georeference is not that same geometry (without uncertainty). If both the original and the given georeference are the same point, the dwc:pointRadiusSpatialFit is 1.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/pointRadiusSpatialFit", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimCoordinates", + "title": "Verbatim Coordinates", + "required": false, + "description": "The verbatim original spatial coordinates of the dcterms:Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in dwc:verbatimSRS and the coordinate system should be stored in dwc:verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimCoordinates", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "title": "Verbatim Latitude", + "required": false, + "description": "The verbatim original latitude of the dcterms:Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in dwc:verbatimSRS and the coordinate system should be stored in dwc:verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "title": "Verbatim Longitude", + "required": false, + "description": "The verbatim original longitude of the dcterms:Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in dwc:verbatimSRS and the coordinate system should be stored in dwc:verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimCoordinateSystem", + "title": "Verbatim Coordinate System", + "required": false, + "description": "The coordinate format for the dwc:verbatimLatitude and dwc:verbatimLongitude or the dwc:verbatimCoordinates of the dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimCoordinateSystem", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimSRS", + "title": "Verbatim SRS", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which coordinates given in dwc:verbatimLatitude and dwc:verbatimLongitude, or dwc:verbatimCoordinates are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimSRS", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintWKT", + "title": "Footprint WKT", + "required": false, + "description": "A Well-Known Text (WKT) representation of the shape (footprint, geometry) that defines the dcterms:Location. A dcterms:Location may have both a point-radius representation (see dwc:decimalLatitude) and a footprint representation, and they may differ from each other.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintWKT", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintSRS", + "title": "Footprint SRS", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which the geometry given in dwc:footprintWKT is based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintSRS", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintSpatialFit", + "title": "Footprint Spatial Fit", + "required": false, + "description": "The ratio of the area of the dwc:footprintWKT to the area of the true (original, or most specific) spatial representation of the dcterms:Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given dwc:footprintWKT does not completely contain the original representation. The dwc:footprintSpatialFit is undefined (and should be left empty) if the original representation is any geometry without area (e.g., a point or polyline) and without uncertainty and the given georeference is not that same geometry (without uncertainty). If both the original and the given georeference are the same point, the dwc:footprintSpatialFit is 1.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintSpatialFit", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferencedBy", + "title": "Georeferenced By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the georeference (spatial representation) for the dcterms:Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferencedBy", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferencedDate", + "title": "Georeferenced Date", + "required": false, + "description": "The date on which the dcterms:Location was georeferenced.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferencedDate", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceProtocol", + "title": "Georeference Protocol", + "required": false, + "description": "A description or reference to the methods used to determine the spatial footprint, coordinates, and uncertainties.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceProtocol", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceSources", + "title": "Georeference Sources", + "required": false, + "description": "A list (concatenated and separated) of maps, gazetteers, or other resources used to georeference the dcterms:Location, described specifically enough to allow anyone in the future to use the same resources.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceSources", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceRemarks", + "title": "Georeference Remarks", + "required": false, + "description": "Comments or notes about the spatial description determination, explaining assumptions made in addition or opposition to the those formalized in the method referred to in dwc:georeferenceProtocol.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceRemarks", + "group": "Location" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/geologicalContextID", + "title": "Geological Context ID", + "required": false, + "description": "An identifier for the set of information associated with a dwc:GeologicalContext (the location within a geological context, such as stratigraphy). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/geologicalContextID", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestEonOrLowestEonothem", + "title": "Earliest Eon Or Lowest Eonothem", + "required": false, + "description": "The full name of the earliest possible geochronologic eon or lowest chrono-stratigraphic eonothem or the informal name ("Precambrian") attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestEonOrLowestEonothem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestEonOrHighestEonothem", + "title": "Latest Eon Or Highest Eonothem", + "required": false, + "description": "The full name of the latest possible geochronologic eon or highest chrono-stratigraphic eonothem or the informal name ("Precambrian") attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestEonOrHighestEonothem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestEraOrLowestErathem", + "title": "Earliest Era Or Lowest Erathem", + "required": false, + "description": "The full name of the earliest possible geochronologic era or lowest chronostratigraphic erathem attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestEraOrLowestErathem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestEraOrHighestErathem", + "title": "Latest Era Or Highest Erathem", + "required": false, + "description": "The full name of the latest possible geochronologic era or highest chronostratigraphic erathem attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestEraOrHighestErathem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestPeriodOrLowestSystem", + "title": "Earliest Period Or Lowest System", + "required": false, + "description": "The full name of the earliest possible geochronologic period or lowest chronostratigraphic system attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestPeriodOrLowestSystem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestPeriodOrHighestSystem", + "title": "Latest Period Or Highest System", + "required": false, + "description": "The full name of the latest possible geochronologic period or highest chronostratigraphic system attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestPeriodOrHighestSystem", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestEpochOrLowestSeries", + "title": "Earliest Epoch Or Lowest Series", + "required": false, + "description": "The full name of the earliest possible geochronologic epoch or lowest chronostratigraphic series attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestEpochOrLowestSeries", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestEpochOrHighestSeries", + "title": "Latest Epoch Or Highest Series", + "required": false, + "description": "The full name of the latest possible geochronologic epoch or highest chronostratigraphic series attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestEpochOrHighestSeries", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/earliestAgeOrLowestStage", + "title": "Earliest Age Or Lowest Stage", + "required": false, + "description": "The full name of the earliest possible geochronologic age or lowest chronostratigraphic stage attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/earliestAgeOrLowestStage", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/latestAgeOrHighestStage", + "title": "Latest Age Or Highest Stage", + "required": false, + "description": "The full name of the latest possible geochronologic age or highest chronostratigraphic stage attributable to the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/latestAgeOrHighestStage", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lowestBiostratigraphicZone", + "title": "Lowest Biostratigraphic Zone", + "required": false, + "description": "The full name of the lowest possible geological biostratigraphic zone of the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lowestBiostratigraphicZone", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/highestBiostratigraphicZone", + "title": "Highest Biostratigraphic Zone", + "required": false, + "description": "The full name of the highest possible geological biostratigraphic zone of the stratigraphic horizon from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/highestBiostratigraphicZone", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lithostratigraphicTerms", + "title": "Lithostratigraphic Terms", + "required": false, + "description": "The combination of all lithostratigraphic names for the rock from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lithostratigraphicTerms", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/group", + "title": "Group", + "required": false, + "description": "The full name of the lithostratigraphic group from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/group", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/formation", + "title": "Formation", + "required": false, + "description": "The full name of the lithostratigraphic formation from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/formation", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/member", + "title": "Member", + "required": false, + "description": "The full name of the lithostratigraphic member from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/member", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/bed", + "title": "Bed", + "required": false, + "description": "The full name of the lithostratigraphic bed from which the dwc:MaterialEntity was collected.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/bed", + "group": "GeologicalContext" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationID", + "title": "Identification ID", + "required": false, + "description": "An identifier for the dwc:Identification (the body of information associated with the assignment of a scientific name). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationID", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimIdentification", + "title": "Verbatim Identification", + "required": false, + "description": "A string representing the taxonomic identification as it appeared in the original record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimIdentification", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationQualifier", + "title": "Identification Qualifier", + "required": false, + "description": "A brief phrase or a standard term ("cf.", "aff.") to express the determiner's doubts about the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationQualifier", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/typeStatus", + "title": "Type Status", + "required": false, + "description": "A list (concatenated and separated) of nomenclatural types (type status, typified scientific name, publication) applied to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/typeStatus", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/typifiedName", + "title": "Typified Name", + "required": false, + "description": "A scientific name that is based on a type specimen.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/typifiedName", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "title": "Identified By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who assigned the dwc:Taxon to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identifiedByID", + "title": "Identified By ID", + "required": false, + "description": "A list (concatenated and separated) of the globally unique identifier for the person, people, groups, or organizations responsible for assigning the dwc:Taxon to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identifiedByID", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dateIdentified", + "title": "Date Identified", + "required": false, + "description": "The date on which the subject was determined as representing the dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dateIdentified", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationReferences", + "title": "Identification References", + "required": false, + "description": "A list (concatenated and separated) of references (publication, global unique identifier, URI) used in the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationReferences", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationVerificationStatus", + "title": "Identification Verification Status", + "required": false, + "description": "A categorical indicator of the extent to which the taxonomic identification has been verified to be correct.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationVerificationStatus", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationRemarks", + "title": "Identification Remarks", + "required": false, + "description": "Comments or notes about the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationRemarks", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonID", + "title": "Taxon ID", + "required": false, + "description": "An identifier for the set of dwc:Taxon information. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "title": "Scientific Name ID", + "required": false, + "description": "An identifier for the nomenclatural (not taxonomic) details of a scientific name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/acceptedNameUsageID", + "title": "Accepted Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) of the currently valid (zoological) or accepted (botanical) taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/acceptedNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentNameUsageID", + "title": "Parent Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) of the direct, most proximate higher-rank parent taxon (in a classification) of the most specific element of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/originalNameUsageID", + "title": "Original Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) in which the terminal element of the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/originalNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingToID", + "title": "Name According To ID", + "required": false, + "description": "An identifier for the source in which the specific taxon concept circumscription is defined or implied. See dwc:nameAccordingTo.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingToID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedInID", + "title": "Name Published In ID", + "required": false, + "description": "An identifier for the publication in which the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedInID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonConceptID", + "title": "Taxon Concept ID", + "required": false, + "description": "An identifier for the taxonomic concept to which the record refers - not for the nomenclatural details of a dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonConceptID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificName", + "title": "Scientific Name", + "required": false, + "description": "The full scientific name, with authorship and date information if known. When forming part of a dwc:Identification, this should be the name in lowest level taxonomic rank that can be determined. This term should not contain identification qualifications, which should instead be supplied in the dwc:identificationQualifier term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/acceptedNameUsage", + "title": "Accepted Name Usage", + "required": false, + "description": "The full name, with authorship and date information if known, of the currently valid (zoological) or accepted (botanical) dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/acceptedNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentNameUsage", + "title": "Parent Name Usage", + "required": false, + "description": "The full name, with authorship and date information if known, of the direct, most proximate higher-rank parent dwc:Taxon (in a classification) of the most specific element of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/originalNameUsage", + "title": "Original Name Usage", + "required": false, + "description": "The taxon name, with authorship and date information if known, as it originally appeared when first established under the rules of the associated dwc:nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the dwc:scientificName or the senior/earlier homonym for replaced names.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/originalNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "title": "Name According To", + "required": false, + "description": "The reference to the source in which the specific taxon concept circumscription is defined or implied - traditionally signified by the Latin "sensu" or "sec." (from secundum, meaning "according to"). For taxa that result from identifications, a reference to the keys, monographs, experts and other sources should be given.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedIn", + "title": "Name Published In", + "required": false, + "description": "A reference for the publication in which the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedIn", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedInYear", + "title": "Name Published In Year", + "required": false, + "description": "The four-digit year in which the dwc:scientificName was published.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedInYear", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherClassification", + "title": "Higher Classification", + "required": false, + "description": "A list (concatenated and separated) of taxa names terminating at the rank immediately superior to the referenced dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherClassification", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/kingdom", + "title": "Kingdom", + "required": false, + "description": "The full scientific name of the kingdom in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/kingdom", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/phylum", + "title": "Phylum", + "required": false, + "description": "The full scientific name of the phylum or division in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/phylum", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/class", + "title": "Class", + "required": false, + "description": "The full scientific name of the class in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/class", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/order", + "title": "Order", + "required": false, + "description": "The full scientific name of the order in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/order", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/superfamily", + "title": "Superfamily", + "required": false, + "description": "The full scientific name of the superfamily in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/superfamily", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/family", + "title": "Family", + "required": false, + "description": "The full scientific name of the family in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/family", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subfamily", + "title": "Subfamily", + "required": false, + "description": "The full scientific name of the subfamily in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subfamily", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/tribe", + "title": "Tribe", + "required": false, + "description": "The full scientific name of the tribe in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/tribe", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subtribe", + "title": "Subtribe", + "required": false, + "description": "The full scientific name of the subtribe in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subtribe", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/genus", + "title": "Genus", + "required": false, + "description": "The full scientific name of the genus in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/genus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/genericName", + "title": "Generic Name", + "required": false, + "description": "The genus part of the dwc:scientificName without authorship.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/genericName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subgenus", + "title": "Subgenus", + "required": false, + "description": "The full scientific name of the subgenus in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subgenus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/infragenericEpithet", + "title": "Infrageneric Epithet", + "required": false, + "description": "The infrageneric part of a binomial name at ranks above species but below genus.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/infragenericEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/specificEpithet", + "title": "Specific Epithet", + "required": false, + "description": "The name of the first or species epithet of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/specificEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/infraspecificEpithet", + "title": "Infraspecific Epithet", + "required": false, + "description": "The name of the lowest or terminal infraspecific epithet of the dwc:scientificName, excluding any rank designation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/infraspecificEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/cultivarEpithet", + "title": "Cultivar Epithet", + "required": false, + "description": "Part of the name of a cultivar, cultivar group or grex that follows the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/cultivarEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRank", + "title": "Taxon Rank", + "required": false, + "description": "The taxonomic rank of the most specific name in the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRank", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimTaxonRank", + "title": "Verbatim Taxon Rank", + "required": false, + "description": "The taxonomic rank of the most specific name in the dwc:scientificName as it appears in the original record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimTaxonRank", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameAuthorship", + "title": "Scientific Name Authorship", + "required": false, + "description": "The authorship information for the dwc:scientificName formatted according to the conventions of the applicable dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameAuthorship", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/vernacularName", + "title": "Vernacular Name", + "required": false, + "description": "A common or vernacular name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/vernacularName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nomenclaturalCode", + "title": "Nomenclatural Code", + "required": false, + "description": "The nomenclatural code (or codes in the case of an ambiregnal name) under which the dwc:scientificName is constructed.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nomenclaturalCode", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonomicStatus", + "title": "Taxonomic Status", + "required": false, + "description": "The status of the use of the dwc:scientificName as a label for a taxon. Requires taxonomic opinion to define the scope of a dwc:Taxon. Rules of priority then are used to define the taxonomic status of the nomenclature contained in that scope, combined with the experts opinion. It must be linked to a specific taxonomic reference that defines the concept.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonomicStatus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nomenclaturalStatus", + "title": "Nomenclatural Status", + "required": false, + "description": "The status related to the original publication of the name and its conformance to the relevant rules of nomenclature. It is based essentially on an algorithm according to the business rules of the code. It requires no taxonomic opinion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nomenclaturalStatus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "title": "Taxon Remarks", + "required": false, + "description": "Comments or notes about the taxon or name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "group": "Taxon" + } + ] + }, + { + "name": "Taxon", + "title": "Darwin Core Taxon", + "identifier": "http://rs.tdwg.org/dwc/terms/Taxon", + "url": "http://rs.gbif.org/core/dwc_taxon_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/dwc/terms/Taxon", + "namespace": "http://rs.tdwg.org/dwc/terms/", + "issued": "2026-02-12", + "description": "Support for Darwin Core Taxon-based records.", + "subject": "", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/taxonID", + "title": "Taxon ID", + "required": false, + "description": "An identifier for the set of dwc:Taxon information. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "title": "Scientific Name ID", + "required": false, + "description": "An identifier for the nomenclatural (not taxonomic) details of a scientific name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/acceptedNameUsageID", + "title": "Accepted Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) of the currently valid (zoological) or accepted (botanical) taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/acceptedNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentNameUsageID", + "title": "Parent Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) of the direct, most proximate higher-rank parent taxon (in a classification) of the most specific element of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/originalNameUsageID", + "title": "Original Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) in which the terminal element of the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/originalNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingToID", + "title": "Name According To ID", + "required": false, + "description": "An identifier for the source in which the specific taxon concept circumscription is defined or implied. See dwc:nameAccordingTo.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingToID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedInID", + "title": "Name Published In ID", + "required": false, + "description": "An identifier for the publication in which the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedInID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonConceptID", + "title": "Taxon Concept ID", + "required": false, + "description": "An identifier for the taxonomic concept to which the record refers - not for the nomenclatural details of a dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonConceptID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificName", + "title": "Scientific Name", + "required": false, + "description": "The full scientific name, with authorship and date information if known. When forming part of a dwc:Identification, this should be the name in lowest level taxonomic rank that can be determined. This term should not contain identification qualifications, which should instead be supplied in the dwc:identificationQualifier term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/acceptedNameUsage", + "title": "Accepted Name Usage", + "required": false, + "description": "The full name, with authorship and date information if known, of the currently valid (zoological) or accepted (botanical) dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/acceptedNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentNameUsage", + "title": "Parent Name Usage", + "required": false, + "description": "The full name, with authorship and date information if known, of the direct, most proximate higher-rank parent dwc:Taxon (in a classification) of the most specific element of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/originalNameUsage", + "title": "Original Name Usage", + "required": false, + "description": "The taxon name, with authorship and date information if known, as it originally appeared when first established under the rules of the associated dwc:nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the dwc:scientificName or the senior/earlier homonym for replaced names.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/originalNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "title": "Name According To", + "required": false, + "description": "The reference to the source in which the specific taxon concept circumscription is defined or implied - traditionally signified by the Latin "sensu" or "sec." (from secundum, meaning "according to"). For taxa that result from identifications, a reference to the keys, monographs, experts and other sources should be given.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedIn", + "title": "Name Published In", + "required": false, + "description": "A reference for the publication in which the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedIn", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedInYear", + "title": "Name Published In Year", + "required": false, + "description": "The four-digit year in which the dwc:scientificName was published.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedInYear", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherClassification", + "title": "Higher Classification", + "required": false, + "description": "A list (concatenated and separated) of taxa names terminating at the rank immediately superior to the referenced dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherClassification", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/kingdom", + "title": "Kingdom", + "required": false, + "description": "The full scientific name of the kingdom in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/kingdom", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/phylum", + "title": "Phylum", + "required": false, + "description": "The full scientific name of the phylum or division in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/phylum", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/class", + "title": "Class", + "required": false, + "description": "The full scientific name of the class in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/class", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/order", + "title": "Order", + "required": false, + "description": "The full scientific name of the order in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/order", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/superfamily", + "title": "Superfamily", + "required": false, + "description": "The full scientific name of the superfamily in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/superfamily", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/family", + "title": "Family", + "required": false, + "description": "The full scientific name of the family in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/family", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subfamily", + "title": "Subfamily", + "required": false, + "description": "The full scientific name of the subfamily in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subfamily", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/tribe", + "title": "Tribe", + "required": false, + "description": "The full scientific name of the tribe in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/tribe", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subtribe", + "title": "Subtribe", + "required": false, + "description": "The full scientific name of the subtribe in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subtribe", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/genus", + "title": "Genus", + "required": false, + "description": "The full scientific name of the genus in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/genus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/genericName", + "title": "Generic Name", + "required": false, + "description": "The genus part of the dwc:scientificName without authorship.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/genericName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subgenus", + "title": "Subgenus", + "required": false, + "description": "The full scientific name of the subgenus in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subgenus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/infragenericEpithet", + "title": "Infrageneric Epithet", + "required": false, + "description": "The infrageneric part of a binomial name at ranks above species but below genus.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/infragenericEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/specificEpithet", + "title": "Specific Epithet", + "required": false, + "description": "The name of the first or species epithet of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/specificEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/infraspecificEpithet", + "title": "Infraspecific Epithet", + "required": false, + "description": "The name of the lowest or terminal infraspecific epithet of the dwc:scientificName, excluding any rank designation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/infraspecificEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/cultivarEpithet", + "title": "Cultivar Epithet", + "required": false, + "description": "Part of the name of a cultivar, cultivar group or grex that follows the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/cultivarEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRank", + "title": "Taxon Rank", + "required": false, + "description": "The taxonomic rank of the most specific name in the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRank", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimTaxonRank", + "title": "Verbatim Taxon Rank", + "required": false, + "description": "The taxonomic rank of the most specific name in the dwc:scientificName as it appears in the original record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimTaxonRank", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameAuthorship", + "title": "Scientific Name Authorship", + "required": false, + "description": "The authorship information for the dwc:scientificName formatted according to the conventions of the applicable dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameAuthorship", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/vernacularName", + "title": "Vernacular Name", + "required": false, + "description": "A common or vernacular name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/vernacularName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nomenclaturalCode", + "title": "Nomenclatural Code", + "required": false, + "description": "The nomenclatural code (or codes in the case of an ambiregnal name) under which the dwc:scientificName is constructed.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nomenclaturalCode", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonomicStatus", + "title": "Taxonomic Status", + "required": false, + "description": "The status of the use of the dwc:scientificName as a label for a taxon. Requires taxonomic opinion to define the scope of a dwc:Taxon. Rules of priority then are used to define the taxonomic status of the nomenclature contained in that scope, combined with the experts opinion. It must be linked to a specific taxonomic reference that defines the concept.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonomicStatus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nomenclaturalStatus", + "title": "Nomenclatural Status", + "required": false, + "description": "The status related to the original publication of the name and its conformance to the relevant rules of nomenclature. It is based essentially on an algorithm according to the business rules of the code. It requires no taxonomic opinion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nomenclaturalStatus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "title": "Taxon Remarks", + "required": false, + "description": "Comments or notes about the taxon or name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "group": "Taxon" + }, + { + "name": "http://purl.org/dc/terms/modified", + "title": "Date Modified", + "required": false, + "description": "Date on which the resource was changed.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/modified", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/elements/1.1/language", + "title": "Language", + "required": false, + "description": "A language of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/language", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/license", + "title": "License", + "required": false, + "description": "A legal document giving official permission to do something with the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/license", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/rightsHolder", + "title": "Rights Holder", + "required": false, + "description": "A person or organization owning or managing rights over the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rightsHolder", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/accessRights", + "title": "Access Rights", + "required": false, + "description": "Information about who can access the resource or an indication of its security status.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/accessRights", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/bibliographicCitation", + "title": "Bibliographic Citation", + "required": false, + "description": "A bibliographic reference for the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/bibliographicCitation", + "group": "Record-level" + }, + { + "name": "http://purl.org/dc/terms/references", + "title": "References", + "required": false, + "description": "A related resource that is referenced, cited, or otherwise pointed to by the described resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/references", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionCode", + "title": "Institution Code", + "required": false, + "description": "The name (or acronym) in use by the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionCode", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionID", + "title": "Institution ID", + "required": false, + "description": "An identifier for the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "Dataset ID", + "required": false, + "description": "An identifier for the set of data. May be a global unique identifier or an identifier specific to a collection or institution.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetName", + "title": "Dataset Name", + "required": false, + "description": "The name identifying the data set from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetName", + "group": "Record-level" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/informationWithheld", + "title": "Information Withheld", + "required": false, + "description": "Additional information that exists, but that has not been shared in the given record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/informationWithheld", + "group": "Record-level" + } + ] + } +] diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifExtensions.json b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifExtensions.json new file mode 100644 index 00000000000..239604511eb --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/gbifExtensions.json @@ -0,0 +1,8476 @@ +[ + { + "name": "Multimedia", + "title": "Audiovisual Media Description", + "identifier": "http://rs.tdwg.org/ac/terms/Multimedia", + "url": "http://rs.gbif.org/extension/ac/audiovisual_2026-02-24.xml", + "rowType": "http://rs.tdwg.org/ac/terms/Multimedia", + "namespace": "http://rs.tdwg.org/ac/terms/", + "issued": "2026-08-17", + "description": "The Audiovisual Core is a set of vocabularies designed to represent metadata for biodiversity multimedia resources and collections. These vocabularies aim to represent information that will help to determine whether a particular resource or collection will be fit for some particular biodiversity science application before acquiring the media. Among others, the vocabularies address such concerns as the management of the media and collections, descriptions of their content, their taxonomic, geographic, and temporal coverage, and the appropriate ways to retrieve, attribute and reproduce them.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "Identifier", + "required": true, + "description": "An unambiguous reference to the resource within a given context.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "Management Vocabulary" + }, + { + "name": "http://purl.org/dc/elements/1.1/type", + "title": "Type", + "required": false, + "description": "The nature or genre of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/type", + "group": "Management Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/type", + "title": "Type", + "required": false, + "description": "The nature or genre of the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/type", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subtypeLiteral", + "title": "Subtype (literal)", + "required": false, + "description": "A class, represented by a controlled value string, that provides for more specialization of the media item type than dc:type.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subtypeLiteral", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subtype", + "title": "Subtype (IRI)", + "required": false, + "description": "A class, represented by an IRI, that provides for more specialization of the media item type than dcterms:type.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subtype", + "group": "Management Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "Title", + "required": false, + "description": "A name given to the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "Management Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/modified", + "title": "Modified", + "required": false, + "description": "Date on which the resource was changed.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/modified", + "group": "Management Vocabulary" + }, + { + "name": "http://ns.adobe.com/xap/1.0/MetadataDate", + "title": "Metadata Date", + "required": false, + "description": "The date and time that any metadata for this resource was last changed. It should be the same as or more recent than xmp:ModifyDate.", + "vocabulary": "http://ns.adobe.com/xap/1.0/", + "iri": "http://ns.adobe.com/xap/1.0/MetadataDate", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/metadataLanguageLiteral", + "title": "Metadata Language", + "required": false, + "description": "Language of description and other metadata (but not necessarily of the image itself) represented as an ISO639-2 three letter language code.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/metadataLanguageLiteral", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/metadataLanguage", + "title": "Metadata Language", + "required": false, + "description": "The URI of the language of description and other metadata (but not necessarily of the image itself) , from the ISO639-2 list of URIs for ISO 3-letter language codes, http://id.loc.gov/vocabulary/iso639-2.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/metadataLanguage", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/providerManagedID", + "title": "Provider-managed ID", + "required": false, + "description": "A free-form identifier (a simple number, an alphanumeric code, a URL, etc.) for the resource that is unique and meaningful primarily for the data provider.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/providerManagedID", + "group": "Management Vocabulary" + }, + { + "name": "http://ns.adobe.com/xap/1.0/Rating", + "title": "Rating", + "required": false, + "description": "A user-assigned rating for this file. The value shall be -1 or in the range [0..5], where -1 indicates "rejected" and 0 indicates "unrated". If xmp:Rating is not present, a value of 0 should be assumed.", + "vocabulary": "http://ns.adobe.com/xap/1.0/", + "iri": "http://ns.adobe.com/xap/1.0/Rating", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/commenterLiteral", + "title": "Commenter", + "required": false, + "description": "The name of a person who created a comment, or the literal "anonymous" (= anonymously commented).", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/commenterLiteral", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/commenter", + "title": "Commenter", + "required": false, + "description": "A URI denoting a person who created a comment.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/commenter", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/comments", + "title": "Comments", + "required": false, + "description": "Any comment provided on the media resource, as free-form text.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/comments", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/reviewerLiteral", + "title": "Reviewer", + "required": false, + "description": "String providing the name of a reviewer.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/reviewerLiteral", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/reviewer", + "title": "Reviewer", + "required": false, + "description": "URI for a reviewer.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/reviewer", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/reviewerComments", + "title": "Reviewer Comments", + "required": false, + "description": "Any comment provided by a reviewer with expertise in the subject, as free-form text.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/reviewerComments", + "group": "Management Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/available", + "title": "Date Available", + "required": false, + "description": "Date (often a range) that the resource became or will become available.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/available", + "group": "Management Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/hasServiceAccessPoint", + "title": "Service Access Point", + "required": false, + "description": "In a chosen serialization (RDF, XML Schema, etc.) the potentially multiple service access points (e.g., for different resolutions of an image) might be provided in a referenced or in a nested object. This property identifies one such access point. That is, each of potentially multiple values of hasServiceAccessPoint identifies a set of representation-dependent metadata using the properties defined under the Service Access Point Vocabulary section of the Audiovisual Core Term List document.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/hasServiceAccessPoint", + "group": "Management Vocabulary" + }, + { + "name": "http://purl.org/dc/elements/1.1/rights", + "title": "Copyright Statement", + "required": false, + "description": "Information about rights held in and over the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/rights", + "group": "Attribution Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/rights", + "title": "Copyright Statement", + "required": false, + "description": "Information about rights held in and over the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rights", + "group": "Attribution Vocabulary" + }, + { + "name": "http://ns.adobe.com/xap/1.0/rights/Owner", + "title": "Copyright Owner", + "required": false, + "description": "A list of legal owners of the resource.", + "vocabulary": "http://ns.adobe.com/xap/1.0/rights/", + "iri": "http://ns.adobe.com/xap/1.0/rights/Owner", + "group": "Attribution Vocabulary" + }, + { + "name": "http://ns.adobe.com/xap/1.0/rights/UsageTerms", + "title": "License Terms", + "required": false, + "description": "A collection of text instructions on how a resource can be legally used, given in a variety of languages.", + "vocabulary": "http://ns.adobe.com/xap/1.0/rights/", + "iri": "http://ns.adobe.com/xap/1.0/rights/UsageTerms", + "group": "Attribution Vocabulary" + }, + { + "name": "http://ns.adobe.com/xap/1.0/rights/WebStatement", + "title": "License URL", + "required": false, + "description": "A Web URL for a statement of the ownership and usage rights for this resource.", + "vocabulary": "http://ns.adobe.com/xap/1.0/rights/", + "iri": "http://ns.adobe.com/xap/1.0/rights/WebStatement", + "group": "Attribution Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/licenseLogoURL", + "title": "License Logo URL", + "required": false, + "description": "A URL providing access to a logo that symbolizes the License.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/licenseLogoURL", + "group": "Attribution Vocabulary" + }, + { + "name": "http://ns.adobe.com/photoshop/1.0/Credit", + "title": "Credit", + "required": false, + "description": "The credit to person(s) and/or organisation(s) required by the supplier of the item to be used when published. This is a free-text field.", + "vocabulary": "http://ns.adobe.com/photoshop/1.0/", + "iri": "http://ns.adobe.com/photoshop/1.0/Credit", + "group": "Attribution Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/attributionLogoURL", + "title": "Attribution URL", + "required": false, + "description": "The URL of the icon or logo image to appear in source attribution.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/attributionLogoURL", + "group": "Attribution Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/attributionLinkURL", + "title": "Attribution Link URL", + "required": false, + "description": "The URL where information about ownership, attribution, etc. of the resource may be found.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/attributionLinkURL", + "group": "Attribution Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/fundingAttribution", + "title": "Funding", + "required": false, + "description": "Text description of organizations or individuals who funded the creation of the resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/fundingAttribution", + "group": "Attribution Vocabulary" + }, + { + "name": "http://purl.org/dc/elements/1.1/source", + "title": "Published Source", + "required": false, + "description": "A related resource from which the described resource is derived.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/source", + "group": "Attribution Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "Published Source", + "required": false, + "description": "A related resource from which the described resource is derived.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "Attribution Vocabulary" + }, + { + "name": "http://purl.org/dc/elements/1.1/creator", + "title": "Creator", + "required": false, + "description": "An entity primarily responsible for making the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/creator", + "group": "Agents Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/creator", + "title": "Creator", + "required": false, + "description": "An entity primarily responsible for making the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/creator", + "group": "Agents Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/providerLiteral", + "title": "Provider", + "required": false, + "description": "Name of the person or organization responsible for presenting the media resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/providerLiteral", + "group": "Agents Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/provider", + "title": "Provider", + "required": false, + "description": "URI for person or organization responsible for presenting the media resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/provider", + "group": "Agents Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/metadataCreatorLiteral", + "title": "Metadata Creator", + "required": false, + "description": "Name of the person or organization originally creating the resource metadata record.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/metadataCreatorLiteral", + "group": "Agents Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/metadataCreator", + "title": "Metadata Creator", + "required": false, + "description": "A URI representing a person or organization originally creating the resource metadata record.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/metadataCreator", + "group": "Agents Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/metadataProviderLiteral", + "title": "Metadata Provider", + "required": false, + "description": "Name of the person or organization originally responsible for providing the resource metadata record.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/metadataProviderLiteral", + "group": "Agents Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/metadataProvider", + "title": "Metadata Provider", + "required": false, + "description": "URI of person or organization originally responsible for providing the resource metadata record.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/metadataProvider", + "group": "Agents Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/description", + "title": "Description", + "required": false, + "description": "An account of the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/description", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/caption", + "title": "Caption", + "required": false, + "description": "As alternative or in addition to description, a caption is free-form text to be displayed together with (rather than instead of) a resource that is suitable for captions (especially images).", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/caption", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://purl.org/dc/elements/1.1/language", + "title": "Language", + "required": false, + "description": "A language of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/language", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/language", + "title": "Language", + "required": false, + "description": "A language of the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/language", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/physicalSetting", + "title": "Physical Setting", + "required": false, + "description": "The setting of the content represented in media such as images, sounds, and movies if the provider deems them relevant.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/physicalSetting", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/CVterm", + "title": "Subject Category (IRI)", + "required": false, + "description": "A term to describe the content of the image by a value from a Controlled Vocabulary.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/CVterm", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subjectCategoryVocabulary", + "title": "Subject Category Vocabulary", + "required": false, + "description": "Any controlled vocabulary from which values for ac:CVtermLiteral have been drawn.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subjectCategoryVocabulary", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/tag", + "title": "Tag", + "required": false, + "description": "General keywords or tags.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/tag", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/freqHigh", + "title": "Upper frequency bound", + "required": false, + "description": "The highest frequency of the phenomena reflected in the multimedia item or Region of Interest.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/freqHigh", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/freqLow", + "title": "Lower frequency bound", + "required": false, + "description": "The lowest frequency of the phenomena reflected in the multimedia item or Region of Interest.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/freqLow", + "group": "Content Coverage Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationShown", + "title": "Location Shown", + "required": false, + "description": "A location the content of the item is about. For photos that is a location shown in the image.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationShown", + "group": "Geography Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/WorldRegion", + "title": "World Region", + "required": false, + "description": "The name of a world region of a location. This element is at the first (topI) level of a topdown geographical hierarchy.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/WorldRegion", + "group": "Geography Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/CountryCode", + "title": "Country Code", + "required": false, + "description": "The ISO code of a country of a location. This element is at the second level of a top-down geographical hierarchy.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/CountryCode", + "group": "Geography Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/CountryName", + "title": "Country Name", + "required": false, + "description": "The name of a country of a location. This element is at the second level of a top-down geographical hierarchy.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/CountryName", + "group": "Geography Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/ProvinceState", + "title": "Province or State", + "required": false, + "description": "The name of a subregion of a country - a province or state - of a location. This element is at the third level of a top-down geographical hierarchy.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/ProvinceState", + "group": "Geography Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/City", + "title": "City or Place Name", + "required": false, + "description": "Name of the city of a location. This element is at the fourth level of a top-down geographical hierarchy.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/City", + "group": "Geography Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/Sublocation", + "title": "Sublocation", + "required": false, + "description": "Name of a sublocation. This sublocation name could either be the name of a sublocation to a city or the name of a well known location or (natural) monument outside a city. In the sense of a sublocation to a city this element is at the fifth level of a top-down geographical hierarchy.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/Sublocation", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/continent", + "title": "Continent", + "required": false, + "description": "The name of the continent in which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/continent", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/coordinatePrecision", + "title": "Coordinate Precision", + "required": false, + "description": "A decimal representation of the precision of the coordinates given in the decimalLatitude and decimalLongitude.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/coordinatePrecision", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters", + "title": "Coordinate Uncertainty In Meters", + "required": false, + "description": "The horizontal distance (in meters) from the given decimalLatitude and decimalLongitude describing the smallest circle containing the whole of the Location. Leave the value empty if the uncertainty is unknown, cannot be estimated, or is not applicable (because there are no coordinates). Zero is not a valid value for this term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/coordinateUncertaintyInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/country", + "title": "Country", + "required": false, + "description": "The name of the country or major administrative unit in which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/country", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/countryCode", + "title": "Country Code", + "required": false, + "description": "The standard code for the country in which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/countryCode", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/county", + "title": "County", + "required": false, + "description": "The full, unabbreviated name of the next smaller administrative region than stateProvince (county, shire, department, etc.) in which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/county", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/decimalLatitude", + "title": "Decimal Latitude", + "required": false, + "description": "The geographic latitude (in decimal degrees, using the spatial reference system given in geodeticDatum) of the geographic center of a Location. Positive values are north of the Equator, negative values are south of it. Legal values lie between -90 and 90, inclusive.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/decimalLatitude", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/decimalLongitude", + "title": "Decimal Longitude", + "required": false, + "description": "The geographic longitude (in decimal degrees, using the spatial reference system given in geodeticDatum) of the geographic center of a Location. Positive values are east of the Greenwich Meridian, negative values are west of it. Legal values lie between -180 and 180, inclusive.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/decimalLongitude", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintSpatialFit", + "title": "Footprint Spatial Fit", + "required": false, + "description": "The ratio of the area of the footprint (footprintWKT) to the area of the true (original, or most specific) spatial representation of the Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given footprint does not completely contain the original representation. The footprintSpatialFit is undefined (and should be left empty) if the original representation is a point without uncertainty and the given georeference is not that same point (without uncertainty). If both the original and the given georeference are the same point, the footprintSpatialFit is 1.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintSpatialFit", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintSRS", + "title": "Footprint SRS", + "required": false, + "description": "A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) for the footprintWKT of the Location. Do not use this term to describe the SRS of the decimalLatitude and decimalLongitude, even if it is the same as for the footprintWKT - use the geodeticDatum instead.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintSRS", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/footprintWKT", + "title": "Footprint WKT", + "required": false, + "description": "A Well-Known Text (WKT) representation of the shape (footprint, geometry) that defines the Location. A Location may have both a point-radius representation (see decimalLatitude) and a footprint representation, and they may differ from each other.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/footprintWKT", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/geodeticDatum", + "title": "Geodetic Datum", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which the geographic coordinates given in decimalLatitude and decimalLongitude as based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/geodeticDatum", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferencedBy", + "title": "Georeferenced By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the georeference (spatial representation) for the Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferencedBy", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceProtocol", + "title": "Georeference Protocol", + "required": false, + "description": "A description or reference to the methods used to determine the spatial footprint, coordinates, and uncertainties.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceProtocol", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceRemarks", + "title": "Georeference Remarks", + "required": false, + "description": "Notes or comments about the spatial description determination, explaining assumptions made in addition or opposition to the those formalized in the method referred to in georeferenceProtocol.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceRemarks", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceSources", + "title": "Georeference Sources", + "required": false, + "description": "A list (concatenated and separated) of maps, gazetteers, or other resources used to georeference the Location, described specifically enough to allow anyone in the future to use the same resources.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceSources", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/georeferenceVerificationStatus", + "title": "Georeference Verification Status", + "required": false, + "description": "A categorical description of the extent to which the georeference has been verified to represent the best possible spatial description.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/georeferenceVerificationStatus", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherGeography", + "title": "Higher Geography", + "required": false, + "description": "A list (concatenated and separated) of geographic names less specific than the information captured in the locality term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherGeography", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherGeographyID", + "title": "Higher Geography ID", + "required": false, + "description": "An identifier for the geographic region within which the Location occurred.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherGeographyID", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/island", + "title": "Island", + "required": false, + "description": "The name of the island on or near which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/island", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/islandGroup", + "title": "Island Group", + "required": false, + "description": "The name of the island group in which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/islandGroup", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locality", + "title": "Locality", + "required": false, + "description": "The specific description of the place. Less specific geographic information can be provided in other geographic terms (higherGeography, continent, country, stateProvince, county, municipality, waterBody, island, islandGroup). This term may contain information modified from the original to correct perceived errors or standardize the description.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locality", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationAccordingTo", + "title": "Location According To", + "required": false, + "description": "Information about the source of this Location information. Could be a publication (gazetteer), institution, or team of individuals.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationAccordingTo", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "Location ID", + "required": false, + "description": "An identifier for the set of location information (data associated with dcterms:Location). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationRemarks", + "title": "Location Remarks", + "required": false, + "description": "Comments or notes about the Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationRemarks", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumDepthInMeters", + "title": "Maximum Depth In Meters", + "required": false, + "description": "The greater depth of a range of depth below the local surface, in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumDepthInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumDistanceAboveSurfaceInMeters", + "title": "Maximum Distance Above Surface In Meters", + "required": false, + "description": "The greater distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumDistanceAboveSurfaceInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/maximumElevationInMeters", + "title": "Maximum Elevation In Meters", + "required": false, + "description": "The upper limit of the range of elevation (altitude, usually above sea level), in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/maximumElevationInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumDepthInMeters", + "title": "Minimum Depth In Meters", + "required": false, + "description": "The lesser depth of a range of depth below the local surface, in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumDepthInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumDistanceAboveSurfaceInMeters", + "title": "Minimum Distance Above Surface In Meters", + "required": false, + "description": "The lesser distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumDistanceAboveSurfaceInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/minimumElevationInMeters", + "title": "Minimum Elevation In Meters", + "required": false, + "description": "The lower limit of the range of elevation (altitude, usually above sea level), in meters.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/minimumElevationInMeters", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/municipality", + "title": "Municipality", + "required": false, + "description": "The full, unabbreviated name of the next smaller administrative region than county (city, municipality, etc.) in which the Location occurs. Do not use this term for a nearby named place that does not contain the actual location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/municipality", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/pointRadiusSpatialFit", + "title": "Point Radius Spatial Fit", + "required": false, + "description": "The ratio of the area of the point-radius (decimalLatitude, decimalLongitude, coordinateUncertaintyInMeters) to the area of the true (original, or most specific) spatial representation of the Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given point-radius does not completely contain the original representation. The pointRadiusSpatialFit is undefined (and should be left empty) if the original representation is a point without uncertainty and the given georeference is not that same point (without uncertainty). If both the original and the given georeference are the same point, the pointRadiusSpatialFit is 1.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/pointRadiusSpatialFit", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/stateProvince", + "title": "State Province", + "required": false, + "description": "The name of the next smaller administrative region than country (state, province, canton, department, region, etc.) in which the Location occurs.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/stateProvince", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimCoordinates", + "title": "Verbatim Coordinates", + "required": false, + "description": "The verbatim original spatial coordinates of the Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in verbatimSRS and the coordinate system should be stored in verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimCoordinates", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimCoordinateSystem", + "title": "Verbatim Coordinate System", + "required": false, + "description": "The coordinate format for the verbatimLatitude and verbatimLongitude or the verbatimCoordinates of the Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimCoordinateSystem", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimElevation", + "title": "Verbatim Elevation", + "required": false, + "description": "The original description of the elevation (altitude, usually above sea level) of the Location.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimElevation", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "title": "Verbatim Latitude", + "required": false, + "description": "The verbatim original latitude of the Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in verbatimSRS and the coordinate system should be stored in verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLocality", + "title": "Verbatim Locality", + "required": false, + "description": "The original textual description of the place.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLocality", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "title": "Verbatim Longitude", + "required": false, + "description": "The verbatim original longitude of the Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in verbatimSRS and the coordinate system should be stored in verbatimCoordinateSystem.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimSRS", + "title": "Verbatim SRS", + "required": false, + "description": "The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which coordinates given in verbatimLatitude and verbatimLongitude, or verbatimCoordinates are based.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimSRS", + "group": "Geography Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/waterBody", + "title": "Water Body", + "required": false, + "description": "The name of the water body in which the Location occurs. Recommended best practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/waterBody", + "group": "Geography Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/temporal", + "title": "Temporal Coverage", + "required": false, + "description": "Temporal characteristics of the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/temporal", + "group": "Temporal Coverage Vocabulary" + }, + { + "name": "http://ns.adobe.com/xap/1.0/CreateDate", + "title": "Original Date and Time", + "required": false, + "description": "The date and time the resource was created. For a digital file, this need not match a file-system creation time. For a freshly created resource, it should be close to that time, modulo the time taken to write the file. Later file transfer, copying, and so on, can make the file-system time arbitrarily different.", + "vocabulary": "http://ns.adobe.com/xap/1.0/", + "iri": "http://ns.adobe.com/xap/1.0/CreateDate", + "group": "Temporal Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/timeOfDay", + "title": "Time of Day", + "required": false, + "description": "Free text information beyond exact clock times.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/timeOfDay", + "group": "Temporal Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/taxonCoverage", + "title": "Taxon Coverage", + "required": false, + "description": "A higher taxon (e.g., a genus, family, or order) at the level of the genus or higher, that covers all taxa that are the primary subject of the resource (which may be a media item or a collection).", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/taxonCoverage", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificName", + "title": "Scientific Taxon Name", + "required": false, + "description": "The full scientific name, with authorship and date information if known. When forming part of an Identification, this should be the name in lowest level taxonomic rank that can be determined. This term should not contain identification qualifications, which should instead be supplied in the IdentificationQualifier term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificName", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationQualifier", + "title": "Identification Qualifier", + "required": false, + "description": "A brief phrase or a standard term ("cf.", "aff.") to express the determiner's doubts about the Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationQualifier", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/vernacularName", + "title": "Common Name", + "required": false, + "description": "A common or vernacular name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/vernacularName", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "title": "Name According To", + "required": false, + "description": "The reference to the source in which the specific taxon concept circumscription is defined or implied - traditionally signified by the Latin "sensu" or "sec." (from secundum, meaning "according to"). For taxa that result from identifications, a reference to the keys, monographs, experts and other sources should be given.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "title": "Scientific Name ID", + "required": false, + "description": "An identifier for the nomenclatural (not taxonomic) details of a scientific name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/otherScientificName", + "title": "Other Scientific Name", + "required": false, + "description": "One or several Scientific Taxon Names that are synonyms to the Scientific Taxon Name may be provided here.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/otherScientificName", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "title": "Identified By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who assigned the Taxon to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dateIdentified", + "title": "Date Identified", + "required": false, + "description": "The date on which the subject was determined as representing the Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dateIdentified", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/taxonCount", + "title": "Taxon Count", + "required": false, + "description": "An exact or estimated number of taxa at the lowest applicable taxon rank (usually species or infraspecific) represented by the media resource (item or collection).", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/taxonCount", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subjectPart", + "title": "Subject Part", + "required": false, + "description": "The portion or product of organism morphology, behaviour, environment, etc. that is either predominantly shown or particularly well exemplified by the media resource, denoted by an IRI.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subjectPart", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subjectPartLiteral", + "title": "Subject Part (literal)", + "required": false, + "description": "The portion or product of organism morphology, behaviour, environment, etc. that is either predominantly shown or particularly well exemplified by the media resource, denoted by a controlled value string.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subjectPartLiteral", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sex", + "title": "Subject Sex", + "required": false, + "description": "The sex of the biological individual(s) represented in the Occurrence.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sex", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lifeStage", + "title": "Subject Life Stage", + "required": false, + "description": "The age class or life stage of the biological individual(s) at the time the Occurrence was recorded.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lifeStage", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subjectOrientation", + "title": "Subject Orientation", + "required": false, + "description": "Specific orientation (= direction, view angle) of the subject represented in the media resource with respect to the acquisition device, denoted by an IRI.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subjectOrientation", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/subjectOrientationLiteral", + "title": "Subject Orientation (literal)", + "required": false, + "description": "Specific orientation (= direction, view angle) of the subject represented in the media resource with respect to the acquisition device, denoted by a controlled value string.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/subjectOrientationLiteral", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/preparations", + "title": "Subject Preparation Technique", + "required": false, + "description": "A list (concatenated and separated) of preparations and preservation methods for a specimen.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/preparations", + "group": "Taxonomic Coverage Vocabulary" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationCreated", + "title": "Location Created", + "required": false, + "description": "The location the content of the item was created", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", + "iri": "http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationCreated", + "group": "Resource Creation Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/digitizationDate", + "title": "Date and Time Digitized", + "required": false, + "description": "Date the first digital version was created, if different from Original Date and Time found in the Temporal Coverage Vocabulary.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/digitizationDate", + "group": "Resource Creation Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/captureDevice", + "title": "Capture Device", + "required": false, + "description": "Free form text describing the device or devices used to create the resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/captureDevice", + "group": "Resource Creation Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/resourceCreationTechnique", + "title": "Resource Creation Technique", + "required": false, + "description": "Information about technical aspects of the creation and digitization process of the resource. This includes modification steps ("retouching") after the initial resource capture.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/resourceCreationTechnique", + "group": "Resource Creation Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/frameRate", + "title": "Frame Rate", + "required": false, + "description": "The decimal fraction representing the frequency (rate) at which consecutive images (frames) were captured in real time for a moving image, expressed as the number of frames per second.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/frameRate", + "group": "Resource Creation Vocabulary" + }, + { + "name": "http://purl.org/ontology/mo/sample_rate", + "title": "Sample Rate", + "required": false, + "description": "Associates a digital signal to its sample rate.", + "vocabulary": "http://purl.org/ontology/mo/", + "iri": "http://purl.org/ontology/mo/sample_rate", + "group": "Resource Creation Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/IDofContainingCollection", + "title": "ID of Containing Collection", + "required": false, + "description": "If the resource is contained in a Collection, this field identifies that Collection uniquely.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/IDofContainingCollection", + "group": "Related Resources Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/relatedResourceID", + "title": "Related Resource ID", + "required": false, + "description": "Resource related in ways not specified through a collection, e.g., before-after images; time-lapse series; different orientations/angles of view", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/relatedResourceID", + "group": "Related Resources Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/providerID", + "title": "Provider ID", + "required": false, + "description": "A globally unique ID of the provider of the current AC metadata record.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/providerID", + "group": "Related Resources Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/derivedFrom", + "title": "Derived From", + "required": false, + "description": "A reference to an original resource from which the current one is derived.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/derivedFrom", + "group": "Related Resources Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/associatedSpecimenReference", + "title": "Associated Specimen Reference", + "required": false, + "description": "A reference to a specimen associated with this resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/associatedSpecimenReference", + "group": "Related Resources Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/associatedObservationReference", + "title": "Associated Observation Reference", + "required": false, + "description": "A reference to an observation associated with this resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/associatedObservationReference", + "group": "Related Resources Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/accessURI", + "title": "Access URI", + "required": false, + "description": "A URI that uniquely identifies a service that provides a representation of the underlying resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/accessURI", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://purl.org/dc/elements/1.1/format", + "title": "Format (literal)", + "required": false, + "description": "The file format, physical medium, or dimensions of the resource.", + "vocabulary": "http://purl.org/dc/elements/1.1/", + "iri": "http://purl.org/dc/elements/1.1/format", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://purl.org/dc/terms/format", + "title": "Format (IRI)", + "required": false, + "description": "The file format, physical medium, or dimensions of the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/format", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/variantLiteral", + "title": "Variant (literal)", + "required": false, + "description": "The category describing this Service Access Point variant, denoted by a controlled value string.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/variantLiteral", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/variant", + "title": "Variant (IRI)", + "required": false, + "description": "The category describing this Service Access Point variant, denoted by an IRI.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/variant", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/variantDescription", + "title": "Variant Description", + "required": false, + "description": "Text that describes this Service Access Point variant", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/variantDescription", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/furtherInformationURL", + "title": "Further Information URL", + "required": false, + "description": "The URL of a Web site that provides additional information about the version of the media resource that is provided by the Service Access Point.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/furtherInformationURL", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/licensingException", + "title": "Licensing Exception Statement", + "required": false, + "description": "The licensing statement for this variant of the media resource if different from that given in the License Statement property of the resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/licensingException", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/serviceExpectation", + "title": "Service Expectation", + "required": false, + "description": "A term that describes what service expectations users may have of the ac:accessURI.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/serviceExpectation", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/hashFunction", + "title": "Hash Function", + "required": false, + "description": "The cryptographic hash function used to compute the value given in the Hash Value.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/hashFunction", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/hashValue", + "title": "Hash", + "required": false, + "description": "The value computed by a hash function applied to the media that will be delivered at the access point.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/hashValue", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://ns.adobe.com/exif/1.0/PixelXDimension", + "title": "Image Width", + "required": false, + "description": "Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image shall be recorded in this tag, whether or not there is padding data or a restart marker. This tag shall not exist in an uncompressed file.", + "vocabulary": "http://ns.adobe.com/exif/1.0/", + "iri": "http://ns.adobe.com/exif/1.0/PixelXDimension", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://ns.adobe.com/exif/1.0/PixelYDimension", + "title": "Image Height", + "required": false, + "description": "Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image shall be recorded in this tag, whether or not there is padding data or a restart marker. This tag shall not exist in an uncompressed file.", + "vocabulary": "http://ns.adobe.com/exif/1.0/", + "iri": "http://ns.adobe.com/exif/1.0/PixelYDimension", + "group": "Service Access Point Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/hasROI", + "title": "Has Region of Interest", + "required": false, + "description": "A region of interest located within the subject media item.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/hasROI", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/isROIOf", + "title": "Is Region of Interest of", + "required": false, + "description": "The media item within which a region of interest is located.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/isROIOf", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/xFrac", + "title": "Fractional X", + "required": false, + "description": "The horizontal position of a reference point, measured from the left side of the media item and expressed as a decimal fraction of the width of the media item.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/xFrac", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/yFrac", + "title": "Fractional Y", + "required": false, + "description": "The vertical position of a reference point, measured from the top of the media item and expressed as a decimal fraction of the height of the media item.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/yFrac", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/widthFrac", + "title": "Fractional Width", + "required": false, + "description": "The width of the bounding rectangle, expressed as a decimal fraction of the width of the media item.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/widthFrac", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/heightFrac", + "title": "Fractional Height", + "required": false, + "description": "The height of the bounding rectangle, expressed as a decimal fraction of the height of the media item.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/heightFrac", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/radius", + "title": "Radius", + "required": false, + "description": "The radius of a bounding circle or arc, expressed as a fraction of the width of the media item.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/radius", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/startTime", + "title": "Start Time in Seconds", + "required": false, + "description": "The beginning of a temporal region, specified as an absolute offset relative to the beginning of the media item (this corresponds to Normal Play Time RFC 2326), specified as seconds, with an optional fractional part to indicate milliseconds or finer.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/startTime", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/endTime", + "title": "End Time in Seconds", + "required": false, + "description": "The end of a temporal region, specified as an absolute offset relative to the beginning of the media item (this corresponds to Normal Play Time RFC 2326), specified as seconds, with an optional fractional part to indicate milliseconds or finer.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/endTime", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/startTimestamp", + "title": "Start Timestamp", + "required": false, + "description": "The beginning of a temporal region, specified as real-world clock time ISO 8601 timestamps, using UTC timezone, with an optional fractional part to indicate milliseconds or finer. There is no limit on the number of decimal places for the decimal fraction.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/startTimestamp", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/endTimestamp", + "title": "End Timestamp", + "required": false, + "description": "The end of a temporal region, specified as real-world clock time ISO 8601 timestamps, using UTC timezone, with an optional fractional part to indicate milliseconds or finer. There is no limit on the number of decimal places for the decimal fraction.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/endTimestamp", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/mediaDuration", + "title": "Media Duration", + "required": false, + "description": "The playback duration of an audio or video file in seconds.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/mediaDuration", + "group": "Region of Interest Vocabulary" + }, + { + "name": "http://rs.tdwg.org/ac/terms/mediaSpeed", + "title": "Media Speed", + "required": false, + "description": "The decimal fraction representing the natural speed over the encoded speed.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/mediaSpeed", + "group": "Region of Interest Vocabulary" + } + ] + }, + { + "name": "TypesAndSpecimen", + "title": "Types and Specimen", + "identifier": "http://rs.gbif.org/terms/1.0/TypesAndSpecimen", + "url": "http://rs.gbif.org/extension/gbif/1.0/typesandspecimen_2026-05-05.xml", + "rowType": "http://rs.gbif.org/terms/1.0/TypesAndSpecimen", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2026-05-05", + "description": "An extension for specimens and types, including type specimens, type species and type genera and simple specimens unrelated to types.", + "subject": "dwc:Taxon", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/typeStatus", + "title": "typeStatus", + "required": false, + "description": "The type status of the specimen, not used for type species or type genus", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/typeStatus", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/typeDesignationType", + "title": "typeDesignationType", + "required": false, + "description": "The reason why this specimen or name is designated as a type.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/typeDesignationType", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/typeDesignatedBy", + "title": "typeDesignatedBy", + "required": false, + "description": "The citation of the publication where the type designation is found", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/typeDesignatedBy", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificName", + "title": "scientificName", + "required": false, + "description": "In case of type specimens the scientific name originally used on the label. Not necessarily the same as the currently recognized name. In case of type species or genera it should be the species or genus name that typifies the higher taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificName", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRank", + "title": "taxonRank", + "required": false, + "description": "The rank of the taxon bearing the scientific name", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRank", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/bibliographicCitation", + "title": "bibliographicCitation", + "required": false, + "description": "A text string citating the described specimen. Often found in taxonomic treatments and frequently based on institution code and catalog number.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/bibliographicCitation", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "title": "occurrenceID", + "required": false, + "description": "An identifier for the specimen, preferably a resolvable globally unique identifier.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionCode", + "title": "institutionCode", + "required": false, + "description": "The name (or acronym) in use by the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionCode", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/institutionID", + "title": "institutionID", + "required": false, + "description": "An identifier for the institution having custody of the object(s) or information referred to in the record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/institutionID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/collectionCode", + "title": "collectionCode", + "required": false, + "description": "The name, acronym, coden, or initialism identifying the collection or data set from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/collectionCode", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/collectionID", + "title": "collectionID", + "required": false, + "description": "An identifier for the collection or dataset from which the record was derived.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/collectionID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/catalogNumber", + "title": "catalogNumber", + "required": false, + "description": "An identifier (preferably unique) for the record within the data set or collection.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/catalogNumber", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locality", + "title": "locality", + "required": false, + "description": "The location where the the specimen was collected. In case of type specimens the type locality.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locality", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sex", + "title": "sex", + "required": false, + "description": "The sex of the specimen being referenced.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sex", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/recordedBy", + "title": "recordedBy", + "required": false, + "description": "The primary collector or observer, especially one who applies a personal identifier (recordNumber), should be listed first.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/recordedBy", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimEventDate", + "title": "verbatimEventDate", + "required": false, + "description": "The date when the specimen was collected", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimEventDate", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/verbatimLabel", + "title": "verbatimLabel", + "required": false, + "description": "The full, verbatim text from the specimen label", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/verbatimLabel", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "title": "verbatimLongitude", + "required": false, + "description": "The geographic longitude", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLongitude", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "title": "verbatimLatitude", + "required": false, + "description": "The geographic latitude", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimLatitude", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "Identification", + "title": "Darwin Core Identification History", + "identifier": "http://rs.tdwg.org/dwc/terms/Identification", + "url": "http://rs.gbif.org/extension/dwc/identification_history_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/dwc/terms/Identification", + "namespace": "http://rs.tdwg.org/dwc/terms/", + "issued": "2026-02-12", + "description": "Extended support for multiple identifications (determinations) of species Darwin Core Occurrences. All identifications including the most current one should be listed, while the current one should also be repeated in the Darwin Core Occurrence Core.", + "subject": "dwc:Occurrence", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/identificationID", + "title": "Identification ID", + "required": false, + "description": "An identifier for the dwc:Identification (the body of information associated with the assignment of a scientific name). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationID", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimIdentification", + "title": "Verbatim Identification", + "required": false, + "description": "A string representing the taxonomic identification as it appeared in the original record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimIdentification", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationQualifier", + "title": "Identification Qualifier", + "required": false, + "description": "A brief phrase or a standard term ("cf.", "aff.") to express the determiner's doubts about the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationQualifier", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/typeStatus", + "title": "Type Status", + "required": false, + "description": "A list (concatenated and separated) of nomenclatural types (type status, typified scientific name, publication) applied to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/typeStatus", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "title": "Identified By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who assigned the dwc:Taxon to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identifiedByID", + "title": "Identified By ID", + "required": false, + "description": "A list (concatenated and separated) of the globally unique identifier for the person, people, groups, or organizations responsible for assigning the dwc:Taxon to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identifiedByID", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/dateIdentified", + "title": "Date Identified", + "required": false, + "description": "The date on which the subject was determined as representing the dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/dateIdentified", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationReferences", + "title": "Identification References", + "required": false, + "description": "A list (concatenated and separated) of references (publication, global unique identifier, URI) used in the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationReferences", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationVerificationStatus", + "title": "Identification Verification Status", + "required": false, + "description": "A categorical indicator of the extent to which the taxonomic identification has been verified to be correct.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationVerificationStatus", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationRemarks", + "title": "Identification Remarks", + "required": false, + "description": "Comments or notes about the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationRemarks", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonID", + "title": "Taxon ID", + "required": false, + "description": "An identifier for the set of dwc:Taxon information. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "title": "Scientific Name ID", + "required": false, + "description": "An identifier for the nomenclatural (not taxonomic) details of a scientific name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/acceptedNameUsageID", + "title": "Accepted Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) of the currently valid (zoological) or accepted (botanical) taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/acceptedNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentNameUsageID", + "title": "Parent Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) of the direct, most proximate higher-rank parent taxon (in a classification) of the most specific element of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/originalNameUsageID", + "title": "Original Name Usage ID", + "required": false, + "description": "An identifier for the name usage (documented meaning of the name according to a source) in which the terminal element of the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/originalNameUsageID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingToID", + "title": "Name According To ID", + "required": false, + "description": "An identifier for the source in which the specific taxon concept circumscription is defined or implied. See dwc:nameAccordingTo.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingToID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedInID", + "title": "Name Published In ID", + "required": false, + "description": "An identifier for the publication in which the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedInID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonConceptID", + "title": "Taxon Concept ID", + "required": false, + "description": "An identifier for the taxonomic concept to which the record refers - not for the nomenclatural details of a dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonConceptID", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificName", + "title": "Scientific Name", + "required": false, + "description": "The full scientific name, with authorship and date information if known. When forming part of a dwc:Identification, this should be the name in lowest level taxonomic rank that can be determined. This term should not contain identification qualifications, which should instead be supplied in the dwc:identificationQualifier term.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/acceptedNameUsage", + "title": "Accepted Name Usage", + "required": false, + "description": "The full name, with authorship and date information if known, of the currently valid (zoological) or accepted (botanical) dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/acceptedNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentNameUsage", + "title": "Parent Name Usage", + "required": false, + "description": "The full name, with authorship and date information if known, of the direct, most proximate higher-rank parent dwc:Taxon (in a classification) of the most specific element of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/originalNameUsage", + "title": "Original Name Usage", + "required": false, + "description": "The taxon name, with authorship and date information if known, as it originally appeared when first established under the rules of the associated dwc:nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the dwc:scientificName or the senior/earlier homonym for replaced names.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/originalNameUsage", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "title": "Name According To", + "required": false, + "description": "The reference to the source in which the specific taxon concept circumscription is defined or implied - traditionally signified by the Latin "sensu" or "sec." (from secundum, meaning "according to"). For taxa that result from identifications, a reference to the keys, monographs, experts and other sources should be given.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nameAccordingTo", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedIn", + "title": "Name Published In", + "required": false, + "description": "A reference for the publication in which the dwc:scientificName was originally established under the rules of the associated dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedIn", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/namePublishedInYear", + "title": "Name Published In Year", + "required": false, + "description": "The four-digit year in which the dwc:scientificName was published.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/namePublishedInYear", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/higherClassification", + "title": "Higher Classification", + "required": false, + "description": "A list (concatenated and separated) of taxa names terminating at the rank immediately superior to the referenced dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/higherClassification", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/kingdom", + "title": "Kingdom", + "required": false, + "description": "The full scientific name of the kingdom in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/kingdom", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/phylum", + "title": "Phylum", + "required": false, + "description": "The full scientific name of the phylum or division in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/phylum", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/class", + "title": "Class", + "required": false, + "description": "The full scientific name of the class in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/class", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/order", + "title": "Order", + "required": false, + "description": "The full scientific name of the order in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/order", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/superfamily", + "title": "Superfamily", + "required": false, + "description": "The full scientific name of the superfamily in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/superfamily", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/family", + "title": "Family", + "required": false, + "description": "The full scientific name of the family in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/family", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subfamily", + "title": "Subfamily", + "required": false, + "description": "The full scientific name of the subfamily in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subfamily", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/tribe", + "title": "Tribe", + "required": false, + "description": "The full scientific name of the tribe in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/tribe", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subtribe", + "title": "Subtribe", + "required": false, + "description": "The full scientific name of the subtribe in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subtribe", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/genus", + "title": "Genus", + "required": false, + "description": "The full scientific name of the genus in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/genus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/genericName", + "title": "Generic Name", + "required": false, + "description": "The genus part of the dwc:scientificName without authorship.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/genericName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/subgenus", + "title": "Subgenus", + "required": false, + "description": "The full scientific name of the subgenus in which the dwc:Taxon is classified.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/subgenus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/infragenericEpithet", + "title": "Infrageneric Epithet", + "required": false, + "description": "The infrageneric part of a binomial name at ranks above species but below genus.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/infragenericEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/specificEpithet", + "title": "Specific Epithet", + "required": false, + "description": "The name of the first or species epithet of the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/specificEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/infraspecificEpithet", + "title": "Infraspecific Epithet", + "required": false, + "description": "The name of the lowest or terminal infraspecific epithet of the dwc:scientificName, excluding any rank designation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/infraspecificEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/cultivarEpithet", + "title": "Cultivar Epithet", + "required": false, + "description": "Part of the name of a cultivar, cultivar group or grex that follows the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/cultivarEpithet", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRank", + "title": "Taxon Rank", + "required": false, + "description": "The taxonomic rank of the most specific name in the dwc:scientificName.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRank", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimTaxonRank", + "title": "Verbatim Taxon Rank", + "required": false, + "description": "The taxonomic rank of the most specific name in the dwc:scientificName as it appears in the original record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimTaxonRank", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/scientificNameAuthorship", + "title": "Scientific Name Authorship", + "required": false, + "description": "The authorship information for the dwc:scientificName formatted according to the conventions of the applicable dwc:nomenclaturalCode.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/scientificNameAuthorship", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/vernacularName", + "title": "Vernacular Name", + "required": false, + "description": "A common or vernacular name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/vernacularName", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nomenclaturalCode", + "title": "Nomenclatural Code", + "required": false, + "description": "The nomenclatural code (or codes in the case of an ambiregnal name) under which the dwc:scientificName is constructed.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nomenclaturalCode", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonomicStatus", + "title": "Taxonomic Status", + "required": false, + "description": "The status of the use of the dwc:scientificName as a label for a taxon. Requires taxonomic opinion to define the scope of a dwc:Taxon. Rules of priority then are used to define the taxonomic status of the nomenclature contained in that scope, combined with the experts opinion. It must be linked to a specific taxonomic reference that defines the concept.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonomicStatus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/nomenclaturalStatus", + "title": "Nomenclatural Status", + "required": false, + "description": "The status related to the original publication of the name and its conformance to the relevant rules of nomenclature. It is based essentially on an algorithm according to the business rules of the code. It requires no taxonomic opinion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/nomenclaturalStatus", + "group": "Taxon" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "title": "Taxon Remarks", + "required": false, + "description": "Comments or notes about the taxon or name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "group": "Taxon" + } + ] + }, + { + "name": "MeasurementOrFacts", + "title": "Darwin Core Measurement or Facts", + "identifier": "http://rs.tdwg.org/dwc/terms/MeasurementOrFact", + "url": "http://rs.gbif.org/extension/dwc/measurements_or_facts_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/dwc/terms/MeasurementOrFact", + "namespace": "http://rs.tdwg.org/dwc/terms/", + "issued": "2026-02-12", + "description": "Extended support for multiple measurements or facts associated with a Darwin Core Occurrence, Event, or Taxon Core.", + "subject": "dwc:Occurrence dwc:Event dwc:Taxon", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/measurementID", + "title": "Measurement ID", + "required": false, + "description": "An identifier for the dwc:MeasurementOrFact (information pertaining to measurements, facts, characteristics, or assertions). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementID", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/parentMeasurementID", + "title": "Parent Measurement ID", + "required": false, + "description": "An identifier for a broader dwc:MeasurementOrFact that groups this and potentially other dwc:MeasurementOrFacts.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/parentMeasurementID", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementType", + "title": "Measurement Type", + "required": true, + "description": "The nature of the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementType", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/verbatimMeasurementType", + "title": "Verbatim Measurement Type", + "required": false, + "description": "A string representing the type of measurement or fact as it appeared in the original record.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/verbatimMeasurementType", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementValue", + "title": "Measurement Value", + "required": false, + "description": "The value of the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementValue", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementAccuracy", + "title": "Measurement Accuracy", + "required": false, + "description": "The description of the potential error associated with the dwc:measurementValue.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementAccuracy", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementUnit", + "title": "Measurement Unit", + "required": false, + "description": "The units associated with the dwc:measurementValue.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementUnit", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementDeterminedBy", + "title": "Measurement Determined By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the value of the dwc:MeasurementOrFact.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementDeterminedBy", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementDeterminedDate", + "title": "Measurement Determined Date", + "required": false, + "description": "The date on which the dwc:MeasurementOrFact was made.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementDeterminedDate", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "title": "Measurement Method", + "required": false, + "description": "A description of or reference to (publication, URI) the method or protocol used to determine the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "group": "MeasurementOrFact" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementRemarks", + "title": "Measurement Remarks", + "required": false, + "description": "Comments or notes accompanying the dwc:MeasurementOrFact.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementRemarks", + "group": "MeasurementOrFact" + } + ] + }, + { + "name": "ResourceRelationship", + "title": "Darwin Core Resource Relationship", + "identifier": "http://rs.tdwg.org/dwc/terms/ResourceRelationship", + "url": "http://rs.gbif.org/extension/dwc/resource_relationship_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/dwc/terms/ResourceRelationship", + "namespace": "http://rs.tdwg.org/dwc/terms/", + "issued": "2026-02-12", + "description": "Extended support for relationships between resources in a Darwin Core Occurrence, Event, or Taxon Core to resources in an extension or external to the data set. The identifiers for subject (resourceID) and object (relatedResourceID) may exist in the dataset or be accessible via an externally resolvable identifiers.", + "subject": "dwc:Occurrence dwc:Event dwc:Taxon", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/resourceRelationshipID", + "title": "Resource Relationship ID", + "required": false, + "description": "An identifier for an instance of relationship between one resource (the subject) and another (dwc:relatedResource, the object).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/resourceRelationshipID", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/resourceID", + "title": "Resource ID", + "required": true, + "description": "An identifier for the resource that is the subject of the relationship.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/resourceID", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/relationshipOfResourceID", + "title": "Relationship Of Resource ID", + "required": false, + "description": "An identifier for the relationship type (predicate) that connects the subject identified by dwc:resourceID to its object identified by dwc:relatedResourceID.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/relationshipOfResourceID", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/relatedResourceID", + "title": "Related Resource ID", + "required": true, + "description": "An identifier for a related resource (the object, rather than the subject of the relationship).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/relatedResourceID", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/relationshipOfResource", + "title": "Relationship Of Resource", + "required": false, + "description": "The relationship of the subject (identified by dwc:resourceID) to the object (identified by dwc:relatedResourceID).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/relationshipOfResource", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/relationshipAccordingTo", + "title": "Relationship According To", + "required": false, + "description": "The source (person, organization, publication, reference) establishing the relationship between the two resources.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/relationshipAccordingTo", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/relationshipEstablishedDate", + "title": "Relationship Established Date", + "required": false, + "description": "The date-time on which the relationship between the two resources was established.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/relationshipEstablishedDate", + "group": "ResourceRelationship" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/relationshipRemarks", + "title": "Relationship Remarks", + "required": false, + "description": "Comments or notes about the relationship between the two resources.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/relationshipRemarks", + "group": "ResourceRelationship" + } + ] + }, + { + "name": "HumboldtEcologicalInventory", + "title": "Humboldt Ecological Inventory", + "identifier": "http://rs.tdwg.org/eco/terms/Event", + "url": "http://rs.gbif.org/extension/eco/humboldt_2025-07-10.xml", + "rowType": "http://rs.tdwg.org/eco/terms/Event", + "namespace": "http://rs.tdwg.org/eco/terms/", + "issued": "2026-02-12", + "description": "Extended support for Darwin Core Events related to ecological inventories.", + "subject": "dwc:Event", + "fields": [ + { + "name": "http://rs.tdwg.org/eco/terms/siteCount", + "title": "Site Count", + "required": false, + "description": "Total number of individual sites surveyed during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/siteCount", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/siteNestingDescription", + "title": "Site Nesting Description", + "required": false, + "description": "Textual description of the hierarchical sampling design.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/siteNestingDescription", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/verbatimSiteDescriptions", + "title": "Verbatim Site Descriptions", + "required": false, + "description": "Original textual description of the site(s).", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/verbatimSiteDescriptions", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/verbatimSiteNames", + "title": "Verbatim Site Names", + "required": false, + "description": "A list (concatenated and separated) of original site names.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/verbatimSiteNames", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/geospatialScopeAreaValue", + "title": "Geospatial Scope Area Value", + "required": false, + "description": "The numeric value for the total area of the geospatial scope of the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/geospatialScopeAreaValue", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/geospatialScopeAreaUnit", + "title": "Geospatial Scope Area Unit", + "required": false, + "description": "The units associated with eco:geospatialScopeAreaValue", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/geospatialScopeAreaUnit", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/totalAreaSampledValue", + "title": "Total Area Sampled Value", + "required": false, + "description": "The numeric value for the total area surveyed during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/totalAreaSampledValue", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/totalAreaSampledUnit", + "title": "Total Area Sampled Unit", + "required": false, + "description": "The units associated with eco:totalAreaSampledValue", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/totalAreaSampledUnit", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/reportedWeather", + "title": "Reported Weather", + "required": false, + "description": "A list of weather or climatic conditions present during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/reportedWeather", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/reportedExtremeConditions", + "title": "Reported Extreme Conditions", + "required": false, + "description": "A description of any extreme weather or environmental conditions that may have affected the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/reportedExtremeConditions", + "group": "Site" + }, + { + "name": "http://rs.tdwg.org/eco/terms/targetHabitatScope", + "title": "Target Habitat Scope", + "required": false, + "description": "The habitats targeted for sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/targetHabitatScope", + "group": "Habitat Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/excludedHabitatScope", + "title": "Excluded Habitat Scope", + "required": false, + "description": "The habitats explicitly excluded from sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/excludedHabitatScope", + "group": "Habitat Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/eventDurationValue", + "title": "Event Duration Value", + "required": false, + "description": "The numeric value for the duration of the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/eventDurationValue", + "group": "Temporal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/eventDurationUnit", + "title": "Event Duration Unit", + "required": false, + "description": "The units associated with the eco:eventDurationValue.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/eventDurationUnit", + "group": "Temporal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/targetTaxonomicScope", + "title": "Target Taxonomic Scope", + "required": false, + "description": "The taxonomic group(s) targeted for sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/targetTaxonomicScope", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/excludedTaxonomicScope", + "title": "Excluded Taxonomic Scope", + "required": false, + "description": "The taxonomic group(s) explicitly excluded from sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/excludedTaxonomicScope", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/taxonCompletenessReported", + "title": "Taxon Completeness Reported", + "required": false, + "description": "Statement about whether the taxonomic completeness of the dwc:Event was assessed.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/taxonCompletenessReported", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/taxonCompletenessProtocols", + "title": "Taxon Completeness Protocols", + "required": false, + "description": "A description of or reference (publication, URL) to the methods used to determine eco:taxonCompletenessReported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/taxonCompletenessProtocols", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isTaxonomicScopeFullyReported", + "title": "Is Taxonomic Scope Fully Reported", + "required": false, + "description": "Every dwc:Organism that was included within the taxonomic scope, and was detected during the dwc:Event, was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isTaxonomicScopeFullyReported", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isAbsenceReported", + "title": "Is Absence Reported", + "required": false, + "description": "Taxonomic absences were reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isAbsenceReported", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/absentTaxa", + "title": "Absent Taxa", + "required": false, + "description": "A list (concatenated and separated) of taxa reported absent during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/absentTaxa", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/hasNonTargetTaxa", + "title": "Has Non-target Taxa", + "required": false, + "description": "One or more dwc:Organisms of taxa outside the target taxonomic scope (the combination of eco:targetTaxonomicScope and eco:excludedTaxonomicScope) were detected and reported for this dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/hasNonTargetTaxa", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/nonTargetTaxa", + "title": "Non-target Taxa", + "required": false, + "description": "A list (concatenated and separated) of taxa reported during the dwc:Event that are outside of the target taxonomic scope (the combination of eco:targetTaxonomicScope and eco:excludedTaxonomicScope).", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/nonTargetTaxa", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/areNonTargetTaxaFullyReported", + "title": "Are Non-target Taxa Fully Reported", + "required": false, + "description": "Every dwc:Organism that was outside of the target taxonomic scope (the combination of eco:targetTaxonomicScope and eco:excludedTaxonomicScope) and detected during the dwc:Event, and that was detectable using the given protocol (given in eco:protocolDescriptions and dwc:samplingProtocol), was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/areNonTargetTaxaFullyReported", + "group": "Taxonomic Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/targetLifeStageScope", + "title": "Target Life Stage Scope", + "required": false, + "description": "The age classes or life stages of the dwc:Organisms targeted for sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/targetLifeStageScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/excludedLifeStageScope", + "title": "Excluded Life Stage Scope", + "required": false, + "description": "The age classes or life stages of the dwc:Organisms explicitly excluded from sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/excludedLifeStageScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isLifeStageScopeFullyReported", + "title": "Is Life Stage Scope Fully Reported", + "required": false, + "description": "Every dwc:Organism that was included within the life stage scope, and was detected during the dwc:Event, was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isLifeStageScopeFullyReported", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/targetDegreeOfEstablishmentScope", + "title": "Target Degree of Establishment Scope", + "required": false, + "description": "The degrees of establishment of the dwc:Organisms targeted for sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/targetDegreeOfEstablishmentScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/excludedDegreeOfEstablishmentScope", + "title": "Excluded Degree of Establishment Scope", + "required": false, + "description": "The degrees of establishment of the dwc:Organisms explicitly excluded from sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/excludedDegreeOfEstablishmentScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isDegreeOfEstablishmentScopeFullyReported", + "title": "Is Degree of Establishment Scope Fully Reported", + "required": false, + "description": "Every dwc:Organism that was included within the degree of establishment scope, and was detected during the dwc:Event, was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isDegreeOfEstablishmentScopeFullyReported", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/targetGrowthFormScope", + "title": "Target Growth Form Scope", + "required": false, + "description": "The growth forms or habits of the dwc:Organisms targeted for sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/targetGrowthFormScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/excludedGrowthFormScope", + "title": "Excluded Growth Form Scope", + "required": false, + "description": "The growth forms or habits of the dwc:Organisms explicitly excluded from sampling during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/excludedGrowthFormScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isGrowthFormScopeFullyReported", + "title": "Is Growth Form Scope Fully Reported", + "required": false, + "description": "Every dwc:Organism that was included within the growth form scope, and was detected during the dwc:Event, was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isGrowthFormScopeFullyReported", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/hasNonTargetOrganisms", + "title": "Has Non-target Organisms", + "required": false, + "description": "One or more dwc:Organisms outside the target organismal scopes (eco:targetDegreeOfEstablishmentScope, eco:targetGrowthFormScope, and eco:targetLifeStageScope) were detected and reported for this dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/hasNonTargetOrganisms", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/eco/terms/verbatimTargetScope", + "title": "Verbatim Target Scope", + "required": false, + "description": "The verbatim original description of the dwc:Event scope.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/verbatimTargetScope", + "group": "Organismal Scope" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "title": "Identified By", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who assigned the dwc:Taxon to the subject.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identifiedBy", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/identificationReferences", + "title": "Identification References", + "required": false, + "description": "A list (concatenated and separated) of references (publication, global unique identifier, URI) used in the dwc:Identification.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/identificationReferences", + "group": "Identification" + }, + { + "name": "http://rs.tdwg.org/eco/terms/compilationTypes", + "title": "Compilation Types", + "required": false, + "description": "A statement specifying whether data reported are derived from sampling events, ancillary data compiled from other sources, or a combination of both.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/compilationTypes", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/compilationSourceTypes", + "title": "Compilation Source Types", + "required": false, + "description": "The types of data sources contributing to the compilation reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/compilationSourceTypes", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/inventoryTypes", + "title": "Inventory Types", + "required": false, + "description": "The types of search processes used to conduct the inventory.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/inventoryTypes", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/protocolNames", + "title": "Protocol Names", + "required": false, + "description": "Categorical descriptive names for the methods used during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/protocolNames", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/protocolDescriptions", + "title": "Protocol Descriptions", + "required": false, + "description": "A detailed description of the methods used during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/protocolDescriptions", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/protocolReferences", + "title": "Protocol References", + "required": false, + "description": "The references to the methods used during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/protocolReferences", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isAbundanceReported", + "title": "Is Abundance Reported", + "required": false, + "description": "The number of dwc:Organisms collected or observed was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isAbundanceReported", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isAbundanceCapReported", + "title": "Is Abundance Cap Reported", + "required": false, + "description": "A maximum number of dwc:Organisms was reported, as specified or restricted by the protocol used.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isAbundanceCapReported", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/abundanceCap", + "title": "Abundance Cap", + "required": false, + "description": "The reported maximum number of dwc:Organisms.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/abundanceCap", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isVegetationCoverReported", + "title": "Is Vegetation Cover Reported", + "required": false, + "description": "A vegetation cover metric was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isVegetationCoverReported", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isLeastSpecificTargetCategoryQuantityInclusive", + "title": "Is Least Specific Target Category Quantity Inclusive", + "required": false, + "description": "The total detected quantity for a dwc:Taxon (including subcategories thereof) in a dwc:Event is given explicitly in a single record (dwc:organismQuantity value) for that dwc:Taxon.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isLeastSpecificTargetCategoryQuantityInclusive", + "group": "Methodology Description" + }, + { + "name": "http://rs.tdwg.org/eco/terms/hasVouchers", + "title": "Has Vouchers", + "required": false, + "description": "Specimen vouchers were collected during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/hasVouchers", + "group": "Material Collected" + }, + { + "name": "http://rs.tdwg.org/eco/terms/voucherInstitutions", + "title": "Voucher Institutions", + "required": false, + "description": "A list (concatenated and separated) of the names or acronyms of the institutions where vouchers collected during the dwc:Event were deposited.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/voucherInstitutions", + "group": "Material Collected" + }, + { + "name": "http://rs.tdwg.org/eco/terms/hasMaterialSamples", + "title": "Has Material Samples", + "required": false, + "description": "Material samples were collected during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/hasMaterialSamples", + "group": "Material Collected" + }, + { + "name": "http://rs.tdwg.org/eco/terms/materialSampleTypes", + "title": "Material Sample Types", + "required": false, + "description": "A list (concatenated and separated) of material sample types collected during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/materialSampleTypes", + "group": "Material Collected" + }, + { + "name": "http://rs.tdwg.org/eco/terms/samplingPerformedBy", + "title": "Sampling Performed By", + "required": false, + "description": "A person, group, or organization responsible for recording the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/samplingPerformedBy", + "group": "Sampling Effort" + }, + { + "name": "http://rs.tdwg.org/eco/terms/isSamplingEffortReported", + "title": "Is Sampling Effort Reported", + "required": false, + "description": "The sampling effort associated with the dwc:Event was reported.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/isSamplingEffortReported", + "group": "Sampling Effort" + }, + { + "name": "http://rs.tdwg.org/eco/terms/samplingEffortProtocol", + "title": "Sampling Effort Protocol", + "required": false, + "description": "A description of or reference (publication or URL) to the methods used to determine the sampling effort.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/samplingEffortProtocol", + "group": "Sampling Effort" + }, + { + "name": "http://rs.tdwg.org/eco/terms/samplingEffortValue", + "title": "Sampling Effort Value", + "required": false, + "description": "The numeric value for the sampling effort expended during the dwc:Event.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/samplingEffortValue", + "group": "Sampling Effort" + }, + { + "name": "http://rs.tdwg.org/eco/terms/samplingEffortUnit", + "title": "Sampling Effort Unit", + "required": false, + "description": "The units associated with the eco:samplingEffortValue.", + "vocabulary": "http://rs.tdwg.org/eco/terms/", + "iri": "http://rs.tdwg.org/eco/terms/samplingEffortUnit", + "group": "Sampling Effort" + } + ] + }, + { + "name": "dnaDerivedData", + "title": "DNA derived data", + "identifier": "http://rs.gbif.org/terms/1.0/DNADerivedData", + "url": "http://rs.gbif.org/extension/gbif/1.0/dna_derived_data_2024-07-11.xml", + "rowType": "http://rs.gbif.org/terms/1.0/DNADerivedData", + "namespace": "http://rs.gbif.org/terms/1.0/", + "issued": "2024-07-11", + "description": "An extension to Occurrence and Event cores to capture information relating to DNA. This extension is based on the MIxS extension for Darwin Core (underway), with additions from GGBN and MIQE standards and recommendations. This definition supports the outcomes documented in Publishing DNA-derived data through biodiversity data platforms (https://doi.org/10.35035/doc-vf1a-nr22). This extension is subject to change, and recommended for early adopters who understand that data remapping may be required as things evolve.", + "subject": "", + "fields": [ + { + "name": "https://w3id.org/mixs/0001107", + "title": "samp_name", + "required": false, + "description": "Sample Name is a name that you choose for the sample. It can have any format, but we suggest that you make it concise, unique and consistent within your lab, and as informative as possible. Every Sample Name from a single Submitter must be unique.", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0001107", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "title": "occurrenceID", + "required": false, + "description": "The identifier of the occurrence the DNA sequence relates to. If not applicable, it should be left empty.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "group": "" + }, + { + "name": "https://w3id.org/mixs/0000092", + "title": "project_name", + "required": false, + "description": "Name of the project within which the sequencing was organized", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000092", + "group": "investigation" + }, + { + "name": "https://w3id.org/mixs/0000008", + "title": "experimental_factor", + "required": false, + "description": "Experimental factors are essentially the variable aspects of an experiment design which can be used to describe an experiment, or set of experiments, in an increasingly detailed manner. This field accepts ontology terms from Experimental Factor Ontology (EFO) and/or Ontology for Biomedical Investigations (OBI). For a browser of EFO (v 2.95) terms, please see http://purl.bioontology.org/ontology/EFO; for a browser of OBI (v 2018-02-12) terms please see http://purl.bioontology.org/ontology/OBI", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000008", + "group": "investigation" + }, + { + "name": "https://w3id.org/mixs/0001320", + "title": "samp_taxon_id", + "required": false, + "description": "NCBI taxon id of the sample. Maybe be a single taxon or mixed taxa sample. Use \"synthetic metagenome\" for mock community/positive controls, or \"blank sample\" for negative controls", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0001320", + "group": "investigation" + }, + { + "name": "https://w3id.org/mixs/0001321", + "title": "neg_cont_type", + "required": false, + "description": "The substance or equipment used as a negative control in an investigation", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0001321", + "group": "investigation" + }, + { + "name": "https://w3id.org/mixs/0001322", + "title": "pos_cont_type", + "required": false, + "description": "The substance, mixture, product, or apparatus used to verify that a process which is part of an investigation delivers a true positive", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0001322", + "group": "investigation" + }, + { + "name": "https://w3id.org/mixs/0000012", + "title": "env_broad_scale", + "required": false, + "description": "In this field, report which major environmental system your sample or specimen came from. The systems identified should have a coarse spatial grain, to provide the general environmental context of where the sampling was done (e.g. were you in the desert or a rainforest?). We recommend using subclasses of ENVO’s biome class: http://purl.obolibrary.org/obo/ENVO_00000428. Format (one term): termLabel [termID], Format (multiple terms): termLabel [termID]|termLabel [termID]|termLabel [termID]. Example: Annotating a water sample from the photic zone in middle of the Atlantic Ocean, consider: oceanic epipelagic zone biome [ENVO:01000033]. Example: Annotating a sample from the Amazon rainforest consider: tropical moist broadleaf forest biome [ENVO:01000228]. If needed, request new terms on the ENVO tracker, identified here: http://www.obofoundry.org/ontology/envo.html", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000012", + "group": "environment" + }, + { + "name": "https://w3id.org/mixs/0000013", + "title": "env_local_scale", + "required": false, + "description": "In this field, report the entity or entities which are in your sample or specimen’s local vicinity and which you believe have significant causal influences on your sample or specimen. Please use terms that are present in ENVO and which are of smaller spatial grain than your entry for env_broad_scale. Format (one term): termLabel [termID]; Format (multiple terms): termLabel [termID]|termLabel [termID]|termLabel [termID]. Example: Annotating a pooled sample taken from various vegetation layers in a forest consider: canopy [ENVO:00000047]|herb and fern layer [ENVO:01000337]|litter layer [ENVO:01000338]|understory [01000335]|shrub layer [ENVO:01000336]. If needed, request new terms on the ENVO tracker, identified here: http://www.obofoundry.org/ontology/envo.html", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000013", + "group": "environment" + }, + { + "name": "https://w3id.org/mixs/0000014", + "title": "env_medium", + "required": false, + "description": "In this field, report which environmental material or materials (pipe separated) immediately surrounded your sample or specimen prior to sampling, using one or more subclasses of ENVO’s environmental material class: http://purl.obolibrary.org/obo/ENVO_00010483. Format (one term): termLabel [termID]; Format (multiple terms): termLabel [termID]|termLabel [termID]|termLabel [termID]. Example: Annotating a fish swimming in the upper 100 m of the Atlantic Ocean, consider: ocean water [ENVO:00002151]. Example: Annotating a duck on a pond consider: pond water [ENVO:00002228]|air ENVO_00002005. If needed, request new terms on the ENVO tracker, identified here: http://www.obofoundry.org/ontology/envo.html", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000014", + "group": "environment" + }, + { + "name": "https://w3id.org/mixs/0000020", + "title": "subspecf_gen_lin", + "required": false, + "description": "This should provide further information about the genetic distinctness of the sequenced organism by recording additional information e.g. serovar, serotype, biotype, ecotype, or any relevant genetic typing schemes like Group I plasmid. It can also contain alternative taxonomic information. It should contain both the lineage name, and the lineage rank, i.e. biovar:abc123", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000020", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000021", + "title": "ploidy", + "required": false, + "description": "The ploidy level of the genome (e.g. allopolyploid, haploid, diploid, triploid, tetraploid). It has implications for the downstream study of duplicated gene and regions of the genomes (and perhaps for difficulties in assembly). For terms, please select terms listed under class ploidy (PATO:001374) of Phenotypic Quality Ontology (PATO), and for a browser of PATO (v 2018-03-27) please refer to http://purl.bioontology.org/ontology/PATO", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000021", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000022", + "title": "num_replicons", + "required": false, + "description": "Reports the number of replicons in a nuclear genome of eukaryotes, in the genome of a bacterium or archaea or the number of segments in a segmented virus. Always applied to the haploid chromosome count of a eukaryote", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000022", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000023", + "title": "extrachrom_elements", + "required": false, + "description": "Do plasmids exist of significant phenotypic consequence (e.g. ones that determine virulence or antibiotic resistance). Megaplasmids? Other plasmids (borrelia has 15+ plasmids)", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000023", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000024", + "title": "estimated_size", + "required": false, + "description": "The estimated size of the genome prior to sequencing. Of particular importance in the sequencing of (eukaryotic) genome which could remain in draft form for a long or unspecified period.", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000024", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000025", + "title": "ref_biomaterial", + "required": false, + "description": "Primary publication if isolated before genome publication; otherwise, primary genome report", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000025", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000026", + "title": "source_mat_id", + "required": false, + "description": "A unique identifier assigned to a material sample (as defined by http://rs.tdwg.org/dwc/terms/materialSampleID, and as opposed to a particular digital record of a material sample) used for extracting nucleic acids, and subsequent sequencing. The identifier can refer either to the original material collected or to any derived sub-samples. The INSDC qualifiers /specimen_voucher, /bio_material, or /culture_collection may or may not share the same value as the source_mat_id field. For instance, the /specimen_voucher qualifier and source_mat_id may both contain ´UAM:Herps:14´ , referring to both the specimen voucher and sampled tissue with the same identifier. However, the /culture_collection qualifier may refer to a value from an initial culture (e.g. ATCC:11775) while source_mat_id would refer to an identifier from some derived culture from which the nucleic acids were extracted (e.g. xatc123 or ark:/2154/R2).", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000026", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000027", + "title": "pathogenicity", + "required": false, + "description": "To what is the entity pathogenic", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000027", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000028", + "title": "biotic_relationship", + "required": false, + "description": "Description of relationship(s) between the subject organism and other organism(s) it is associated with. E.g., parasite on species X; mutualist with species Y. The target organism is the subject of the relationship, and the other organism(s) is the object", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000028", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000029", + "title": "specific_host", + "required": false, + "description": "If there is a host involved, please provide its taxid (or environmental if not actually isolated from the dead or alive host - i.e. a pathogen could be isolated from a swipe of a bench etc) and report whether it is a laboratory or natural host)", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000029", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000030", + "title": "host_spec_range", + "required": false, + "description": "The NCBI taxonomy identifier of the specific host if it is known", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000030", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000031", + "title": "host_disease_stat", + "required": false, + "description": "List of diseases with which the host has been diagnosed; can include multiple diagnoses. The value of the field depends on host; for humans the terms should be chosen from the DO (Human Disease Ontology) at https://www.disease-ontology.org, non-human host diseases are free text", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000031", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000032", + "title": "trophic_level", + "required": false, + "description": "Trophic levels are the feeding position in a food chain. Microbes can be a range of producers (e.g. chemolithotroph)", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000032", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000033", + "title": "propagation", + "required": false, + "description": "This field is specific to different taxa. For phages: lytic/lysogenic, for plasmids: incompatibility group, for eukaryotes: sexual/asexual (Note: there is the strong opinion to name phage propagation obligately lytic or temperate, therefore we also give this choice", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000033", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000034", + "title": "encoded_traits", + "required": false, + "description": "Should include key traits like antibiotic resistance or xenobiotic degradation phenotypes for plasmids, converting genes for phage", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000034", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000015", + "title": "rel_to_oxygen", + "required": false, + "description": "Is this organism an aerobe, anaerobe? Please note that aerobic and anaerobic are valid descriptors for microbial environments", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000015", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000003", + "title": "isol_growth_condt", + "required": false, + "description": "Publication reference in the form of pubmed ID (pmid), digital object identifier (doi) or url for isolation and growth condition specifications of the organism/material", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000003", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000002", + "title": "samp_collec_device", + "required": false, + "description": "The device used to collect an environmental sample. This field accepts terms listed under environmental sampling device (http://purl.obolibrary.org/obo/ENVO). This field also accepts terms listed under specimen collection device (http://purl.obolibrary.org/obo/GENEPIO_0002094).", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000002", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0001225", + "title": "samp_collec_method", + "required": false, + "description": "The method employed for collecting the sample", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0001225", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000016", + "title": "samp_mat_process", + "required": false, + "description": "Any processing applied to the sample during or after retrieving the sample from environment. This field accepts OBI, for a browser of OBI (v 2018-02-12) terms please see http://purl.bioontology.org/ontology/OBI", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000016", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000017", + "title": "size_frac", + "required": false, + "description": "Filtering pore size used in sample preparation", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000017", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000001", + "title": "samp_size", + "required": false, + "description": "Amount or size of sample (volume, mass or area) that was collected", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000001", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000111", + "title": "samp_vol_we_dna_ext", + "required": false, + "description": "Volume (ml) or mass (g) of total collected sample processed for DNA extraction. Note: total sample collected should be entered under the term Sample Size (MIXS:0000001).", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000111", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000035", + "title": "source_uvig", + "required": false, + "description": "Type of dataset from which the UViG was obtained", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000035", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000036", + "title": "virus_enrich_appr", + "required": false, + "description": "List of approaches used to enrich the sample for viruses, if any", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000036", + "group": "nucleic acid sequence source" + }, + { + "name": "https://w3id.org/mixs/0000037", + "title": "nucl_acid_ext", + "required": false, + "description": "A link to a literature reference, electronic resource or a standard operating procedure (SOP), that describes the material separation to recover the nucleic acid fraction from a sample", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000037", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000038", + "title": "nucl_acid_amp", + "required": false, + "description": "A link to a literature reference, electronic resource or a standard operating procedure (SOP), that describes the enzymatic amplification (PCR, TMA, NASBA) of specific nucleic acids", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000038", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000039", + "title": "lib_size", + "required": false, + "description": "Total number of clones in the library prepared for the project", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000039", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000040", + "title": "lib_reads_seqd", + "required": false, + "description": "Total number of clones sequenced from the library", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000040", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000041", + "title": "lib_layout", + "required": false, + "description": "Specify whether to expect single, paired, or other configuration of reads", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000041", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000042", + "title": "lib_vector", + "required": false, + "description": "Cloning vector type(s) used in construction of libraries", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000042", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000043", + "title": "lib_screen", + "required": false, + "description": "Specific enrichment or screening methods applied before and/or after creating libraries", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000043", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000044", + "title": "target_gene", + "required": false, + "description": "Targeted gene or locus name for marker gene studies", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000044", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000045", + "title": "target_subfragment", + "required": false, + "description": "Name of subfragment of a gene or locus. Important to e.g. identify special regions on marker genes like V6 on 16S rRNA", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000045", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000046", + "title": "pcr_primers", + "required": false, + "description": "PCR primers that were used to amplify the sequence of the targeted gene, locus or subfragment. This field should contain all the primers used for a single PCR reaction if multiple forward or reverse primers are present in a single PCR reaction. The primer sequence should be reported in uppercase letters", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000046", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000047", + "title": "mid", + "required": false, + "description": "Molecular barcodes, called Multiplex Identifiers (MIDs), that are used to specifically tag unique samples in a sequencing run. Sequence should be reported in uppercase letters", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000047", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000048", + "title": "adapters", + "required": false, + "description": "Adapters provide priming sequences for both amplification and sequencing of the sample-library fragments. Both adapters should be reported; in uppercase letters", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000048", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000049", + "title": "pcr_cond", + "required": false, + "description": "Description of reaction conditions and components of PCR in the form of ´initial denaturation:94degC_1.5min; annealing=...´", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000049", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000050", + "title": "seq_meth", + "required": false, + "description": "Sequencing method used; e.g. Sanger, ABI-solid", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000050", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000051", + "title": "seq_quality_check", + "required": false, + "description": "Indicate if the sequence has been called by automatic systems (none) or undergone a manual editing procedure (e.g. by inspecting the raw data or chromatograms). Applied only for sequences that are not submitted to SRA,ENA or DRA", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000051", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000052", + "title": "chimera_check", + "required": false, + "description": "A chimeric sequence, or chimera for short, is a sequence comprised of two or more phylogenetically distinct parent sequences. Chimeras are usually PCR artifacts thought to occur when a prematurely terminated amplicon reanneals to a foreign DNA strand and is copied to completion in the following PCR cycles. The point at which the chimeric sequence changes from one parent to the next is called the breakpoint or conversion point", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000052", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000053", + "title": "tax_ident", + "required": false, + "description": "The phylogenetic marker(s) used to assign an organism name to the SAG or MAG", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000053", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000056", + "title": "assembly_qual", + "required": false, + "description": "The assembly quality category is based on sets of criteria outlined for each assembly quality category. For MISAG/MIMAG; Finished: Single, validated, contiguous sequence per replicon without gaps or ambiguities with a consensus error rate equivalent to Q50 or better. High Quality Draft:Multiple fragments where gaps span repetitive regions. Presence of the 23S, 16S and 5S rRNA genes and at least 18 tRNAs. Medium Quality Draft:Many fragments with little to no review of assembly other than reporting of standard assembly statistics. Low Quality Draft:Many fragments with little to no review of assembly other than reporting of standard assembly statistics. Assembly statistics include, but are not limited to total assembly size, number of contigs, contig N50/L50, and maximum contig length. For MIUVIG; Finished: Single, validated, contiguous sequence per replicon without gaps or ambiguities, with extensive manual review and editing to annotate putative gene functions and transcriptional units. High-quality draft genome: One or multiple fragments, totaling ≥ 90% of the expected genome or replicon sequence or predicted complete. Genome fragment(s): One or multiple fragments, totalling < 90% of the expected genome or replicon sequence, or for which no genome size could be estimated", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000056", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000057", + "title": "assembly_name", + "required": false, + "description": "Name/version of the assembly provided by the submitter that is used in the genome browsers and in the community", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000057", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000058", + "title": "assembly_software", + "required": false, + "description": "Tool(s) used for assembly, including version number and parameters", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000058", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000059", + "title": "annot", + "required": false, + "description": "Tool used for annotation, or for cases where annotation was provided by a community jamboree or model organism database rather than by a specific submitter", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000059", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000060", + "title": "number_contig", + "required": false, + "description": "Total number of contigs in the cleaned/submitted assembly that makes up a given genome, SAG, MAG, or UViG", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000060", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000061", + "title": "feat_pred", + "required": false, + "description": "Method used to predict UViGs features such as ORFs, integration site, etc.", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000061", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000062", + "title": "ref_db", + "required": false, + "description": "List of database(s) used for ORF annotation, along with version number and reference to website or publication", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000062", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000063", + "title": "sim_search_meth", + "required": false, + "description": "Tool used to compare ORFs with database, along with version and cutoffs used", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000063", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000064", + "title": "tax_class", + "required": false, + "description": "Method used for taxonomic classification, along with reference database used, classification rank, and thresholds used to classify new genomes", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000064", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000065", + "title": "_16s_recover", + "required": false, + "description": "Can a 16S gene be recovered from the submitted SAG or MAG?", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000065", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000066", + "title": "_16s_recover_software", + "required": false, + "description": "Tools used for 16S rRNA gene extraction", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000066", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000067", + "title": "trnas", + "required": false, + "description": "The total number of tRNAs identified from the SAG or MAG", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000067", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000068", + "title": "trna_ext_software", + "required": false, + "description": "Tools used for tRNA identification", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000068", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000069", + "title": "compl_score", + "required": false, + "description": "Completeness score is typically based on either the fraction of markers found as compared to a database or the percent of a genome found as compared to a closely related reference genome. High Quality Draft: >90%, Medium Quality Draft: >50%, and Low Quality Draft: < 50% should have the indicated completeness scores", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000069", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000070", + "title": "compl_software", + "required": false, + "description": "Tools used for completion estimate, i.e. checkm, anvi´o, busco", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000070", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000071", + "title": "compl_appr", + "required": false, + "description": "The approach used to determine the completeness of a given SAG or MAG, which would typically make use of a set of conserved marker genes or a closely related reference genome. For UViG completeness, include reference genome or group used, and contig feature suggesting a complete genome", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000071", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000072", + "title": "contam_score", + "required": false, + "description": "The contamination score is based on the fraction of single-copy genes that are observed more than once in a query genome. The following scores are acceptable for; High Quality Draft: < 5%, Medium Quality Draft: < 10%, Low Quality Draft: < 10%. Contamination must be below 5% for a SAG or MAG to be deposited into any of the public databases", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000072", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000005", + "title": "contam_screen_input", + "required": false, + "description": "The type of sequence data used as input", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000005", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000073", + "title": "contam_screen_param", + "required": false, + "description": "Specific parameters used in the decontamination sofware, such as reference database, coverage, and kmers. Combinations of these parameters may also be used, i.e. kmer and coverage, or reference database and kmer", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000073", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000074", + "title": "decontam_software", + "required": false, + "description": "Tool(s) used in contamination screening", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000074", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000075", + "title": "sort_tech", + "required": false, + "description": "Method used to sort/isolate cells or particles of interest", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000075", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000076", + "title": "single_cell_lysis_appr", + "required": false, + "description": "Method used to free DNA from interior of the cell(s) or particle(s)", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000076", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000054", + "title": "single_cell_lysis_prot", + "required": false, + "description": "Name of the kit or standard protocol used for cell(s) or particle(s) lysis", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000054", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000055", + "title": "wga_amp_appr", + "required": false, + "description": "Method used to amplify genomic DNA in preparation for sequencing", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000055", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000006", + "title": "wga_amp_kit", + "required": false, + "description": "Kit used to amplify genomic DNA in preparation for sequencing", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000006", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000077", + "title": "bin_param", + "required": false, + "description": "The parameters that have been applied during the extraction of genomes from metagenomic datasets", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000077", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000078", + "title": "bin_software", + "required": false, + "description": "Tool(s) used for the extraction of genomes from metagenomic datasets", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000078", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000079", + "title": "reassembly_bin", + "required": false, + "description": "Has an assembly been performed on a genome bin extracted from a metagenomic assembly?", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000079", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000080", + "title": "mag_cov_software", + "required": false, + "description": "Tool(s) used to determine the genome coverage if coverage is used as a binning parameter in the extraction of genomes from metagenomic datasets", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000080", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000081", + "title": "vir_ident_software", + "required": false, + "description": "Tool(s) used for the identification of UViG as a viral genome, software or protocol name including version number, parameters, and cutoffs used", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000081", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000082", + "title": "pred_genome_type", + "required": false, + "description": "Type of genome predicted for the UViG", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000082", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000083", + "title": "pred_genome_struc", + "required": false, + "description": "Expected structure of the viral genome", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000083", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000084", + "title": "detec_type", + "required": false, + "description": "Type of UViG detection", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000084", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000085", + "title": "otu_class_appr", + "required": false, + "description": "Cutoffs and approach used when clustering new UViGs in \"species-level\" OTUs. Note that results from standard 95% ANI / 85% AF clustering should be provided alongside OTUS defined from another set of thresholds, even if the latter are the ones primarily used during the analysis", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000085", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000086", + "title": "otu_seq_comp_appr", + "required": false, + "description": "Tool and thresholds used to compare sequences when computing \"species-level\" OTUs", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000086", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000087", + "title": "otu_db", + "required": false, + "description": "Reference database (i.e. sequences not generated as part of the current study) used to cluster new genomes in \"species-level\" OTUs, if any", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000087", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000088", + "title": "host_pred_appr", + "required": false, + "description": "Tool or approach used for host prediction", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000088", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000089", + "title": "host_pred_est_acc", + "required": false, + "description": "For each tool or approach used for host prediction, estimated false discovery rates should be included, either computed de novo or from the literature", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000089", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000091", + "title": "url", + "required": false, + "description": "", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000091", + "group": "sequencing" + }, + { + "name": "https://w3id.org/mixs/0000090", + "title": "sop", + "required": false, + "description": "Standard operating procedures used in assembly and/or annotation of genomes, metagenomes or environmental sequences", + "vocabulary": "https://w3id.org/mixs/", + "iri": "https://w3id.org/mixs/0000090", + "group": "sequencing" + }, + { + "name": "http://rs.gbif.org/terms/pcr_primer_forward", + "title": "pcr_primer_forward", + "required": false, + "description": "Forward PCR primer that were used to amplify the sequence of the targeted gene, locus or subfragment. If multiple multiple forward or reverse primers are present in a single PCR reaction, there should be a full row for each of these linked to the same DWC Occurrence. The primer sequence should be reported in uppercase letters", + "vocabulary": "http://rs.gbif.org/terms/", + "iri": "http://rs.gbif.org/terms/pcr_primer_forward", + "group": "sequencing" + }, + { + "name": "http://rs.gbif.org/terms/pcr_primer_reverse", + "title": "pcr_primer_reverse", + "required": false, + "description": "Reverse PCR primer that were used to amplify the sequence of the targeted gene, locus or subfragment. If multiple multiple forward or reverse primers are present in a single PCR reaction, there should be a full row for each of these linked to the same DWC Occurrence. The primer sequence should be reported in uppercase letters", + "vocabulary": "http://rs.gbif.org/terms/", + "iri": "http://rs.gbif.org/terms/pcr_primer_reverse", + "group": "sequencing" + }, + { + "name": "http://rs.gbif.org/terms/pcr_primer_name_forward", + "title": "pcr_primer_name_forward", + "required": false, + "description": "Name of the forward PCR primer that were used to amplify the sequence of the targeted gene, locus or subfragment. If multiple multiple forward or reverse primers are present in a single PCR reaction, there should be a full row for each of these linked to the same DWC Occurrence.", + "vocabulary": "http://rs.gbif.org/terms/", + "iri": "http://rs.gbif.org/terms/pcr_primer_name_forward", + "group": "sequencing" + }, + { + "name": "http://rs.gbif.org/terms/pcr_primer_name_reverse", + "title": "pcr_primer_name_reverse", + "required": false, + "description": "Name of the reverse PCR primer that were used to amplify the sequence of the targeted gene, locus or subfragment. If multiple multiple forward or reverse primers are present in a single PCR reaction, there should be a full row for each of these linked to the same DWC Occurrence.", + "vocabulary": "http://rs.gbif.org/terms/", + "iri": "http://rs.gbif.org/terms/pcr_primer_name_reverse", + "group": "sequencing" + }, + { + "name": "http://rs.gbif.org/terms/pcr_primer_reference", + "title": "pcr_primer_reference", + "required": false, + "description": "Reference for the PCR primers that were used to amplify the sequence of the targeted gene, locus or subfragment.", + "vocabulary": "http://rs.gbif.org/terms/", + "iri": "http://rs.gbif.org/terms/pcr_primer_reference", + "group": "sequencing" + }, + { + "name": "http://rs.gbif.org/terms/dna_sequence", + "title": "DNA_sequence", + "required": false, + "description": "The DNA sequence", + "vocabulary": "http://rs.gbif.org/terms/", + "iri": "http://rs.gbif.org/terms/dna_sequence", + "group": "sequencing" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/concentration", + "title": "concentration", + "required": false, + "description": "Concentration of DNA (weight ng/volume µl)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/concentration", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/concentrationUnit", + "title": "concentrationUnit", + "required": false, + "description": "Unit used for concentration measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/concentrationUnit", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/methodDeterminationConcentrationAndRatios", + "title": "methodDeterminationConcentrationAndRatios", + "required": false, + "description": "Description of method used for concentration measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/methodDeterminationConcentrationAndRatios", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_230", + "title": "ratioOfAbsorbance260_230", + "required": false, + "description": "Ratio of absorbance at 260 nm and 230 nm assessing DNA purity (mostly secondary measure, indicates mainly EDTA, carbohydrates, phenol), (DNA samples only).", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_230", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_280", + "title": "ratioOfAbsorbance260_280", + "required": false, + "description": "Ratio of absorbance at 280 nm and 230 nm assessing DNA purity (mostly secondary measure, indicates mainly EDTA, carbohydrates, phenol), (DNA samples only).", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_280", + "group": "MaterialSample" + }, + { + "name": "http://rs.gbif.org/terms/miqe/annealingTemp", + "title": "annealingTemp", + "required": false, + "description": "The reaction temperature during the annealing phase of PCR.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/annealingTemp", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/annealingTempUnit", + "title": "annealingTempUnit", + "required": false, + "description": "Measurement unit of the reaction temperature during the annealing phase of PCR.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/annealingTempUnit", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/probeReporter", + "title": "probeReporter", + "required": false, + "description": "Type of fluorophore (reporter) used. Probe anneals within amplified target DNA. Polymerase activity degrades the probe that has annealed to the template, and the probe releases the fluorophore from it and breaks the proximity to the quencher, thus allowing fluorescence of the fluorophore.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/probeReporter", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/probeQuencher", + "title": "probeQuencher", + "required": false, + "description": "Type of quencher used. The quencher molecule quenches the fluorescence emitted by the fluorophore when excited by the cycler’s light source As long as fluorophore and the quencher are in proximity, quenching inhibits any fluorescence signals.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/probeQuencher", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/ampliconSize", + "title": "ampliconSize", + "required": false, + "description": "The length of the amplicon in basepairs.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/ampliconSize", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/thresholdQuantificationCycle", + "title": "thresholdQuantificationCycle", + "required": false, + "description": "Threshold for change in fluorescence signal between cycles", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/thresholdQuantificationCycle", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/baselineValue", + "title": "baselineValue", + "required": false, + "description": "The number of cycles when fluorescence signal from the target amplification is below background fluorescence not originated from the real target amplification.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/baselineValue", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/quantificationCycle", + "title": "quantificationCycle", + "required": false, + "description": "The number of cycles required for the fluorescent signal to cross a given value threshold above the baseline. Quantification cycle (Cq), threshold cycle (Ct), crossing point (Cp), and take-off point (TOP) refer to the same value from the real-time instrument. Use of quantification cycle (Cq), is preferable according to the RDML (Real-Time PCR Data Markup Language) data standard (http://www.rdml.org).", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/quantificationCycle", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/automaticThresholdQuantificationCycle", + "title": "automaticThresholdQuantificationCycle", + "required": false, + "description": "Whether the threshold was set by the instrument or manually.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/automaticThresholdQuantificationCycle", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/automaticBaselineValue", + "title": "automaticBaselineValue", + "required": false, + "description": "Whether the baseline value was set by the instrument or manually.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/automaticBaselineValue", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/contaminationAssessment", + "title": "contaminationAssessment", + "required": false, + "description": "Whether DNA or RNA contamination assessment was done or not.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/contaminationAssessment", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/partitionVolume", + "title": "partitionVolume", + "required": false, + "description": "An accurate estimation of partition volume. The sum of the partitions multiplied by the partition volume will enable the total volume of the reaction to be calculated.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/partitionVolume", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/partitionVolumeUnit", + "title": "partitionVolumeUnit", + "required": false, + "description": "Unit used for partition volume", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/partitionVolumeUnit", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/estimatedNumberOfCopies", + "title": "estimatedNumberOfCopies", + "required": false, + "description": "Number of target molecules per µl. Mean copies per partition (?) can be calculated using the number of partitions (n) and the estimated copy number in the total volume of all partitions (m) with a formula ?=m/n.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/estimatedNumberOfCopies", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/amplificationReactionVolume", + "title": "amplificationReactionVolume", + "required": false, + "description": "PCR reaction volume", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/amplificationReactionVolume", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/amplificationReactionVolumeUnit", + "title": "amplificationReactionVolumeUnit", + "required": false, + "description": "Unit used for PCR reaction volume. Many of the instruments require preparation of a much larger initial sample volume than is actually analyzed.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/amplificationReactionVolumeUnit", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/pcr_analysis_software", + "title": "pcr_analysis_software", + "required": false, + "description": "The program used to analyse the d(d)PCR runs.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/pcr_analysis_software", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/experimentalVariance", + "title": "experimentalVariance", + "required": false, + "description": "Multiple biological replicates are encouraged to assess total experimental variation. When single dPCR experiments are performed, a minimal estimate of variance due to counting error alone must be calculated from the binomial (or suitable equivalent) distribution.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/experimentalVariance", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/pcr_primer_lod", + "title": "pcr_primer_lod", + "required": false, + "description": "The assay’s ability to detect the target at low levels.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/pcr_primer_lod", + "group": "nucleic acid sequence source" + }, + { + "name": "http://rs.gbif.org/terms/miqe/pcr_primer_loq", + "title": "pcr_primer_loq", + "required": false, + "description": "The assay’s ability to quantify copy number at low levels.", + "vocabulary": "http://rs.gbif.org/terms/miqe/", + "iri": "http://rs.gbif.org/terms/miqe/pcr_primer_loq", + "group": "nucleic acid sequence source" + } + ] + }, + { + "name": "ChronometricAge", + "title": "ChronometricAge", + "identifier": "http://rs.tdwg.org/chrono/terms/ChronometricAge", + "url": "http://rs.gbif.org/extension/dwc/ChronometricAge_2024-03-11.xml", + "rowType": "http://rs.tdwg.org/chrono/terms/ChronometricAge", + "namespace": "http://rs.tdwg.org/chrono/terms/", + "issued": "2024-03-11", + "description": "Extension to Occurrence Core to capture chronometric age information to be used only in cases where the collecting event is not contemporaneous with the time when the dwc:Organism was alive in its context. Collection event information can be reported in dwc:eventDate. See also the normative term list document at https://chrono.tdwg.org/list/ and the human-friendly Quick Reference Guide at https://chrono.tdwg.org/terms/.", + "subject": "dwc:Occurrence", + "fields": [ + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeID", + "title": "chronometricAgeID", + "required": false, + "description": "An identifier for the set of information associated with a ChronometricAge.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/verbatimChronometricAge", + "title": "verbatimChronometricAge", + "required": false, + "description": "The verbatim age for a specimen, whether reported by a dating assay, associated references, or legacy information.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/verbatimChronometricAge", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeProtocol", + "title": "chronometricAgeProtocol", + "required": false, + "description": "A description of or reference to the methods used to determine the chronometric age.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeProtocol", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/uncalibratedChronometricAge", + "title": "uncalibratedChronometricAge", + "required": false, + "description": "The output of a dating assay before it is calibrated into an age using a specific conversion protocol.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/uncalibratedChronometricAge", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeConversionProtocol", + "title": "chronometricAgeConversionProtocol", + "required": false, + "description": "The method used for converting the uncalibratedChronometricAge into a chronometric age in years, as captured in the earliestChronometricAge, earliestChronometricAgeReferenceSystem, latestChronometricAge, and latestChronometricAgeReferenceSystem fields.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeConversionProtocol", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/earliestChronometricAge", + "title": "earliestChronometricAge", + "required": false, + "description": "The maximum/earliest/oldest possible age of a specimen as determined by a dating method.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/earliestChronometricAge", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/earliestChronometricAgeReferenceSystem", + "title": "earliestChronometricAgeReferenceSystem", + "required": false, + "description": "The reference system associated with the earliestChronometricAge.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/earliestChronometricAgeReferenceSystem", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/latestChronometricAge", + "title": "latestChronometricAge", + "required": false, + "description": "The minimum/latest/youngest possible age of a specimen as determined by a dating method.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/latestChronometricAge", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/latestChronometricAgeReferenceSystem", + "title": "latestChronometricAgeReferenceSystem", + "required": false, + "description": "The reference system associated with the latestChronometricAge.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/latestChronometricAgeReferenceSystem", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeUncertaintyInYears", + "title": "chronometricAgeUncertaintyInYears", + "required": false, + "description": "The temporal uncertainty of the earliestChronometricAge and latestChronometicAge in years.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeUncertaintyInYears", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeUncertaintyMethod", + "title": "chronometricAgeUncertaintyMethod", + "required": false, + "description": "The method used to generate the value of chronometricAgeUncertaintyInYears.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeUncertaintyMethod", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/materialDated", + "title": "materialDated", + "required": false, + "description": "A description of the material on which the chronometricAgeProtocol was actually performed, if known.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/materialDated", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/materialDatedID", + "title": "materialDatedID", + "required": false, + "description": "An identifier for the MaterialSample on which the chronometricAgeProtocol was performed, if applicable.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/materialDatedID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/materialDatedRelationship", + "title": "materialDatedRelationship", + "required": false, + "description": "The relationship of the materialDated to the subject of the ChronometricAge record, from which the ChronometricAge of the subject is inferred.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/materialDatedRelationship", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeDeterminedBy", + "title": "chronometricAgeDeterminedBy", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the ChronometricAge.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeDeterminedBy", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeDeterminedDate", + "title": "chronometricAgeDeterminedDate", + "required": false, + "description": "The date on which the ChronometricAge was determined.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeDeterminedDate", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeReferences", + "title": "chronometricAgeReferences", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, bibliographic reference, global unique identifier, URI) of literature associated with the ChronometricAge.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeReferences", + "group": "" + }, + { + "name": "http://rs.tdwg.org/chrono/terms/chronometricAgeRemarks", + "title": "chronometricAgeRemarks", + "required": false, + "description": "Notes or comments about the ChronometricAge.", + "vocabulary": "http://rs.tdwg.org/chrono/terms/", + "iri": "http://rs.tdwg.org/chrono/terms/chronometricAgeRemarks", + "group": "" + } + ] + }, + { + "name": "ExtendedMeasurementOrFact", + "title": "Extended Measurement Or Facts", + "identifier": "http://rs.iobis.org/obis/terms/ExtendedMeasurementOrFact", + "url": "http://rs.gbif.org/extension/obis/extended_measurement_or_fact_2023-08-28.xml", + "rowType": "http://rs.iobis.org/obis/terms/ExtendedMeasurementOrFact", + "namespace": "http://rs.iobis.org/obis/terms/", + "issued": "2023-08-28", + "description": "Support for generic measurements or facts, extended version linking to occurrences.\n This extension (eMoF) was developed to be used in combination with the Event Core, but is also compatible with other cores. When used with Event Core it allows to create an additional link between the eMoF and the occurrence extension. The eMoF can store measurements or facts related to a biological occurrence, environmental measurements or facts and sampling method attributes. This extension also provides the option to provide identifiers to reference a vocabulary for the measurementType, measurementValue and measurementUnit fields.", + "subject": "", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/measurementID", + "title": "measurementID", + "required": false, + "description": "An identifier for the MeasurementOrFact (information pertaining to measurements, facts, characteristics, or assertions). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "title": "occurrenceID", + "required": false, + "description": "The identifier of the occurrence the measurement or fact refers to. If not applicable, it should be left empty.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementType", + "title": "measurementType", + "required": false, + "description": "The nature of the measurement, fact, characteristic, or assertion. Recommended best practice is to use a controlled vocabulary.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementType", + "group": "" + }, + { + "name": "http://rs.iobis.org/obis/terms/measurementTypeID", + "title": "measurementTypeID", + "required": false, + "description": "An identifier for the measurementType (global unique identifier, URI). The identifier should reference the measurementType in a vocabulary.", + "vocabulary": "http://rs.iobis.org/obis/terms/", + "iri": "http://rs.iobis.org/obis/terms/measurementTypeID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementValue", + "title": "measurementValue", + "required": false, + "description": "The value of the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementValue", + "group": "" + }, + { + "name": "http://rs.iobis.org/obis/terms/measurementValueID", + "title": "measurementValueID", + "required": false, + "description": "An identifier for facts stored in the column measurementValue (global unique identifier, URI). This identifier can reference a controlled vocabulary (e.g. for sampling instrument names, methodologies, life stages) or reference a methodology paper with a DOI. When the measurementValue refers to a value and not to a fact, the measurementvalueID has no meaning and should remain empty.", + "vocabulary": "http://rs.iobis.org/obis/terms/", + "iri": "http://rs.iobis.org/obis/terms/measurementValueID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementAccuracy", + "title": "measurementAccuracy", + "required": false, + "description": "The description of the potential error associated with the measurementValue.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementAccuracy", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementUnit", + "title": "measurementUnit", + "required": false, + "description": "The units associated with the measurementValue. Recommended best practice is to use the International System of Units (SI).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementUnit", + "group": "" + }, + { + "name": "http://rs.iobis.org/obis/terms/measurementUnitID", + "title": "measurementUnitID", + "required": false, + "description": "An identifier for the measurementUnit (global unique identifier, URI). The identifier should reference the measurementUnit in a vocabulary.", + "vocabulary": "http://rs.iobis.org/obis/terms/", + "iri": "http://rs.iobis.org/obis/terms/measurementUnitID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementDeterminedDate", + "title": "measurementDeterminedDate", + "required": false, + "description": "The date on which the MeasurementOrFact was made. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementDeterminedDate", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementDeterminedBy", + "title": "measurementDeterminedBy", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the value of the MeasurementOrFact.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementDeterminedBy", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "title": "measurementMethod", + "required": false, + "description": "A description of or reference to (publication, URI) the method or protocol used to determine the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementRemarks", + "title": "measurementRemarks", + "required": false, + "description": "Comments or notes accompanying the MeasurementOrFact.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementRemarks", + "group": "" + } + ] + }, + { + "name": "Permit", + "title": "GGBN Permit Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/Permit", + "url": "http://rs.gbif.org/extension/ggbn/permit_2022-08-08.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/Permit", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2022-08-08", + "description": "Support for all kinds of permits as an extension for Material Sample core sample data in Darwin Core. Intended to be a one to many relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/permitType", + "title": "permitType", + "required": true, + "description": "A permit is a document that allows someone to take an action that otherwise would not be allowed. Mandatory element", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/permitType", + "group": "Permit" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/permitStatus", + "title": "permitStatus", + "required": true, + "description": "Information about the presence, absence or other basic status of permits associated with the sample(s). Mandatory element", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/permitStatus", + "group": "Permit" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/permitStatusQualifier", + "title": "permitStatusQualifier", + "required": false, + "description": "Description of why a certain permit was not required or why Permit Status is unknown", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/permitStatusQualifier", + "group": "Permit" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/permitURI", + "title": "permitURI", + "required": false, + "description": "A reference to the permit related to the gathering or shipping event", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/permitURI", + "group": "Permit" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/permitText", + "title": "permitText", + "required": false, + "description": "The text of a permit related to the gathering/shipping or further details", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/permitText", + "group": "Permit" + } + ] + }, + { + "name": "Distribution", + "title": "Species Distribution", + "identifier": "http://rs.gbif.org/terms/1.0/Distribution", + "url": "http://rs.gbif.org/extension/gbif/1.0/distribution_2022-02-02.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Distribution", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2022-02-02", + "description": "Geographic distribution of a taxon. Replaces version issued 2020-07-15 with establishmentMeans, degreeOfEstablishment and pathway properties and vocabularies.", + "subject": "dwc:Taxon", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "locationID", + "required": false, + "description": "A code for the named area this distributon record is about. Use a prefix for each code to indicate the source of the code, see http://rs.gbif.org/areas/ for list of coding schemes and their recommended prefix.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locality", + "title": "locality", + "required": false, + "description": "The verbatim name of the area this distributon record is about.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locality", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/countryCode", + "title": "countryCode", + "required": false, + "description": "ISO 3166 alpha 2 or alpha 3 country codes the area belongs to or as an alternative for a locationID if the area is a country. For multiple countries separate values with a comma \",\"", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/countryCode", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lifeStage", + "title": "lifeStage", + "required": false, + "description": "The distribution information pertains solely to a specific life stage of the taxon.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lifeStage", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceStatus", + "title": "occurrenceStatus", + "required": false, + "description": "Statement about the presence or absence of the taxon in the given area.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceStatus", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/establishmentMeans", + "title": "establishmentMeans", + "required": false, + "description": "Statement about whether the taxon has been introduced to the given area and time through the direct or indirect activity of modern humans. Recommended best practice is to use controlled value strings from the controlled vocabulary designated for use with this term, listed at http://rs.tdwg.org/dwc/doc/em/. For details, refer to https://doi.org/10.3897/biss.3.38084", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/establishmentMeans", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/degreeOfEstablishment", + "title": "degreeOfEstablishment", + "required": false, + "description": "The degree to which the taxon survives, reproduces, and expands its range at the given area and time. Recommended best practice is to use controlled value strings from the controlled vocabulary designated for use with this term, listed at http://rs.tdwg.org/dwc/doc/doe/. For details, refer to https://doi.org/10.3897/biss.3.38084", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/degreeOfEstablishment", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/pathway", + "title": "pathway", + "required": false, + "description": "The process by which the taxon came to be in the given area at the given time. Recommended best practice is to use controlled value strings from the controlled vocabulary designated for use with this term, listed at http://rs.tdwg.org/dwc/doc/pw/. For details, refer to https://doi.org/10.3897/biss.3.38084", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/pathway", + "group": "" + }, + { + "name": "http://iucn.org/terms/threatStatus", + "title": "threatStatus", + "required": false, + "description": "Threat status of a species as defined by IUCN: https://www.iucnredlist.org/resources/categories-and-criteria", + "vocabulary": "http://iucn.org/terms/", + "iri": "http://iucn.org/terms/threatStatus", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/appendixCITES", + "title": "appendixCITES", + "required": false, + "description": "The CITES (Convention on International Trade in Endangered Species of Wild Fauna and Flora) Appendix number the taxa is listed. It is possible to have different appendix numbers for different areas, but \"global\" as an area is also valid if its the same worldwide", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/appendixCITES", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/eventDate", + "title": "eventDate", + "required": false, + "description": "Relevant temporal context for this entire distribution record including all properties preferrably given as a year range or single year on which the distribution record is valid. For the same area and taxon there could therefore be several records with different temporal context, e.g. in 5 year intervalls for invasive species.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/eventDate", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/startDayOfYear", + "title": "startDayOfYear", + "required": false, + "description": "Seasonal temporal subcontext within the eventDate context. Useful for migratory species. The earliest ordinal day of the year on which the distribution record is valid. Numbering starts with 1 for 1 January and ends with 365 or 366 for 31 December.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/startDayOfYear", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/endDayOfYear", + "title": "endDayOfYear", + "required": false, + "description": "Seasonal temporal subcontext within the eventDate context. The latest ordinal day of the year on which the distribution record is valid.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/endDayOfYear", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "Source reference for this distribution record. Can be proper publication citation, a webpage URL, etc.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/occurrenceRemarks", + "title": "occurrenceRemarks", + "required": false, + "description": "Comments or notes about the distribution.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/occurrenceRemarks", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "SpeciesProfile", + "title": "Species Profile", + "identifier": "http://rs.gbif.org/terms/1.0/SpeciesProfile", + "url": "http://rs.gbif.org/extension/gbif/1.0/speciesprofile_2019-01-29.xml", + "rowType": "http://rs.gbif.org/terms/1.0/SpeciesProfile", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2019-01-29", + "description": "A basic species profile with characteristics in addition to textural description which are covered by the description extension.", + "subject": "dwc:Taxon", + "fields": [ + { + "name": "http://rs.gbif.org/terms/1.0/isMarine", + "title": "isMarine", + "required": false, + "description": "a boolean flag indicating whether the taxon is a marine organism, i.e. can be found in/above sea water", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isMarine", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isFreshwater", + "title": "isFreshwater", + "required": false, + "description": "a boolean flag indicating whether the taxon occurrs in freshwater habitats, i.e. can be found in/above rivers or lakes", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isFreshwater", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isTerrestrial", + "title": "isTerrestrial", + "required": false, + "description": "a boolean flag indicating the taxon is a terrestial organism, i.e. occurrs on land as opposed to the sea", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isTerrestrial", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isInvasive", + "title": "isInvasive", + "required": false, + "description": "Flag indicating a species known to be invasive/alien in some are of the world. Detailed native and introduced distribution areas can be published with the distribution extension.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isInvasive", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isHybrid", + "title": "isHybrid", + "required": false, + "description": "Flag indicating a hybrid organism. This does not have to be reflected in the name, but can be based on other studies like chromosome numbers etc", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isHybrid", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isExtinct", + "title": "isExtinct", + "required": false, + "description": "Flag indicating an extinct organism. Details about the timeperiod the organism has lived in can be supplied below", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isExtinct", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/livingPeriod", + "title": "livingPeriod", + "required": false, + "description": "The (geological) time a currently extinct organism is known to have lived. For geological times of fossils ideally based on a vocabulary like http://en.wikipedia.org/wiki/Geologic_column", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/livingPeriod", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/ageInDays", + "title": "ageInDays", + "required": false, + "description": "Maximum observed age of an organism given as number of days", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/ageInDays", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/sizeInMillimeters", + "title": "sizeInMillimeters", + "required": false, + "description": "Maximum observed size of an organism in millimeter. Can be either height, length or width, whichever is greater.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/sizeInMillimeters", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/massInGrams", + "title": "massInGrams", + "required": false, + "description": "Maximum observed weight of an organism in grams.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/massInGrams", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/lifeForm", + "title": "lifeForm", + "required": false, + "description": "A term describing the growth/lifeform of an organism. Should be based on a vocabulary like Raunkiær for plants: http://en.wikipedia.org/wiki/Raunkiær_plant_life-form. Recommended vocabulary: http://rs.gbif.org/vocabulary/gbif/life_form.xml", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/lifeForm", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/habitat", + "title": "habitat", + "required": false, + "description": "Comma seperated list of mayor habitat classification as defined by IUCN in which a species is known to exist: http://www.iucnredlist.org/static/major_habitats", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/habitat", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sex", + "title": "sex", + "required": false, + "description": "Comma seperated list of known sexes to exist for this organism. Recommended vocabulary is: http://rs.gbif.org/vocabulary/gbif/sex.xml", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sex", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "Source reference of this species profile, a URL or full publication citation", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "ChronometricAge", + "title": "ChronometricAge (deprecated)", + "identifier": "http://zooarchnet.org/dwc/terms/ChronometricAge", + "url": "http://rs.gbif.org/extension/zooarchnet/ChronometricAge_2018-11-13.xml", + "rowType": "http://zooarchnet.org/dwc/terms/ChronometricAge", + "namespace": "http://zooarchnet.org/dwc/terms/", + "issued": "2018-11-13", + "description": "This extension has been DEPRECATED! Please use the newer ChronometricAge extension instead: https://rs.gbif.org/extension/zooarchnet/ChronometricAge_2020-10-06.xml", + "subject": "dwc:Occurrence", + "fields": [ + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeID", + "title": "chronometricAgeID", + "required": true, + "description": "An identifier for the set of information associated with a ChronometricAge. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeID", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/verbatimChronometricAge", + "title": "verbatimChronometricAge", + "required": false, + "description": "The verbatim age for a specimen, whether reported by a dating assay, associated references, or legacy information. For example, this could be the conventional radiocarbon age as given in an AMS dating report. This could also be simply what is reported as the age of a specimen in legacy collections data.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/verbatimChronometricAge", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/verbatimChronometricAgeConversionProtocol", + "title": "verbatimChronometricAgeConversionProtocol", + "required": false, + "description": "The method used for converting the verbatimChronometricAge into a chronometric age in years, as captured in the maximumChronometricAge, maximumChronometricAgeReferenceSystem, minimumChronometricAge, and minimumChronometricAgeReferenceSystem fields. For example, calibration of conventional radiocarbon age or the currently accepted age range of a cultural or geological period.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/verbatimChronometricAgeConversionProtocol", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/maximumChronometricAge", + "title": "maximumChronometricAge", + "required": false, + "description": "Upper limit for the age of a specimen as determined by a dating method. The expected unit for this field is years. This field, if populated, must have an associated maximumChronometricAgeReferenceSystem.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/maximumChronometricAge", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/maximumChronometricAgeReferenceSystem", + "title": "maximumChronometricAgeReferenceSystem", + "required": false, + "description": "The reference system associated with the maximumChronometricAge.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/maximumChronometricAgeReferenceSystem", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/minimumChronometricAge", + "title": "minimumChronometricAge", + "required": false, + "description": "Lower limit for the age of a specimen as determined by a dating method. The expected unit for this field is years. This field, if populated, must have an associated maximumChronometricAgeReferenceSystem.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/minimumChronometricAge", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/minimumChronometricAgeReferenceSystem", + "title": "minimumChronometricAgeReferenceSystem", + "required": false, + "description": "The reference system associated with the minimumChronometricAge.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/minimumChronometricAgeReferenceSystem", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyInYears", + "title": "chronometricAgeUncertaintyInYears", + "required": false, + "description": "The temporal uncertainty of the maximumChronometricAge and minimumChronometicAge, in years.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyInYears", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyMethod", + "title": "chronometricAgeUncertaintyMethod", + "required": false, + "description": "The method used to generate the reported uncertainty calculations.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyMethod", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/materialDated", + "title": "materialDated", + "required": false, + "description": "A description of the material on which the chronometricAgeProtocol was actually performed, if known.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/materialDated", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/materialDatedID", + "title": "materialDatedID", + "required": false, + "description": "An identifier for the material on which the chronometricAgeProtocol was performed, if applicable.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/materialDatedID", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeProtocol", + "title": "chronometricAgeProtocol", + "required": false, + "description": "A description of or reference to the methods used to determine the ChronometricAge.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeProtocol", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeReferences", + "title": "chronometricAgeReferences", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, bibliographic reference, global unique identifier, URI) of literature associated with the ChronometricAge.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeReferences", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeRemarks", + "title": "chronometricAgeRemarks", + "required": false, + "description": "Notes or comments about the ChronometricAge.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeRemarks", + "group": "" + } + ] + }, + { + "name": "ChronometricDate", + "title": "ChronometricDate (deprecated)", + "identifier": "http://zooarchnet.org/dwc/terms/ChronometricDate", + "url": "http://rs.gbif.org/extension/zooarchnet/chronometricDate.xml", + "rowType": "http://zooarchnet.org/dwc/terms/ChronometricDate", + "namespace": "http://zooarchnet.org/dwc/terms/", + "issued": "2018-03-29", + "description": "This extension has been DEPRECATED! Please use the newer ChronometricAge extension instead: http://rs.gbif.org/extension/gbif/1.0/ChronometricAge.xml", + "subject": "dwc:Occurrence", + "fields": [ + { + "name": "http://zooarchnet.org/dwc/terms/chronometricDateID", + "title": "chronometricDateID", + "required": true, + "description": "An identifier for the set of information associated with a ChronometricDate. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricDateID", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/verbatimChronometricAge", + "title": "verbatimChronometricAge", + "required": false, + "description": "The verbatim age for a specimen, whether reported by a dating assay, associated references, or legacy information. For example, this could be the conventional radiocarbon age as given in an AMS dating report. This could also be simply what is reported as the age of a specimen in legacy collections data.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/verbatimChronometricAge", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/verbatimChronometricAgeConversionProtocol", + "title": "verbatimChronometricAgeConversionProtocol", + "required": false, + "description": "The method used for converting the verbatimChronometricAge into a chronometric date in years, as captured in the maximumChronometricAge, maximumChronometricAgeReferenceSystem, minimumChronometricAge, and minimumChronometricAgeReferenceSystem fields. For example, calibration of conventional radiocarbon age or the currently accepted age range of a cultural or geological period.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/verbatimChronometricAgeConversionProtocol", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/maximumChronometricAge", + "title": "maximumChronometricAge", + "required": false, + "description": "Upper limit for the age of a specimen as determined by a dating method.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/maximumChronometricAge", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/maximumChronometricAgeReferenceSystem", + "title": "maximumChronometricAgeReferenceSystem", + "required": false, + "description": "The reference system associated with the maximumChronometricAge. For example, BC. The unit for this field is years.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/maximumChronometricAgeReferenceSystem", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/minimumChronometricAge", + "title": "minimumChronometricAge", + "required": false, + "description": "Lower limit for the age of a specimen as determined by a dating method.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/minimumChronometricAge", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/minimumChronometricAgeReferenceSystem", + "title": "minimumChronometricAgeReferenceSystem", + "required": false, + "description": "The reference system associated with the minimumChronometricAge. For example, AD. The unit for this field is years.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/minimumChronometricAgeReferenceSystem", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyInYears", + "title": "chronometricAgeUncertaintyInYears", + "required": false, + "description": "The temporal uncertainty of the maximumAge and minimumAge, in years.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyInYears", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyMethod", + "title": "chronometricAgeUncertaintyMethod", + "required": false, + "description": "The method used to generate the reported uncertainty calculations.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricAgeUncertaintyMethod", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/materialDated", + "title": "materialDated", + "required": false, + "description": "A description of the material on which the chronometricDateProtocol was actually performed, if known.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/materialDated", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/materialDatedID", + "title": "materialDatedID", + "required": false, + "description": "An identifier for the material on which the chronometricDateProtocol was performed, if applicable.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/materialDatedID", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricDateProtocol", + "title": "chronometricDateProtocol", + "required": false, + "description": "A description or reference to the methods used to determine the ChronometricDate.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricDateProtocol", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricDateReferences", + "title": "chronometricDateReferences", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, bibliographic reference, global unique identifier, URI) of literature associated with the ChronometricDate.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricDateReferences", + "group": "" + }, + { + "name": "http://zooarchnet.org/dwc/terms/chronometricDateRemarks", + "title": "chronometricDateRemarks", + "required": false, + "description": "Notes or comments about the ChronometricDate.", + "vocabulary": "http://zooarchnet.org/dwc/terms/", + "iri": "http://zooarchnet.org/dwc/terms/chronometricDateRemarks", + "group": "" + } + ] + }, + { + "name": "Releve", + "title": "GBIF Relevé", + "identifier": "http://rs.gbif.org/terms/1.0/Releve", + "url": "http://rs.gbif.org/extension/gbif/1.0/releve_2016-05-10.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Releve", + "namespace": "http://rs.gbif.org/terms/1.0/", + "issued": "2016-05-10", + "description": "Support for vegetation plot survey (relevé) measurements ancillary to those reported using Event core with Occurrence extension. Note all coverage measurements are in percentage.", + "subject": "dwc:Event", + "fields": [ + { + "name": "http://rs.gbif.org/terms/1.0/project", + "title": "project", + "required": false, + "description": "The name or code for the project associated with the relevé", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/project", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/syntaxonName", + "title": "syntaxonName", + "required": false, + "description": "The description (not a code) of the plant community or vegetation unit associated with the relevé", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/syntaxonName", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/aspect", + "title": "aspect", + "required": false, + "description": "The compass direction that the relevé site faces", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/aspect", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/inclinationInDegrees", + "title": "inclinationInDegrees", + "required": false, + "description": "The angle of inclination of the relevé site in degrees, rounded to the nearest whole number", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/inclinationInDegrees", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverTotalInPercentage", + "title": "coverTotalInPercentage", + "required": false, + "description": "The total cover (%) of all plants, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverTotalInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverTreesInPercentage", + "title": "coverTreesInPercentage", + "required": false, + "description": "The cover (%) of trees, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverTreesInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverShrubsInPercentage", + "title": "coverShrubsInPercentage", + "required": false, + "description": "The cover (%) of shrubs, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverShrubsInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverHerbsInPercentage", + "title": "coverHerbsInPercentage", + "required": false, + "description": "The cover (%) of the herb layer, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverHerbsInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverCryptogamsInPercentage", + "title": "coverCryptogamsInPercentage", + "required": false, + "description": "The cover (%) of cryptogams, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverCryptogamsInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverMossesInPercentage", + "title": "coverMossesInPercentage", + "required": false, + "description": "The cover (%) of mosses, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverMossesInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverLichensInPercentage", + "title": "coverLichensInPercentage", + "required": false, + "description": "The cover (%) of lichens, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverLichensInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverAlgaeInPercentage", + "title": "coverAlgaeInPercentage", + "required": false, + "description": "The cover (%) of algae, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverAlgaeInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverLitterInPercentage", + "title": "coverLitterInPercentage", + "required": false, + "description": "The cover (%) of litter, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverLitterInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverWaterInPercentage", + "title": "coverWaterInPercentage", + "required": false, + "description": "The cover (%) of open water, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverWaterInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/coverRockInPercentage", + "title": "coverRockInPercentage", + "required": false, + "description": "The cover (%) of bare rock, rounded to the nearest hundredth (2 decimal places)", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/coverRockInPercentage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/treeLayerHeightInMeters", + "title": "treeLayerHeightInMeters", + "required": false, + "description": "The height in meters of the tree layer, rounded to the nearest whole number", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/treeLayerHeightInMeters", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/shrubLayerHeightInMeters", + "title": "shrubLayerHeightInMeters", + "required": false, + "description": "The height in meters of the shrub layer, can be written in decimal notation", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/shrubLayerHeightInMeters", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/herbLayerHeightInCentimeters", + "title": "herbLayerHeightInCentimeters", + "required": false, + "description": "The height in centimeters of the high herb layer, rounded to the nearest whole number", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/herbLayerHeightInCentimeters", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/mossesIdentified", + "title": "mossesIdentified", + "required": false, + "description": "The value is true if mosses in the releve were identified", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/mossesIdentified", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/lichensIdentified", + "title": "lichensIdentified", + "required": false, + "description": "The value is true if lichens in the releve were identified", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/lichensIdentified", + "group": "" + } + ] + }, + { + "name": "Amplification", + "title": "GGBN Amplification Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/Amplification", + "url": "http://rs.gbif.org/extension/ggbn/amplification.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/Amplification", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for DNA Amplifications as an extension for Material Sample core sample data in Darwin Core. Intended to be a one to many relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/amplificationDate", + "title": "amplificationDate", + "required": false, + "description": "Date when the amplification was carried out", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/amplificationDate", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/amplificationStaff", + "title": "amplificationStaff", + "required": false, + "description": "Person or Institution who performed the amplification", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/amplificationStaff", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/amplificationSuccess", + "title": "amplificationSuccess", + "required": false, + "description": "true/false or yes/no whether the ampliciation was successful in general; highly recommended to report unsuccessful runs", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/amplificationSuccess", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/amplificationSuccessDetails", + "title": "amplificationSuccessDetails", + "required": false, + "description": "Details about the amplification, e.g. including why it has failed", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/amplificationSuccessDetails", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/amplificationMethod", + "title": "amplificationMethod", + "required": false, + "description": "Method used for amplification", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/amplificationMethod", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerSequenceForward", + "title": "primerSequenceForward", + "required": false, + "description": "Sequence of forward primer used for this amplification", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerSequenceForward", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerNameForward", + "title": "primerNameForward", + "required": false, + "description": "Name of forward primer used for this amplification", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerNameForward", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationForward", + "title": "primerReferenceCitationForward", + "required": false, + "description": "First reference of the primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationForward", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkForward", + "title": "primerReferenceLinkForward", + "required": false, + "description": "Link to the first reference of the primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkForward", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerSequenceReverse", + "title": "primerSequenceReverse", + "required": false, + "description": "Sequence of reverse primer used for this amplification", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerSequenceReverse", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerNameReverse", + "title": "primerNameReverse", + "required": false, + "description": "Name of reverse primer used for this amplification", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerNameReverse", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationReverse", + "title": "primerReferenceCitationReverse", + "required": false, + "description": "First reference of the primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationReverse", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkReverse", + "title": "primerReferenceLinkReverse", + "required": false, + "description": "Link to the first reference of the primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkReverse", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/purificationMethod", + "title": "purificationMethod", + "required": false, + "description": "Method or protocol used to purify the PCR product", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/purificationMethod", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/consensusSequence", + "title": "consensusSequence", + "required": false, + "description": "Consensus sequence derived from all individual sequences", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/consensusSequence", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/consensusSequenceLength", + "title": "consensusSequenceLength", + "required": false, + "description": "Length of the consensus sequence (number of base pairs)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/consensusSequenceLength", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/consensusSequenceChromatogramFileURI", + "title": "consensusSequenceChromatogramFileURI", + "required": false, + "description": "Link to the chromatogram of the consensus sequence", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/consensusSequenceChromatogramFileURI", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/barcodeSequence", + "title": "barcodeSequence", + "required": false, + "description": "DNA Barcode sequence (part or 100% of the consensus sequence)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/barcodeSequence", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/haplotype", + "title": "haplotype", + "required": false, + "description": "Name of the haplotype, if applicable", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/haplotype", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/marker", + "title": "marker", + "required": false, + "description": "Genetic locus/marker or DNA fragment amplified by PCR", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/marker", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/markerSubfragment", + "title": "markerSubfragment", + "required": false, + "description": "Name of subfragment of a gene or locus. Important to e.g. identify special regions on marker genes", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/markerSubfragment", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/geneticAccessionNumber", + "title": "geneticAccessionNumber", + "required": false, + "description": "Definite number or ID under which the DNA sequence is deposited in a public database (GenBank/EMBL/DDBJ accession number)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/geneticAccessionNumber", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/BOLDProcessID", + "title": "BOLDProcessID", + "required": false, + "description": "Definite number or ID under which the DNA sequence is deposited in the BOLD database", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/BOLDProcessID", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/geneticAccessionURI", + "title": "geneticAccessionURI", + "required": false, + "description": "URI of the related record in a public database (GenBank/DDBJ/EMBL record).", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/geneticAccessionURI", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/GC-content", + "title": "GC-content", + "required": false, + "description": "guanine-cytosine content in mol %", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/GC-content", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/chimera_check", + "title": "chimera_check", + "required": false, + "description": "A chimeric sequence, or chimera for short, is a sequence comprised of two or more phylogenetically distinct parent sequences. Chimeras are usually PCR artifacts thought to occur when a prematurely terminated amplicon reanneals to a foreign DNA strand and is copied to completion in the following PCR cycles. The point at which the chimeric sequence changes from one parent to the next is called the breakpoint or conversion point", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/chimera_check", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/assembly", + "title": "assembly", + "required": false, + "description": "How was the assembly done (e.g. with a text based assembler like phrap or a flowgram assembler etc). Input: CV", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/assembly", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/sop", + "title": "sop", + "required": false, + "description": "Relevant standard operating procedures", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/sop", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/finishing_strategy", + "title": "finishing_strategy", + "required": false, + "description": "Was the genome project intended to produce a complete or draft genome, Coverage, the fold coverage of the sequencing expressed as 2x, 3x, 18x etc, and how many contigs were produced for the genome", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/finishing_strategy", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/annot_source", + "title": "annot_source", + "required": false, + "description": "For cases where annotation was provided by a community jamboree or model organism database rather than by a specific submitter", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/annot_source", + "group": "Amplification" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/markerAccordance", + "title": "markerAccordance", + "required": false, + "description": "Result of comparison of two markers of two specimens or strains. Name or TAX-ID (NCBI) of compared specimens/strain and the relative identity percentage must be given", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/markerAccordance", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/seq_quality_check", + "title": "seq_quality_check", + "required": false, + "description": "Indicate if the sequence has been called by automatic systems (none) or undergone a manual editing procedure (e.g. by inspecting the raw data or chromatograms). Applied only for sequences that are not submitted to SRA or DRA e.g. none or manually edited", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/seq_quality_check", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/adapters", + "title": "adapters", + "required": false, + "description": "Adapters provide priming sequences for both amplification and sequencing of the sample-library fragments. Both adapters should be reported; in uppercase letters", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/adapters", + "group": "Amplification" + }, + { + "name": "http://gensc.org/ns/mixs/mid", + "title": "mid", + "required": false, + "description": "Molecular barcodes, called Multiplex Identifiers (MIDs), that are used to specifically tag unique samples in a sequencing run. Sequence should be reported in uppercase letters", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/mid", + "group": "Amplification" + } + ] + }, + { + "name": "Amplification", + "title": "GGBN DNA Cloning Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/Cloning", + "url": "http://rs.gbif.org/extension/ggbn/cloning.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/Cloning", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for DNA Cloning as an extension for Material Sample core sample data in Darwin Core. Intended to be a one to many relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/cloningDate", + "title": "cloningDate", + "required": false, + "description": "Date when the DNA cloning was carried out", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/cloningDate", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/cloningStaff", + "title": "cloningStaff", + "required": false, + "description": "Person or Institution who performed the cloning", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/cloningStaff", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/cloningMethod", + "title": "cloningMethod", + "required": false, + "description": "Method or protocol used for DNA cloning", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/cloningMethod", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/cloneStrain", + "title": "cloneStrain", + "required": false, + "description": "Name of the individual DNA clone", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/cloneStrain", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerNameForward", + "title": "primerNameForward", + "required": false, + "description": "Name of forward primer used for this cloning", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerNameForward", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationForward", + "title": "primerReferenceCitationForward", + "required": false, + "description": "link to the first reference of this cloning primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationForward", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkForward", + "title": "primerReferenceLinkForward", + "required": false, + "description": "Link to the first reference of this cloning primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkForward", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerNameReverse", + "title": "primerNameReverse", + "required": false, + "description": "Name of reverse primer used for this cloning", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerNameReverse", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationReverse", + "title": "primerReferenceCitationReverse", + "required": false, + "description": "link to the first reference of this cloning primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceCitationReverse", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkReverse", + "title": "primerReferenceLinkReverse", + "required": false, + "description": "Link to the first reference of this cloning primer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/primerReferenceLinkReverse", + "group": "Cloning" + }, + { + "name": "http://gensc.org/ns/mixs/lib_reads_seqd", + "title": "lib_reads_seqd", + "required": false, + "description": "Total number of clones sequenced from the library", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/lib_reads_seqd", + "group": "Cloning" + }, + { + "name": "http://gensc.org/ns/mixs/lib_screen", + "title": "lib_screen", + "required": false, + "description": "Specific enrichment or screening methods applied before and/or after creating clone libraries in order to select a specific group of sequences e.g. enriched, screened, normalized", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/lib_screen", + "group": "Cloning" + }, + { + "name": "http://gensc.org/ns/mixs/lib_size", + "title": "lib_size", + "required": false, + "description": "Total number of clones in the library prepared for the project", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/lib_size", + "group": "Cloning" + }, + { + "name": "http://gensc.org/ns/mixs/lib_vector", + "title": "lib_vector", + "required": false, + "description": "Cloning vector type(s) used in construction of libraries", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/lib_vector", + "group": "Cloning" + }, + { + "name": "http://gensc.org/ns/mixs/lib_const_meth", + "title": "lib_const_meth", + "required": false, + "description": "Library construction method used for clone libraries e.g. paired-end,single,vector", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/lib_const_meth", + "group": "Cloning" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/plasmid", + "title": "plasmid", + "required": false, + "description": "Name of plasmid used for sequencing", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/plasmid", + "group": "Cloning" + } + ] + }, + { + "name": "GelImage", + "title": "GGBN Gel Image Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/GelImage", + "url": "http://rs.gbif.org/extension/ggbn/gelimage.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/GelImage", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for gel image properties as an extension to an Material Sample core. Intended to be a one to many relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": true, + "description": "The public URL that identifies and locates the media file directly, not the html page it might be shown on. Link to a DNA sample image (e.g. agarose gel image); used to determine fragment length profile", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/DNAThreshold", + "title": "DNAThreshold", + "required": false, + "description": "Fragment size of the ladder you choose as a standard to measure the percentage of your DNA size, at or above threshold fragment size from ladder", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/DNAThreshold", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelBuffer", + "title": "gelBuffer", + "required": false, + "description": "Buffer used to make your gel and buffer in which you run the gel. The gel should be made with the same buffer in which it is run", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelBuffer", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelConcentration", + "title": "gelConcentration", + "required": false, + "description": "Concentration of your gel", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelConcentration", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelDuration", + "title": "gelDuration", + "required": false, + "description": "Duration of Gel with unit", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelDuration", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelLadder", + "title": "gelLadder", + "required": false, + "description": "A Gel Ladder is a combination of various known-length fragments of DNA or RNA used to measure DNA or RNA fragments of unknown lengths", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelLadder", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelRemarks", + "title": "gelRemarks", + "required": false, + "description": "General remarks on your gel", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelRemarks", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelStain", + "title": "gelStain", + "required": false, + "description": "Type of gel stain used. Gel stain is a substance that binds to DNA and fluoresces under ultraviolet (UV) light", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelStain", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelStainConcentration", + "title": "gelStainConcentration", + "required": false, + "description": "Concentration of your gel stain", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelStainConcentration", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/stainingMethod", + "title": "stainingMethod", + "required": false, + "description": "Method used for staining gels, either precast-adding stain to your gel before casting; post stain-staining your gel after running; stain in loading buffer-adding the stain to the loading buffer", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/stainingMethod", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/gelVoltage", + "title": "gelVoltage", + "required": false, + "description": "Voltage of Gel (in V)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/gelVoltage", + "group": "GelImage" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/percentAboveThreshold", + "title": "percentAboveThreshold", + "required": false, + "description": "Percent of your DNA at or above the size of the threshold", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/percentAboveThreshold", + "group": "GelImage" + } + ] + }, + { + "name": "Loan", + "title": "GGBN Loan Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/Loan", + "url": "http://rs.gbif.org/extension/ggbn/loan.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/Loan", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for loan properties (e.g. specimens, tissues, DNA, RNA) as an extension to a Material Sample core. Intended to be a one to one relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/blockedUntil", + "title": "blockedUntil", + "required": false, + "description": "Sample or specimen data can not be ordered/loaned until the given date, but are visible via portals. in GGBN context the record is visible at the portal but blocked for ordering until the given date", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/blockedUntil", + "group": "Loan" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/blocked", + "title": "blocked", + "required": false, + "description": "Sample or specimen data can not be ordered/loaned in general, but are visible via portals. Records/samples/specimens not to be published should be blocked on database level. If they are available via Darwin Core or ABCD, they are visible for everyone. This element is to be used for samples/specimens that cannot be loaned.", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/blocked", + "group": "Loan" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/loanConditions", + "title": "loanConditions", + "required": false, + "description": "Sample can be ordered under certain conditions, that are described here", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/loanConditions", + "group": "Loan" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/loanDate", + "title": "loanDate", + "required": false, + "description": "Date when loan has been sent by the lender.", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/loanDate", + "group": "Loan" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/loanDestination", + "title": "loanDestination", + "required": false, + "description": "Name of person and/or organization the unit was sent to. Person/Institution who received the material. “sent” is not equivalent to “shipped”. A shipment can be directed to a recipient who is not the actual intended responsible party; many organizations have shipping offices to handle packages.", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/loanDestination", + "group": "Loan" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/loanIdentifier", + "title": "loanIdentifier", + "required": false, + "description": "The unique institutional loan number to uniquely identify a specimen on loan.", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/loanIdentifier", + "group": "Loan" + }, + { + "name": "http://purl.org/dc/terms/disposition", + "title": "disposition", + "required": false, + "description": "The current state of a specimen with respect to the collection identified in collectionCode or collectionID. Recommended best practice is to use a controlled vocabulary. Remark by GGBN: \"consumed\" as another example.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/disposition", + "group": "Loan" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/receivedFrom", + "title": "receivedFrom", + "required": false, + "description": "Name of person and/or organization the unit was received from. Person/Institution who authorized the loan of the material. From the perspective of the owner of the material, this type of loan is incoming.", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/receivedFrom", + "group": "Loan" + } + ] + }, + { + "name": "MaterialSample", + "title": "GGBN Material Sample Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/MaterialSample", + "url": "http://rs.gbif.org/extension/ggbn/materialsample.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/MaterialSample", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for material sample properties (e.g. tissues, DNA, RNA) as an extension to a Material Sample core. Intended to be a one to one relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/materialSampleType", + "title": "materialSampleType", + "required": true, + "description": "Classification of kind of physical sample in addition to BasisOfRecord/RecordBasis and Preparation Type. Please use preparationType for further specification such as \"leg\",\"blood\",\"gDNA\",\"axenic culture\". Equal to KindOfUnit in ABCD!", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/materialSampleType", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/concentration", + "title": "concentration", + "required": false, + "description": "Concentration of DNA (weight ng/volume µl)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/concentration", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/concentrationUnit", + "title": "concentrationUnit", + "required": false, + "description": "Unit used for concentration measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/concentrationUnit", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/methodDeterminationConcentrationAndRatios", + "title": "methodDeterminationConcentrationAndRatios", + "required": false, + "description": "Description of method used for concentration measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/methodDeterminationConcentrationAndRatios", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_230", + "title": "ratioOfAbsorbance260_230", + "required": false, + "description": "Ratio of absorbance at 260 nm and 230 nm assessing DNA purity (mostly secondary measure, indicates mainly EDTA, carbohydrates, phenol), (DNA samples only).", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_230", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_280", + "title": "ratioOfAbsorbance260_280", + "required": false, + "description": "Ratio of absorbance at 280 nm and 230 nm assessing DNA purity (mostly secondary measure, indicates mainly EDTA, carbohydrates, phenol), (DNA samples only).", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/ratioOfAbsorbance260_280", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/volume", + "title": "volume", + "required": false, + "description": "Volume of sample", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/volume", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/volumeUnit", + "title": "volumeUnit", + "required": false, + "description": "Unit used for volume measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/volumeUnit", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/weight", + "title": "weight", + "required": false, + "description": "Weight of sample", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/weight", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/weightUnit", + "title": "weightUnit", + "required": false, + "description": "Unit used for weight measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/weightUnit", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/methodDeterminationWeight", + "title": "methodDeterminationWeight", + "required": false, + "description": "Description of method used for weight measurement", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/methodDeterminationWeight", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/purificationMethod", + "title": "purificationMethod", + "required": false, + "description": "DNA purification kit (company/product name) or protocol.", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/purificationMethod", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/qualityCheckDate", + "title": "qualityCheckDate", + "required": false, + "description": "Date of quality check (e.g. Nanodrop measurement (DNA))", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/qualityCheckDate", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/quality", + "title": "quality", + "required": false, + "description": "Sample quality estimation based on parameters described at QualityRemarks", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/quality", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/qualityRemarks", + "title": "qualityRemarks", + "required": false, + "description": "Description of methods and parameters defining low, medium or high quality of a sample", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/qualityRemarks", + "group": "MaterialSample" + }, + { + "name": "http://gensc.org/ns/mixs/samp_size", + "title": "samp_size", + "required": false, + "description": "Amount or size of sample (volume, mass or area) that was collected", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/samp_size", + "group": "MaterialSample" + }, + { + "name": "http://gensc.org/ns/mixs/sieving", + "title": "sieving", + "required": false, + "description": "collection design of pooled samples and/or sieve size and amount of sample sieved", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/sieving", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/DNADNAHybridization", + "title": "DNADNAHybridization", + "required": false, + "description": "Result of DNA-DNA hybridization, e.g. strain: measurement value percentage", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/DNADNAHybridization", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/DNAMeltingPoint", + "title": "DNAMeltingPoint", + "required": false, + "description": "result of melting temperature (Tm) analysis, e.g. measurement value unit", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/DNAMeltingPoint", + "group": "MaterialSample" + }, + { + "name": "http://gensc.org/ns/mixs/estimated_size", + "title": "estimated_size", + "required": false, + "description": "The estimated size of the genome prior to sequencing. Of particular importance in the sequencing of (eukaryotic) genome which could remain in draft form for a long or unspecified period", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/estimated_size", + "group": "MaterialSample" + }, + { + "name": "http://gensc.org/ns/mixs/pool_dna_extracts", + "title": "pool_dna_extracts", + "required": false, + "description": "Pooling of DNA extracts (if done). Were multiple DNA extractions mixed? How many?", + "vocabulary": "http://gensc.org/ns/mixs/", + "iri": "http://gensc.org/ns/mixs/pool_dna_extracts", + "group": "MaterialSample" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/sampleDesignation", + "title": "sampleDesignation", + "required": false, + "description": "Additional lab or project numbers used for the DNA or tissue sample", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/sampleDesignation", + "group": "MaterialSample" + } + ] + }, + { + "name": "Preparation", + "title": "GGBN Preparation Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/Preparation", + "url": "http://rs.gbif.org/extension/ggbn/preparation.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/Preparation", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for preparation properties as an extension to an Material Sample core. Intended to be a one to many relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preparationType", + "title": "preparationType", + "required": true, + "description": "Description of preparation type (specimens, tissues, DNA)", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preparationType", + "group": "Preparation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preparationProcess", + "title": "preparationProcess", + "required": false, + "description": "Process used in preparing the specimen or sample, can also be used to describe Phage/Plasmid propagation, Process used in extracting the DNA/RNA; adaptions made; SPREC code", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preparationProcess", + "group": "Preparation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preparationMaterials", + "title": "preparationMaterials", + "required": false, + "description": "Materials and chemicals used in the preparation of the specimen, tissue, DNA or RNA sample", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preparationMaterials", + "group": "Preparation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preparedBy", + "title": "preparedBy", + "required": false, + "description": "Person and/or institution responsible for or effecting the preparation/extraction", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preparedBy", + "group": "Preparation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preparationDate", + "title": "preparationDate", + "required": true, + "description": "The date of preparation/extraction", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preparationDate", + "group": "Preparation" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/associatedReferences", + "title": "associatedReferences", + "required": false, + "description": "A list (concatenated and separated) of identifiers (publication, bibliographic reference, global unique identifier, URI) of literature associated with the Preparation.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/associatedReferences", + "group": "Occurrence" + } + ] + }, + { + "name": "Preservation", + "title": "GGBN Preservation Extension", + "identifier": "http://data.ggbn.org/schemas/ggbn/terms/Preservation", + "url": "http://rs.gbif.org/extension/ggbn/preservation.xml", + "rowType": "http://data.ggbn.org/schemas/ggbn/terms/Preservation", + "namespace": "http://data.ggbn.org/schemas/ggbn/terms/", + "issued": "2016-01-13", + "description": "Support for all kinds of preservations as an extension for Material Sample core sample data in Darwin Core. Intended to be a one to many relation to the Material Sample core.", + "subject": "", + "fields": [ + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preservationType", + "title": "preservationType", + "required": true, + "description": "Type of Specimen, Tissue, DNA or DNA Preservation or Storage", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preservationType", + "group": "Preservation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preservationTemperature", + "title": "preservationTemperature", + "required": false, + "description": "Temperature of Specimen, Tissue, DNA or RNA Preservation or Storage", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preservationTemperature", + "group": "Preservation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/preservationDateBegin", + "title": "preservationDateBegin", + "required": false, + "description": "Start of current Specimen, Tissue, DNA or RNA Preservation", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/preservationDateBegin", + "group": "Preservation" + }, + { + "name": "http://data.ggbn.org/schemas/ggbn/terms/sequence", + "title": "sequence", + "required": false, + "description": "can be used to describe sequence (order) of different preservations or other issues", + "vocabulary": "http://data.ggbn.org/schemas/ggbn/terms/", + "iri": "http://data.ggbn.org/schemas/ggbn/terms/sequence", + "group": "Preservation" + } + ] + }, + { + "name": "Description", + "title": "Taxon Description", + "identifier": "http://rs.gbif.org/terms/1.0/Description", + "url": "http://rs.gbif.org/extension/gbif/1.0/description.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Description", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2015-02-13", + "description": "DwC Taxon extension to exchange simple text/paragraph based taxon descriptions. Not suitable for structured descriptions and keys, but useful for creating species pages.", + "subject": "dwc:Taxon checklist", + "fields": [ + { + "name": "http://purl.org/dc/terms/description", + "title": "description", + "required": true, + "description": "Any descriptive free text matching the category given as dc:type. The text should be either plain text or formatted with basic html tags, i.e. h1-4,p,i,b,a,img,ul and li. All other tags should be removed.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/description", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/type", + "title": "type", + "required": true, + "description": "The kind of description given", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/type", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "Source reference of this description, a URL or full publication citation", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/language", + "title": "language", + "required": false, + "description": "ISO 639-1 language code used for the description.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/language", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/created", + "title": "created", + "required": false, + "description": "The date and time this description was written or last updated", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/created", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/creator", + "title": "creator", + "required": false, + "description": "The author(s) of the textual information provided for a description", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/creator", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/contributor", + "title": "contributor", + "required": false, + "description": "An entity responsible for making contributions to the textual information provided for a description", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/contributor", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/audience", + "title": "audience", + "required": false, + "description": "A class or description for whom the dwc:description is intended or useful", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/audience", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/license", + "title": "license", + "required": false, + "description": "Official permission to do something with the resource. Please use Creative Commons URIs if you can.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/license", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/rightsHolder", + "title": "rightsHolder", + "required": false, + "description": "A person or organization owning or managing rights over the description.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rightsHolder", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "Identifier", + "title": "Alternative Identifiers", + "identifier": "http://rs.gbif.org/terms/1.0/Identifier", + "url": "http://rs.gbif.org/extension/gbif/1.0/identifier.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Identifier", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2015-02-13", + "description": "", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": true, + "description": "Other known identifier used for the same taxon. Can be a URL pointing to a webpage, an xml or rdf document, a DOI, UUID or any other identifer", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "title", + "required": false, + "description": "An optional display label for the URL that the publisher may prefer be displayed with the identifier or link", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/subject", + "title": "subject", + "required": false, + "description": "keywords qualifying the identifier", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/subject", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/format", + "title": "format", + "required": false, + "description": "mime type of content returned by identifier in case the identifier is resolvable. Plain UUIDs for example do not have a dc:format return type, as they are not resolvable on their own. For a list of MIME types see the list maintained by IANA: http://www.iana.org/assignments/media-types/index.html, in particular the text http://www.iana.org/assignments/media-types/text/ and application http://www.iana.org/assignments/media-types/application/ types. Frequently used values are text/html, text/xml, application/rdf+xml, application/json", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/format", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "Image", + "title": "Simple Images (deprecated)", + "identifier": "http://rs.gbif.org/terms/1.0/Image", + "url": "http://rs.gbif.org/extension/gbif/1.0/images.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Image", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2015-02-13", + "description": "This extension has been DEPRECATED! Please use the newer Multimedia extension instead: http://rs.gbif.org/extension/gbif/1.0/multimedia.xml", + "subject": "dwc:Taxon dwc:Occurrence", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": true, + "description": "The public URL that identifies and locates the image file directly, not a html page.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/references", + "title": "references", + "required": false, + "description": "A html webpage that shows the image or its metadata. This link should be used for html based image viewers like FSI and should be used as a source link wherever the image is shown.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/references", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "title", + "required": false, + "description": "The image title", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/description", + "title": "description", + "required": false, + "description": "A longer description for this image", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/description", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/spatial", + "title": "spatial", + "required": false, + "description": "The locality this picture was taken at", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/spatial", + "group": "" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#latitude", + "title": "latitude", + "required": false, + "description": "The WGS84 latitude in decimal degrees of the location the image was taken. A decimal number ranging from -90 through 90. Decimal fractions of a degree should be expressed to the precision available. Latitudes north of the equator MAY be specified by a plus sign (+), or by the absence of a minus sign (-). Latitudes south of the Equator MUST be designated by a minus sign (-) preceding the digits designating degrees.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#latitude", + "group": "" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#longitude", + "title": "longitude", + "required": false, + "description": "The WGS84 longitude in decimal degrees of the location the image was taken. A decimal number ranging from -180 through 180. Decimal fractions of a degree should be expressed to the precision available. Longitudes east of the prime meridian shall be specified by a plus sign (+), or by the absence of a minus sign (-). Longitudes west of the prime meridian MUST be designated by a minus sign (-) preceding the digits designating degrees.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#longitude", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/format", + "title": "format", + "required": false, + "description": "The format the image is exposed in", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/format", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/created", + "title": "created", + "required": false, + "description": "The date and time this image was taken", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/created", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/creator", + "title": "creator", + "required": false, + "description": "The person that took the image", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/creator", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/contributor", + "title": "contributor", + "required": false, + "description": "Any contributor in addition to the creator that helped in taking the image", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/contributor", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/publisher", + "title": "publisher", + "required": false, + "description": "An entity responsible for making the image available.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/publisher", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/audience", + "title": "audience", + "required": false, + "description": "A class or description for whom the image is intended or useful", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/audience", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/license", + "title": "license", + "required": false, + "description": "License for this image. Can be text or a url like creative commons uses", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/license", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/rightsHolder", + "title": "rightsHolder", + "required": false, + "description": "A person or organization owning or managing rights over the image.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rightsHolder", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "Multimedia", + "title": "Simple Multimedia", + "identifier": "http://rs.gbif.org/terms/1.0/Multimedia", + "url": "http://rs.gbif.org/extension/gbif/1.0/multimedia.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Multimedia", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2015-02-13", + "description": "Simple extension for exchanging metadata about multimedia resources, in particular links to image, video and audio files.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/type", + "title": "type", + "required": false, + "description": "The kind of media object. Recommended terms from the DCMI Type Vocabulary are StillImage, Sound or MovingImage for GBIF to index and show the media files.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/type", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/format", + "title": "format", + "required": false, + "description": "The format the image is exposed in. It is recommended to use a IANA registered media type, but known file suffices are permissible too. See http://www.iana.org/assignments/media-types/media-types.xhtml", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/format", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": false, + "description": "The public URL that identifies and locates the media file directly, not the html page it might be shown on. It is highly recommended that a URL to a media file of good resolution is provided or at least dc:reference in cases no public URI exists.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/references", + "title": "references", + "required": false, + "description": "An html webpage that shows the image or its metadata. This link should be used for html based image viewers like FSI and should be used as a source link wherever the media item is shown. It is recommended to provide this url even if a media file exists as it will be used for linking out.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/references", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "title", + "required": false, + "description": "The media items title. Strongly recommended as in many cases this will be used as the hyperlink text, and should be used accrodingly.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/description", + "title": "description", + "required": false, + "description": "A textual description of the content of the media item", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/description", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/created", + "title": "created", + "required": false, + "description": "The date and time this media item was taken", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/created", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/creator", + "title": "creator", + "required": false, + "description": "The person that took the image, recorded the video or sound", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/creator", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/contributor", + "title": "contributor", + "required": false, + "description": "Any contributor in addition to the creator that helped in recording the media item", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/contributor", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/publisher", + "title": "publisher", + "required": false, + "description": "An entity responsible for making the image available.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/publisher", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/audience", + "title": "audience", + "required": false, + "description": "A class or description for whom the image is intended or useful", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/audience", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "If the media item was derived or taken from another source this is the reference to that resource. For example a book from which an image was scanned or the original provider of a photo/graphic, such as photography agencies.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/license", + "title": "license", + "required": false, + "description": "License for this media object. Can be text or a url like creative commons uses", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/license", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/rightsHolder", + "title": "rightsHolder", + "required": false, + "description": "A person or organization owning or managing rights over the media item.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rightsHolder", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "Reference", + "title": "Literature References", + "identifier": "http://rs.gbif.org/terms/1.0/Reference", + "url": "http://rs.gbif.org/extension/gbif/1.0/references.xml", + "rowType": "http://rs.gbif.org/terms/1.0/Reference", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2015-02-13", + "description": "Bibliography, i.e. list of literature references. For example a taxon or occurrence/specimen.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": false, + "description": "DOI, ISBN, URI, etc refering to the reference. This can be repeated in multiple rows to include multiple identifiers, e.g. a DOI and a URL pointing to a pdf of the article.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/bibliographicCitation", + "title": "bibliographicCitation", + "required": false, + "description": "A text string referring to an un-parsed bibliographic citation.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/bibliographicCitation", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "title", + "required": false, + "description": "Title of book or article", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/creator", + "title": "creator", + "required": false, + "description": "The author or authors of the referenced work", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/creator", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/date", + "title": "date", + "required": false, + "description": "Date of publication, recommended ISO format YYYY or YYYY-MM-DD", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/date", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "If the reference is part of a larger work, this can be cited here. In case of articles this is the journal, for parts of books the book itself", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/description", + "title": "description", + "required": false, + "description": "Abstracts, remarks, notes", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/description", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/subject", + "title": "subject", + "required": false, + "description": "Semicolon seperated list of keywords. Can include a resource qualifier that specifies the relation of this reference to the taxon, e.g namePublishedIn", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/subject", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/language", + "title": "language", + "required": false, + "description": "ISO 639-1 language code indicating the source language of the referent publication", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/language", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/rights", + "title": "rights", + "required": false, + "description": "copyright information relating to the referenced publication", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rights", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "title": "taxonRemarks", + "required": false, + "description": "Annotation of taxon-specific information related to the referenced publication.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/type", + "title": "type", + "required": false, + "description": "Used to assign a bibliographic reference to list of taxonomic or nomenclatural categories. Best practice is to use a controlled vocabulary.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/type", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "VernacularName", + "title": "Vernacular Names", + "identifier": "http://rs.gbif.org/terms/1.0/VernacularName", + "url": "http://rs.gbif.org/extension/gbif/1.0/vernacularname.xml", + "rowType": "http://rs.gbif.org/terms/1.0/VernacularName", + "namespace": "http://rs.gbif.org/terms/1.0", + "issued": "2015-02-13", + "description": "Extension to core taxa that lists vernacular names for a scientific taxon", + "subject": "dwc:Taxon", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/vernacularName", + "title": "vernacularName", + "required": true, + "description": "A common or vernacular name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/vernacularName", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/source", + "title": "source", + "required": false, + "description": "Bibliographic citation referencing a source where the vernacular name refers to the cited species.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/source", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/language", + "title": "language", + "required": false, + "description": "ISO 639-1 language code used for the vernacular name value.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/language", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/temporal", + "title": "temporal", + "required": false, + "description": "temporal context when name is/was used", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/temporal", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "locationID", + "required": false, + "description": "An identifier for the set of location information (data associated with dcterms:Location). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locality", + "title": "locality", + "required": false, + "description": "The specific description of the area from which the vernacular name usage originates. Vernacular names may have very specific regional contexts. A name used for a species in one area may refer to a different species in another.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locality", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/countryCode", + "title": "countryCode", + "required": false, + "description": "The standard code for the country in which the vernacular name is used. Recommended best practice is to use the ISO 3166-1-alpha-2 country codes available as a vocabulary at http://rs.gbif.org/vocabulary/iso/3166-1_alpha2.xml. For multiple countries separate values with a comma \",\"", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/countryCode", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/sex", + "title": "sex", + "required": false, + "description": "The sex (gender) of the taxon for which the vernacular name applies when the vernacular name is limited to a specific gender of a species. If not limited sex should be empty. For example the vernacular name \"Buck\" applies to the \"Male\" gender of the species, Odocoileus virginianus.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/sex", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/lifeStage", + "title": "lifeStage", + "required": false, + "description": "The age class or life stage of the species for which the vernacular name applies. Best practice is to utilise a controlled list of terms for this value.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/lifeStage", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isPlural", + "title": "isPlural", + "required": false, + "description": "This value is true if the vernacular name it qualifies refers to a plural form of the name.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isPlural", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/isPreferredName", + "title": "isPreferredName", + "required": false, + "description": "This term is true if the source citing the use of this vernacular name indicates the usage has some preference or specific standing over other possible vernacular names used for the species.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/isPreferredName", + "group": "" + }, + { + "name": "http://rs.gbif.org/terms/1.0/organismPart", + "title": "organismPart", + "required": false, + "description": "The part of the organism to which the vernacular name refers. Best practice is to utilise a controlled vocabulary for this term although it is likely that multiple controlled lists for different organism groups may be the best implementation for this term.", + "vocabulary": "http://rs.gbif.org/terms/1.0/", + "iri": "http://rs.gbif.org/terms/1.0/organismPart", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "title": "taxonRemarks", + "required": false, + "description": "A description of any context that qualify the specific usage of the vernacular name.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonRemarks", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/datasetID", + "title": "datasetID", + "required": false, + "description": "An identifier for a subset of data.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/datasetID", + "group": "" + } + ] + }, + { + "name": "GermplasmSample", + "title": "Germplasm (0.1)", + "identifier": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmSample", + "url": "http://rs.gbif.org/extension/nordgen/0.1/germplasm.xml", + "rowType": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmSample", + "namespace": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "issued": "2015-02-13", + "description": "WARNING! THIS DRAFT GERMPLASM EXTENSION HAS BEEN DEPRECATED. SEE: http://rs.gbif.org/extension/germplasm/ FOR THE CURRENT GERMPLASM EXTENSIONS.", + "subject": "dwc:Occurrence", + "fields": [ + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmID", + "title": "GermplasmID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BiologicalStatusOfSample", + "title": "BiologicalStatusOfSample", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BiologicalStatusOfSample", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BiologicalStatusOfSampleCode", + "title": "BiologicalStatusOfSampleCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BiologicalStatusOfSampleCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmIdentifier", + "title": "GermplasmIdentifier", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmIdentifier", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/CollectingInstituteCode", + "title": "CollectingInstituteCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/CollectingInstituteCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/AncestralData", + "title": "AncestralData", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/AncestralData", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/PurdyPedigree", + "title": "PurdyPedigree", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/PurdyPedigree", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/TypeOfStorage", + "title": "TypeOfStorage", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/TypeOfStorage", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/LocationOfSafetyDuplication", + "title": "LocationOfSafetyDuplication", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/LocationOfSafetyDuplication", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationID", + "title": "SafetyDuplicationID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationInstituteCode", + "title": "SafetyDuplicationInstituteCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationInstituteCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationInstitute", + "title": "SafetyDuplicationInstitute", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationInstitute", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationDate", + "title": "SafetyDuplicationDate", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SafetyDuplicationDate", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTreatiesAndRegulations", + "title": "GermplasmTreatiesAndRegulations", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTreatiesAndRegulations", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmRegulationID", + "title": "GermplasmRegulationID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmRegulationID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/TreatyOrRegulationName", + "title": "TreatyOrRegulationName", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/TreatyOrRegulationName", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/TreatyOrRegulationGoverningBody", + "title": "TreatyOrRegulationGoverningBody", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/TreatyOrRegulationGoverningBody", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisition", + "title": "SampleAcquisition", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisition", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionID", + "title": "SampleAcquisitionID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/DonorsSampleIdentifier", + "title": "DonorsSampleIdentifier", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/DonorsSampleIdentifier", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionSource", + "title": "SampleAcquisitionSource", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionSource", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionDate", + "title": "SampleAcquisitionDate", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionDate", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/DonorInstituteCode", + "title": "DonorInstituteCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/DonorInstituteCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/DonorInstitute", + "title": "DonorInstitute", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/DonorInstitute", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionRemarks", + "title": "SampleAcquisitionRemarks", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/SampleAcquisitionRemarks", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingEventGroup", + "title": "BreedingEventGroup", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingEventGroup", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingEventID", + "title": "BreedingEventID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingEventID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedersSampleIdentifier", + "title": "BreedersSampleIdentifier", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedersSampleIdentifier", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingYear", + "title": "BreedingYear", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingYear", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreederPerson", + "title": "BreederPerson", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreederPerson", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreederInstituteCode", + "title": "BreederInstituteCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreederInstituteCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreederInstitute", + "title": "BreederInstitute", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreederInstitute", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingCountry", + "title": "BreedingCountry", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingCountry", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingCountryCode", + "title": "BreedingCountryCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingCountryCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingEventRemarks", + "title": "BreedingEventRemarks", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/BreedingEventRemarks", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitGroup", + "title": "GermplasmTraitGroup", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitGroup", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitID", + "title": "GermplasmTraitID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/MeasurementByInstituteCode", + "title": "MeasurementByInstituteCode", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/MeasurementByInstituteCode", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/MeasurementGrowthStage", + "title": "MeasurementGrowthStage", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/MeasurementGrowthStage", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitIdentifier", + "title": "GermplasmTraitIdentifier", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitIdentifier", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitClass", + "title": "GermplasmTraitClass", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitClass", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitScale", + "title": "GermplasmTraitScale", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitScale", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitSource", + "title": "GermplasmTraitSource", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitSource", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitRemarks", + "title": "GermplasmTraitRemarks", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmTraitRemarks", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentGroup", + "title": "GermplasmExperimentGroup", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentGroup", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentID", + "title": "GermplasmExperimentID", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentID", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentIdentifier", + "title": "GermplasmExperimentIdentifier", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentIdentifier", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentRemarks", + "title": "GermplasmExperimentRemarks", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentRemarks", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentYear", + "title": "GermplasmExperimentYear", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentYear", + "group": "" + }, + { + "name": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentReport", + "title": "GermplasmExperimentReport", + "required": false, + "description": "", + "vocabulary": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/", + "iri": "http://rs.nordgen.org/dwc/germplasm/0.1/terms/GermplasmExperimentReport", + "group": "" + } + ] + }, + { + "name": "GermplasmAccession", + "title": "Germplasm accession (v20140515)", + "identifier": "http://purl.org/germplasm/germplasmTerm#GermplasmAccession", + "url": "http://rs.gbif.org/extension/germplasm/GermplasmAccession.xml", + "rowType": "http://purl.org/germplasm/germplasmTerm#GermplasmAccession", + "namespace": "http://purl.org/germplasm/germplasmTerm#", + "issued": "2014-05-20", + "description": "The Germplasm Vocabulary provides a set of terms (supplementing the Darwin Core terms) for describing genebank accessions. These terms are maintained by the thematic community of plant genetic resources for food and agriculture (PGRFA). Most of these terms are imported from the Multi-Crop Passport Descriptor List (MCPD) maintained by Bioversity International and the Food and Agriculture Organization of the United Nations (FAO). Some terms were also developed by the European Cooperative Programme for Plant Genetic Resources (ECPGR).", + "subject": "", + "fields": [ + { + "name": "http://purl.org/germplasm/germplasmTerm#germplasmID", + "title": "germplasmID", + "required": false, + "description": "A persistent identifier for a germplasm accession maintained as part of an ex situ genebank collection. Best practice is to use a globally unique and persistent identifier (PID).", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#germplasmID", + "group": "GermplasmAccession" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#germplasmIdentifier", + "title": "germplasmIdentifier", + "required": false, + "description": "Accession name. Either a registered or other formal designation given to the accession.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#germplasmIdentifier", + "group": "GermplasmAccession" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#biologicalStatus", + "title": "biologicalStatus", + "required": false, + "description": "The biological status for a germplasm accession describes the cultivation status and distinguish wild and primitive cultivars from modern cultivars and breeding lines (material under development).", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#biologicalStatus", + "group": "GermplasmAccession" + }, + { + "name": "http://purl.org/germplasm/germplasmType#storageCondition", + "title": "storageCondition", + "required": false, + "description": "Type of germplasm storage conditions.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmType#storageCondition", + "group": "GermplasmAccession" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#collectingInstituteID", + "title": "collectingInstituteID", + "required": false, + "description": "Collecting institute ID.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#collectingInstituteID", + "group": "CollectingEvent" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", + "title": "latitude", + "required": false, + "description": "Latitude of the collecting site for the source germplasm material.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", + "group": "CollectingEvent" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#lon", + "title": "longitude", + "required": false, + "description": "Longitude of the collecting site for the source germplasm material.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#lon", + "group": "CollectingEvent" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#alt", + "title": "altitude", + "required": false, + "description": "Altitude of the collecting site for the source germplasm material.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#alt", + "group": "CollectingEvent" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "locationID", + "required": false, + "description": "An identifier for the set of location information (data associated with dcterms:Location). May be a globally unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "CollectingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingID", + "title": "breedingID", + "required": false, + "description": "Persistent identifier for the source germplasm developed by a plant breeder.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingID", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingIdentifier", + "title": "breedingIdentifier", + "required": false, + "description": "The germplasm name or accession number used by the plant breeder.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingIdentifier", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingYear", + "title": "breedingYear", + "required": false, + "description": "The year a germplasm accession was developed by a plant breeder. Could be the year the cultivar was released.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingYear", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingCountry", + "title": "breedingCountry", + "required": false, + "description": "Name of the country in which the breeding event took place.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingCountry", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingCountryCode", + "title": "breedingCountryCode", + "required": false, + "description": "Code for the country in which the breeding event took place.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingCountryCode", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingInstituteID", + "title": "breedingInstituteID", + "required": false, + "description": "Breeding institute code.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingInstituteID", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingInstitute", + "title": "breedingInstitute", + "required": false, + "description": "Breeder institute name. If the FAO WIEWS institute code is available, this term is not to be reported.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingInstitute", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingPerson", + "title": "breedingPerson", + "required": false, + "description": "Name of the plant breeder.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingPerson", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#ancestralData", + "title": "ancestralData", + "required": false, + "description": "Ancestral data, ANCEST. Information about either pedigree or other description of ancestral information.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#ancestralData", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#purdyPedigree", + "title": "purdyPedigree", + "required": false, + "description": "Ancestral information following the purdy pedigree format.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#purdyPedigree", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#breedingRemarks", + "title": "breedingRemarks", + "required": false, + "description": "Remarks to the breeding event.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#breedingRemarks", + "group": "BreedingEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#acquisitionID", + "title": "acquisitionID", + "required": false, + "description": "An identifier for the event when germplasm material was acquired and included in the genebank collection.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#acquisitionID", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#donorsID", + "title": "donorsID", + "required": false, + "description": "An identifier for the source germplasm material that was included in your genebank collection.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#donorsID", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#donorsIdentifier", + "title": "donorsIdentifier", + "required": false, + "description": "An identifier for the source accession donated to your genebank collection. Could be an unique and stable local identifier specific to the dataset.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#donorsIdentifier", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#donorInstituteID", + "title": "donorInstituteID", + "required": false, + "description": "Donor institute code.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#donorInstituteID", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#donorInstitute", + "title": "donorInstitute", + "required": false, + "description": "Donor institute name. If the FAO WIEWS institute code is available, this term is not to be reported.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#donorInstitute", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#acquisitionDate", + "title": "acquisitionDate", + "required": false, + "description": "Acquisition date, date when the germplasm material (accession) entered the genebank collection.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#acquisitionDate", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#acquisitionSource", + "title": "acquisitionSource", + "required": false, + "description": "Collecting/acquisition source.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#acquisitionSource", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#acquisitionRemarks", + "title": "acquisitionRemarks", + "required": false, + "description": "Remarks to the acquisition event.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#acquisitionRemarks", + "group": "AcquisitionEvent" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationID", + "title": "safetyDuplicationID", + "required": false, + "description": "A persistent identifier for the genebank accession in the safe duplication storage.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationID", + "group": "SafetyDuplication" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationDate", + "title": "safetyDuplicationDate", + "required": false, + "description": "Date of safety duplication.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationDate", + "group": "SafetyDuplication" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationInstituteID", + "title": "safetyDuplicationInstituteID", + "required": false, + "description": "Location of safety duplicates. Persistent identifier for the institute where a safety duplicate of the accession is maintained.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationInstituteID", + "group": "SafetyDuplication" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationInstitute", + "title": "safetyDuplicationInstitute", + "required": false, + "description": "Location or institute for storage of safety duplicates.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationInstitute", + "group": "SafetyDuplication" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationRemarks", + "title": "safetyDuplicationRemarks", + "required": false, + "description": "Remarks to the safety duplication event.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#safetyDuplicationRemarks", + "group": "SafetyDuplication" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#treatyOrRegulationID", + "title": "treatyOrRegulationID", + "required": false, + "description": "An identifier for the germplasm regulation or treaty.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#treatyOrRegulationID", + "group": "TreatyOrRegulation" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#treatyOrRegulationName", + "title": "treatyOrRegulationName", + "required": false, + "description": "Regulation or treaty name.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#treatyOrRegulationName", + "group": "TreatyOrRegulation" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#treatyOrRegulationGoverningBody", + "title": "treatyOrRegulationGoverningBody", + "required": false, + "description": "Governing body for the regulation or treaty.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#treatyOrRegulationGoverningBody", + "group": "TreatyOrRegulation" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#mlsStatus", + "title": "mlsStatus", + "required": false, + "description": "The status of a germplasm accession with regards to the Multilateral System (MLS) of the International TReaty on Plant Genetic Resources for Food and Agriculture.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#mlsStatus", + "group": "TreatyOrRegulation" + } + ] + }, + { + "name": "MeasurementScore", + "title": "Trait measurement score (v20140515)", + "identifier": "http://purl.org/germplasm/germplasmTerm#MeasurementScore", + "url": "http://rs.gbif.org/extension/germplasm/MeasurementScore.xml", + "rowType": "http://purl.org/germplasm/germplasmTerm#MeasurementScore", + "namespace": "http://purl.org/germplasm/germplasmTerm#", + "issued": "2014-05-15", + "description": "Trait measurements or the so-called Characterization and Evaluation (C and E) data for plant genetic resources for food and agriculture (PGRFA). The germplasm vocabulary term g.germplasmID is a persistent identifier for the germplasm material (genebank accession, specimen, cultivar, etc that was the subject of the measurement experiment. NB! please report stable and resolvable persistent identifiers for g.germplasmID term when linking the trait measurement score to a germplasm occurrence described in an external Darwin Core archive. When linking to trait measurement descriptors and measurement trials described extenally to the Darwin Core archive, please include stable and resolvable persistent identifiers for g.measurementTraitID and g.measurementTrialID - resolving to information on each entity.", + "subject": "", + "fields": [ + { + "name": "http://rs.tdwg.org/dwc/terms/measurementID", + "title": "measurementID", + "required": false, + "description": "An identifier for the MeasurementOrFact (information pertaining to measurements, facts, characteristics, or assertions). May be a globally unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementID", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementValue", + "title": "measurementValue", + "required": false, + "description": "The value of the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementValue", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementUnit", + "title": "measurementUnit", + "required": false, + "description": "The units associated with the measurementValue. Recommended best practice is to use the International System of Units (SI).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementUnit", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementAccuracy", + "title": "measurementAccuracy", + "required": false, + "description": "The description of the potential error associated with the measurementValue.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementAccuracy", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementDeterminedDate", + "title": "measurementDeterminedDate", + "required": false, + "description": "The date on which the MeasurementOrFact was made. Recommended best practice is to use an encoding scheme, such as ISO 8601_2004(E).", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementDeterminedDate", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementDeterminedBy", + "title": "measurementDeterminedBy", + "required": false, + "description": "A list (concatenated and separated) of names of people, groups, or organizations who determined the value of the MeasurementOrFact.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementDeterminedBy", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementType", + "title": "measurementType", + "required": false, + "description": "The nature of the measurement, fact, characteristic, or assertion. Recommended best practice is to use a controlled vocabulary.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementType", + "group": "MeasurementScore" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "title": "measurementMethod", + "required": false, + "description": "A description of or reference to (publication, URI) the method or protocol used to determine the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementRemarks", + "title": "measurementRemarks", + "required": false, + "description": "Comments or notes accompanying the MeasurementOrFact.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementRemarks", + "group": "MeasurementScore" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#germplasmID", + "title": "germplasmID", + "required": false, + "description": "A persistent identifier for a germplasm accession maintained as part of an ex situ genebank collection. Best practice is to use a globally unique and persistent identifier (PID).", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#germplasmID", + "group": "GermplasmAccession" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#germplasmIdentifier", + "title": "germplasmIdentifier", + "required": false, + "description": "Accession name. Either a registered or other formal designation given to the accession.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#germplasmIdentifier", + "group": "GermplasmAccession" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitID", + "title": "measurementTraitID", + "required": false, + "description": "Persistent identifier for a trait descriptor used to identify the description of the measurement method.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitID", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitIdentifier", + "title": "measurementTraitIdentifier", + "required": false, + "description": "Local identifier for a trait descriptor used to identify the description of the measurement method. This could be the persistent URL to an external ontology where the trait term is declared.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitIdentifier", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitName", + "title": "measurementTraitName", + "required": false, + "description": "English name used to identify the trait measurement method.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitName", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrialID", + "title": "measurementTrialID", + "required": false, + "description": "Persistent identifier used to identify a trait measurement trial.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrialID", + "group": "MeasurementTrial" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrialIdentifier", + "title": "measurementTrialIdentifier", + "required": false, + "description": "Unique number in the dataset for the measurement trial.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrialIdentifier", + "group": "MeasurementTrial" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementByInstituteID", + "title": "measurementByInstituteID", + "required": false, + "description": "Trait observation determined by institute code, INSTCODE. FAO WIEWS institute code for the institute performing the observation/measurement.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementByInstituteID", + "group": "MeasurementScore" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementGrowthStage", + "title": "measurementGrowthStage", + "required": false, + "description": "The growth stage of the plant when the trait observation or measurement was made.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementGrowthStage", + "group": "MeasurementScore" + } + ] + }, + { + "name": "MeasurementTrait", + "title": "Trait descriptor (v20140515)", + "identifier": "http://purl.org/germplasm/germplasmTerm#MeasurementTrait", + "url": "http://rs.gbif.org/extension/germplasm/MeasurementTrait.xml", + "rowType": "http://purl.org/germplasm/germplasmTerm#MeasurementTrait", + "namespace": "http://purl.org/germplasm/germplasmTerm#", + "issued": "2014-05-08", + "description": "Trait descriptors describing methods and protocols followed when making trait measurements or the so-called Characterization and Evaluation (C and E) data for plant genetic resources for food and agriculture (PGRFA).", + "subject": "", + "fields": [ + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitID", + "title": "measurementTraitID", + "required": false, + "description": "Persistent identifier for a trait descriptor used to identify the description of the measurement method. This could be the persistent URL to an external ontology where the trait term is declared.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitID", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitIdentifier", + "title": "measurementTraitIdentifier", + "required": false, + "description": "Local identifier for a trait descriptor used to identify the description of the measurement method. This could be the persistent URL to an external ontology where the trait term is declared.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitIdentifier", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitName", + "title": "measurementTraitName", + "required": false, + "description": "English name used to identify the trait measurement method.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitName", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitCategory", + "title": "measurementTraitCategory", + "required": false, + "description": "Classification type for the trait descriptor.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitCategory", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitScale", + "title": "measurementTraitScale", + "required": false, + "description": "Measurement scale used to score the measurement values.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitScale", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitSource", + "title": "measurementTraitSource", + "required": false, + "description": "Reference to a standard Germplasm Descriptor. For example the UPOV descriptor or the Bioversity Crop Descriptor identifier.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitSource", + "group": "MeasurementTrait" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTraitRemarks", + "title": "measurementTraitRemarks", + "required": false, + "description": "Remarks related to the trait measurement method.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTraitRemarks", + "group": "MeasurementTrait" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementType", + "title": "measurementType", + "required": false, + "description": "The nature of the measurement, fact, characteristic, or assertion. Recommended best practice is to use a controlled vocabulary.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementType", + "group": "MeasurementTrait" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "title": "measurementMethod", + "required": false, + "description": "A description of or reference to (publication, URI) the method or protocol used to determine the measurement, fact, characteristic, or assertion.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/measurementMethod", + "group": "MeasurementTrait" + } + ] + }, + { + "name": "MeasurementTrial", + "title": "Trait measurement trial (v20140515)", + "identifier": "http://purl.org/germplasm/germplasmTerm#MeasurementTrial", + "url": "http://rs.gbif.org/extension/germplasm/MeasurementTrial.xml", + "rowType": "http://purl.org/germplasm/germplasmTerm#MeasurementTrial", + "namespace": "http://purl.org/germplasm/germplasmTerm#", + "issued": "2014-05-08", + "description": "Measurement trial (field or greenhouse) to collect trait measurements or so-called Characterization and Evaluation (C and E) data for plant genetic resources for food and agriculture (PGRFA).", + "subject": "", + "fields": [ + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrailID", + "title": "measurementTrailID", + "required": false, + "description": "Persistent identifier used to identify a trait measurement trial.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrailID", + "group": "MeasurementTrail" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrailIdentifier", + "title": "measurementTrailIdentifier", + "required": false, + "description": "Unique number in the dataset for the measurement trial.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrailIdentifier", + "group": "MeasurementTrail" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrailYear", + "title": "measurementTrailYear", + "required": false, + "description": "The year of the trait measurement trial.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrailYear", + "group": "MeasurementTrail" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrailReport", + "title": "measurementTrailReport", + "required": false, + "description": "A reference to a report of the trial field season, could be supplied as the URL to the report online or as the file name or bibliographic citation string.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrailReport", + "group": "MeasurementTrail" + }, + { + "name": "http://purl.org/germplasm/germplasmTerm#measurementTrailRemarks", + "title": "measurementTrailRemarks", + "required": false, + "description": "Information relevant for the interpretation of the scores in the trial season such as weather conditions or experimental design.", + "vocabulary": "http://purl.org/germplasm/germplasmTerm#", + "iri": "http://purl.org/germplasm/germplasmTerm#measurementTrailRemarks", + "group": "MeasurementTrail" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/locationID", + "title": "locationID", + "required": false, + "description": "An identifier for the set of location information (data associated with dcterms:Location). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/locationID", + "group": "MeasurementTrailLocation" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#location", + "title": "location", + "required": false, + "description": "Location for the measurement trial.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#location", + "group": "MeasurementTrailLocation" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#lon", + "title": "longitude", + "required": false, + "description": "Longitude for the trial location.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#lon", + "group": "MeasurementTrailLocation" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", + "title": "latitude", + "required": false, + "description": "Latitude for the trial location.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", + "group": "MeasurementTrailLocation" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#alt", + "title": "altitude", + "required": false, + "description": "Altitude for the trial location.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#alt", + "group": "MeasurementTrailLocation" + } + ] + }, + { + "name": "EOLMediaExtension", + "title": "EOL Media Extension 1.0", + "identifier": "http://eol.org/schema/media/Document", + "url": "http://rs.gbif.org/extension/eol/media_extension.xml", + "rowType": "http://eol.org/schema/media/Document", + "namespace": "http://www.eol.org/schema/transfer#", + "issued": "2010-01-01", + "description": "This extension draws from Audubon Core, Dublin Core and others to gather information about text and multimedia. It was designed to contain all the metadata that is required to be indexed by the Encyclopedia of Life (EOL), but this extension is hopefully general enough to be useful to all text and media providers and consumers. The original extension was offline; this is a copy recovered from the Internet Archive. The issue date is estimated.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": true, + "description": "An arbitrary code that is unique for the resource, with the resource being either a media item or text description.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "" + }, + { + "name": "http://rs.tdwg.org/dwc/terms/taxonID", + "title": "taxonID", + "required": false, + "description": "An identifier for the set of taxon information (data associated with the Taxon class). May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://rs.tdwg.org/dwc/terms/", + "iri": "http://rs.tdwg.org/dwc/terms/taxonID", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/type", + "title": "type", + "required": true, + "description": "Any dcmi type term from http://dublincore.org/documents/dcmi-type-vocabulary/ may be used. Recommended terms are StillImage, Sound, MovingImage and Text.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/type", + "group": "" + }, + { + "name": "http://rs.tdwg.org/audubon_core/subtype", + "title": "subtype", + "required": false, + "description": "Any of Drawing, Painting, Illustration, Graphic, Photograph, Map, Animation, Film, SlideShow, Diagram, Map, IdentificationKey, ScannedText, RecordedText, RecordedOrganism, TaxonPage, MultimediaLearningObject, VirtualRealityEnvironment, GlossaryPage.", + "vocabulary": "http://rs.tdwg.org/audubon_core/", + "iri": "http://rs.tdwg.org/audubon_core/subtype", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/format", + "title": "format", + "required": false, + "description": "Recommended best practice is to use a controlled vocabulary such as the list of Internet Media Types [MIME].", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/format", + "group": "" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/1.0/xmlns/CVterm", + "title": "CVterm", + "required": false, + "description": "Controlled vocabulary of subjects to support broad classification of media or text item. Terms from various controlled vocabularies may be used, such as the TDWG Species Profile Model (http://rs.tdwg.org/ontology/voc/SPMInfoItems) or the Plinian Core (http://www.gbif.es/plinian/doku.php). For terms from other vocabularies, a precise URI should be preferred over an unqualified term.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/1.0/xmlns/", + "iri": "http://iptc.org/std/Iptc4xmpExt/1.0/xmlns/CVterm", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "title", + "required": false, + "description": "Concise title, name, or brief descriptive label of the resource. This field should include the complete title with all the subtitles, if any. Detailed captions for media should be included in the description field.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/description", + "title": "description", + "required": false, + "description": "An account of the resource. For text descriptions, the entire account should be located here. For media resources, captions should be included here. Recommended to remove all embedded HTML tags and include only plain text.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/description", + "group": "" + }, + { + "name": "http://rs.tdwg.org/ac/terms/accessURI", + "title": "accessURI", + "required": false, + "description": "URI of the resource itself. If this resource can be acquired by an http request, its http URL should be given. If not, but it has some URI in another URI scheme, that may be given here.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/accessURI", + "group": "" + }, + { + "name": "http://eol.org/schema/media/thumbnailURL", + "title": "thumbnailURL", + "required": false, + "description": "URL of a thumbnail image associated with the resource.", + "vocabulary": "http://eol.org/schema/media/", + "iri": "http://eol.org/schema/media/thumbnailURL", + "group": "" + }, + { + "name": "http://rs.tdwg.org/ac/terms/furtherInformationURL", + "title": "furtherInformationURL", + "required": false, + "description": "The URL of a Web site that provides additional information about (this version of) the media resource.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/furtherInformationURL", + "group": "" + }, + { + "name": "http://rs.tdwg.org/ac/terms/derivedFrom", + "title": "derivedFrom", + "required": false, + "description": "A reference to an original resource from which the current one is derived.", + "vocabulary": "http://rs.tdwg.org/ac/terms/", + "iri": "http://rs.tdwg.org/ac/terms/derivedFrom", + "group": "" + }, + { + "name": "http://ns.adobe.com/xap/1.0/CreateDate", + "title": "CreateDate", + "required": false, + "description": "The date of the creation for the original resource from which the digital media was derived or created.", + "vocabulary": "http://ns.adobe.com/xap/1.0/", + "iri": "http://ns.adobe.com/xap/1.0/CreateDate", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/modified", + "title": "modified", + "required": false, + "description": "Most recent date that the resource was altered.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/modified", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/language", + "title": "language", + "required": false, + "description": "Language of resource itself represented in ISO 639-1 or ISO 639-3", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/language", + "group": "" + }, + { + "name": "http://ns.adobe.com/xap/1.0/Rating", + "title": "Rating", + "required": false, + "description": "A rating of the usability of the resource, provided by users or editors, with -1 defining rejected, 0 defining unrated, and 1 (worst) to 5 (best).", + "vocabulary": "http://ns.adobe.com/xap/1.0/", + "iri": "http://ns.adobe.com/xap/1.0/Rating", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/audience", + "title": "audience", + "required": false, + "description": "A class of entity for whom the resource is intended or useful.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/audience", + "group": "" + }, + { + "name": "http://ns.adobe.com/xap/1.0/rights/UsageTerms", + "title": "UsageTerms", + "required": true, + "description": "The license statement defining how resources may be used. Information on a collection applies to all contained objects unless the object has a different statement.", + "vocabulary": "http://ns.adobe.com/xap/1.0/rights/", + "iri": "http://ns.adobe.com/xap/1.0/rights/UsageTerms", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/rights", + "title": "rights", + "required": false, + "description": "Statement of rights associated with the resource. Creative Commons licenses require the resource to be attributed "in the manner specified by the author or licensor", and this is where that should be specified.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/rights", + "group": "" + }, + { + "name": "http://ns.adobe.com/xap/1.0/rights/Owner", + "title": "Owner", + "required": false, + "description": "A list of the names of the owners of the copyright. 'Unknown' is an acceptable value, but 'Public Domain' is not", + "vocabulary": "http://ns.adobe.com/xap/1.0/rights/", + "iri": "http://ns.adobe.com/xap/1.0/rights/Owner", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/bibliographicCitation", + "title": "bibliographicCitation", + "required": false, + "description": "A bibliographic reference for the resource. Sufficient bibliographic detail should be included to identify the resources as unambiguously as possible.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/bibliographicCitation", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/publisher", + "title": "publisher", + "required": false, + "description": "An entity responsible for making the resource available.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/publisher", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/contributor", + "title": "contributor", + "required": false, + "description": "An entity responsible for making contributions to the resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/contributor", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/creator", + "title": "creator", + "required": false, + "description": "An entity primarily responsible for making the resource. Creators of text will be considered authors; creators of photographs will be considered photographers, etc.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/creator", + "group": "" + }, + { + "name": "http://eol.org/schema/agent/agentID", + "title": "agentID", + "required": false, + "description": "An identifier for an entity which had a role in the creation or provision of the resource. May be a global unique identifier or an identifier specific to the data set.", + "vocabulary": "http://eol.org/schema/agent/", + "iri": "http://eol.org/schema/agent/agentID", + "group": "" + }, + { + "name": "http://iptc.org/std/Iptc4xmpExt/1.0/xmlns/LocationCreated", + "title": "LocationCreated", + "required": false, + "description": "The location at which the media recording instrument was placed when the media was created.", + "vocabulary": "http://iptc.org/std/Iptc4xmpExt/1.0/xmlns/", + "iri": "http://iptc.org/std/Iptc4xmpExt/1.0/xmlns/LocationCreated", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/spatial", + "title": "spatial", + "required": false, + "description": "Secondarly location field. Can be used to document the location of collection of the subject.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/spatial", + "group": "" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", + "title": "lat", + "required": false, + "description": "Latitude of the location where the resource was created. Expressed on decimal WGS84 format as defined by the W3C Basic Geo Vocabulary.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", + "group": "" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#long", + "title": "long", + "required": false, + "description": "Longitude of the location where the resource was created. Expressed on decimal WGS84 format as defined by the W3C Basic Geo Vocabulary.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#long", + "group": "" + }, + { + "name": "http://www.w3.org/2003/01/geo/wgs84_pos#alt", + "title": "alt", + "required": false, + "description": "Altitude of the location where the resource was created. Expressed on decimal WGS84 format as defined by the W3C Basic Geo Vocabulary.", + "vocabulary": "http://www.w3.org/2003/01/geo/wgs84_pos#", + "iri": "http://www.w3.org/2003/01/geo/wgs84_pos#alt", + "group": "" + }, + { + "name": "http://eol.org/schema/reference/referenceID", + "title": "referenceID", + "required": false, + "description": "An identifier for a related resource that is referenced, cited, or otherwise pointed to by the described resource.", + "vocabulary": "http://eol.org/schema/reference/", + "iri": "http://eol.org/schema/reference/referenceID", + "group": "" + } + ] + }, + { + "name": "EOLReferencesExtension", + "title": "EOL References Extension 1.0", + "identifier": "http://eol.org/schema/reference/Reference", + "url": "http://rs.gbif.org/extension/eol/reference_extension.xml", + "rowType": "http://eol.org/schema/reference/Reference", + "namespace": "http://www.eol.org/schema/transfer#", + "issued": "2010-01-01", + "description": "This extension draws from BIBO (http://bibliontology.com/), Dublin Core and others to gather information about citations and bibliographic references. The original extension was offline; this is a copy recovered from the Internet Archive. The issue date is estimated.", + "subject": "", + "fields": [ + { + "name": "http://purl.org/dc/terms/identifier", + "title": "identifier", + "required": true, + "description": "An identifier for a resource that is referenced, cited, or otherwise pointed to by a taxon or media resource.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/identifier", + "group": "" + }, + { + "name": "http://eol.org/schema/reference/publicationType", + "title": "publicationType", + "required": false, + "description": "book, journal, journal article, webpage, etc", + "vocabulary": "http://eol.org/schema/reference/", + "iri": "http://eol.org/schema/reference/publicationType", + "group": "" + }, + { + "name": "http://eol.org/schema/reference/full_reference", + "title": "full_reference", + "required": false, + "description": "A complete bibliographic citation describing the resource. Use of this field will cause the more specific fields here to be ignored.", + "vocabulary": "http://eol.org/schema/reference/", + "iri": "http://eol.org/schema/reference/full_reference", + "group": "" + }, + { + "name": "http://eol.org/schema/reference/primaryTitle", + "title": "primaryTitle", + "required": false, + "description": "Used to describe the title of a bibliographic resource.", + "vocabulary": "http://eol.org/schema/reference/", + "iri": "http://eol.org/schema/reference/primaryTitle", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/title", + "title": "title", + "required": false, + "description": "Used to describe the title of an artlcle or chapter", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/title", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/pages", + "title": "pages", + "required": false, + "description": "A string of non-contiguous page spans that locate a Document within a Collection. Example: 23-25, 34, 54-56. For continuous page ranges, use the pageStart and pageEnd properties.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/pages", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/pageStart", + "title": "pageStart", + "required": false, + "description": "Starting page number within a continuous page range.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/pageStart", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/pageEnd", + "title": "pageEnd", + "required": false, + "description": "Ending page number within a continuous page range.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/pageEnd", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/volume", + "title": "volume", + "required": false, + "description": "A volume number.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/volume", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/edition", + "title": "edition", + "required": false, + "description": "The name defining a special edition of a document. Normally its a literal value composed of a version number and words.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/edition", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/publisher", + "title": "publisher", + "required": false, + "description": "Used to link a bibliographic item to its publisher.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/publisher", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/authorList", + "title": "authorList", + "required": false, + "description": "An ordered list of authors. Normally, this list is seen as a priority list that order authors by importance. Last name, first", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/authorList", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/editorList", + "title": "editorList", + "required": false, + "description": "An ordered list of editors. Normally, this list is seen as a priority list that order editors by importance.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/editorList", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/created", + "title": "created", + "required": false, + "description": "The date of the creation for the original resource from which the digital media was derived or created.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/created", + "group": "" + }, + { + "name": "http://purl.org/dc/terms/language", + "title": "language", + "required": false, + "description": "Language of resource itself represented in ISO639-1 or ISO639-3.", + "vocabulary": "http://purl.org/dc/terms/", + "iri": "http://purl.org/dc/terms/language", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/uri", + "title": "uri", + "required": false, + "description": "Universal Resource Identifier of a document.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/uri", + "group": "" + }, + { + "name": "http://purl.org/ontology/bibo/doi", + "title": "doi", + "required": false, + "description": "Digital Object Identifier (DOI) for identifying the resource.", + "vocabulary": "http://purl.org/ontology/bibo/", + "iri": "http://purl.org/ontology/bibo/doi", + "group": "" + }, + { + "name": "http://schemas.talis.com/2005/address/schema#localityName", + "title": "localityName", + "required": false, + "description": "Used to name the locality of a publisher, an author, etc.", + "vocabulary": "http://schemas.talis.com/2005/address/schema#", + "iri": "http://schemas.talis.com/2005/address/schema#localityName", + "group": "" + } + ] + } +] diff --git a/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/generateGbifCatalog.ts b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/generateGbifCatalog.ts new file mode 100644 index 00000000000..c614bbed0c6 --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/DwcaDefinition/data/generateGbifCatalog.ts @@ -0,0 +1,155 @@ +import { mkdir, writeFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; + +import { XMLParser } from 'fast-xml-parser'; + +type RegistryEntry = { + readonly identifier: string; + readonly url: string; + readonly title: string; + readonly description?: string; + readonly subject?: string | null; + readonly issued?: string; + readonly isLatest?: boolean; +}; + +type Registry = { readonly extensions: readonly RegistryEntry[] }; + +type XmlAttributes = Readonly>; +type XmlNode = { + readonly [key: string]: unknown; + readonly ':@'?: XmlAttributes; +}; + +type CatalogField = { + readonly name: string; + readonly title: string; + readonly required: boolean; + readonly description?: string; + readonly vocabulary?: string; + readonly iri: string; + readonly group?: string; +}; + +type CatalogDefinition = { + readonly name: string; + readonly title: string; + readonly identifier: string; + readonly url: string; + readonly rowType: string; + readonly namespace: string; + readonly issued?: string; + readonly description?: string; + readonly subject: string; + readonly fields: readonly CatalogField[]; +}; + +const registryUrl = 'https://rs.gbif.org/extensions.json'; +const outputDirectory = resolve( + process.cwd(), + 'lib/components/DwcaDefinition/data' +); + +const parser = new XMLParser({ + ignoreAttributes: false, + attributeNamePrefix: '@_', + preserveOrder: true, + processEntities: false, +}); + +function getChildren(node: XmlNode, name: string): readonly XmlNode[] { + const children = node[name]; + return Array.isArray(children) + ? children.filter((child): child is XmlNode => typeof child === 'object') + : []; +} + +function attributes(node: XmlNode | undefined): XmlAttributes { + return node?.[':@'] ?? {}; +} + +function parseDefinition(entry: RegistryEntry, xml: string): CatalogDefinition { + const root = parser.parse(xml).find((node: XmlNode) => node.extension); + if (root === undefined) + throw new Error(`No extension element in ${entry.url}`); + + const rootAttributes = attributes(root); + const properties = getChildren(root, 'extension'); + if (properties.length === 0) + throw new Error(`Invalid definition ${entry.url}`); + + const fields = properties.map((property) => { + const fieldAttributes = attributes(property); + const name = + fieldAttributes['@_qualName'] ?? + `${fieldAttributes['@_namespace'] ?? ''}${fieldAttributes['@_name'] ?? ''}`; + return { + name, + title: fieldAttributes['@_label'] ?? fieldAttributes['@_name'] ?? name, + required: fieldAttributes['@_required'] === 'true', + description: fieldAttributes['@_dc:description'] ?? '', + vocabulary: fieldAttributes['@_namespace'] ?? '', + iri: name, + group: fieldAttributes['@_group'] ?? '', + }; + }); + + return { + name: rootAttributes['@_name'] ?? entry.identifier, + title: rootAttributes['@_dc:title'] ?? entry.title, + identifier: entry.identifier, + url: entry.url, + rowType: rootAttributes['@_rowType'] ?? entry.identifier, + namespace: rootAttributes['@_namespace'] ?? '', + ...(rootAttributes['@_dc:issued'] === undefined + ? {} + : { issued: rootAttributes['@_dc:issued'] }), + ...(rootAttributes['@_dc:description'] === undefined + ? {} + : { description: rootAttributes['@_dc:description'] }), + subject: entry.subject ?? '', + fields, + }; +} + +async function fetchText(url: string): Promise { + const response = await fetch(url); + if (!response.ok) + throw new Error(`${response.status} ${response.statusText}: ${url}`); + return response.text(); +} + +async function main(): Promise { + const registry = JSON.parse(await fetchText(registryUrl)) as Registry; + const latest = registry.extensions.filter((entry) => entry.isLatest === true); + const definitions = await Promise.all( + latest.map(async (entry) => + parseDefinition(entry, await fetchText(entry.url)) + ) + ); + + const cores = definitions.filter((definition) => + definition.url.includes('/core/') + ); + const extensions = definitions.filter((definition) => + definition.url.includes('/extension/') + ); + + await mkdir(outputDirectory, { recursive: true }); + await Promise.all([ + writeFile( + resolve(outputDirectory, 'gbifCores.json'), + `${JSON.stringify(cores, null, 2)}\n` + ), + writeFile( + resolve(outputDirectory, 'gbifExtensions.json'), + `${JSON.stringify(extensions, null, 2)}\n` + ), + ]); + + console.log( + `Wrote ${cores.length} cores and ${extensions.length} extensions` + ); +} + +void main(); diff --git a/specifyweb/frontend/js_src/lib/components/ExportFeed/Dwca.tsx b/specifyweb/frontend/js_src/lib/components/ExportFeed/Dwca.tsx index 4834fa9a8d9..9b7203edd16 100644 --- a/specifyweb/frontend/js_src/lib/components/ExportFeed/Dwca.tsx +++ b/specifyweb/frontend/js_src/lib/components/ExportFeed/Dwca.tsx @@ -63,7 +63,7 @@ export function MakeDwcaOverlay(): JSX.Element | null { export const dwcaAppResourceFilter: AppResourceFilters = { viewSets: false, - appResources: ['otherXmlResource', 'otherAppResources'], + appResources: ['dwcaDefinition', 'otherXmlResource', 'otherAppResources'], }; export function PickAppResource({ diff --git a/specifyweb/frontend/js_src/lib/components/PickLists/definitions.ts b/specifyweb/frontend/js_src/lib/components/PickLists/definitions.ts index e9023ca2321..9fe518f92c0 100644 --- a/specifyweb/frontend/js_src/lib/components/PickLists/definitions.ts +++ b/specifyweb/frontend/js_src/lib/components/PickLists/definitions.ts @@ -261,7 +261,7 @@ export const getFrontEndPickLists = f.store<{ SpAppResource: { mimeType: definePicklist( '_MimeType', - ['application/json', 'text/xml', 'jrxml/label', 'jrxml/report'].map( + ['application/json', 'text/xml', 'jrxml/label', 'jrxml/report', 'application/vnd.specify.dwca+xml'].map( (mimeType) => createPickListItem(mimeType, mimeType) ) ).set('readOnly', false), diff --git a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Context.tsx b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Context.tsx index 664ff877ef3..5f3f6cd1579 100644 --- a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Context.tsx +++ b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Context.tsx @@ -7,7 +7,10 @@ import { userPreferences } from '../Preferences/userPreferences'; export const IsQueryBasicContext = React.createContext(false); IsQueryBasicContext.displayName = 'IsQueryBasicContext'; -export function useQueryViewPref(queryId: number): GetSet { +export function useQueryViewPref( + queryId: number, + defaultBasicView = false +): GetSet { const [isDefaultBasicViewPref] = userPreferences.use( 'queryBuilder', 'behavior', @@ -22,7 +25,7 @@ export function useQueryViewPref(queryId: number): GetSet { ? true : viewCollectionPref.detailedView.includes(queryId) ? false - : isDefaultBasicViewPref; + : defaultBasicView || isDefaultBasicViewPref; return [ isBasic, diff --git a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Fields.tsx b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Fields.tsx index fd6f7f982fc..5720e0a10d4 100644 --- a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Fields.tsx +++ b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Fields.tsx @@ -25,12 +25,15 @@ export function QueryFields({ onChangeField: handleChangeField, onMappingChange: handleMappingChange, onRemoveField: handleRemoveField, + canRemoveField, + isFieldReadOnly, onOpen: handleOpen, onClose: handleClose, onLineFocus: handleLineFocus, onLineMove: handleLineMove, onOpenMap: handleOpenMap, onChangeFields: handleChangeFields, + renderFieldPrefix, }: { readonly baseTableName: keyof Tables; readonly fields: RA; @@ -59,6 +62,12 @@ export function QueryFields({ ) => void) | undefined; readonly onRemoveField: ((line: number) => void) | undefined; + readonly canRemoveField?: + | ((field: QueryField, line: number) => boolean) + | undefined; + readonly isFieldReadOnly?: + | ((field: QueryField, line: number) => boolean) + | undefined; readonly onOpen: ((line: number, index: number) => void) | undefined; readonly onClose: (() => void) | undefined; readonly onLineFocus: ((line: number) => void) | undefined; @@ -67,6 +76,9 @@ export function QueryFields({ | undefined; readonly onOpenMap: ((line: number) => void) | undefined; readonly onChangeFields?: ((fields: RA) => void) | undefined; + readonly renderFieldPrefix?: + | ((field: QueryField, line: number) => JSX.Element) + | undefined; }): JSX.Element { const fieldsContainerRef = React.useRef(null); @@ -183,7 +195,7 @@ export function QueryFields({ items-center overflow-y-auto sm:flex-1 ${ isBasic - ? 'grid grid-cols-[auto,auto,1fr,auto] content-start items-start gap-x-2 gap-y-2' + ? 'grid grid-cols-[4rem,minmax(0,18rem),minmax(0,1fr),auto,auto] content-start items-start gap-x-2 gap-y-2' : '' } `} @@ -205,7 +217,11 @@ export function QueryFields({ openedElement?.line === line ? openedElement?.index : undefined } showHiddenFields={showHiddenFields} - onChange={handleChangeField?.bind(undefined, line)} + onChange={ + isFieldReadOnly?.(field, line) + ? undefined + : handleChangeField?.bind(undefined, line) + } onClose={handleClose} onLineFocus={(target): void => (target === 'previous' && line === 0) || @@ -219,20 +235,43 @@ export function QueryFields({ : line + 1 ) } - onMappingChange={handleMappingChange?.bind(undefined, line)} + onMappingChange={ + isFieldReadOnly?.(field, line) + ? undefined + : handleMappingChange?.bind(undefined, line) + } onMoveDown={ - line + 1 === length || handleLineMove === undefined + isFieldReadOnly?.(field, line) || + line + 1 === length || + handleLineMove === undefined ? undefined : (): void => handleLineMove?.(line, 'down') } onMoveUp={ - line === 0 || handleLineMove === undefined + isFieldReadOnly?.(field, line) || + line === 0 || + handleLineMove === undefined ? undefined : (): void => handleLineMove?.(line, 'up') } - onOpen={handleOpen?.bind(undefined, line)} + onOpen={ + isFieldReadOnly?.(field, line) + ? undefined + : handleOpen?.bind(undefined, line) + } onOpenMap={handleOpenMap?.bind(undefined, line)} - onRemove={handleRemoveField?.bind(undefined, line)} + onRemove={ + handleRemoveField !== undefined && + isFieldReadOnly?.(field, line) !== true && + (canRemoveField?.(field, line) ?? true) + ? handleRemoveField.bind(undefined, line) + : undefined + } + renderFieldPrefix={ + renderFieldPrefix === undefined + ? undefined + : (): JSX.Element => renderFieldPrefix(field, line) + } /> diff --git a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Header.tsx b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Header.tsx index a4c09d0b0a5..064b68f4f5a 100644 --- a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Header.tsx +++ b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Header.tsx @@ -45,6 +45,7 @@ export function QueryHeader({ unsetUnloadProtect, onTriedToSave: handleTriedToSave, onSaved: handleSaved, + defaultBasicView = false, }: { readonly recordSet?: SpecifyResource; readonly query: SerializedResource; @@ -53,6 +54,7 @@ export function QueryHeader({ readonly form: HTMLFormElement | null; readonly state: MainState; readonly isEmbedded: boolean; + readonly defaultBasicView?: boolean; readonly getQueryFieldRecords: | (() => RA>) | undefined; @@ -75,7 +77,7 @@ export function QueryHeader({ [query] ); - const [isBasic, setIsBasic] = useQueryViewPref(query.id); + const [isBasic, setIsBasic] = useQueryViewPref(query.id, defaultBasicView); return (
void) | undefined; readonly onMoveDown: (() => void) | undefined; readonly onOpenMap: (() => void) | undefined; + readonly renderFieldPrefix?: (() => JSX.Element) | undefined; }): JSX.Element { const lineRef = React.useRef(null); const queryFieldFilterSpecs = useQueryFieldFilterSpecs(); @@ -292,11 +294,11 @@ export function QueryLine({ ${isBasic ? 'contents' : ''} `} > - {typeof handleRemove === 'function' && ( + {typeof handleRemove === 'function' ? ( {icons.trash} - )} + ) : isBasic ? ( + // Keep the basic-view grid aligned when a field cannot be removed. +