lipdjs
Version:
A JavaScript library for reading and writing LiPD (Linked Paleo Data) files
1 lines • 1.66 MB
Source Map (JSON)
{"version":3,"sources":["../src/lipd.ts","../src/utils/env.ts","../src/utils/logger.ts","../src/globals/urls.ts","../src/rdfGraph.ts","../src/utils/rdfToLipd.ts","../src/globals/synonyms.ts","../src/globals/schema.ts","../src/globals/blacklist.ts","../src/utils/utils.ts","../src/utils/bagit.ts","../src/utils/lipdToRdf.ts","../src/lipdSeries.ts","../src/globals/queries.ts","../src/utils/multiProcessing.ts","../src/classes/archivetype.ts","../src/classes/change.ts","../src/classes/changelog.ts","../src/classes/calibration.ts","../src/classes/compilation.ts","../src/classes/interpretationseasonality.ts","../src/classes/interpretationvariable.ts","../src/classes/interpretation.ts","../src/classes/paleoproxy.ts","../src/classes/paleoproxygeneral.ts","../src/classes/paleounit.ts","../src/classes/paleovariable.ts","../src/classes/physicalsample.ts","../src/classes/resolution.ts","../src/classes/variable.ts","../src/classes/datatable.ts","../src/classes/model.ts","../src/classes/chrondata.ts","../src/classes/person.ts","../src/classes/funding.ts","../src/classes/location.ts","../src/classes/paleodata.ts","../src/classes/publication.ts","../src/classes/dataset.ts","../src/utils/rdfToJson.ts","../src/utils/jsonToRdf.ts"],"sourcesContent":["import { Store, Writer } from 'n3';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport JSZip from 'jszip';\nimport { isBrowser } from './utils/env';\n\nimport { Logger } from './utils/logger';\nimport { DEFAULT_GRAPH_URI, NSURL } from './globals/urls';\nimport { RDFGraph, AuthCredentials } from './rdfGraph';\nimport { RDFToLiPD } from './utils/rdfToLipd';\nimport { LipdToRDF } from './utils/lipdToRdf';\nimport { LiPDSeries } from './lipdSeries';\nimport {\n QUERY_DSNAME,\n QUERY_DSID,\n QUERY_UNIQUE_ARCHIVE_TYPE,\n QUERY_FILTER_DATASET_NAME,\n QUERY_FILTER_COMPILATION,\n QUERY_FILTER_TIME\n} from './globals/queries';\n\nimport { multiLoadLipd } from './utils/multiProcessing';\nimport { sanitizeId, serializeStore } from './utils/utils';\nimport { Dataset } from './classes/dataset';\nimport { RDFToJSON } from './utils/rdfToJson';\nimport { JSONToRDF } from './utils/jsonToRdf';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as pako from 'pako';\n\nconst logger = Logger.getInstance();\n\nexport class LiPD extends RDFGraph {\n /**\n * The LiPD class describes a LiPD (Linked Paleo Data) object. It contains an RDF Graph which is serialization \n * of the LiPD data into an RDF graph containing terms from the LiPD Ontology.\n * @param store Optional N3 store to initialize with\n * @param quiet Whether to suppress log messages\n * @param endpoint Optional SPARQL endpoint URL\n * @param auth Optional authentication credentials for the SPARQL endpoint\n */\n constructor(store?: Store, quiet: boolean = false, endpoint?: string, auth?: AuthCredentials) {\n super(store, quiet, endpoint, auth);\n }\n\n /**\n * Load LiPD files from a directory\n * @param dirPath Path to the directory containing LiPD files\n * @param standardize Whether to standardize the data\n * @param addLabels Whether to add labels\n */\n public async loadFromDir(dirPath: string, standardize: boolean = true, addLabels: boolean = true): Promise<void> {\n if (!fs.existsSync(dirPath)) {\n throw new Error(`Directory ${dirPath} does not exist`);\n }\n\n const lipdFiles: string[] = [];\n const files = fs.readdirSync(dirPath);\n \n for (const file of files) {\n const filePath = path.join(dirPath, file);\n if (fs.statSync(filePath).isFile() && file.endsWith('.lpd')) {\n lipdFiles.push(filePath);\n }\n }\n\n await this.load(lipdFiles, standardize, addLabels);\n }\n\n /**\n * Load LiPD files\n * @param lipdFiles Array of paths to LiPD files (can also be URLs)\n * @param standardize Whether to standardize the data\n * @param addLabels Whether to add labels\n */\n public async load(lipdFiles: string | string[], standardize: boolean = true, addLabels: boolean = true): Promise<void> {\n logger.debug('Loading LiPD files...' + lipdFiles);\n const files = Array.isArray(lipdFiles) ? lipdFiles : [lipdFiles];\n const numFiles = files.length;\n \n if (!this.quiet) {\n logger.debug(`Loading ${numFiles} LiPD files`);\n }\n\n this.store = await multiLoadLipd(this.store, files, true, standardize, addLabels);\n logger.debug('Multi-loading done');\n\n logger.debug(`Number of quads in LiPD: ${this.store.size}`);\n\n if (!this.quiet) {\n logger.debug('Loaded..');\n }\n }\n\n /**\n * Load LiPD file from a File object (for browser file input)\n * @param file File object from HTML5 file input\n * @param standardize Whether to standardize the data\n * @param addLabels Whether to add labels\n */\n public async loadFromFile(file: File, standardize: boolean = true, addLabels: boolean = true): Promise<void> {\n logger.debug('Loading LiPD file from File object: %s', file.name);\n \n if (!this.quiet) {\n logger.debug(`Loading LiPD file: ${file.name}`);\n }\n\n const converter = new LipdToRDF(standardize, addLabels);\n await converter.loadFromFile(file);\n \n // Merge the converted data into our store\n const quads = converter.store.getQuads(null, null, null, null);\n for (const quad of quads) {\n if (this.store.getQuads(quad.subject, quad.predicate, quad.object, quad.graph).length === 0) {\n this.store.addQuad(quad);\n }\n }\n\n logger.debug(`Number of quads in LiPD: ${this.store.size}`);\n\n if (!this.quiet) {\n logger.debug('File loaded successfully');\n }\n }\n\n /**\n * Get LiPD JSON for a dataset\n * @param dsname Dataset ID\n * @returns LiPD JSON\n */\n public getLipd(dsname: string): any {\n const converter = new RDFToLiPD(this.store);\n return converter.convertToJson(dsname);\n }\n\n /**\n * Create LiPD file for a dataset\n * @param dsname Dataset ID\n * @param lipdFile Path to LiPD file\n * @returns LiPD JSON\n */\n public async createLipd(dsname: string, lipdFile: string): Promise<any> {\n const converter = new RDFToLiPD(this.store);\n const lipdJson = await converter.convert(dsname, lipdFile);\n // Remove values from variables before creating LiPD file\n // Values should be stored in CSV files, not in metadata.jsonld\n return this._removeValuesFromVariables(lipdJson);\n }\n\n /**\n * Get dataset(s) from the graph and returns the popped LiPD object\n * @param dsnames Dataset name(s) to get\n * @returns LiPD object with the retrieved dataset(s)\n */\n public get(dsnames: string | string[]): LiPD {\n const names = Array.isArray(dsnames) ? dsnames : [dsnames];\n const dsids = names.map(name => \n name.startsWith(NSURL) ? name : `${NSURL}/${name}`\n );\n\n const ds = super.get(dsids);\n return new LiPD(ds.getStore(), this.quiet, this.getEndpoint(), this.auth);\n }\n\n /**\n * Pop dataset(s) from the graph and returns the popped LiPD object\n * @param dsnames Dataset name(s) to be popped\n * @returns LiPD object with the popped dataset(s)\n */\n public pop(dsnames: string | string[]): LiPD {\n const names = Array.isArray(dsnames) ? dsnames : [dsnames];\n const dsids = names.map(name => \n name.startsWith(NSURL) ? name : `${NSURL}/${name}`\n );\n\n const popped = super.pop(dsids);\n return new LiPD(popped.getStore(), this.quiet, this.getEndpoint(), this.auth);\n }\n\n /**\n * Remove dataset(s) from the graph\n * @param dsnames Dataset name(s) to be removed\n */\n public remove(dsnames: string | string[]): void {\n const names = Array.isArray(dsnames) ? dsnames : [dsnames];\n const dsids = names.map(name => \n name.startsWith(NSURL) ? name : `${NSURL}/${name}`\n );\n\n super.remove(dsids);\n }\n\n /**\n * Get all dataset names\n * @returns List of dataset names\n */\n public async getAllDatasetNames(): Promise<string[]> {\n const [qres] = await this.query(QUERY_DSNAME);\n return qres.map((row: { dsname: any }) => sanitizeId(row.dsname.value));\n }\n\n /**\n * Get all dataset IDs\n * @returns List of dataset IDs\n */\n public async getAllDatasetIds(): Promise<string[]> {\n const [qres] = await this.query(QUERY_DSID);\n return qres.map((row: { dsid: string }) => sanitizeId(row.dsid));\n }\n\n /**\n * Get all archive types\n * @returns List of archive types\n */\n public async getAllArchiveTypes(): Promise<string[]> {\n const [qres] = await this.query(QUERY_UNIQUE_ARCHIVE_TYPE);\n return qres.map((row: { archiveType: string }) => String(row.archiveType));\n }\n\n /**\n * Get all datasets as Dataset class instances\n * @returns List of Dataset objects\n * \n * @example\n * ```typescript\n * const lipd = new LiPD();\n * lipd.load('path/to/file.lpd').then(() => {\n * lipd.getDatasets().then(datasets => {\n * // Work with dataset objects\n * console.log(datasets[0].getName());\n * });\n * });\n * ```\n */\n public async getDatasets(): Promise<Dataset[]> {\n const datasets: Dataset[] = [];\n const datasetNames = await this.getAllDatasetNames();\n \n for (const dsname of datasetNames) {\n let dsuri = NSURL + \"/\" + dsname\n let r2j = new RDFToJSON(dsuri, this.store)\n let data = JSON.parse(r2j.toJson())\n let ds = Dataset.fromData(dsuri, data)\n \n // Order variables according to column number\n for (const pd of ds.getPaleoData()) {\n for (const table of pd.getMeasurementTables()) {\n table.variables = table.variables.sort((a: any, b: any) => (a.columnNumber ?? 0) - (b.columnNumber ?? 0));\n }\n }\n datasets.push(ds)\n }\n \n return datasets;\n }\n\n /**\n * Loads instances of Dataset class into the LiPD graph\n * @param datasets List of Dataset objects\n * \n * @example\n * ```typescript\n * // Load datasets from one LiPD object to another\n * const lipd1 = new LiPD();\n * lipd1.load('path/to/file.lpd').then(() => {\n * lipd1.getDatasets().then(datasets => {\n * // Modify datasets if needed\n * \n * // Create a new LiPD instance and load the datasets\n * const lipd2 = new LiPD();\n * lipd2.loadDatasets(datasets);\n * });\n * });\n * ```\n */\n public loadDatasets(datasets: Dataset[]): void {\n for (const ds of datasets) {\n this._fixMissingIds(ds);\n const dsuri = ds.getId() || NSURL + \"/\" + ds.getName();\n const j2r = new JSONToRDF(this.store, dsuri);\n j2r.loadJson(ds.toData());\n }\n }\n\n /**\n * Generate a unique ID with a given prefix\n * @param prefix Prefix for the ID (default: 'PYD')\n * @returns Unique formatted ID\n * @private\n */\n private _generateUniqueId(prefix: string = 'PYD'): string {\n // Generate a random UUID\n const randomUuid = uuidv4();\n \n // Convert UUID format to the specific format we need\n const idStr = randomUuid;\n const formattedId = `${prefix}-${idStr.substring(0, 5)}-${idStr.substring(9, 13)}-${idStr.substring(14, 18)}-${idStr.substring(19, 23)}-${idStr.substring(24, 28)}`;\n \n return formattedId;\n }\n\n /**\n * Fix missing IDs in a dataset\n * @param ds Dataset to fix\n * @private\n */\n private _fixMissingIds(ds: Dataset): void {\n // Assign variable ids if not present\n // Assign datatable csv file name if not present\n let pdCounter = 0;\n for (const pd of ds.getPaleoData()) {\n let tableCounter = 0;\n for (const table of pd.getMeasurementTables()) {\n if (!table.getFileName()) {\n table.setFileName(`paleo${pdCounter}measurement${tableCounter}.csv`);\n }\n for (const v of table.getVariables()) {\n if (!v.getVariableId()) {\n v.setVariableId(this._generateUniqueId('TS'));\n }\n }\n tableCounter++;\n }\n pdCounter++;\n }\n\n let chronCounter = 0;\n for (const chron of ds.getChronData()) {\n let tableCounter = 0;\n for (const table of chron.getMeasurementTables()) {\n if (!table.getFileName()) {\n table.setFileName(`chron${chronCounter}measurement${tableCounter}.csv`);\n }\n for (const v of table.getVariables()) {\n if (!v.getVariableId()) {\n v.setVariableId(this._generateUniqueId('TS'));\n }\n }\n tableCounter++;\n }\n\n let modelCounter = 0;\n for (const model of chron.getModeledBy()) {\n let tableCounter = 0;\n for (const table of model.getEnsembleTables()) {\n if (!table.getFileName()) {\n table.setFileName(`chron${chronCounter}model${modelCounter}ensemble${tableCounter}.csv`);\n }\n for (const v of table.getVariables()) {\n if (!v.getVariableId()) {\n v.setVariableId(this._generateUniqueId('TS'));\n }\n }\n tableCounter++;\n }\n modelCounter++;\n }\n chronCounter++;\n }\n }\n /**\n * Convert the LiPD object to a LiPDSeries object\n * @returns LiPDSeries object\n */\n public toLipdSeries(): LiPDSeries {\n const series = new LiPDSeries();\n series.load(this);\n return series;\n }\n\n /**\n * Filter datasets by name\n * @param datasetName Dataset name to filter by\n * @returns New LiPD object with filtered datasets\n */\n public async filterByDatasetName(datasetName: string): Promise<LiPD> {\n const query = QUERY_FILTER_DATASET_NAME.replace('[datasetName]', datasetName);\n const [qres] = await this.query(query);\n const dsnames = qres.map((row: { dsname: string }) => sanitizeId(row.dsname));\n return this.get(dsnames);\n }\n\n /**\n * Filter datasets by compilation name\n * @param compilationName Compilation name to filter by\n * @returns New LiPD object with filtered datasets\n */\n public async filterByCompilationName(compilationName: string): Promise<LiPD> {\n const query = QUERY_FILTER_COMPILATION.replace('[compilationName]', compilationName);\n const [qres] = await this.query(query);\n const dsnames = qres.map((row: { dataSetName: string }) => sanitizeId(row.dataSetName));\n return this.get(dsnames);\n }\n\n public async serialize(type: string = 'turtle'): Promise<string> {\n return await serializeStore(this.store, type, logger);\n }\n\n /**\n * Filter datasets by time interval\n * @param timeBound Minimum and maximum age values\n * @param timeBoundType Type of querying to perform\n * @param recordLength Minimum record length\n * @returns New LiPD object with filtered datasets\n */\n public async filterByTime(\n timeBound: [number, number],\n timeBoundType: 'any' | 'entire' | 'entirely' = 'any',\n recordLength?: number\n ): Promise<LiPD> {\n if (timeBound[0] > timeBound[1]) {\n timeBound = [timeBound[1], timeBound[0]];\n }\n\n const query = QUERY_FILTER_TIME;\n const [, df] = await this.query(query);\n\n let filterDf;\n if (recordLength === undefined) {\n switch (timeBoundType) {\n case 'entirely':\n filterDf = df.filter((row: { minage: number; maxage: number }) => \n row.minage <= timeBound[0] && row.maxage >= timeBound[1]\n );\n break;\n case 'entire':\n filterDf = df.filter((row: { minage: number; maxage: number }) => \n row.minage >= timeBound[0] && row.maxage <= timeBound[1]\n );\n break;\n case 'any':\n filterDf = df.filter((row: { minage: number }) => row.minage <= timeBound[1]);\n break;\n default:\n throw new Error(\"timeBoundType must be in ['any', 'entirely', 'entire']\");\n }\n } else {\n switch (timeBoundType) {\n case 'entirely':\n filterDf = df.filter((row: { minage: number; maxage: number }) => \n row.minage <= timeBound[0] && \n row.maxage >= timeBound[1] && \n Math.abs(row.maxage - row.minage) >= recordLength\n );\n break;\n case 'entire':\n filterDf = df.filter((row: { minage: number; maxage: number }) => \n row.minage >= timeBound[0] && \n row.maxage <= timeBound[1] && \n Math.abs(row.maxage - row.minage) >= recordLength\n );\n break;\n case 'any':\n filterDf = df.filter((row: { minage: number }) => \n row.minage <= timeBound[1] && \n Math.abs(row.minage - timeBound[1]) >= recordLength\n );\n break;\n default:\n throw new Error(\"timeBoundType must be in ['any', 'entirely', 'entire']\");\n }\n }\n\n const dsnames = filterDf.map((row: { dsname: string }) => row.dsname);\n return this.get(dsnames);\n }\n\n /**\n * Updates local LiPD Graph for datasets to remote endpoint\n * @param dsnames Array of dataset names\n * @param batchSize Number of quads to include in each update batch (default: 100)\n * \n * @example\n * ```typescript\n * // Update datasets to remote endpoint\n * const lipd = new LiPD();\n * lipd.setEndpoint(\"https://linkedearth.graphdb.mint.isi.edu/repositories/LiPDVerse-dynamic\");\n * // Set authentication if needed\n * lipd.setAuth({ username: \"user\", password: \"pass\" });\n * lipd.updateRemoteDatasets([\"MyDataset1\", \"MyDataset2\"], 100);\n * ```\n */\n public async updateRemoteDatasets(dsnames: string | string[], batchSize: number = 100): Promise<void> { // batchSize ignored in bulk loader\n if (!this.endpoint) {\n throw new Error(\"No remote endpoint set\");\n }\n\n const namesList = Array.isArray(dsnames) ? dsnames : [dsnames];\n if (namesList.length === 0) {\n throw new Error(\"No dataset names provided\");\n }\n\n for (const dsname of namesList) {\n const graphUri = `${NSURL}/${dsname}`;\n const backupGraphUri = `${graphUri}_backup_${Date.now()}`;\n\n try {\n // ---------------------------------------------\n // 1. Backup remote graph if it exists\n // ---------------------------------------------\n this.setRemote(true);\n const graphExists = await this.askQuery(`ASK WHERE { GRAPH <${graphUri}> { ?s ?p ?o } }`);\n if (graphExists) {\n await this.updateQuery(`COPY GRAPH <${graphUri}> TO GRAPH <${backupGraphUri}>`);\n }\n\n // ---------------------------------------------\n // 2. Extract local quads and serialise to N-Quads\n // ---------------------------------------------\n this.setRemote(false);\n const quads = this.store.getQuads(null, null, null, graphUri);\n if (quads.length === 0) {\n logger.debug(`No quads found for dataset: ${dsname}`);\n continue;\n }\n\n const nqData = await this._quadsToNQuads(quads);\n\n // ---------------------------------------------\n // 3. Clear remote graph (if existed) and bulk upload\n // ---------------------------------------------\n this.setRemote(true);\n if (graphExists) {\n await this.updateQuery(`CLEAR GRAPH <${graphUri}>`);\n }\n\n // Prepare request\n let body: Uint8Array | string = nqData;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/n-quads'\n };\n\n // gzip if sizable (>10 KB)\n if (nqData.length > 10_000) {\n body = pako.gzip(nqData);\n headers['Content-Encoding'] = 'gzip';\n }\n\n if (this.auth) {\n const authStr = Buffer.from(`${this.auth.username}:${this.auth.password}`).toString('base64');\n headers['Authorization'] = `Basic ${authStr}`;\n }\n\n const statementsEndpoint = this._getStatementsEndpoint();\n const url = `${statementsEndpoint}?context=${encodeURIComponent(`<${graphUri}>`)}`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: headers as any,\n body: body as any\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Error from bulk loader (${response.status}): ${errorText}`);\n }\n\n // ---------------------------------------------\n // 4. Remove backup on success\n // ---------------------------------------------\n if (graphExists) {\n await this.updateQuery(`DROP GRAPH <${backupGraphUri}>`);\n }\n } catch (err) {\n logger.error(`Failed to update remote graph for ${dsname}: ${err}`);\n\n // Attempt rollback from backup\n try {\n this.setRemote(true);\n const backupExists = await this.askQuery(`ASK WHERE { GRAPH <${backupGraphUri}> { ?s ?p ?o } }`);\n if (backupExists) {\n await this.updateQuery(`COPY GRAPH <${backupGraphUri}> TO GRAPH <${graphUri}>`);\n await this.updateQuery(`DROP GRAPH <${backupGraphUri}>`);\n }\n } catch (restoreErr) {\n logger.error(`Failed to restore backup for ${dsname}: ${restoreErr}`);\n }\n\n throw err;\n } finally {\n this.setRemote(false);\n }\n }\n\n logger.debug(\"Remote datasets updated successfully\");\n }\n\n /**\n * Convert an array of quads to an N-Quads string\n */\n private async _quadsToNQuads(quads: any[]): Promise<string> {\n return new Promise((resolve, reject) => {\n const writer = new Writer({ format: 'N-Quads' });\n writer.addQuads(quads);\n writer.end((err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result as string);\n }\n });\n });\n }\n\n /**\n * Derive the /statements endpoint from this.endpoint\n */\n private _getStatementsEndpoint(): string {\n if (!this.endpoint) {\n throw new Error(\"Endpoint not set\");\n }\n return this.endpoint.replace(/\\/repositories\\/([^/]+)$/, '/repositories/$1/statements');\n }\n \n /**\n * Builds an INSERT DATA query for a batch of quads\n * @param quads Array of quads to insert\n * @param graphUri URI of the graph to insert into\n * @returns SPARQL INSERT query\n * @private\n */\n private _buildInsertQuery(quads: any[], graphUri: string): string {\n // For debugging, log one of the quads to examine its structure\n if (quads.length > 0) {\n console.log(\"Sample quad structure:\", JSON.stringify(quads[0], null, 2));\n }\n \n // Simpler, more robust approach to building the query\n let insertQuery = `INSERT DATA { GRAPH <${graphUri}> {\\n`;\n \n for (const quad of quads) {\n let subject, predicate, object;\n \n // Handle subject based on term type\n if (quad.subject.termType === 'NamedNode') {\n subject = `<${quad.subject.value}>`;\n } else {\n subject = `_:${quad.subject.value}`;\n }\n \n // Handle predicate (always a named node)\n predicate = `<${quad.predicate.value}>`;\n \n // Handle object based on term type\n if (quad.object.termType === 'NamedNode') {\n object = `<${quad.object.value}>`;\n } else if (quad.object.termType === 'BlankNode') {\n object = `_:${quad.object.value}`;\n } else {\n // For literals, handle special characters and add language/datatype\n let literalValue = quad.object.value.toString()\n .replace(/\\\\/g, '\\\\\\\\') // escape backslashes first\n .replace(/\"/g, '\\\\\"') // escape quotes\n .replace(/\\n/g, '\\\\n') // escape newlines\n .replace(/\\r/g, '\\\\r') // escape carriage returns\n .replace(/\\t/g, '\\\\t'); // escape tabs\n \n object = `\"${literalValue}\"`;\n \n // Add language tag if present\n if (quad.object.language) {\n object += `@${quad.object.language}`;\n } \n // Add datatype if present and not plain literal\n else if (quad.object.datatype && quad.object.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n object += `^^<${quad.object.datatype.value}>`;\n }\n }\n \n // Add the triple to the query with proper spacing\n insertQuery += ` ${subject} ${predicate} ${object} .\\n`;\n }\n \n insertQuery += '}}';\n \n // Log a short preview of the query\n const previewLength = Math.min(insertQuery.length, 200);\n console.log(`Generated query preview (${insertQuery.length} chars): ${insertQuery.substring(0, previewLength)}${insertQuery.length > previewLength ? '...' : ''}`);\n \n return insertQuery;\n }\n\n /**\n * Loads remote datasets into cache if a remote endpoint is set\n * @param dsnames Array of dataset names\n * @param loadDefaultGraph Whether to load the default graph (default: true)\n * \n * @example\n * ```typescript\n * // Fetch LiPD data from remote RDF Graph\n * const lipd = new LiPD();\n * lipd.setEndpoint(\"https://linkedearth.graphdb.mint.isi.edu/repositories/LiPDVerse-dynamic\");\n * // Set authentication if needed\n * lipd.setAuth({ username: \"user\", password: \"pass\" });\n * lipd.loadRemoteDatasets([\"Ocn-MadangLagoonPapuaNewGuinea.Kuhnert.2001\", \"MD98_2181.Stott.2007\"]);\n * lipd.getAllDatasetNames().then(names => console.log(names));\n * ```\n */\n public async loadRemoteDatasets(dsnames: string | string[], loadDefaultGraph: boolean = true): Promise<void> {\n if (!this.endpoint) {\n throw new Error(\"No remote endpoint\");\n }\n \n const namesList = Array.isArray(dsnames) ? dsnames : [dsnames];\n \n if (namesList.length === 0) {\n throw new Error(\"No dataset names to cache\");\n }\n \n let dsnamestr = namesList.map(dsname => `<${NSURL}/${dsname}>`).join(' ');\n \n if (loadDefaultGraph) {\n dsnamestr += ` <${DEFAULT_GRAPH_URI}>`;\n }\n \n console.log(\"Caching datasets from remote endpoint..\");\n \n this.setRemote(true);\n const [qres] = await this.query(`SELECT ?s ?p ?o ?g WHERE { GRAPH ?g { ?s ?p ?o } VALUES ?g { ${dsnamestr} } }`);\n this.setRemote(false);\n \n // Add quads to the store\n for (const row of qres) {\n this.store.addQuad(row.s, row.p, row.o, row.g);\n }\n \n console.log(\"Done..\");\n }\n\n /**\n * Build a full LiPD (BagIt) archive entirely in-memory – browser-safe\n * @param dsname Dataset name to export\n * @param opts Options { includeCsv?: boolean }\n * @returns Blob in browsers, Buffer in Node\n */\n public async createLipdBrowser(dsname: string, opts: { includeCsv?: boolean } = {}): Promise<Blob | Uint8Array> {\n const includeCsv = opts.includeCsv !== false;\n // 1. Get LiPD JSON for the dataset\n const originalLipdJson = this.getLipd(dsname);\n if (!originalLipdJson) {\n throw new Error(`Dataset ${dsname} not found in LiPD graph`);\n }\n\n // 2. Build CSV files in-memory if requested (use original data with values)\n const csvMap: Record<string, string> = includeCsv ? this._generateCsvData(originalLipdJson) : {};\n\n // Remove values from variables before creating LiPD file\n // Values should be stored in CSV files, not in metadata.jsonld\n const lipdJson = this._removeValuesFromVariables(originalLipdJson);\n\n // 3. Assemble BagIt archive with JSZip (use cleaned lipdJson without values)\n const zip = new JSZip();\n const dataFolder = zip.folder('data')!;\n dataFolder.file('metadata.jsonld', JSON.stringify(lipdJson, null, 2));\n for (const [name, csv] of Object.entries(csvMap)) {\n dataFolder.file(name, csv);\n }\n\n // 4. bagit.txt & bag-info.txt\n const bagitTxt = 'BagIt-Version: 1.0\\nTag-File-Character-Encoding: UTF-8';\n zip.file('bagit.txt', bagitTxt);\n const bagInfoTxt = `Bagging-Date: ${new Date().toISOString()}\\nBag-Software-Agent: lipdjs`;\n zip.file('bag-info.txt', bagInfoTxt);\n\n // 5. manifest-sha256.txt – compute hashes for files in data/\n const manifestLines: string[] = [];\n const encoder = new TextEncoder();\n const computeHash = async (content: string): Promise<string> => {\n if (isBrowser() && typeof crypto !== 'undefined' && (crypto as any).subtle) {\n const buffer = encoder.encode(content);\n const digest = await (crypto as any).subtle.digest('SHA-256', buffer);\n return Array.from(new Uint8Array(digest)).map(b => b.toString(16).padStart(2, '0')).join('');\n } else {\n // Node fallback (dynamic import to avoid bundling crypto for browser)\n const { createHash } = await import('crypto');\n return createHash('sha256').update(content).digest('hex');\n }\n };\n\n // metadata.jsonld first\n manifestLines.push(`${await computeHash(JSON.stringify(lipdJson, null, 2))} data/metadata.jsonld`);\n // CSVs\n for (const [name, csv] of Object.entries(csvMap)) {\n manifestLines.push(`${await computeHash(csv)} data/${name}`);\n }\n zip.file('manifest-sha256.txt', manifestLines.join('\\n'));\n\n // 6. Generate zip with compression\n const zipOptions = {\n compression: 'DEFLATE' as const,\n compressionOptions: { level: 6 } // 1=fastest, 9=best compression, 6=balanced\n };\n \n if (isBrowser()) {\n return await zip.generateAsync({ type: 'blob', ...zipOptions });\n }\n // Node – return Buffer/Uint8Array\n return await zip.generateAsync({ type: 'uint8array', ...zipOptions });\n }\n\n // ---------------------------------------------------------------------\n // Helper: generate CSV text for all tables in a LiPD JSON object\n // ---------------------------------------------------------------------\n private _generateCsvData(lipd: any): Record<string, string> {\n const csvs: Record<string, string> = {};\n const tableKeys: Array<[string, string]> = [\n ['paleoData', 'measurementTable'],\n ['chronData', 'measurementTable']\n ];\n for (const [sectionKey, tableKey] of tableKeys) {\n const section = lipd[sectionKey];\n if (!Array.isArray(section)) continue;\n for (const secItem of section) {\n if (Array.isArray(secItem[tableKey])) {\n for (const table of secItem[tableKey]) {\n const { filename, columns } = table;\n if (!filename || !columns) continue;\n const csvContent = this._tableToCsv(columns);\n csvs[filename] = csvContent;\n }\n }\n // Also handle model tables if present (ensembleTable, summaryTable, distributionTable)\n if (Array.isArray(secItem.model)) {\n for (const model of secItem.model) {\n const subTables = ['ensembleTable', 'summaryTable', 'distributionTable'];\n for (const key of subTables) {\n if (Array.isArray(model[key])) {\n for (const table of model[key]) {\n const { filename, columns } = table;\n if (!filename || !columns) continue;\n csvs[filename] = this._tableToCsv(columns);\n }\n }\n }\n }\n }\n }\n }\n return csvs;\n }\n\n private _tableToCsv(columns: any[]): string {\n if (!Array.isArray(columns) || columns.length === 0) return '';\n const maxLen = Math.max(...columns.map(c => (c.values?.length ?? 0)));\n const rows: string[] = [];\n for (let i = 0; i < maxLen; i++) {\n const row = columns.map(col => (col.values?.[i] ?? ''));\n rows.push(row.join(','));\n }\n return rows.join('\\n');\n }\n\n /**\n * Remove values from variables in a LiPD JSON object.\n * This is necessary because values are typically stored in CSV files,\n * not directly in the metadata.jsonld file.\n * @param lipdJson The LiPD JSON object to process.\n * @returns A new LiPD JSON object with values removed from variables.\n * @private\n */\n private _removeValuesFromVariables(lipdJson: any): any {\n if (typeof lipdJson !== 'object' || lipdJson === null) {\n return lipdJson;\n }\n\n if (Array.isArray(lipdJson)) {\n return lipdJson.map(item => this._removeValuesFromVariables(item));\n }\n\n if (typeof lipdJson === 'object') {\n const newObj: any = {};\n for (const key in lipdJson) {\n if (Object.prototype.hasOwnProperty.call(lipdJson, key)) {\n // Skip the 'values' key if this looks like a variable object\n if (key === 'values' && this._isVariableObject(lipdJson)) {\n // Skip copying the values key for variable objects\n continue;\n }\n newObj[key] = this._removeValuesFromVariables(lipdJson[key]);\n }\n }\n return newObj;\n }\n\n return lipdJson;\n }\n\n /**\n * Helper to check if an object looks like a variable object.\n * Variables typically have properties like variableId, variableName, values, units, etc.\n * @param obj The object to check.\n * @returns True if it looks like a variable object, false otherwise.\n * @private\n */\n private _isVariableObject(obj: any): boolean {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n \n // Check for common variable properties\n const variableProps = ['variableId', 'variableName', 'TSid', 'number', 'columnNumber'];\n const hasVariableProperty = variableProps.some(prop => prop in obj);\n \n // If it has values and at least one variable property, treat it as a variable\n return 'values' in obj && hasVariableProperty;\n }\n} ","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore - window may not exist in Node types\ndeclare const window: any;\n\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined';\n}\n\nexport function isNode(): boolean {\n return typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n} ","/**\n * Log levels enum\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3\n}\n\n/**\n * Logger class for handling logs in the extension\n */\nexport class Logger {\n private static instance: Logger;\n private outputChannel: any = null;\n private logLevel: LogLevel = LogLevel.INFO;\n\n /**\n * Get the singleton instance of Logger\n */\n public static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n return Logger.instance;\n }\n\n /**\n * Private constructor to enforce singleton pattern\n */\n private constructor() {}\n\n /**\n * Initialize the logger with an output channel\n * @param channel VS Code output channel\n * @param level Initial log level\n */\n public initialize(channel: any = null, level: LogLevel = LogLevel.INFO): void {\n this.outputChannel = channel;\n this.logLevel = level;\n // this.outputChannel.show(true);\n }\n\n /**\n * Set the current log level\n * @param level Log level to set\n */\n public setLogLevel(level: LogLevel): void {\n this.logLevel = level;\n }\n\n /**\n * Get the current log level\n * @returns Current log level\n */\n public getLogLevel(): LogLevel {\n return this.logLevel;\n }\n\n /**\n * Log a debug message\n * @param message Message to log\n * @param args Additional arguments for formatting\n */\n public debug(message: string, ...args: any[]): void {\n if (this.logLevel <= LogLevel.DEBUG) {\n this.log('DEBUG', message, ...args);\n }\n }\n\n /**\n * Log an info message\n * @param message Message to log\n * @param args Additional arguments for formatting\n */\n public info(message: string, ...args: any[]): void {\n if (this.logLevel <= LogLevel.INFO) {\n this.log('INFO', message, ...args);\n }\n }\n\n /**\n * Log a warning message\n * @param message Message to log\n * @param args Additional arguments for formatting\n */\n public warn(message: string, ...args: any[]): void {\n if (this.logLevel <= LogLevel.WARN) {\n this.log('WARN', message, ...args);\n }\n }\n\n /**\n * Log an error message\n * @param message Message to log\n * @param args Additional arguments for formatting\n */\n public error(message: string, ...args: any[]): void {\n if (this.logLevel <= LogLevel.ERROR) {\n this.log('ERROR', message, ...args);\n }\n }\n\n /**\n * Show the output channel\n */\n public show(): void {\n this.outputChannel?.show(true);\n }\n\n /**\n * Internal log method\n * @param level Log level as string\n * @param message Message to log\n * @param args Additional arguments for formatting\n */\n private log(level: string, message: string, ...args: any[]): void {\n const timestamp = new Date().toISOString();\n let formattedMessage = `[${timestamp}] [${level}] ${message}`;\n \n // Format message with arguments if provided\n if (args.length > 0) {\n formattedMessage = this.formatMessage(formattedMessage, ...args);\n }\n\n // Log to VS Code output channel if available\n if (this.outputChannel) {\n this.outputChannel.appendLine(formattedMessage);\n } else {\n // Fallback to console\n switch (level) {\n case 'DEBUG':\n console.debug(formattedMessage);\n break;\n case 'INFO':\n console.info(formattedMessage);\n break;\n case 'WARN':\n console.warn(formattedMessage);\n break;\n case 'ERROR':\n console.error(formattedMessage);\n break;\n default:\n console.log(formattedMessage);\n }\n }\n }\n\n /**\n * Format a message with arguments (simple printf-like format)\n * @param message Base message with placeholders\n * @param args Arguments to insert\n * @returns Formatted message\n */\n private formatMessage(message: string, ...args: any[]): string {\n let formatted = message;\n let i = 0;\n \n return formatted.replace(/%s|%d|%f|%j/g, (match) => {\n if (i >= args.length) {\n return match;\n }\n \n const arg = args[i++];\n switch (match) {\n case '%s':\n return String(arg);\n case '%d':\n return Number(arg).toString();\n case '%f':\n return parseFloat(arg).toString();\n case '%j':\n return JSON.stringify(arg);\n default:\n return match;\n }\n });\n }\n} ","// Constants for URLs - these would be imported from globals/urls.ts in a full implementation\nexport const NSURL = 'http://linked.earth/lipd';\nexport const ONTONS = 'http://linked.earth/ontology#';\nexport const DATAURL = \"https://data.mint.isi.edu/files/lipd\"\n\nexport const ARCHIVEURL = \"http://linked.earth/ontology/archive\"\nexport const PROXYURL = \"http://linked.earth/ontology/proxy\"\nexport const UNITSURL = \"http://linked.earth/ontology/units\"\nexport const VARIABLEURL = \"http://linked.earth/ontology/variables\"\nexport const DEFAULT_GRAPH_URI = \"http://www.openrdf.org/schema/sesame#nil\"\n\n// Define namespaces used in URI creation\nexport const NAMESPACES: Record<string, string> = {\n 'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n 'rdfs': 'http://www.w3.org/2000/01/rdf-schema#',\n 'xsd': 'http://www.w3.org/2001/XMLSchema#',\n 'owl': 'http://www.w3.org/2002/07/owl#',\n 'wgs84': 'http://www.w3.org/2003/01/geo/wgs84_pos#',\n \"le_archive\": ARCHIVEURL,\n \"le_proxy\": PROXYURL,\n \"le_units\": UNITSURL,\n \"le_variables\": VARIABLEURL \n};","import { Store } from 'n3';\nimport { QueryEngine } from '@comunica/query-sparql';\nimport { Logger } from './utils/logger';\n\nconst logger = Logger.getInstance();\n\n// Type definition to represent the source parameter required by Comunica's QueryEngine\ntype QuerySourceUnidentified = any;\n\nexport interface AuthCredentials {\n username: string;\n password: string;\n}\n\nexport class RDFGraph {\n protected store: Store;\n protected quiet: boolean;\n protected endpoint?: string;\n protected engine: QueryEngine;\n protected remote: boolean;\n protected auth?: AuthCredentials;\n\n constructor(store?: Store, quiet: boolean = false, endpoint?: string, auth?: AuthCredentials) {\n this.store = store || new Store();\n this.quiet = quiet;\n this.endpoint = endpoint;\n this.remote = false;\n this.engine = new QueryEngine();\n this.auth = auth;\n }\n\n /**\n * Set authentication credentials for SPARQL endpoint\n * @param auth Authentication credentials containing username and password\n */\n public setAuth(auth: AuthCredentials): void {\n this.auth = auth;\n }\n\n /**\n * Clear authentication credentials\n */\n public clearAuth(): void {\n this.auth = undefined;\n }\n\n /**\n * Execute a SPARQL query\n * @param queryStr SPARQL query string\n * @returns Array containing results and raw dataframe\n */\n protected async query(queryStr: string): Promise<[any[], any]> {\n try {\n logger.debug('Query: ' + queryStr);\n\n // Execute the query using Comunica\n const bindingsStream = await this.engine.queryBindings(queryStr, this.getConfiguration());\n\n // Convert the stream to an array of bindings\n const bindings = await bindingsStream.toArray();\n\n // Convert the bindings to a more usable format\n const results = bindings.map(binding => {\n const result: any = {};\n for (const variable of binding.keys()) {\n const term = binding.get(variable);\n if (term) {\n result[variable.value] = term;\n }\n }\n return result;\n });\n\n return [results, bindings];\n } catch (error) {\n logger.error('Error executing query: ' + error);\n throw error;\n }\n }\n\n /**\n * Execute a SPARQL ASK query\n * @param queryStr SPARQL ASK query string\n * @returns Boolean result of the ASK query\n */\n public async askQuery(queryStr: string): Promise<boolean> {\n try {\n logger.debug('ASK Query: ' + queryStr);\n\n // Execute the query using Comunica\n return await this.engine.queryBoolean(queryStr, this.getConfiguration());\n } catch (error) {\n logger.error('Error executing ASK query: ' + error);\n throw error;\n }\n }\n\n /**\n * Execute a SPARQL Update query\n * @param queryStr SPARQL Update query string\n * @returns Boolean result of the Update query\n */\n public async updateQuery(queryStr: string): Promise<void> {\n try {\n logger.debug('Update Query: ' + queryStr);\n \n if (!this.remote || !this.endpoint) {\n throw new Error(\"Remote endpoint must be set for update operations\");\n }\n \n // For GraphDB, update operations need to go to the /statements endpoint\n // instead of the standard /repositories/{repo} endpoint\n const updateEndpoint = this.endpoint.replace(/\\/repositories\\/([^/]+)$/, '/repositories/$1/statements');\n console.log(`Using update endpoint: ${updateEndpoint}`);\n \n // Prepare request headers\n const headers: Record<string, string> = {\n 'Content-Type': 'application/sparql-update',\n 'Accept': 'application/json'\n };\n \n // Add authentication if provided\n if (this.auth) {\n const authString = Buffer.from(`${this.auth.username}:${this.auth.password}`).toString('base64');\n headers['Authorization'] = `Basic ${authString}`;\n }\n \n // Make a direct HTTP fetch request to the statements endpoint\n const response = await fetch(updateEndpoint, {\n method: 'POST',\n headers: headers,\n body: queryStr\n });\n \n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Error from update endpoint (${response.status}): ${errorText}`);\n }\n \n logger.debug('Update successful');\n } catch (error) {\n logger.error('Error executing Update query: ' + error);\n throw error;\n }\n }\n\n /**\n * Get the source configuration for queries\n * @returns Array containing the store configuration\n * @private\n */\n private getConfiguration(endpoint?: string):any {\n let source;\n if (!endpoint) {\n endpoint = this.endpoint;\n }\n \n if (this.remote && endpoint) {\n source = {\n type: 'sparql',\n value: endpoint\n };\n } else {\n source = this.store;\n }\n \n // Type assertion to satisfy TypeScript compiler\n let configuration :any = {\n sources: [source]\n };\n if (this.remote && endpoint &&this.auth && this.auth.username) {\n configuration.httpAuth = `${this.auth.username}:${this.auth.password}`;\n }\n return configuration;\n }\n\n public getStore(): Store {\n return this.store;\n }\n\n /**\n * Get id(s) from the graph and returns a new RDFGraph object\n * @param ids Graph id(s) to get\n * @returns RDFGraph object with the retrieved graph(s)\n */\n public get(ids: string | string[]): RDFGraph {\n const newStore = new Store()\n const idList = Array.isArray(ids) ? ids : [ids];\n \n // Get all quads from the store\n const quads = this.store.getQuads(null, null, null, null);\n \n // Filter quads by graph ID\n for (const quad of quads) {\n if (quad.graph && idList.includes(quad.graph.value)) {\n newStore.addQuad(quad);\n }\n }\n \n return new RDFGraph(newStore, this.quiet, this.endpoint, this.auth);\n }\n\n /**\n * Removes id(s) from the graph\n * @param ids Graph id(s) to be removed\n */\n public remove(ids: string | string[]): void {\n const idList = Array.isArray(ids) ? ids : [ids];\n \n // Get all quads from the store\n const quads = this.store.getQuads(null, null, null, null);\n \n // Remove quads by graph ID\n for (const quad of quads) {\n if (quad.graph && idList.includes(quad.graph.value)) {\n this.store.removeQuad(quad);\n }\n }\n }\n\n /**\n * Pops graph(s) from the combined graph and returns the popped RDF Graph\n * @param ids Graph id(s) to be popped\n * @returns RDFGraph object with the popped graph(s)\n */\n public pop(ids: string | string[]): RDFGraph {\n const popped = this.get(ids);\n this.remove(ids);\n return popped;\n }\n\n /**\n * Sets a SPARQL endpoint for a remote Knowledge Base (example: GraphDB)\n * @param endpoint URL for the SPARQL endpoint\n * \n * @example\n * ```typescript\n * // Fetch LiPD data from remote RDF Graph\n * const rdf = new RDFGraph();\n * rdf.setEndpoint(\"https://linkedearth.graphdb.mint.isi.edu/repositories/LiPDVerse-dynamic\");\n * rdf.setRemote(true);\n * const [result, resultDf] = await rdf.query(\"SELECT ?s ?p ?o WHERE {?s ?p ?o} LIMIT 10\");\n * ```\n */\n public setEndpoint(endpoint: string): void {\n this.endpoint = endpoint;\n }\n\n public getEndpoint(): string | undefined {\n return this.endpoint;\n }\n\n public setRemote(remote: boolean): void {\n this.remote = remote;\n }\n\n public getRemote(): boolean {\n return this.remote;\n }\n} ","/**\n * The RDFToLiPD class helps in converting an RDF Graph to a LiPD file.\n * It uses the SCHEMA dictionary (from globals/schema.ts) to do the conversion\n */\n\nimport { Quad, Store } from 'n3';\nimport { DataFactory, NamedNode, Literal } from 'n3';\nimport { Logger } from '../utils/logger';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport AdmZip from 'adm-zip';\nimport { NSURL } from '../globals/urls';\nimport { SCHEMA } from '../globals/schema';\nimport { REVERSE_BLACKLIST } from '../globals/blacklist';\nimport { lcfirst, parseVariableValues, ucfirst } from './utils';\nimport { RSYNONYMS } from '../globals/synonyms';\nimport { Change } from '../classes/change';\nimport { createBagitFiles } from './bagit';\nimport { DataTable } from '../classes/datatable';\nimport { Variable } from '../classes/variable';\nimport pako from 'pako';\nconst logger = Logger.getInstance();\nconst DF = DataFactory;\n\ninterface TableColumn {\n name: string;\n values: any[];\n number?: number;\n [key: string]: any;\n}\n\ninterface Table {\n name: string;\n filename?: string;\n columns: TableColumn[];\n [key: string]: any;\n}\n\ninterface LiPDData {\n paleoData?: Array<{\n measurementTable?: Table[];\n model?: Array<{\n ensembleTable?: Table[];\n summaryTable?: Table[];\n }>;\n }>;\n chronData?: Array<{\n measurementTable?: Table[];\n model?: Array<{\n ensembleTable?: Table[];\n summaryTable?: Table[];\n }>;\n }>;\n [key: string]: any;\n}\n\ninterface PropertyDetails {\n name: string;\n multiple?: boolean;\n [key: string]: any;\n}\n\ninterface RDFValue {\n '@type': 'uri' | 'literal';\n '@id'?: string;\n '@value'?: any;\n '@datatype'?: string;\n}\n\ninterface Facts {\n [key: string]: RDFValue[];\n}\n\ninterface GeoJSONGeometry {\n type: string;\n coordinates: number[];\n}\n\ninterface GeoJSONFeature {\n type: string;\n geometry: GeoJSONGeometry;\n properties: { [key: string]: any };\n}\n\nexport class RDFToLiPD {\n private store: Store;\n private lipdCsvs: { [key: string]: any[][] } = {};\n private graphurl: string;\n private namespace: string;\n private schema: any;\n private rschema: any;\n private allfacts: { [key: string]: Facts } = {};\n\n /**\n * Constructor for RDFToLiPD class\n * @param store The RDF graph to convert\n */\n constructor(store: Store) {\n this.store = store;\n this.graphurl = NSURL;\n this.namespace = NSURL + '/';\n this.schema = { ...SCHEMA };\n this.rschema = this.getSchemaReverseMap();\n logger.debug('RDFToLiPD instance created');\n }\n\n /**\n * Convert RDF graph to a LiPD file\n * @param dsname Dataset name\n * @param lipdfile Output LiPD file path\n * @returns The converted LiPD data\n */\n public async convert(dsname: string, lipdfile: string): Promise<any> {\n const lipd = this.convertToJson(dsname);\n const tempDir = fs.mkdtempSync('rdf_to_lipd_');\n const dsDir = path.join(tempDir, dsname);\n const dataDir = path.join(dsDir, 'data');\n \n try {\n // Create data directory\n fs.mkdirSync(dataDir, { recursive: true });\n\n // Create CSV files and metadata\n this.createCsvs(lipd, dataDir);\n fs.writeFileSync(\n path.join(dataDir, 'metadata.jsonld'),\n JSON.stringify(lipd, null, 4)\n );\n\n // Create bagit files\n await this.createBagitFiles(dsDir);\n\n // Zip the directory\n await this.zipDirectory(dsDir, lipdfile);\n\n logger.debug('Successfully converted RDF to LiPD file: %s', lipdfile);\n return lipd;\n } catch (error) {\n logger.error('Error converting RDF to LiPD: %s', error instanceof Error ? error.message : String(error));\n throw error;\n } finally {\n // Clean up temp directory\n fs.rmSync(tempDir, { recursive: true, force: true });\n }\n }\n\n /**\n * Convert RDF graph to LiPD JSON format\n * @param dsname Dataset name\n * @returns The converted LiPD JSON data\n */\n public convertToJson(dsname: string): any {\n this.schema = { ...SCHEMA };\n this.rschema = this.getSchemaReverseMap();\n\n this.allfacts = {};\n this.indexFacts(this.namespace + dsname);\n \n const lipd = this._convertToLipd(this.namespace + dsname, \"Dataset\", \"Dataset\", {});\n return this.postProcessing(lipd);\n }\n\n /**\n * Post-process the converted LiPD object\n * @param obj Object to process\n * @param parent Parent object\n * @returns Processed object\n */\n private postProcessing(obj: any, parent: any = null): any {\n if (!obj || typeof obj !== 'object') {\n return obj;\n }\n\n if (!('@schema' in obj)) {\n return obj;\n }\n\n // Get schema for this object\n const schemaname = obj['@schema'];\n const tschema = this.schema[schemaname] || null;\n\n // Apply pre-processing functions if any\n if (tschema && '@toJson_pre' in tschema) {\n for (const func of tschema['@toJson_pre']) {\n const fn = (this as any)[func];\n if (fn) {\n obj = fn.call(this, obj, parent);\n }\n }\n }\n\n // Process all properties recursively\n for (const [key, value] of Object.entries(obj)) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n obj[key][i] = this.postProcessing(value[i], obj);\n }\n } else {\n obj[key] = this.postProcessing(value, obj);\n }\n }\n\n // Apply post-processing functions if any\n if (tschema && '@toJson' in tschema) {\n for (const func of tschema['@toJson']) {\n const fn = (this as any)[func];\n if (fn) {\n obj = fn.call(this, obj, parent);\n }\n }\n }\n\n // Handle hasValues conversion to values\n if ('hasValues' in obj) {\n const valuestr = obj['hasValues'];\n obj['values'] = parseVariableValues(valuestr);\n delete obj['hasValues'];\n }\n \n // Clean up metadata fields\n delete obj['@id'];\n delete obj['@schema'];\n delete obj['@category'];\n if ('type' in obj) {\n delete obj['type'];\n }\n\n return obj;\n }\n\n /**\n * Get property details from schema\n * @param pname Property name\n * @param schema Schema object\n * @returns Property details\n */\n private getPropertyDetails(pname: string, schema: any): PropertyDetails {\n const details: PropertyDetails = { name: pname };\n if (schema && pname in schema) {\n for (const [key, value] of Object.entries(schema[pname])) {\n details[key] = value;\n }\n }\n return details;\n }\n\n /**\n * Get RDF property details from schema\n * @param pname Property name\n * @param fullkey Full property key\n * @param schema Schema object\n * @returns Property details\n */\n private getRdfPropertyDetails(pname: string, fullkey: string, schema: any): PropertyDetails {\n const key = pname;\n pname = lcfirst(pname);\n const details: PropertyDetails = { name: pname };\n \n // Check for full key in schema\n if (schema && fullkey in schema) {\n for (const [key, value] of Object.entries(schema[fullkey])) {\n details[key] = value;\n }\n }\n return details;\n }\n\n /**\n * Get schema reverse map\n * @returns Reverse schema map\n */\n private getSchemaReverseMap(): any {\n const newschema: any = {};\n for (const [schid, sch] of Object.entries(this.schema)) {\n const newsch: any = {};\n for (const [prop, details] of Object.entries(sch as any)) {\n if (prop[0] === \"@\") {\n continue;\n }\n \n if (\"skip_auto_convert_to_json\" in (details as any)) {\n continue;\n }\n \n const pdetails = this.getPropertyDetails(prop, sch as any);\n const pname = pdetails.name;\n pdetails.name = prop;\n newsch[pname] = pdetails;\n \n if (\"category\" in pdetails) {\n const catpname = pname + \".\" + ucfirst(pdetails.category as string);\n newsch[catpname] = pdetails;\n }\n \n if (\"schema\" in pdetails) {\n const schpname = pname + \".\" + ucfirst(pdetails.schema as string);\n newsch[schpname] = pdetails;\n }\n }\n \n newschema[schid] = newsch;\n }\n \n return newschema;\n }\n\n /**\n * Extract local name from URL\n * @param url URL to extract from\n * @returns Local name\n */\n private localName(url: string): string {\n return url.replace(/^.*[#/]/, '');\n }\n\n\n /**\n * Convert RDF to LiPD format\n * @param id ID to convert\n * @param category Category of the item\n * @param schemaname Schema name\n * @param pagesdone Map of processed pages\n * @returns Converted LiPD object\n */\n private convertToLipd(id: string, category: string, schemaname: string, pagesdone: Map<string, boolean>): any {\n if (pagesdone.has(id)) return null;\n pagesdone.set(id, true);\n\n const facts = this.allfacts[id];\n if (!facts) return null;\n\n const obj: any = {};\n const schema = this.schema[schemaname];\n\n // Process each property in the facts\n for (const [pname, values] of Object.entries(facts)) {\n // Skip type property\n if (pname === 'type') continue;\n\n // Get property details\n const details = this.getRdfPropertyDetails(pname, pname, schema);\n const propname = details.name;\n\n // Skip blacklisted properties\n if (Array.isArray(REVERSE_BLACKLIST) && REVERSE_BLACKLIST.includes(propname)) continue;\n\n // Convert values\n const converted = [];\n for (const value of values) {\n if (value['@type'] === 'uri' && value['@id']) {\n const subid = value['@id'];\n const subobj = this.convertToLipd(subid, category, schemaname, pagesdone);\n if (subobj) converted.push(subobj);\n } else if (value['@value'] !== undefined) {\n converted.push(value['@value']);\n }\n }\n\n // Add to object if we have values\n if (converted.length > 0) {\n if (details.multiple) {\n obj[propname] = converted;\n } else {\n obj[propname] = converted[0];\n }\n }\n }\n\n return obj;\n }\n\n /**\n * Order variables in a datatable\n * @param datatable Datatable object\n * @param parent Parent object\n * @returns Datatable object with ordered variables\n */\n private orderVariables(datatable: DataTable, parent: any = null): any {\n datatable.variables = datatable.variables.sort((a: Variable, b: Variable) => (a.columnNumber ?? 0) - (b.columnNumber ?? 0));\n console.log(\"orderVariables\",datatable.variables);\n return datatable;\n }\n\n private changesToJson(change: Change, parent: any = null): any {\n let newChange: any = {}\n if (change.name) {\n newChange[change.name] = change.notes || []\n return newChange;\n }\n return null;\n }\n\n /**\n * Convert location to GeoJSON format\n * @param geo Location object\n * @param parent Parent object\n * @returns GeoJSON object\n */\n private locationToJson(geo: any, parent: any = null): GeoJSONFeature {\n const geojson: GeoJSONFeature = {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: [0, 0, 0]\n },\n properties: {}\n };\n\n if ('coordinates' in geo) {\n const latlong = geo['coordinates'].split(',');\n geojson.geometry.coordinates = [\n parseFloat(latlong[1]),\n parseFloat(latlong[0]),\n latlong.length > 2 ? parseFloat(latlong[2]) : 0\n ];\n }\n\n if ('long' in geo) {\n geojson.geometry.coordinates[0] = parseFloat(geo['long']);\n }\n if ('longitude' in geo) {\n geojson.geometry.coordinates[0] = parseFloat(geo['longitude']);\n }\n\n if ('lat' in geo) {\n geojson.geometry.coordinates[1] = parseFloat(geo['lat']);\n }\n if ('latitude' in geo) {\n geojson.geometry.coordinates[1] = parseFloat(geo['latitude']);\n }\n\n if ('alt' in geo && geo['alt'] !== 'NA') {\n geojson.geometry.coordinates[2] = parseFloat(geo['alt']);\n }\n if ('elevation' in geo && geo['elevation'] !== 'NA') {\n geojson.geometry.coordinates[2] = parseFloat(geo['elevation']);\n }\n\n for (const [prop, value] of Object.entries(geo)) {\n if (prop.startsWith('@')) continue;\n\n if (prop === 'locationType') {\n geojson.type = geo['locationType'];\n } else if (prop !== 'coordinates' && prop !== 'coordinatesFor') {\n if (!prop.match(/^(geo|wgs84):/)) {\n if (!['long', 'lat', 'alt'].includes(prop)) {\n geojson.properties[prop] = value;\n }\n }\n }\n }\n\n return geojson;\n }\n\n /**\n * Unarray column number\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with unarrayed number\n */\n private unarrayColumnNumber(variable: any, parent: any = null): any {\n if (!variable) return variable;\n \n if ('number' in variable) {\n if (Array.isArray(variable['number']) && variable['number'].length === 1) {\n variable['number'] = variable['number'][0];\n }\n if (typeof variable['number'] === 'string') {\n variable['number'] = JSON.parse(variable['number']);\n }\n }\n \n return variable;\n }\n\n /**\n * Extract table data from columns\n * @param table The table containing columns with data\n * @returns Array of row data\n */\n private getTableData(table: Table): any[][] {\n const data: any[][] = [];\n if (!table.columns) return data;\n\n // Not including header row in csv\n // const headerRow = table.columns.map(col => col.variableName);\n // data.push(headerRow);\n\n // Get the maximum length of values\n const maxLength = Math.max(...table.columns.map(col => col.values?.length || 0));\n\n // Add data rows\n for (let i = 0; i < maxLength; i++) {\n const row = table.columns.map(col => col.values[i] ?? null);\n data.push(row);\n }\n\n return data;\n }\n\n /**\n * Create CSV files from table data\n * @param lipd The LiPD data containing tables\n * @param dataDir Directory to write CSV files\n */\n private createCsvs(lipd: LiPDData, dataDir: string): void {\n const csvs: { [key: string]: any[][] } = {};\n const datakeys = ['paleoData', 'chronData'];\n\n for (const datakey of datakeys) {\n const data = lipd[datakey];\n if (!data) continue;\n\n for (const item of data) {\n // Handle measurement tables\n if (item.measurementTable) {\n for (const table of item.measurementTable) {\n csvs[table.filename] = this.getTableData(table);\n }\n }\n\n // Handle model tables\n if (item.model) {\n for (const model of item.model) {\n // Handle ensemble tables\n if (model.ensembleTable) {\n for (const table of model.ensembleTable) {\n csvs[table.filename] = this.getTableData(table);\n }\n }\n // Handle summary tables\n if (model.summaryTable) {\n for (const table of model.summaryTable) {\n csvs[table.filename] = this.getTableData(table);\n }\n }\n\n // Handle distribution tables\n if (model.distributionTable) {\n for (const table of model.distributionTable) {\n csvs[table.filename] = this.getTableData(table);\n }\n } \n }\n }\n }\n }\n\n // Write CSV files\n for (const [csvname, csvdata] of Object.entries(csvs)) {\n const csvContent = csvdata.map(row => row.join(',')).join('\\n');\n fs.writeFileSync(path.join(dataDir, csvname), csvContent);\n }\n }\n\n /**\n * Create bagit files in the data directory\n * @param dataDir Directory to create bagit files in\n * @returns Promise that resolves when bagit files are created\n */\n private createBagitFiles(dataDir: string): Promise<void> {\n const bagInfo = {\n 'Bag-Software-Agent': 'lipdjs',\n 'Bagging-Date': new Date().toISOString()\n };\n \n return createBagitFiles(dataDir, bagInfo);\n }\n\n /**\n * Zip a directory into a LiPD file\n * @param dataDir Directory to zip\n * @param lipdfile Output LiPD file path\n * @returns Promise that resolves when the zip file is created\n */\n private zipDirectory(dataDir: string, lipdfile: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const zip = new AdmZip();\n \n const addFilesToZip = (currentPath: string, relativePath: string = '') => {\n const files = fs.readdirSync(currentPath);\n for (const file of files) {\n const filePath = path.join(currentPath, file);\n const zipPath = path.join(relativePath, file);\n \n if (fs.statSync(filePath).isDirectory()) {\n addFilesToZip(filePath, zipPath);\n } else {\n zip.addLocalFile(filePath, path.dirname(zipPath));\n }\n }\n };\n\n addFilesToZip(dataDir);\n \n // Use the callback version of writeZip\n zip.writeZip(lipdfile, (error) => {\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n });\n });\n }\n\n /**\n * Get property values from query result\n * @param qres Query result containing predicate and object\n * @returns Object with property names and their values\n */\n private _getPropValuesFromQueryResultPO(qres: Quad[]): Record<string, any[]> {\n const result: Record<string, any[]> = {};\n for (const row of qres) {\n const pname = this.localName(row.predicate.id);\n if (!(pname in result)) {\n result[pname] = [];\n }\n \n const value: any = {};\n if (row.object.termType === 'NamedNode') {\n value[\"@type\"] = \"uri\";\n value[\"@id\"] = row.object.id;\n } else if (row.object.termType === 'Literal') {\n value[\"@type\"] = \"literal\";\n value[\"@value\"] = row.object.value;\n value[\"@datatype\"] = null; // FIXME: Add datatype\n }\n \n result[pname].push(value);\n }\n return result;\n }\n\n /**\n * Get facts for a specific ID\n * @param id The ID to query facts for\n * @returns Object containing all properties and values for the ID\n */\n private _getFacts(id: string): Record<string, any[]> {\n const qres = this.store.getQuads(DF.namedNode(id), null, null, null);\n return this._getPropValuesFromQueryResultPO(qres);\n }\n\n /**\n * Get and index facts for an ID and all related resources\n * @param id The ID to index facts for\n */\n private indexFacts(id: string): void {\n if (id in this.allfacts) {\n return;\n }\n\n const facts = this._getFacts(id);\n this.allfacts[id] = facts;\n\n for (const [pname, pfacts] of Object.entries(facts)) {\n for (const pfact of pfacts) {\n if (pfact[\"@type\"] === \"uri\") {\n if (pname !== \"type\") {\n this.indexFacts(pfact[\"@id\"]);\n }\n }\n }\n }\n }\n\n private _convertToLipd(id: string, category?: string, schemaname?: string, pagesdone: Record<string, any> = {}): any {\n if (id in this.allfacts) {\n const facts = this.allfacts[id];\n \n if (id in pagesdone) {\n return pagesdone[id];\n }\n \n const schema = schemaname && this.rschema[schemaname] ? this.rschema[schemaname] : null;\n if (schemaname && !category) {\n category = schemaname;\n }\n \n if (\"type\" in facts) {\n const cats = facts[\"type\"];\n for (const cat of cats) {\n if (cat[\"@type\"] === \"uri\") {\n category = this.localName(cat[\"@id\"] as any);\n break;\n }\n }\n }\n \n const obj: any = {\n \"@id\": id,\n \"@category\": category,\n \"@schema\": schemaname\n };\n \n pagesdone[id] = obj;\n \n for (const [pname, pfacts] of Object.entries(facts)) {\n if (pname in REVERSE_BLACKLIST) {\n continue;\n }\n \n let prop = pname;\n prop = prop.replace(/\\s/g, \"_\");\n \n // Get a sample value page category, and use to make a property key\n let propkey = prop;\n for (const value of pfacts) {\n if (value[\"@type\"] === \"uri\") {\n if (value[\"@id\"] && value[\"@id\"] in this.allfacts) {\n const pfact = this.allfacts[value[\"@id\"]];\n if (\"type\" in pfact) {\n const valcats = pfact[\"type\"];\n for (const valcat of valcats) {\n if (valcat[\"@type\"] === \"uri\") {\n const valcatname = this.localName(valcat[\"@id\"] as any);\n propkey = prop + \".\" + valcatname;\n break;\n }\n }\n }\n }\n }\n }\n \n const details = this.getRdfPropertyDetails(prop, propkey, schema);\n const name = details.name;\n const ptype = details.type || null;\n let cat = details.category || null;\n let sch = details.schema || null;\n \n if (cat && !sch) {\n sch = cat;\n }\n \n const toJson = details.toJson || null;\n let multiple = details.multiple || false;\n \n if (pfacts.length > 0) {\n if (multiple) {\n obj[name] = [];\n }\n \n for (const pfact of pfacts) {\n let val;\n if (pfact[\"@type\"] === \"uri\") {\n val = this._convertToLipd(pfact[\"@id\"] as any, cat, sch, pagesdone);\n } else {\n val = pfact[\"@value\"];\n }\n \n if (toJson) {\n val = (this as any)[toJson](val);\n }\n \n // If there is already a value present\n // - Then this need to be marked as \"multiple\"\n if (!multiple && name in obj && !Array.isArray(obj[name])) {\n multiple = true;\n obj[name] = [obj[name]];\n }\n \n if (multiple) {\n obj[name].push(val);\n } else {\n obj[name] = val;\n }\n }\n }\n }\n \n return obj;\n } else {\n return id.replace(/_/g, \" \");\n }\n }\n\n /**\n * Convert location to GeoJSON format\n * @param geo Location object\n * @param parent Parent object\n * @returns GeoJSON object\n */\n private _location_to_json(geo: any, parent: any = null): GeoJSONFeature {\n const geojson: GeoJSONFeature = {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: [0, 0, 0]\n },\n properties: {}\n };\n\n if (\"coordinates\" in geo) {\n const latlong = geo[\"coordinates\"].split(\",\");\n geojson.geometry.coordinates = [\n parseFloat(latlong[1]), \n parseFloat(latlong[0]), \n latlong.length > 2 ? parseFloat(latlong[2]) : 0\n ];\n }\n\n if (\"long\" in geo) {\n geojson.geometry.coordinates[0] = parseFloat(geo[\"long\"]);\n }\n if (\"longitude\" in geo) {\n geojson.geometry.coordinates[0] = parseFloat(geo[\"longitude\"]);\n }\n\n if (\"lat\" in geo) {\n geojson.geometry.coordinates[1] = parseFloat(geo[\"lat\"]);\n }\n if (\"latitude\" in geo) {\n geojson.geometry.coordinates[1] = parseFloat(geo[\"latitude\"]);\n }\n\n if (\"alt\" in geo && geo[\"alt\"] !== \"NA\") {\n geojson.geometry.coordinates[2] = parseFloat(geo[\"alt\"]);\n }\n if (\"elevation\" in geo && geo[\"elevation\"] !== \"NA\") {\n geojson.geometry.coordinates[2] = parseFloat(geo[\"elevation\"]);\n }\n\n for (const [prop, value] of Object.entries(geo)) {\n if (prop[0] === \"@\") {\n continue;\n }\n\n if (prop === \"locationType\") {\n geojson.type = geo[\"locationType\"];\n } else {\n if (prop === \"coordinates\" || prop === \"coordinatesFor\") {\n // Ignore\n } else if (/^(geo|wgs84):/.test(prop)) {\n // Ignore\n } else if ([\"long\", \"lat\", \"alt\"].includes(prop)) {\n // Ignore\n } else {\n geojson.properties[prop] = value;\n }\n }\n }\n\n return geojson;\n }\n\n /**\n * Extract Google Spreadsheet key from URL\n * @param url Google Spreadsheet URL\n * @param parent Parent object\n * @returns Google Spreadsheet key\n */\n private getGoogleSpreadsheetKey(url: string, parent: any = null): string {\n return url.replace(\"https://docs.google.com/spreadsheets/d/\", \"\");\n }\n\n /**\n * Remove foundInTable property\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object without foundInTable\n */\n private removeFoundInTable(variable: any, parent: any = null): any {\n if (\"foundInTable\" in variable) {\n delete variable[\"foundInTable\"];\n }\n return variable;\n }\n\n /**\n * Remove foundInDataset property\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object without foundInDataset\n */\n private removeFoundInDataset(variable: any, parent: any = null): any {\n if (\"foundInDataset\" in variable) {\n delete variable[\"foundInDataset\"];\n }\n return variable;\n }\n\n /**\n * Unwrap uncertainty values\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with unwrapped uncertainty\n */\n private unwrapUncertainty(variable: any, parent: any = null): any {\n if (\"hasUncertainty\" in variable) {\n const unc = variable[\"hasUncertainty\"];\n if (\"hasValue\" in unc) {\n variable[\"uncertainty\"] = parseFloat(unc[\"hasValue\"]);\n delete unc[\"hasValue\"];\n }\n\n for (const [key, value] of Object.entries(unc)) {\n if (key[0] !== \"@\") {\n variable[key] = value;\n }\n }\n\n delete variable[\"hasUncertainty\"];\n }\n return variable;\n }\n\n /**\n * Unwrap integration time\n * @param interp Interpretation object\n * @param parent Parent object\n * @returns Interpretation object with unwrapped integration time\n */\n private unwrapIntegrationTime(interp: any, parent: any = null): any {\n if (\"integrationTime\" in interp) {\n const intime = interp[\"integrationTime\"];\n if (\"hasValue\" in intime) {\n interp[\"integrationTime\"] = parseFloat(intime[\"hasValue\"]);\n delete intime[\"hasValue\"];\n }\n\n for (const [key, value] of Object.entries(intime)) {\n if (key[0] !== \"@\") {\n interp[\"integrationTime\" + ucfirst(key)] = value;\n }\n }\n\n delete interp[\"hasIntegrationTime\"];\n }\n return interp;\n }\n\n /**\n * Collect variables by ID\n * @param item Item to process\n * @param arr Array of collected variables\n * @returns Updated array of collected variables\n */\n private collectVariablesById(item: any, arr: { [key: string]: any }): { [key: string]: any } {\n if (typeof item !== 'object' || item === null) {\n return arr;\n }\n\n if (\"@category\" in item && \"@id\" in item && /Variable$/.test(item[\"@category\"])) {\n arr[item[\"@id\"]] = item;\n } else {\n for (const [key, value] of Object.entries(item)) {\n if (key[0] !== \"@\") {\n arr = this.collectVariablesById(item[key], arr);\n }\n }\n }\n return arr;\n }\n\n /**\n * Set archive type label\n * @param ds Dataset object\n * @param parent Parent object\n * @returns Dataset object with archive type label\n */\n private setArchiveTypeLabel(ds: any, parent: any = null): any {\n if (\"hasArchiveType\" in ds) {\n if (\"@id\" in ds[\"hasArchiveType\"]) {\n const id = ds[\"hasArchiveType\"][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n ds[\"archiveType\"] = RSYNONYMS[id];\n } else {\n ds[\"archiveType\"] = ds[\"hasArchiveType\"][\"label\"];\n }\n }\n delete ds[\"hasArchiveType\"];\n }\n return ds;\n }\n\n /**\n * Set variable name from standard variable label\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with variable name\n */\n private setVariableNameFromStandardVariableLabel(variable: any, parent: any = null): any {\n if (\"hasStandardVariable\" in variable) {\n if (\"@id\" in variable[\"hasStandardVariable\"]) {\n const id = variable[\"hasStandardVariable\"][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n variable[\"variableName\"] = RSYNONYMS[id];\n } else {\n variable[\"variableName\"] = variable[\"hasStandardVariable\"][\"label\"];\n }\n }\n delete variable[\"hasStandardVariable\"];\n }\n return variable;\n }\n\n /**\n * Set units label\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with units label\n */\n private setUnitsLabel(variable: any, parent: any = null): any {\n if (\"hasUnits\" in variable) {\n if (\"@id\" in variable[\"hasUnits\"]) {\n const id = variable[\"hasUnits\"][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n variable[\"units\"] = RSYNONYMS[id];\n } else {\n variable[\"units\"] = variable[\"hasUnits\"][\"label\"];\n }\n }\n delete variable[\"hasUnits\"];\n }\n return variable;\n }\n\n /**\n * Set proxy label\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with proxy label\n */\n private setProxyLabel(variable: any, parent: any = null): any {\n if (\"hasProxy\" in variable) {\n if (\"@id\" in variable[\"hasProxy\"]) {\n const id = variable[\"hasProxy\"][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n variable[\"proxy\"] = RSYNONYMS[id];\n } else {\n variable[\"proxy\"] = variable[\"hasProxy\"][\"label\"];\n }\n }\n delete variable[\"hasProxy\"];\n }\n return variable;\n }\n\n /**\n * Set proxy general label\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with proxy general label\n */\n private setProxyGeneralLabel(variable: any, parent: any = null): any {\n if (\"hasProxyGeneral\" in variable) {\n if (\"@id\" in variable[\"hasProxyGeneral\"]) {\n const id = variable[\"hasProxyGeneral\"][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n variable[\"proxyGeneral\"] = RSYNONYMS[id];\n } else {\n variable[\"proxyGeneral\"] = variable[\"hasProxyGeneral\"][\"label\"];\n }\n }\n delete variable[\"hasProxyGeneral\"];\n }\n return variable;\n }\n\n /**\n * Set interpretation variable label\n * @param interp Interpretation object\n * @param parent Parent object\n * @returns Interpretation object with variable label\n */\n private setInterpretationVariableLabel(interp: any, parent: any = null): any {\n if (\"hasVariable\" in interp) {\n if (\"@id\" in interp[\"hasVariable\"]) {\n const id = interp[\"hasVariable\"][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n interp[\"variable\"] = RSYNONYMS[id];\n } else {\n interp[\"variable\"] = interp[\"hasVariable\"][\"label\"];\n }\n }\n delete interp[\"hasVariable\"];\n }\n return interp;\n }\n\n /**\n * Set seasonality labels\n * @param interp Interpretation object\n * @param parent Parent object\n * @returns Interpretation object with seasonality labels\n */\n private setSeasonalityLabels(interp: any, parent: any = null): any {\n const convs: { [key: string]: string } = {\n \"hasSeasonality\": \"seasonality\",\n \"hasSeasonalityGeneral\": \"seasonalityGeneral\",\n \"hasSeasonalityOriginal\": \"seasonalityOriginal\"\n };\n \n for (const [pid, nid] of Object.entries(convs)) {\n if (pid in interp) {\n if (\"@id\" in interp[pid]) {\n const id = interp[pid][\"@id\"];\n if (RSYNONYMS && id in RSYNONYMS) {\n interp[nid] = RSYNONYMS[id];\n } else {\n interp[nid] = interp[pid][\"label\"];\n }\n }\n delete interp[pid];\n }\n }\n return interp;\n }\n\n /**\n * Create publication identifier\n * @param pub Publication object\n * @param parent Parent object\n * @returns Publication object with identifier\n */\n private createPublicationIdentifier(pub: any, parent: any = null): any {\n const identifiers = [];\n if (\"hasDOI\" in pub) {\n const identifier: { [key: string]: string } = {\n \"type\": \"doi\",\n \"id\": pub[\"hasDOI\"]\n };\n \n if (\"link\" in pub) {\n for (const link of Object.values(pub[\"link\"])) {\n if (typeof link === 'string' && /dx\\.doi\\.org/.test(link)) {\n identifier[\"url\"] = link;\n }\n }\n delete pub[\"link\"];\n }\n delete pub[\"hasDOI\"];\n identifiers.push(identifier);\n }\n\n pub[\"identifier\"] = identifiers;\n return pub;\n }\n\n /**\n * Convert values to array\n * @param resolution Resolution object\n * @param parent Parent object\n * @returns Array of values\n */\n private valuesToArray(resolution: any, parent: any = null): any {\n if (\"values\" in resolution) {\n return resolution[\"values\"].split(\",\");\n }\n return resolution;\n }\n\n /**\n * Unarray column number\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with unarrayed number\n */\n private unArrayColumnNumber(variable: any, parent: any = null): any {\n if (!variable) return variable;\n \n if (\"number\" in variable) {\n if (Array.isArray(variable[\"number\"]) && variable[\"number\"].length === 1) {\n variable[\"number\"] = variable[\"number\"][0];\n }\n if (typeof variable[\"number\"] === 'string') {\n variable[\"number\"] = JSON.parse(variable[\"number\"]);\n }\n }\n \n return variable;\n }\n\n /**\n * Extract variable values\n * @param variable Variable object\n * @param parent Parent object\n * @returns Variable object with extracted values\n */\n private extractVariableValues(variable: any, parent: any = null): any {\n if (\"hasValues\" in variable) {\n const valuestr = variable[\"hasValues\"];\n const values = parseVariableValues(valuestr);\n if (typeof values === 'object' && values !== null && \"base64_zlib\" in values) {\n variable[\"hasValues\"] = this.unzipString(values[\"base64_zlib\"]);\n }\n else {\n variable[\"hasValues\"] = values;\n }\n }\n return variable;\n }\n \n /**\n * Unzip a base64 encoded and zlib compressed string\n * @param str The base64 encoded and zlib compressed string\n * @returns The uncompressed string\n */\n private unzipString(str: string): string {\n try {\n let binary: Uint8Array;\n // Prefer Buffer in Node, fall back to atob in browsers\n if (typeof Buffer !== 'undefined' && Buffer.from) {\n binary = Uint8Array.from(Buffer.from(str, 'base64'));\n } else {\n // @ts-ignore atob may be available only in browser\n const decoded = atob(str);\n binary = Uint8Array.from(decoded, c => c.charCodeAt(0));\n }\n const text = new TextDecoder().decode(pako.inflate(binary));\n return text;\n } catch (e) {\n logger.error('Could not decode/unzip the contents', e);\n throw e;\n }\n }\n} ","import { SynonymsType } from \"./synonyms-types\";\n\nexport const SYNONYMS: SynonymsType = {\n \"ARCHIVES\": {\n \"ArchiveType\": {\n \"borehole\": {\n \"id\": \"http://linked.earth/ontology/archive#Borehole\",\n \"label\": \"Borehole\"\n },\n \"coral\": {\n \"id\": \"http://linked.earth/ontology/archive#Coral\",\n \"label\": \"Coral\"\n },\n \"fluvial sediment\": {\n \"id\": \"http://linked.earth/ontology/archive#FluvialSediment\",\n \"label\": \"Fluvial sediment\"\n },\n \"fluvialsediment\": {\n \"id\": \"http://linked.earth/ontology/archive#FluvialSediment\",\n \"label\": \"Fluvial sediment\"\n },\n \"creek\": {\n \"id\": \"http://linked.earth/ontology/archive#FluvialSediment\",\n \"label\": \"Fluvial sediment\"\n },\n \"fluvial\": {\n \"id\": \"http://linked.earth/ontology/archive#FluvialSediment\",\n \"label\": \"Fluvial sediment\"\n },\n \"river\": {\n \"id\": \"http://linked.earth/ontology/archive#FluvialSediment\",\n \"label\": \"Fluvial sediment\"\n },\n \"stream\": {\n \"id\": \"http://linked.earth/ontology/archive#FluvialSediment\",\n \"label\": \"Fluvial sediment\"\n },\n \"glacier ice\": {\n \"id\": \"http://linked.earth/ontology/archive#GlacierIce\",\n \"label\": \"Glacier ice\"\n },\n \"glacierice\": {\n \"id\": \"http://linked.earth/ontology/archive#GlacierIce\",\n \"label\": \"Glacier ice\"\n },\n \"ice cores\": {\n \"id\": \"http://linked.earth/ontology/archive#GlacierIce\",\n \"label\": \"Glacier ice\"\n },\n \"ground ice\": {\n \"id\": \"http://linked.earth/ontology/archive#GroundIce\",\n \"label\": \"Ground ice\"\n },\n \"groundice\": {\n \"id\": \"http://linked.earth/ontology/archive#GroundIce\",\n \"label\": \"Ground ice\"\n },\n \"bulk ice\": {\n \"id\": \"http://linked.earth/ontology/archive#GroundIce\",\n \"label\": \"Ground ice\"\n },\n \"lake sediment\": {\n \"id\": \"http://linked.earth/ontology/archive#LakeSediment\",\n \"label\": \"Lake sediment\"\n },\n \"lakesediment\": {\n \"id\": \"http://linked.earth/ontology/archive#LakeSediment\",\n \"label\": \"Lake sediment\"\n },\n \"lagoon\": {\n \"id\": \"http://linked.earth/ontology/archive#LakeSediment\",\n \"label\": \"Lake sediment\"\n },\n \"lake\": {\n \"id\": \"http://linked.earth/ontology/archive#LakeSediment\",\n \"label\": \"Lake sediment\"\n },\n \"marine sediment\": {\n \"id\": \"http://linked.earth/ontology/archive#MarineSediment\",\n \"label\": \"Marine sediment\"\n },\n \"marinesediment\": {\n \"id\": \"http://linked.earth/ontology/archive#MarineSediment\",\n \"label\": \"Marine sediment\"\n },\n \"delta\": {\n \"id\": \"http://linked.earth/ontology/archive#MarineSediment\",\n \"label\": \"Marine sediment\"\n },\n \"marine\": {\n \"id\": \"http://linked.earth/ontology/archive#MarineSediment\",\n \"label\": \"Marine sediment\"\n },\n \"midden\": {\n \"id\": \"http://linked.earth/ontology/archive#Midden\",\n \"label\": \"Midden\"\n },\n \"mollusk shell\": {\n \"id\": \"http://linked.earth/ontology/archive#MolluskShell\",\n \"label\": \"Mollusk shell\"\n },\n \"molluskshell\": {\n \"id\": \"http://linked.earth/ontology/archive#MolluskShell\",\n \"label\": \"Mollusk shell\"\n },\n \"bivalve\": {\n \"id\": \"http://linked.earth/ontology/archive#MolluskShell\",\n \"label\": \"Mollusk shell\"\n },\n \"molluskshells\": {\n \"id\": \"http://linked.earth/ontology/archive#MolluskShell\",\n \"label\": \"Mollusk shell\"\n },\n \"peat\": {\n \"id\": \"http://linked.earth/ontology/archive#Peat\",\n \"label\": \"Peat\"\n },\n \"bog\": {\n \"id\": \"http://linked.earth/ontology/archive#Peat\",\n \"label\": \"Peat\"\n },\n \"fen\": {\n \"id\": \"http://linked.earth/ontology/archive#Peat\",\n \"label\": \"Peat\"\n },\n \"marsh\": {\n \"id\": \"http://linked.earth/ontology/archive#Peat\",\n \"label\": \"Peat\"\n },\n \"mire\": {\n \"id\": \"http://linked.earth/ontology/archive#Peat\",\n \"label\": \"Peat\"\n },\n \"swamp\": {\n \"id\": \"http://linked.earth/ontology/archive#Peat\",\n \"label\": \"Peat\"\n },\n \"sclerosponge\": {\n \"id\": \"http://linked.earth/ontology/archive#Sclerosponge\",\n \"label\": \"Sclerosponge\"\n },\n \"shoreline\": {\n \"id\": \"http://linked.earth/ontology/archive#Shoreline\",\n \"label\": \"Shoreline\"\n },\n \"lake levels\": {\n \"id\": \"http://linked.earth/ontology/archive#Shoreline\",\n \"label\": \"Shoreline\"\n },\n \"lakedeposit\": {\n \"id\": \"http://linked.earth/ontology/archive#Shoreline\",\n \"label\": \"Shoreline\"\n },\n \"lakedeposits\": {\n \"id\": \"http://linked.earth/ontology/archive#Shoreline\",\n \"label\": \"Shoreline\"\n },\n \"speleothem\": {\n \"id\": \"http://linked.earth/ontology/archive#Speleothem\",\n \"label\": \"Speleothem\"\n },\n \"speleothems\": {\n \"id\": \"http://linked.earth/ontology/archive#Speleothem\",\n \"label\": \"Speleothem\"\n },\n \"cave\": {\n \"id\": \"http://linked.earth/ontology/archive#Speleothem\",\n \"label\": \"Speleothem\"\n },\n \"terrestrial sediment\": {\n \"id\": \"http://linked.earth/ontology/archive#TerrestrialSediment\",\n \"label\": \"Terrestrial sediment\"\n },\n \"terrestrialsediment\": {\n \"id\": \"http://linked.earth/ontology/archive#TerrestrialSediment\",\n \"label\": \"Terrestrial sediment\"\n },\n \"dune\": {\n \"id\": \"http://linked.earth/ontology/archive#TerrestrialSediment\",\n \"label\": \"Terrestrial sediment\"\n },\n \"loess\": {\n \"id\": \"http://linked.earth/ontology/archive#TerrestrialSediment\",\n \"label\": \"Terrestrial sediment\"\n },\n \"wood\": {\n \"id\": \"http://linked.earth/ontology/archive#Wood\",\n \"label\": \"Wood\"\n },\n \"tree ring\": {\n \"id\": \"http://linked.earth/ontology/archive#Wood\",\n \"label\": \"Wood\"\n },\n \"tree\": {\n \"id\": \"http://linked.earth/ontology/archive#Wood\",\n \"label\": \"Wood\"\n },\n \"documents\": {\n \"id\": \"http://linked.earth/ontology/archive#Documents\",\n \"label\": \"Documents\"\n },\n \"other\": {\n \"id\": \"http://linked.earth/ontology/archive#Other\",\n \"label\": \"Other\"\n }\n }\n },\n \"INTERPRETATION\": {\n \"InterpretationVariable\": {\n \"c3c4ratio\": {\n \"id\": \"http://linked.earth/ontology/interpretation#C3C4Ratio\",\n \"label\": \"C3C4Ratio\"\n },\n \"composition c3-c4 plants\": {\n \"id\": \"http://linked.earth/ontology/interpretation#C3C4Ratio\",\n \"label\": \"C3C4Ratio\"\n },\n \"circulationindex\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"circulation index\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"mode\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"nao index\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"circulationvariable\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationVariable\",\n \"label\": \"circulationVariable\"\n },\n \"circulation variable\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationVariable\",\n \"label\": \"circulationVariable\"\n },\n \"changes in monsoon intensity.\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationVariable\",\n \"label\": \"circulationVariable\"\n },\n \"circulation\": {\n \"id\": \"http://linked.earth/ontology/interpretation#circulationVariable\",\n \"label\": \"circulationVariable\"\n },\n \"dissolvedoxygen\": {\n \"id\": \"http://linked.earth/ontology/interpretation#dissolvedOxygen\",\n \"label\": \"dissolvedOxygen\"\n },\n \"dissolved oxygen\": {\n \"id\": \"http://linked.earth/ontology/interpretation#dissolvedOxygen\",\n \"label\": \"dissolvedOxygen\"\n },\n \"suboxia\": {\n \"id\": \"http://linked.earth/ontology/interpretation#dissolvedOxygen\",\n \"label\": \"dissolvedOxygen\"\n },\n \"dust\": {\n \"id\": \"http://linked.earth/ontology/interpretation#dust\",\n \"label\": \"dust\"\n },\n \"ela\": {\n \"id\": \"http://linked.earth/ontology/interpretation#ELA\",\n \"label\": \"ELA\"\n },\n \"equilibrium line altitude\": {\n \"id\": \"http://linked.earth/ontology/interpretation#ELA\",\n \"label\": \"ELA\"\n },\n \"evaporation\": {\n \"id\": \"http://linked.earth/ontology/interpretation#evaporation\",\n \"label\": \"evaporation\"\n },\n \"fire\": {\n \"id\": \"http://linked.earth/ontology/interpretation#fire\",\n \"label\": \"fire\"\n },\n \"fire history\": {\n \"id\": \"http://linked.earth/ontology/interpretation#fire\",\n \"label\": \"fire\"\n },\n \"growingdegreedays\": {\n \"id\": \"http://linked.earth/ontology/interpretation#growingDegreeDays\",\n \"label\": \"growingDegreeDays\"\n },\n \"growing degree days\": {\n \"id\": \"http://linked.earth/ontology/interpretation#growingDegreeDays\",\n \"label\": \"growingDegreeDays\"\n },\n \"gdd\": {\n \"id\": \"http://linked.earth/ontology/interpretation#growingDegreeDays\",\n \"label\": \"growingDegreeDays\"\n },\n \"hydrologicbalance\": {\n \"id\": \"http://linked.earth/ontology/interpretation#hydrologicBalance\",\n \"label\": \"hydrologicBalance\"\n },\n \"gw-e\": {\n \"id\": \"http://linked.earth/ontology/interpretation#hydrologicBalance\",\n \"label\": \"hydrologicBalance\"\n },\n \"i_e\": {\n \"id\": \"http://linked.earth/ontology/interpretation#hydrologicBalance\",\n \"label\": \"hydrologicBalance\"\n },\n \"hydrology\": {\n \"id\": \"http://linked.earth/ontology/interpretation#hydrologicBalance\",\n \"label\": \"hydrologicBalance\"\n },\n \"lakewaterisotope\": {\n \"id\": \"http://linked.earth/ontology/interpretation#lakeWaterIsotope\",\n \"label\": \"lakeWaterIsotope\"\n },\n \"lake water and precipitation d2h\": {\n \"id\": \"http://linked.earth/ontology/interpretation#lakeWaterIsotope\",\n \"label\": \"lakeWaterIsotope\"\n },\n \"lake water d18o\": {\n \"id\": \"http://linked.earth/ontology/interpretation#lakeWaterIsotope\",\n \"label\": \"lakeWaterIsotope\"\n },\n \"lake water d2h\": {\n \"id\": \"http://linked.earth/ontology/interpretation#lakeWaterIsotope\",\n \"label\": \"lakeWaterIsotope\"\n },\n \"liso\": {\n \"id\": \"http://linked.earth/ontology/interpretation#lakeWaterIsotope\",\n \"label\": \"lakeWaterIsotope\"\n },\n \"meltwater\": {\n \"id\": \"http://linked.earth/ontology/interpretation#meltwater\",\n \"label\": \"meltwater\"\n },\n \"ice melt\": {\n \"id\": \"http://linked.earth/ontology/interpretation#meltwater\",\n \"label\": \"meltwater\"\n },\n \"needstobereplaced\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"anoxia\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"carbonate_ion_concentration\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"export-productivity\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"gdgt\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"mixed\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"precipitation d2h + evap\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"t+ela\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"plant community composition\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"liso/p-e\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"organic matter source\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeReplaced\",\n \"label\": \"needsToBeReplaced\"\n },\n \"p-e\": {\n \"id\": \"http://linked.earth/ontology/interpretation#P-E\",\n \"label\": \"P-E\"\n },\n \"precipitation minus evaporation\": {\n \"id\": \"http://linked.earth/ontology/interpretation#P-E\",\n \"label\": \"P-E\"\n },\n \"effective moisture\": {\n \"id\": \"http://linked.earth/ontology/interpretation#P-E\",\n \"label\": \"P-E\"\n },\n \"m\": {\n \"id\": \"http://linked.earth/ontology/interpretation#P-E\",\n \"label\": \"P-E\"\n },\n \"p_e\": {\n \"id\": \"http://linked.earth/ontology/interpretation#P-E\",\n \"label\": \"P-E\"\n },\n \"p=e\": {\n \"id\": \"http://linked.earth/ontology/interpretation#P-E\",\n \"label\": \"P-E\"\n },\n \"precipitation\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitation\",\n \"label\": \"precipitation\"\n },\n \"pmax\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitation\",\n \"label\": \"precipitation\"\n },\n \"pmin\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitation\",\n \"label\": \"precipitation\"\n },\n \"p\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitation\",\n \"label\": \"precipitation\"\n },\n \"p_amount\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitation\",\n \"label\": \"precipitation\"\n },\n \"precipitationdeuteriumexcess\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationDeuteriumExcess\",\n \"label\": \"precipitationDeuteriumExcess\"\n },\n \"precipitation d-excess\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationDeuteriumExcess\",\n \"label\": \"precipitationDeuteriumExcess\"\n },\n \"precipitationisotope\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"dd\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"d18o of precipitation\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"p_isotope\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"piso\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"precipitation d18o\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"precipitation d2h\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"precipitation isotope\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"source\": {\n \"id\": \"http://linked.earth/ontology/interpretation#precipitationIsotope\",\n \"label\": \"precipitationIsotope\"\n },\n \"productivity\": {\n \"id\": \"http://linked.earth/ontology/interpretation#productivity\",\n \"label\": \"productivity\"\n },\n \"algal productivity\": {\n \"id\": \"http://linked.earth/ontology/interpretation#productivity\",\n \"label\": \"productivity\"\n },\n \"relativehumidity\": {\n \"id\": \"http://linked.earth/ontology/interpretation#relativeHumidity\",\n \"label\": \"relativeHumidity\"\n },\n \"relative humidity\": {\n \"id\": \"http://linked.earth/ontology/interpretation#relativeHumidity\",\n \"label\": \"relativeHumidity\"\n },\n \"rh\": {\n \"id\": \"http://linked.earth/ontology/interpretation#relativeHumidity\",\n \"label\": \"relativeHumidity\"\n },\n \"salinity\": {\n \"id\": \"http://linked.earth/ontology/interpretation#salinity\",\n \"label\": \"salinity\"\n },\n \"s\": {\n \"id\": \"http://linked.earth/ontology/interpretation#salinity\",\n \"label\": \"salinity\"\n },\n \"sss\": {\n \"id\": \"http://linked.earth/ontology/interpretation#salinity\",\n \"label\": \"salinity\"\n },\n \"seaice\": {\n \"id\": \"http://linked.earth/ontology/interpretation#seaIce\",\n \"label\": \"seaIce\"\n },\n \"sea ice cover\": {\n \"id\": \"http://linked.earth/ontology/interpretation#seaIce\",\n \"label\": \"seaIce\"\n },\n \"ice\": {\n \"id\": \"http://linked.earth/ontology/interpretation#seaIce\",\n \"label\": \"seaIce\"\n },\n \"seasonality\": {\n \"id\": \"http://linked.earth/ontology/interpretation#seasonality\",\n \"label\": \"seasonality\"\n },\n \"seawaterisotope\": {\n \"id\": \"http://linked.earth/ontology/interpretation#seawaterIsotope\",\n \"label\": \"seawaterIsotope\"\n },\n \"seawater_isotope\": {\n \"id\": \"http://linked.earth/ontology/interpretation#seawaterIsotope\",\n \"label\": \"seawaterIsotope\"\n },\n \"streamflow\": {\n \"id\": \"http://linked.earth/ontology/interpretation#streamflow\",\n \"label\": \"streamflow\"\n },\n \"q\": {\n \"id\": \"http://linked.earth/ontology/interpretation#streamflow\",\n \"label\": \"streamflow\"\n },\n \"sunlight\": {\n \"id\": \"http://linked.earth/ontology/interpretation#sunlight\",\n \"label\": \"sunlight\"\n },\n \"solar irradiance\": {\n \"id\": \"http://linked.earth/ontology/interpretation#sunlight\",\n \"label\": \"sunlight\"\n },\n \"sun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#sunlight\",\n \"label\": \"sunlight\"\n },\n \"surfacepressure\": {\n \"id\": \"http://linked.earth/ontology/interpretation#surfacePressure\",\n \"label\": \"surfacePressure\"\n },\n \"surface pressure\": {\n \"id\": \"http://linked.earth/ontology/interpretation#surfacePressure\",\n \"label\": \"surfacePressure\"\n },\n \"temperature\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"sst\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"subt\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"surface water temp\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"t\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"t_air\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"t_water\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature_water\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"lake water temperature\": {\n \"id\": \"http://linked.earth/ontology/interpretation#temperature\",\n \"label\": \"temperature\"\n },\n \"upwelling\": {\n \"id\": \"http://linked.earth/ontology/interpretation#upwelling\",\n \"label\": \"upwelling\"\n },\n \"upwelling index\": {\n \"id\": \"http://linked.earth/ontology/interpretation#upwelling\",\n \"label\": \"upwelling\"\n },\n \"windspeed\": {\n \"id\": \"http://linked.earth/ontology/interpretation#windSpeed\",\n \"label\": \"windSpeed\"\n },\n \"wind speed\": {\n \"id\": \"http://linked.earth/ontology/interpretation#windSpeed\",\n \"label\": \"windSpeed\"\n },\n \"w\": {\n \"id\": \"http://linked.earth/ontology/interpretation#windSpeed\",\n \"label\": \"windSpeed\"\n }\n },\n \"InterpretationSeasonality\": {\n \"annual\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1 2 3 4 5 6 7 8 9 10 11 12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"warmest + coldest months\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"not applicable (always)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"annual mean\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"annual calendar year (but 80% of precipitation from nov to may)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"coldest + warmest month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"warmest + coldest month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"year round\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"year-round\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"years\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,117\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,122\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,138\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,158\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,190\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,229\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,291\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,434\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,464\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,588\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,646\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"1,2,3,4,5,6,7,8,9,10,11,706\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"12 1 2; 6 7 8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"annual (*but recently would prob be interpreted as summer-biased)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"coldest month + summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"late summer/winter lake water (summer-biased mean annual precip)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"mean annual (weighted toward ond and mam)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"multi-annual\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"summer + winter\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"summer-biased/annual?\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"warmest + coldest\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"warmest month + winter\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"warmest month; coldest month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"winter\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Winter\",\n \"label\": \"Winter\"\n },\n \"summer temperature\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Annual\",\n \"label\": \"Annual\"\n },\n \"apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr\",\n \"label\": \"Apr\"\n },\n \"4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"apr-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Aug\",\n \"label\": \"Apr-Aug\"\n },\n \"april-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Aug\",\n \"label\": \"Apr-Aug\"\n },\n \"june-august\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Aug\",\n \"label\": \"Apr-Aug\"\n },\n \"apr-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Dec\",\n \"label\": \"Apr-Dec\"\n },\n \"4 5 6 7 8 9 10 12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Dec\",\n \"label\": \"Apr-Dec\"\n },\n \"apr-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Feb\",\n \"label\": \"Apr-Feb\"\n },\n \"apr-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jan\",\n \"label\": \"Apr-Jan\"\n },\n \"apr-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jul\",\n \"label\": \"Apr-Jul\"\n },\n \"4 5 6 7\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jul\",\n \"label\": \"Apr-Jul\"\n },\n \"amjj\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jul\",\n \"label\": \"Apr-Jul\"\n },\n \"spring-summer (april-july)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jul\",\n \"label\": \"Apr-Jul\"\n },\n \"apr-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jun\",\n \"label\": \"Apr-Jun\"\n },\n \"4 5 2006\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Jun\",\n \"label\": \"Apr-Jun\"\n },\n \"apr-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Mar\",\n \"label\": \"Apr-Mar\"\n },\n \"april/june to april/march\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Mar\",\n \"label\": \"Apr-Mar\"\n },\n \"apr-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-May\",\n \"label\": \"Apr-May\"\n },\n \"apr-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Nov\",\n \"label\": \"Apr-Nov\"\n },\n \"apr-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Oct\",\n \"label\": \"Apr-Oct\"\n },\n \"4,5,6,7,8,9,10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Oct\",\n \"label\": \"Apr-Oct\"\n },\n \"amjjaso\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Oct\",\n \"label\": \"Apr-Oct\"\n },\n \"apr-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Sep\",\n \"label\": \"Apr-Sep\"\n },\n \"4,5,6,7,8,9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Sep\",\n \"label\": \"Apr-Sep\"\n },\n \"amjjas\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Sep\",\n \"label\": \"Apr-Sep\"\n },\n \"4 5 6 7 8 9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Apr-Sep\",\n \"label\": \"Apr-Sep\"\n },\n \"aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug\",\n \"label\": \"Aug\"\n },\n \"aug-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Apr\",\n \"label\": \"Aug-Apr\"\n },\n \"aug-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Dec\",\n \"label\": \"Aug-Dec\"\n },\n \"aug-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Feb\",\n \"label\": \"Aug-Feb\"\n },\n \"aug-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Jan\",\n \"label\": \"Aug-Jan\"\n },\n \"aug-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Jul\",\n \"label\": \"Aug-Jul\"\n },\n \"-12 -11 -10 -9 -8 1 2 3 4 5 6 7\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Jul\",\n \"label\": \"Aug-Jul\"\n },\n \"thermal year (aug-jul) (but 80% of precipitation from nov to may)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Jul\",\n \"label\": \"Aug-Jul\"\n },\n \"aug-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Jun\",\n \"label\": \"Aug-Jun\"\n },\n \"aug-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Mar\",\n \"label\": \"Aug-Mar\"\n },\n \"aug-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-May\",\n \"label\": \"Aug-May\"\n },\n \"aug-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Nov\",\n \"label\": \"Aug-Nov\"\n },\n \"aug-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Oct\",\n \"label\": \"Aug-Oct\"\n },\n \"aug-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Aug-Sep\",\n \"label\": \"Aug-Sep\"\n },\n \"coldest month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"coldest_month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Coldest_Month\",\n \"label\": \"Coldest Month\"\n },\n \"growing season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"coldest\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Coldest_Month\",\n \"label\": \"Coldest Month\"\n },\n \"dec-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Apr\",\n \"label\": \"Dec-Apr\"\n },\n \"12,1,2,3,4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Apr\",\n \"label\": \"Dec-Apr\"\n },\n \"dec-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Aug\",\n \"label\": \"Dec-Aug\"\n },\n \"dec-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Feb\",\n \"label\": \"Dec-Feb\"\n },\n \"12,1,2\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Feb\",\n \"label\": \"Dec-Feb\"\n },\n \"djf\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Feb\",\n \"label\": \"Dec-Feb\"\n },\n \"-12 1 2\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Feb\",\n \"label\": \"Dec-Feb\"\n },\n \"1,2,12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Feb\",\n \"label\": \"Dec-Feb\"\n },\n \"dec-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Jan\",\n \"label\": \"Dec-Jan\"\n },\n \"dec-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Jul\",\n \"label\": \"Dec-Jul\"\n },\n \"dec-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Jun\",\n \"label\": \"Dec-Jun\"\n },\n \"dec-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Mar\",\n \"label\": \"Dec-Mar\"\n },\n \"12,1,2,3\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Mar\",\n \"label\": \"Dec-Mar\"\n },\n \"-12 1 2 3\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Mar\",\n \"label\": \"Dec-Mar\"\n },\n \"december - march (monsoon season)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Mar\",\n \"label\": \"Dec-Mar\"\n },\n \"dec-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-May\",\n \"label\": \"Dec-May\"\n },\n \"djfmam\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-May\",\n \"label\": \"Dec-May\"\n },\n \"dec-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Oct\",\n \"label\": \"Dec-Oct\"\n },\n \"dec-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Dec-Sep\",\n \"label\": \"Dec-Sep\"\n },\n \"fall\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Fall\",\n \"label\": \"Fall\"\n },\n \"autumn\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Fall\",\n \"label\": \"Fall\"\n },\n \"feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Aug\",\n \"label\": \"Feb-Aug\"\n },\n \"2\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"feb-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Apr\",\n \"label\": \"Feb-Apr\"\n },\n \"feb-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Aug\",\n \"label\": \"Feb-Aug\"\n },\n \"2 3 4 5 6 7 8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Aug\",\n \"label\": \"Feb-Aug\"\n },\n \"feb-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Dec\",\n \"label\": \"Feb-Dec\"\n },\n \"feb-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Jul\",\n \"label\": \"Feb-Jul\"\n },\n \"feb-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Jun\",\n \"label\": \"Feb-Jun\"\n },\n \"feb-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Mar\",\n \"label\": \"Feb-Mar\"\n },\n \"feb-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-May\",\n \"label\": \"Feb-May\"\n },\n \"feb-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Nov\",\n \"label\": \"Feb-Nov\"\n },\n \"feb-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Oct\",\n \"label\": \"Feb-Oct\"\n },\n \"feb-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Feb-Sep\",\n \"label\": \"Feb-Sep\"\n },\n \"growing_season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"growing season? (not stated)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"growth season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"mainly growing season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"with potential addition effects of snowmelt following wet winters\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Growing_Season\",\n \"label\": \"Growing Season\"\n },\n \"jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan\",\n \"label\": \"Jan\"\n },\n \"1\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"jan-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Apr\",\n \"label\": \"Jan-Apr\"\n },\n \"january\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Apr\",\n \"label\": \"Jan-Apr\"\n },\n \"february\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Apr\",\n \"label\": \"Jan-Apr\"\n },\n \"march\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Apr\",\n \"label\": \"Jan-Apr\"\n },\n \"april\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Apr\",\n \"label\": \"Jan-Apr\"\n },\n \"jfma\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Apr\",\n \"label\": \"Jan-Apr\"\n },\n \"jan-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Aug\",\n \"label\": \"Jan-Aug\"\n },\n \"jan-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Feb\",\n \"label\": \"Jan-Feb\"\n },\n \"jan-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Jul\",\n \"label\": \"Jan-Jul\"\n },\n \"jfmamjj\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Jul\",\n \"label\": \"Jan-Jul\"\n },\n \"jan-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Jun\",\n \"label\": \"Jan-Jun\"\n },\n \"january-june (spring)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Jun\",\n \"label\": \"Jan-Jun\"\n },\n \"jan-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Mar\",\n \"label\": \"Jan-Mar\"\n },\n \"1 2 2003\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Mar\",\n \"label\": \"Jan-Mar\"\n },\n \"jan-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-May\",\n \"label\": \"Jan-May\"\n },\n \"jan-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Nov\",\n \"label\": \"Jan-Nov\"\n },\n \"jan-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Oct\",\n \"label\": \"Jan-Oct\"\n },\n \"jan-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jan-Sep\",\n \"label\": \"Jan-Sep\"\n },\n \"jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul\",\n \"label\": \"Jul\"\n },\n \"july\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"7\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul\",\n \"label\": \"Jul\"\n },\n \"jul-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Apr\",\n \"label\": \"Jul-Apr\"\n },\n \"jul-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Aug\",\n \"label\": \"Jul-Aug\"\n },\n \"jul-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Dec\",\n \"label\": \"Jul-Dec\"\n },\n \"7 8 9 10 11 12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Dec\",\n \"label\": \"Jul-Dec\"\n },\n \"jul-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Feb\",\n \"label\": \"Jul-Feb\"\n },\n \"jul-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Jan\",\n \"label\": \"Jul-Jan\"\n },\n \"jul-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Jun\",\n \"label\": \"Jul-Jun\"\n },\n \"-12 -11 -10 -9 -8 -7 1 2 3 4 5 6\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Jun\",\n \"label\": \"Jul-Jun\"\n },\n \"jul-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Mar\",\n \"label\": \"Jul-Mar\"\n },\n \"jul-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-May\",\n \"label\": \"Jul-May\"\n },\n \"jul-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Nov\",\n \"label\": \"Jul-Nov\"\n },\n \"jul-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Oct\",\n \"label\": \"Jul-Oct\"\n },\n \"7,8,9,10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Oct\",\n \"label\": \"Jul-Oct\"\n },\n \"jul-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Sep\",\n \"label\": \"Jul-Sep\"\n },\n \"7 8 2009\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Sep\",\n \"label\": \"Jul-Sep\"\n },\n \"7,8,9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Sep\",\n \"label\": \"Jul-Sep\"\n },\n \"((( 7 8 2009 ))) null /// 7 8 9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Sep\",\n \"label\": \"Jul-Sep\"\n },\n \"jas\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Sep\",\n \"label\": \"Jul-Sep\"\n },\n \"summer (jas)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jul-Sep\",\n \"label\": \"Jul-Sep\"\n },\n \"jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun\",\n \"label\": \"Jun\"\n },\n \"6\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun\",\n \"label\": \"Jun\"\n },\n \"jun-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Apr\",\n \"label\": \"Jun-Apr\"\n },\n \"jun-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"jja\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"6,7,8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"6 7 2008\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"((( 6 7 2008 ))) null /// 6 7 8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"summer (june-august)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"((( 6 7 2008 ))) 39606 /// 6 7 8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"june,july\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"august\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"summer (jja)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Aug\",\n \"label\": \"Jun-Aug\"\n },\n \"jun-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Dec\",\n \"label\": \"Jun-Dec\"\n },\n \"jun-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Feb\",\n \"label\": \"Jun-Feb\"\n },\n \"jun-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Jan\",\n \"label\": \"Jun-Jan\"\n },\n \"jun-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Jul\",\n \"label\": \"Jun-Jul\"\n },\n \"6 7\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Jul\",\n \"label\": \"Jun-Jul\"\n },\n \"6,7\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Jul\",\n \"label\": \"Jun-Jul\"\n },\n \"june-july minimum\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Jul\",\n \"label\": \"Jun-Jul\"\n },\n \"jun-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Mar\",\n \"label\": \"Jun-Mar\"\n },\n \"jun-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Nov\",\n \"label\": \"Jun-Nov\"\n },\n \"jjason\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Nov\",\n \"label\": \"Jun-Nov\"\n },\n \"jun-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Oct\",\n \"label\": \"Jun-Oct\"\n },\n \"6,7,8,9,10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Oct\",\n \"label\": \"Jun-Oct\"\n },\n \"jjaso\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Oct\",\n \"label\": \"Jun-Oct\"\n },\n \"jun-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"jjas\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"6,7,8,9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"6 7 8 9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"summer (june to september)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"growing season/jjas\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"june\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"september\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"summer (jjas)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"((( warm season (june-sept) ))) jjas /// jjas\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Jun-Sep\",\n \"label\": \"Jun-Sep\"\n },\n \"mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar\",\n \"label\": \"Mar\"\n },\n \"mar-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Apr\",\n \"label\": \"Mar-Apr\"\n },\n \"mar-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Aug\",\n \"label\": \"Mar-Aug\"\n },\n \"3 4 5 6 7 8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Aug\",\n \"label\": \"Mar-Aug\"\n },\n \"3,4,5,6,7,8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Aug\",\n \"label\": \"Mar-Aug\"\n },\n \"mar-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Dec\",\n \"label\": \"Mar-Dec\"\n },\n \"mar-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Jan\",\n \"label\": \"Mar-Jan\"\n },\n \"mar-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Jul\",\n \"label\": \"Mar-Jul\"\n },\n \"mar-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Jun\",\n \"label\": \"Mar-Jun\"\n },\n \"mar-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-May\",\n \"label\": \"Mar-May\"\n },\n \"3 4 2005\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-May\",\n \"label\": \"Mar-May\"\n },\n \"mam\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-May\",\n \"label\": \"Mar-May\"\n },\n \"mar-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Nov\",\n \"label\": \"Mar-Nov\"\n },\n \"march to november\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Nov\",\n \"label\": \"Mar-Nov\"\n },\n \"mar-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Oct\",\n \"label\": \"Mar-Oct\"\n },\n \"3 4 5 6 7 8 9 10 11 12 13 14\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Oct\",\n \"label\": \"Mar-Oct\"\n },\n \"3 4 5 6 7 8 9 10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Oct\",\n \"label\": \"Mar-Oct\"\n },\n \"mar-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Mar-Sep\",\n \"label\": \"Mar-Sep\"\n },\n \"may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"5\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"may-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Apr\",\n \"label\": \"May-Apr\"\n },\n \"-5 -6 -7 -8 -9 -10 -11 -12 1 2 3 4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Apr\",\n \"label\": \"May-Apr\"\n },\n \"may-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Aug\",\n \"label\": \"May-Aug\"\n },\n \"mjja\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Aug\",\n \"label\": \"May-Aug\"\n },\n \"5,6,7,8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Aug\",\n \"label\": \"May-Aug\"\n },\n \"may-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Dec\",\n \"label\": \"May-Dec\"\n },\n \"october\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Oct\",\n \"label\": \"May-Oct\"\n },\n \"november\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Dec\",\n \"label\": \"May-Dec\"\n },\n \"december\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Dec\",\n \"label\": \"May-Dec\"\n },\n \"mjjasond\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Dec\",\n \"label\": \"May-Dec\"\n },\n \"5 6 7 8 9 10 11 12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Dec\",\n \"label\": \"May-Dec\"\n },\n \"may-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Feb\",\n \"label\": \"May-Feb\"\n },\n \"may-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Jan\",\n \"label\": \"May-Jan\"\n },\n \"may-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Jul\",\n \"label\": \"May-Jul\"\n },\n \"5 6 2007\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Jul\",\n \"label\": \"May-Jul\"\n },\n \"may-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Jun\",\n \"label\": \"May-Jun\"\n },\n \"mj\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Jun\",\n \"label\": \"May-Jun\"\n },\n \"may-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Mar\",\n \"label\": \"May-Mar\"\n },\n \"may-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Nov\",\n \"label\": \"May-Nov\"\n },\n \"may-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Oct\",\n \"label\": \"May-Oct\"\n },\n \"mjjaso\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Oct\",\n \"label\": \"May-Oct\"\n },\n \"5,6,7,8,9,10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Oct\",\n \"label\": \"May-Oct\"\n },\n \"may to october\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Oct\",\n \"label\": \"May-Oct\"\n },\n \"may-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"mjjas\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"may to sept\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"5,6,7,8,9\": {\n \"id\": \"http://linked.earth/ontology/interpretation#May-Sep\",\n \"label\": \"May-Sep\"\n },\n \"needstobechanged\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"upwelling\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"unknown\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"n/a\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"1,10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"1,11\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"changes depending on which season provides source moisture for plants\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"depends\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"inflow@surface\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"not indicated\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"under present conditions\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wet years often have higehr amount of winter rain\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"but d18o may reflect high summer rain\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"winter rain\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"or both\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"upwelling season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"nov-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Apr\",\n \"label\": \"Nov-Apr\"\n },\n \"11,12,1,2,3,4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Apr\",\n \"label\": \"Nov-Apr\"\n },\n \"winter (nov-april)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Apr\",\n \"label\": \"Nov-Apr\"\n },\n \"-11 -12 1 2 3 4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Apr\",\n \"label\": \"Nov-Apr\"\n },\n \"ndjfma\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Apr\",\n \"label\": \"Nov-Apr\"\n },\n \"nov-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Aug\",\n \"label\": \"Nov-Aug\"\n },\n \"nov-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Dec\",\n \"label\": \"Nov-Dec\"\n },\n \"nov-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Feb\",\n \"label\": \"Nov-Feb\"\n },\n \"-11 -12 1 2\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Feb\",\n \"label\": \"Nov-Feb\"\n },\n \"11,12,1,2\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Feb\",\n \"label\": \"Nov-Feb\"\n },\n \"ndjf\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Feb\",\n \"label\": \"Nov-Feb\"\n },\n \"november (previous year) to february (current year)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Feb\",\n \"label\": \"Nov-Feb\"\n },\n \"nov-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Jan\",\n \"label\": \"Nov-Jan\"\n },\n \"summer (ndj)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Jan\",\n \"label\": \"Nov-Jan\"\n },\n \"nov-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Jul\",\n \"label\": \"Nov-Jul\"\n },\n \"nov-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Jun\",\n \"label\": \"Nov-Jun\"\n },\n \"11,12,1,2,3,4,5,6\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Jun\",\n \"label\": \"Nov-Jun\"\n },\n \"nov-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Mar\",\n \"label\": \"Nov-Mar\"\n },\n \"11,12,1,2,3\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Mar\",\n \"label\": \"Nov-Mar\"\n },\n \"nov-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-May\",\n \"label\": \"Nov-May\"\n },\n \"11,12,1,2,3,4,5\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-May\",\n \"label\": \"Nov-May\"\n },\n \"winter (11,12,1,2,3,4,5)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-May\",\n \"label\": \"Nov-May\"\n },\n \"nov-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Oct\",\n \"label\": \"Nov-Oct\"\n },\n \"-12 -11 1 2 3 4 5 6 7 8 9 10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Oct\",\n \"label\": \"Nov-Oct\"\n },\n \"nov-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Nov-Sep\",\n \"label\": \"Nov-Sep\"\n },\n \"oct-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Apr\",\n \"label\": \"Oct-Apr\"\n },\n \"10,11,12,1,2,3,4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Apr\",\n \"label\": \"Oct-Apr\"\n },\n \"-10 -11 -12 1 2 3 4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Apr\",\n \"label\": \"Oct-Apr\"\n },\n \"october-april (wet season)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Apr\",\n \"label\": \"Oct-Apr\"\n },\n \"ondjfma\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Apr\",\n \"label\": \"Oct-Apr\"\n },\n \"oct-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Aug\",\n \"label\": \"Oct-Aug\"\n },\n \"oct-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Dec\",\n \"label\": \"Oct-Dec\"\n },\n \"ond\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Dec\",\n \"label\": \"Oct-Dec\"\n },\n \"oct-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Feb\",\n \"label\": \"Oct-Feb\"\n },\n \"oct-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Jan\",\n \"label\": \"Oct-Jan\"\n },\n \"10,11,12,1\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Jan\",\n \"label\": \"Oct-Jan\"\n },\n \"ondj\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Jan\",\n \"label\": \"Oct-Jan\"\n },\n \"oct-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Jul\",\n \"label\": \"Oct-Jul\"\n },\n \"oct-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Jun\",\n \"label\": \"Oct-Jun\"\n },\n \"oct-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Mar\",\n \"label\": \"Oct-Mar\"\n },\n \"ondjfm\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Mar\",\n \"label\": \"Oct-Mar\"\n },\n \"10,11,12,1,2,3\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Mar\",\n \"label\": \"Oct-Mar\"\n },\n \"oct-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"11\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"12\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"3\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-May\",\n \"label\": \"Oct-May\"\n },\n \"oct-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Nov\",\n \"label\": \"Oct-Nov\"\n },\n \"oct-sep\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Sep\",\n \"label\": \"Oct-Sep\"\n },\n \"oct (previous year) to sept (current year)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Oct-Sep\",\n \"label\": \"Oct-Sep\"\n },\n \"sep-apr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Apr\",\n \"label\": \"Sep-Apr\"\n },\n \"-9 -10 -11 -12 1 2 3 4\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Apr\",\n \"label\": \"Sep-Apr\"\n },\n \"sep-aug\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Aug\",\n \"label\": \"Sep-Aug\"\n },\n \"-12 -11 -10 -9 1 2 3 4 5 6 7 8\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Aug\",\n \"label\": \"Sep-Aug\"\n },\n \"sep-dec\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Dec\",\n \"label\": \"Sep-Dec\"\n },\n \"sep-feb\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Feb\",\n \"label\": \"Sep-Feb\"\n },\n \"-9 -10 -11 -12 1 2 2\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Feb\",\n \"label\": \"Sep-Feb\"\n },\n \"sondjf\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Feb\",\n \"label\": \"Sep-Feb\"\n },\n \"sep-jan\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Jan\",\n \"label\": \"Sep-Jan\"\n },\n \"sep-jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Jul\",\n \"label\": \"Sep-Jul\"\n },\n \"sep-jun\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Jun\",\n \"label\": \"Sep-Jun\"\n },\n \"sep-mar\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Mar\",\n \"label\": \"Sep-Mar\"\n },\n \"sep-may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-May\",\n \"label\": \"Sep-May\"\n },\n \"sep-nov\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Nov\",\n \"label\": \"Sep-Nov\"\n },\n \"9 10 11\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Nov\",\n \"label\": \"Sep-Nov\"\n },\n \"sep-oct\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Oct\",\n \"label\": \"Sep-Oct\"\n },\n \"9 10\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Sep-Oct\",\n \"label\": \"Sep-Oct\"\n },\n \"spr-sum\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Spr-Sum\",\n \"label\": \"Spr-Sum\"\n },\n \"variable\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Spr-Sum\",\n \"label\": \"Spr-Sum\"\n },\n \"probably spring/summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Spr-Sum\",\n \"label\": \"Spr-Sum\"\n },\n \"spring summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Spr-Sum\",\n \"label\": \"Spr-Sum\"\n },\n \"spring-summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Spr-Sum\",\n \"label\": \"Spr-Sum\"\n },\n \"spring\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Spring\",\n \"label\": \"Spring\"\n },\n \"subannual\": {\n \"id\": \"http://linked.earth/ontology/interpretation#subannual\",\n \"label\": \"subannual\"\n },\n \"n/a (subannually resolved)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#subannual\",\n \"label\": \"subannual\"\n },\n \"not applicable (subannually resolved)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#subannual\",\n \"label\": \"subannual\"\n },\n \"summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"warm season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"mostly summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"summer+\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"summer-bias\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"ice-free season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"nh summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"((( summeronly ))) summeronly /// null\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"am&ja\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"austral summer (oct-jan)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"early summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"mean summer\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"p_amount (june)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"temperature (july\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"aug)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"temperature (may\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"oct)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"summer?\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"t_air (july\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"august)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"p_amount (july)\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"warmest quarter yr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"mar&jul\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Summer\",\n \"label\": \"Summer\"\n },\n \"warmest month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Warmest_Month\",\n \"label\": \"Warmest Month\"\n },\n \"warmest_month\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Warmest_Month\",\n \"label\": \"Warmest Month\"\n },\n \"231pa excess\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Warmest_Month\",\n \"label\": \"Warmest Month\"\n },\n \"warmest\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Warmest_Month\",\n \"label\": \"Warmest Month\"\n },\n \"wet season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Wet_Season\",\n \"label\": \"Wet Season\"\n },\n \"wet_season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Wet_Season\",\n \"label\": \"Wet Season\"\n },\n \"monsoon\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Wet_Season\",\n \"label\": \"Wet Season\"\n },\n \"andean wet season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Wet_Season\",\n \"label\": \"Wet Season\"\n },\n \"monsoon season\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Wet_Season\",\n \"label\": \"Wet Season\"\n },\n \"win-spr\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Win-Spr\",\n \"label\": \"Win-Spr\"\n },\n \"winter/spring\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Win-Spr\",\n \"label\": \"Win-Spr\"\n },\n \"winter+\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Winter\",\n \"label\": \"Winter\"\n },\n \"mostly winter\": {\n \"id\": \"http://linked.earth/ontology/interpretation#Winter\",\n \"label\": \"Winter\"\n }\n }\n },\n \"PROXIES\": {\n \"PaleoProxy\": {\n \"accumulation rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#accumulation_rate\",\n \"label\": \"accumulation rate\"\n },\n \"accumulation_rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#accumulation_rate\",\n \"label\": \"accumulation rate\"\n },\n \"sed accumulation\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#accumulation_rate\",\n \"label\": \"accumulation rate\"\n },\n \"acl\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ACL\",\n \"label\": \"ACL\"\n },\n \"average chain length\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ACL\",\n \"label\": \"ACL\"\n },\n \"al2o3\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Al2O3\",\n \"label\": \"Al2O3\"\n },\n \"aluminum oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Al2O3\",\n \"label\": \"Al2O3\"\n },\n \"alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#alkenone\",\n \"label\": \"alkenone\"\n },\n \"amoeba\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#amoeba\",\n \"label\": \"amoeba\"\n },\n \"testate amoeba\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#amoeba\",\n \"label\": \"amoeba\"\n },\n \"ba/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"ba_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"barium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"ba/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"ba_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"barium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"baca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"biomarker\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#biomarker\",\n \"label\": \"biomarker\"\n },\n \"organic compound\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#biomarker\",\n \"label\": \"biomarker\"\n },\n \"c15 fatty alcohols\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#biomarker\",\n \"label\": \"biomarker\"\n },\n \"c37.concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#biomarker\",\n \"label\": \"biomarker\"\n },\n \"bit\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#BIT\",\n \"label\": \"BIT\"\n },\n \"branched and isoprenoid tetraether index\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#BIT\",\n \"label\": \"BIT\"\n },\n \"bitindex\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#BIT\",\n \"label\": \"BIT\"\n },\n \"borehole\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#borehole\",\n \"label\": \"borehole\"\n },\n \"bsi\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#BSi\",\n \"label\": \"BSi\"\n },\n \"biogenic silica\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#BSi\",\n \"label\": \"BSi\"\n },\n \"bubble frequency\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bubble_frequency\",\n \"label\": \"bubble frequency\"\n },\n \"bubble_frequency\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bubble_frequency\",\n \"label\": \"bubble frequency\"\n },\n \"bulk density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_density\",\n \"label\": \"bulk density\"\n },\n \"bulk_density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_density\",\n \"label\": \"bulk density\"\n },\n \"gamma\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_density\",\n \"label\": \"bulk density\"\n },\n \"bulk sediment\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_sediment\",\n \"label\": \"bulk sediment\"\n },\n \"bulk_sediment\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_sediment\",\n \"label\": \"bulk sediment\"\n },\n \"dry sediment\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_sediment\",\n \"label\": \"bulk sediment\"\n },\n \"bulksed\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#bulk_sediment\",\n \"label\": \"bulk sediment\"\n },\n \"c/n\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#C_N\",\n \"label\": \"C/N\"\n },\n \"c_n\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#C_N\",\n \"label\": \"C/N\"\n },\n \"carbon/nitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#C_N\",\n \"label\": \"C/N\"\n },\n \"ca/k\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ca_K\",\n \"label\": \"Ca/K\"\n },\n \"ca_k\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ca_K\",\n \"label\": \"Ca/K\"\n },\n \"calcium/potassium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ca_K\",\n \"label\": \"Ca/K\"\n },\n \"ca/ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"ca_ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"calcium/titanium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"caco3\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#CaCO3\",\n \"label\": \"CaCO3\"\n },\n \"calcium carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#CaCO3\",\n \"label\": \"CaCO3\"\n },\n \"calcification rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#calcification_rate\",\n \"label\": \"calcification rate\"\n },\n \"calcification_rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#calcification_rate\",\n \"label\": \"calcification rate\"\n },\n \"calcification\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#calcification_rate\",\n \"label\": \"calcification rate\"\n },\n \"calcite\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#calcite\",\n \"label\": \"calcite\"\n },\n \"carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#carbonate\",\n \"label\": \"carbonate\"\n },\n \"authigenic carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#carbonate\",\n \"label\": \"carbonate\"\n },\n \"carbonate content\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#carbonate\",\n \"label\": \"carbonate\"\n },\n \"cellulose\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#cellulose\",\n \"label\": \"cellulose\"\n },\n \"charcoal\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#charcoal\",\n \"label\": \"charcoal\"\n },\n \"chironomid\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#chironomid\",\n \"label\": \"chironomid\"\n },\n \"midge\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#chironomid\",\n \"label\": \"chironomid\"\n },\n \"chlorophyll\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#chlorophyll\",\n \"label\": \"chlorophyll\"\n },\n \"chrysophyte assemblage\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#chrysophyte_assemblage\",\n \"label\": \"chrysophyte assemblage\"\n },\n \"chrysophyte_assemblage\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#chrysophyte_assemblage\",\n \"label\": \"chrysophyte assemblage\"\n },\n \"chrysophyte\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#chrysophyte_assemblage\",\n \"label\": \"chrysophyte assemblage\"\n },\n \"cladoceran\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#cladoceran\",\n \"label\": \"cladoceran\"\n },\n \"cladocera\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#cladoceran\",\n \"label\": \"cladoceran\"\n },\n \"coccolithophore\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#coccolithophore\",\n \"label\": \"coccolithophore\"\n },\n \"coccolith\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#coccolithophore\",\n \"label\": \"coccolithophore\"\n },\n \"d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d13C\",\n \"label\": \"d13C\"\n },\n \"delta 13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cwax\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d13C\",\n \"label\": \"d13C\"\n },\n \"d15n\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d15N\",\n \"label\": \"d15N\"\n },\n \"delta 15n\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d15N\",\n \"label\": \"d15N\"\n },\n \"d15n/d40ar\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d15N_d40Ar\",\n \"label\": \"d15N/d40Ar\"\n },\n \"d15n_d40ar\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d15N_d40Ar\",\n \"label\": \"d15N/d40Ar\"\n },\n \"15n/40ar fractionation\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d15N_d40Ar\",\n \"label\": \"d15N/d40Ar\"\n },\n \"d15nd40ar\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d15N_d40Ar\",\n \"label\": \"d15N/d40Ar\"\n },\n \"d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d18O\",\n \"label\": \"d18O\"\n },\n \"delta 18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d18O\",\n \"label\": \"d18O\"\n },\n \"cellulose d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d18O\",\n \"label\": \"d18O\"\n },\n \"delta18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d18O\",\n \"label\": \"d18O\"\n },\n \"foram d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#d18O\",\n \"label\": \"d18O\"\n },\n \"dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dD\",\n \"label\": \"dD\"\n },\n \"delta 2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dD\",\n \"label\": \"dD\"\n },\n \"d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dD\",\n \"label\": \"dD\"\n },\n \"ddwax\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dD\",\n \"label\": \"dD\"\n },\n \"leaf wax\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dD\",\n \"label\": \"dD\"\n },\n \"leafwax\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dD\",\n \"label\": \"dD\"\n },\n \"deuterium excess\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#deuterium_excess\",\n \"label\": \"deuterium excess\"\n },\n \"deuterium_excess\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#deuterium_excess\",\n \"label\": \"deuterium excess\"\n },\n \"deterium excess\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#deuterium_excess\",\n \"label\": \"deuterium excess\"\n },\n \"dx\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#deuterium_excess\",\n \"label\": \"deuterium excess\"\n },\n \"diatom\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#diatom\",\n \"label\": \"diatom\"\n },\n \"dinocyst\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dinocyst\",\n \"label\": \"dinocyst\"\n },\n \"dinoflagellate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dinocyst\",\n \"label\": \"dinocyst\"\n },\n \"dynocist mat\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dinocyst\",\n \"label\": \"dinocyst\"\n },\n \"dry bulk density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dry_bulk_density\",\n \"label\": \"dry bulk density\"\n },\n \"dry_bulk_density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dry_bulk_density\",\n \"label\": \"dry bulk density\"\n },\n \"dbd\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dry_bulk_density\",\n \"label\": \"dry bulk density\"\n },\n \"eu/zr\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Eu_Zr\",\n \"label\": \"Eu/Zr\"\n },\n \"eu_zr\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Eu_Zr\",\n \"label\": \"Eu/Zr\"\n },\n \"fe\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Fe\",\n \"label\": \"Fe\"\n },\n \"iron\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Fe\",\n \"label\": \"Fe\"\n },\n \"fe/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Fe_Al\",\n \"label\": \"Fe/Al\"\n },\n \"fe_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Fe_Al\",\n \"label\": \"Fe/Al\"\n },\n \"iron/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Fe_Al\",\n \"label\": \"Fe/Al\"\n },\n \"foraminifera\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"foraminifer\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"benthic foraminifers\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"n. dutertrei\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"planktonic foraminifera\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"transfer function\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"uvigerina mediterranea\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"gdgt\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#GDGT\",\n \"label\": \"GDGT\"\n },\n \"glycerol dialkyl glycerol tetraether\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#GDGT\",\n \"label\": \"GDGT\"\n },\n \"brgdgt\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#GDGT\",\n \"label\": \"GDGT\"\n },\n \"grain size\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#grain_size\",\n \"label\": \"grain size\"\n },\n \"grain_size\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#grain_size\",\n \"label\": \"grain size\"\n },\n \"particle size\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#grain_size\",\n \"label\": \"grain size\"\n },\n \"hbi\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#HBI\",\n \"label\": \"HBI\"\n },\n \"highly-branched isoprenoid alkene\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#HBI\",\n \"label\": \"HBI\"\n },\n \"historical\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#historical\",\n \"label\": \"historical\"\n },\n \"documentary\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#historical\",\n \"label\": \"historical\"\n },\n \"historic\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#historical\",\n \"label\": \"historical\"\n },\n \"humification\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#humification\",\n \"label\": \"humification\"\n },\n \"humification index\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#humification\",\n \"label\": \"humification\"\n },\n \"ice accumulation\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ice_accumulation\",\n \"label\": \"ice accumulation\"\n },\n \"ice_accumulation\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ice_accumulation\",\n \"label\": \"ice accumulation\"\n },\n \"ice melt\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ice_melt\",\n \"label\": \"ice melt\"\n },\n \"ice_melt\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ice_melt\",\n \"label\": \"ice melt\"\n },\n \"melt\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ice_melt\",\n \"label\": \"ice melt\"\n },\n \"melt layer\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ice_melt\",\n \"label\": \"ice melt\"\n },\n \"inorganic carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#inorganic_carbon\",\n \"label\": \"inorganic carbon\"\n },\n \"inorganic_carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#inorganic_carbon\",\n \"label\": \"inorganic carbon\"\n },\n \"tic\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#inorganic_carbon\",\n \"label\": \"inorganic carbon\"\n },\n \"ip25\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#IP25\",\n \"label\": \"IP25\"\n },\n \"ice proxy with 25 carbon atoms\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#IP25\",\n \"label\": \"IP25\"\n },\n \"lake level\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#lake_level\",\n \"label\": \"lake level\"\n },\n \"lake_level\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#lake_level\",\n \"label\": \"lake level\"\n },\n \"lake stratigraphy and radiocarbon dating of macrofossils\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#lake_level\",\n \"label\": \"lake level\"\n },\n \"lakelevel\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#lake_level\",\n \"label\": \"lake level\"\n },\n \"lakestatus\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#lake_level\",\n \"label\": \"lake level\"\n },\n \"latewood cellulose\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#latewood_cellulose\",\n \"label\": \"latewood cellulose\"\n },\n \"latewood_cellulose\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#latewood_cellulose\",\n \"label\": \"latewood cellulose\"\n },\n \"late-wood cellulose\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#latewood_cellulose\",\n \"label\": \"latewood cellulose\"\n },\n \"ldi\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#LDI\",\n \"label\": \"LDI\"\n },\n \"long-chain diol index\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#LDI\",\n \"label\": \"LDI\"\n },\n \"long chain diol\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#LDI\",\n \"label\": \"LDI\"\n },\n \"macrofossils\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#macrofossils\",\n \"label\": \"macrofossils\"\n },\n \"plant macrofossils\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#macrofossils\",\n \"label\": \"macrofossils\"\n },\n \"magnetic\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#magnetic\",\n \"label\": \"magnetic\"\n },\n \"arm/irm\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#magnetic\",\n \"label\": \"magnetic\"\n },\n \"irm\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#magnetic\",\n \"label\": \"magnetic\"\n },\n \"magnetic susceptibility\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#magnetic_susceptibility\",\n \"label\": \"magnetic susceptibility\"\n },\n \"magnetic_susceptibility\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#magnetic_susceptibility\",\n \"label\": \"magnetic susceptibility\"\n },\n \"ms\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#magnetic_susceptibility\",\n \"label\": \"magnetic susceptibility\"\n },\n \"mass accumulation rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#mass_accumulation_rate\",\n \"label\": \"mass accumulation rate\"\n },\n \"mass_accumulation_rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#mass_accumulation_rate\",\n \"label\": \"mass accumulation rate\"\n },\n \"mass per area per time unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#mass_accumulation_rate\",\n \"label\": \"mass accumulation rate\"\n },\n \"mar\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#mass_accumulation_rate\",\n \"label\": \"mass accumulation rate\"\n },\n \"maximum latewood density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#maximum_latewood_density\",\n \"label\": \"maximum latewood density\"\n },\n \"maximum_latewood_density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#maximum_latewood_density\",\n \"label\": \"maximum latewood density\"\n },\n \"latewood density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#maximum_latewood_density\",\n \"label\": \"maximum latewood density\"\n },\n \"delta density\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#maximum_latewood_density\",\n \"label\": \"maximum latewood density\"\n },\n \"mxd\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#maximum_latewood_density\",\n \"label\": \"maximum latewood density\"\n },\n \"mg\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg\",\n \"label\": \"Mg\"\n },\n \"magnesium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg\",\n \"label\": \"Mg\"\n },\n \"mg/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mg_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"magnesium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"foram mg/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"multiproxy\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"multiple proxies\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"hybrid\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"hybrid grain size\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"hybrid-ice\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"hybrid-lake\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"pore ice d2h and d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti\",\n \"label\": \"Ti\"\n },\n \"ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"k\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#multiproxy\",\n \"label\": \"multiproxy\"\n },\n \"needs to be changed\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needs_to_be_changed\",\n \"label\": \"needs to be changed\"\n },\n \"needs_to_be_changed\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needs_to_be_changed\",\n \"label\": \"needs to be changed\"\n },\n \"pca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needs_to_be_changed\",\n \"label\": \"needs to be changed\"\n },\n \"needstobechanged\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"((( calcium carbonate ))) accumulation /// null\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"3-oh-fatty acids\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"age\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cas\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cia\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"coral\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"element\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"element ratio\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ice\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"isotope\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"isotope diffusion\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mg0\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"middle-wood cellulose\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mineral\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mineralogy\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"percent\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"sediment\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"tds\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"trace element / ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"traceelement\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"u cluster 2\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ostracod\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ostracod\",\n \"label\": \"ostracod\"\n },\n \"p-aqueous\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#P-aqueous\",\n \"label\": \"P-aqueous\"\n },\n \"paq\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#P-aqueous\",\n \"label\": \"P-aqueous\"\n },\n \"peat ash\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#peat_ash\",\n \"label\": \"peat ash\"\n },\n \"peat_ash\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#peat_ash\",\n \"label\": \"peat ash\"\n },\n \"ph\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#pH\",\n \"label\": \"pH\"\n },\n \"pollen\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#pollen\",\n \"label\": \"pollen\"\n },\n \"aquatic palynomorphs\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#pollen\",\n \"label\": \"pollen\"\n },\n \"radiolaria\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#radiolaria\",\n \"label\": \"radiolaria\"\n },\n \"radiolarian\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#radiolaria\",\n \"label\": \"radiolaria\"\n },\n \"rb\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Rb\",\n \"label\": \"Rb\"\n },\n \"rubidium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Rb\",\n \"label\": \"Rb\"\n },\n \"rb/sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Rb_Sr\",\n \"label\": \"Rb/Sr\"\n },\n \"rb_sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Rb_Sr\",\n \"label\": \"Rb/Sr\"\n },\n \"reflectance\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#reflectance\",\n \"label\": \"reflectance\"\n },\n \"ring width\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ring_width\",\n \"label\": \"ring width\"\n },\n \"ring_width\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ring_width\",\n \"label\": \"ring width\"\n },\n \"trw\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#ring_width\",\n \"label\": \"ring width\"\n },\n \"sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr\",\n \"label\": \"Sr\"\n },\n \"strontium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr\",\n \"label\": \"Sr\"\n },\n \"sr/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"sr_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"strontium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"ca/sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"coral sr/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"srca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"stratigraphy\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#stratigraphy\",\n \"label\": \"stratigraphy\"\n },\n \"minerogenic layers\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#stratigraphy\",\n \"label\": \"stratigraphy\"\n },\n \"plant detrital layers\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#stratigraphy\",\n \"label\": \"stratigraphy\"\n },\n \"sulfur\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#sulfur\",\n \"label\": \"sulfur\"\n },\n \"s\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#sulfur\",\n \"label\": \"sulfur\"\n },\n \"tex86\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#TEX86\",\n \"label\": \"TEX86\"\n },\n \"tetraether index of 86 carbon atoms\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#TEX86\",\n \"label\": \"TEX86\"\n },\n \"titanium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti\",\n \"label\": \"Ti\"\n },\n \"ti/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Al\",\n \"label\": \"Ti/Al\"\n },\n \"ti_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Al\",\n \"label\": \"Ti/Al\"\n },\n \"titanium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Al\",\n \"label\": \"Ti/Al\"\n },\n \"ti/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"ti_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"titanium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"ln(ti/ca)\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"toc\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#TOC\",\n \"label\": \"TOC\"\n },\n \"organic carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#TOC\",\n \"label\": \"TOC\"\n },\n \"total nitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#total_nitrogen\",\n \"label\": \"total nitrogen\"\n },\n \"total_nitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#total_nitrogen\",\n \"label\": \"total nitrogen\"\n },\n \"tn\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#total_nitrogen\",\n \"label\": \"total nitrogen\"\n },\n \"varve thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#varve_thickness\",\n \"label\": \"varve thickness\"\n },\n \"varve_thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#varve_thickness\",\n \"label\": \"varve thickness\"\n },\n \"varve\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#varve_thickness\",\n \"label\": \"varve thickness\"\n },\n \"varve property\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#varve_thickness\",\n \"label\": \"varve thickness\"\n },\n \"varves\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#varve_thickness\",\n \"label\": \"varve thickness\"\n }\n },\n \"PaleoProxyGeneral\": {\n \"biogenic\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#biogenic\",\n \"label\": \"biogenic\"\n },\n \"biological material\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#biogenic\",\n \"label\": \"biogenic\"\n },\n \"cryophysical\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#cryophysical\",\n \"label\": \"cryophysical\"\n },\n \"dendrophysical\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#dendrophysical\",\n \"label\": \"dendrophysical\"\n },\n \"elemental\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#elemental\",\n \"label\": \"elemental\"\n },\n \"faunal assemblage\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#faunal_assemblage\",\n \"label\": \"faunal assemblage\"\n },\n \"faunal_assemblage\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#faunal_assemblage\",\n \"label\": \"faunal assemblage\"\n },\n \"floral assemblage\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#floral_assemblage\",\n \"label\": \"floral assemblage\"\n },\n \"floral_assemblage\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#floral_assemblage\",\n \"label\": \"floral assemblage\"\n },\n \"isotopic\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#isotopic\",\n \"label\": \"isotopic\"\n },\n \"isotope\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#isotopic\",\n \"label\": \"isotopic\"\n },\n \"mineral\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#mineral\",\n \"label\": \"mineral\"\n },\n \"pyrogenic\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#pyrogenic\",\n \"label\": \"pyrogenic\"\n },\n \"fire history\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#pyrogenic\",\n \"label\": \"pyrogenic\"\n },\n \"sedimentology\": {\n \"id\": \"http://linked.earth/ontology/paleo_proxy#sedimentology\",\n \"label\": \"sedimentology\"\n }\n }\n },\n \"UNITS\": {\n \"PaleoUnit\": {\n \"atomic ratio\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#atomic_ratio\",\n \"label\": \"atomic ratio\"\n },\n \"atomic_ratio\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#atomic_ratio\",\n \"label\": \"atomic ratio\"\n },\n \"cgs\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cgs\",\n \"label\": \"cgs\"\n },\n \"dimensionless (cgs system)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cgs\",\n \"label\": \"cgs\"\n },\n \"cm\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm\",\n \"label\": \"cm\"\n },\n \"centimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm\",\n \"label\": \"cm\"\n },\n \"cmblf\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm\",\n \"label\": \"cm\"\n },\n \"cm/kyr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_kyr\",\n \"label\": \"cm/kyr\"\n },\n \"cm_kyr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_kyr\",\n \"label\": \"cm/kyr\"\n },\n \"centimeter per kiloyear\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_kyr\",\n \"label\": \"cm/kyr\"\n },\n \"cm/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_yr\",\n \"label\": \"cm/yr\"\n },\n \"cm_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_yr\",\n \"label\": \"cm/yr\"\n },\n \"centimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_yr\",\n \"label\": \"cm/yr\"\n },\n \"cm/a\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_yr\",\n \"label\": \"cm/yr\"\n },\n \"cm yr-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm_yr\",\n \"label\": \"cm/yr\"\n },\n \"cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm3\",\n \"label\": \"cm3\"\n },\n \"cubic centimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cm3\",\n \"label\": \"cm3\"\n },\n \"count\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count\",\n \"label\": \"count\"\n },\n \"number\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count\",\n \"label\": \"count\"\n },\n \"#\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count\",\n \"label\": \"count\"\n },\n \"counts\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count\",\n \"label\": \"count\"\n },\n \"dark_sum\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count\",\n \"label\": \"count\"\n },\n \"cts\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count\",\n \"label\": \"count\"\n },\n \"count/century\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_century\",\n \"label\": \"count/century\"\n },\n \"count_century\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_century\",\n \"label\": \"count/century\"\n },\n \"count per century\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_century\",\n \"label\": \"count/century\"\n },\n \"envents/100yrs\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_century\",\n \"label\": \"count/century\"\n },\n \"count/cm2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2\",\n \"label\": \"count/cm2\"\n },\n \"count_cm2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2\",\n \"label\": \"count/cm2\"\n },\n \"count per square centimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2\",\n \"label\": \"count/cm2\"\n },\n \"number/cm2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2\",\n \"label\": \"count/cm2\"\n },\n \"count/cm2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2_yr\",\n \"label\": \"count/cm2/yr\"\n },\n \"count_cm2_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2_yr\",\n \"label\": \"count/cm2/yr\"\n },\n \"count per square centimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2_yr\",\n \"label\": \"count/cm2/yr\"\n },\n \"grains>255 micron/cm2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2_yr\",\n \"label\": \"count/cm2/yr\"\n },\n \"no/cm2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm2_yr\",\n \"label\": \"count/cm2/yr\"\n },\n \"count/cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm3\",\n \"label\": \"count/cm3\"\n },\n \"count_cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm3\",\n \"label\": \"count/cm3\"\n },\n \"count per cubic centimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm3\",\n \"label\": \"count/cm3\"\n },\n \"bubbles/cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm3\",\n \"label\": \"count/cm3\"\n },\n \"#/cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_cm3\",\n \"label\": \"count/cm3\"\n },\n \"count/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_g\",\n \"label\": \"count/g\"\n },\n \"count_g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_g\",\n \"label\": \"count/g\"\n },\n \"count per gram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_g\",\n \"label\": \"count/g\"\n },\n \"grains/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_g\",\n \"label\": \"count/g\"\n },\n \"millions of valves/g dry sed\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_g\",\n \"label\": \"count/g\"\n },\n \"count/kyr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_kyr\",\n \"label\": \"count/kyr\"\n },\n \"count_kyr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_kyr\",\n \"label\": \"count/kyr\"\n },\n \"count per kiloyear\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_kyr\",\n \"label\": \"count/kyr\"\n },\n \"frequency/1000yrs\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_kyr\",\n \"label\": \"count/kyr\"\n },\n \"count/ml\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_mL\",\n \"label\": \"count/mL\"\n },\n \"count_ml\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_mL\",\n \"label\": \"count/mL\"\n },\n \"count per milliliter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_mL\",\n \"label\": \"count/mL\"\n },\n \"count/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_yr\",\n \"label\": \"count/yr\"\n },\n \"count_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_yr\",\n \"label\": \"count/yr\"\n },\n \"count per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_yr\",\n \"label\": \"count/yr\"\n },\n \"floods per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_yr\",\n \"label\": \"count/yr\"\n },\n \"floods per yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_yr\",\n \"label\": \"count/yr\"\n },\n \"floods/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#count_yr\",\n \"label\": \"count/yr\"\n },\n \"cps\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cps\",\n \"label\": \"cps\"\n },\n \"count per second\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#cps\",\n \"label\": \"cps\"\n },\n \"day\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#day\",\n \"label\": \"day\"\n },\n \"days\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#day\",\n \"label\": \"day\"\n },\n \"degc\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"degree celsius\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"gdd5\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"((( null ))) deg c /// degc\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"degrees\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"\\u00bac\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"deg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"gdd\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"kelvin\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degC\",\n \"label\": \"degC\"\n },\n \"degree\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degree\",\n \"label\": \"degree\"\n },\n \"decimal degrees\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#degree\",\n \"label\": \"degree\"\n },\n \"fraction\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#fraction\",\n \"label\": \"fraction\"\n },\n \"fractional abundance\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#fraction\",\n \"label\": \"fraction\"\n },\n \"fraction 0 to 1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#fraction\",\n \"label\": \"fraction\"\n },\n \"relative abundance\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#fraction\",\n \"label\": \"fraction\"\n },\n \"g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g\",\n \"label\": \"g\"\n },\n \"gram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g\",\n \"label\": \"g\"\n },\n \"g/cm/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm_yr\",\n \"label\": \"g/cm/yr\"\n },\n \"g_cm_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm_yr\",\n \"label\": \"g/cm/yr\"\n },\n \"gram per centimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm_yr\",\n \"label\": \"g/cm/yr\"\n },\n \"g/cm2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2\",\n \"label\": \"g/cm2\"\n },\n \"g_cm2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2\",\n \"label\": \"g/cm2\"\n },\n \"gram per square centimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2\",\n \"label\": \"g/cm2\"\n },\n \"gcm2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2\",\n \"label\": \"g/cm2\"\n },\n \"g cm-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2\",\n \"label\": \"g/cm2\"\n },\n \"g/cm2/kyr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_kyr\",\n \"label\": \"g/cm2/kyr\"\n },\n \"g_cm2_kyr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_kyr\",\n \"label\": \"g/cm2/kyr\"\n },\n \"gram per square centimeter per kiloyear\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_kyr\",\n \"label\": \"g/cm2/kyr\"\n },\n \"g/cm2/ka\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_kyr\",\n \"label\": \"g/cm2/kyr\"\n },\n \"g/cm2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"g_cm2_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"gram per square centimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"g/m^2/a\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"gcm-2yr-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"g.cm-2.a-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"g/cm^2/y\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"gcm-2a-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm2_yr\",\n \"label\": \"g/cm2/yr\"\n },\n \"g/cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm3\",\n \"label\": \"g/cm3\"\n },\n \"g_cm3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm3\",\n \"label\": \"g/cm3\"\n },\n \"gram per cubic centimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm3\",\n \"label\": \"g/cm3\"\n },\n \"g/cc\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm3\",\n \"label\": \"g/cm3\"\n },\n \"grams/cubic cm\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_cm3\",\n \"label\": \"g/cm3\"\n },\n \"g/l\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_L\",\n \"label\": \"g/L\"\n },\n \"g_l\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_L\",\n \"label\": \"g/L\"\n },\n \"gram per liter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_L\",\n \"label\": \"g/L\"\n },\n \"g/m2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2\",\n \"label\": \"g/m2\"\n },\n \"g_m2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2\",\n \"label\": \"g/m2\"\n },\n \"gram per square meter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2\",\n \"label\": \"g/m2\"\n },\n \"g/m\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2\",\n \"label\": \"g/m2\"\n },\n \"g/m2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2_yr\",\n \"label\": \"g/m2/yr\"\n },\n \"g_m2_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2_yr\",\n \"label\": \"g/m2/yr\"\n },\n \"gram per square meter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2_yr\",\n \"label\": \"g/m2/yr\"\n },\n \"gm2yr-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#g_m2_yr\",\n \"label\": \"g/m2/yr\"\n },\n \"grayscale\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#grayscale\",\n \"label\": \"grayscale\"\n },\n \"kg/m2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#kg_m2_yr\",\n \"label\": \"kg/m2/yr\"\n },\n \"kg_m2_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#kg_m2_yr\",\n \"label\": \"kg/m2/yr\"\n },\n \"kilogram per square meter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#kg_m2_yr\",\n \"label\": \"kg/m2/yr\"\n },\n \"kg/m3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#kg_m3\",\n \"label\": \"kg/m3\"\n },\n \"kg_m3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#kg_m3\",\n \"label\": \"kg/m3\"\n },\n \"kilogram per square meter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#kg_m3\",\n \"label\": \"kg/m3\"\n },\n \"km2\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#km2\",\n \"label\": \"km2\"\n },\n \"square kilometer\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#km2\",\n \"label\": \"km2\"\n },\n \"km3\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#km3\",\n \"label\": \"km3\"\n },\n \"cubic kilometer\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#km3\",\n \"label\": \"km3\"\n },\n \"log(mg/l)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#log_mg_L_\",\n \"label\": \"log(mg/L)\"\n },\n \"log_mg_l_\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#log_mg_L_\",\n \"label\": \"log(mg/L)\"\n },\n \"log mg/l\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#log_mg_L_\",\n \"label\": \"log(mg/L)\"\n },\n \"m\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m\",\n \"label\": \"m\"\n },\n \"meter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m\",\n \"label\": \"m\"\n },\n \"m3/kg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m3_kg\",\n \"label\": \"m3/kg\"\n },\n \"m3_kg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m3_kg\",\n \"label\": \"m3/kg\"\n },\n \"cubic meter per kilogram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m3_kg\",\n \"label\": \"m3/kg\"\n },\n \"m^3 kg^-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m3_kg\",\n \"label\": \"m3/kg\"\n },\n \"m3kg-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m3_kg\",\n \"label\": \"m3/kg\"\n },\n \"m3kg1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#m3_kg\",\n \"label\": \"m3/kg\"\n },\n \"mg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg\",\n \"label\": \"mg\"\n },\n \"milligram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg\",\n \"label\": \"mg\"\n },\n \"mg/cm2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_cm2_yr\",\n \"label\": \"mg/cm2/yr\"\n },\n \"mg_cm2_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_cm2_yr\",\n \"label\": \"mg/cm2/yr\"\n },\n \"milligram per square centimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_cm2_yr\",\n \"label\": \"mg/cm2/yr\"\n },\n \"mg/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_g\",\n \"label\": \"mg/g\"\n },\n \"mg_g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_g\",\n \"label\": \"mg/g\"\n },\n \"milligram per gram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_g\",\n \"label\": \"mg/g\"\n },\n \"mg g-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_g\",\n \"label\": \"mg/g\"\n },\n \"mill/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_g\",\n \"label\": \"mg/g\"\n },\n \"mg/kg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_kg\",\n \"label\": \"mg/kg\"\n },\n \"mg_kg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_kg\",\n \"label\": \"mg/kg\"\n },\n \"milligram per kilogram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_kg\",\n \"label\": \"mg/kg\"\n },\n \"mg/l\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_L\",\n \"label\": \"mg/L\"\n },\n \"mg_l\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_L\",\n \"label\": \"mg/L\"\n },\n \"milligram per liter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mg_L\",\n \"label\": \"mg/L\"\n },\n \"mm\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm\",\n \"label\": \"mm\"\n },\n \"millimeter\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm\",\n \"label\": \"mm\"\n },\n \"depth_sample\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm\",\n \"label\": \"mm\"\n },\n \"mm/day\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_day\",\n \"label\": \"mm/day\"\n },\n \"mm_day\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_day\",\n \"label\": \"mm/day\"\n },\n \"millimeter per day\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_day\",\n \"label\": \"mm/day\"\n },\n \"mm/season\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_season\",\n \"label\": \"mm/season\"\n },\n \"mm_season\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_season\",\n \"label\": \"mm/season\"\n },\n \"mm/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_yr\",\n \"label\": \"mm/yr\"\n },\n \"mm_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_yr\",\n \"label\": \"mm/yr\"\n },\n \"millimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_yr\",\n \"label\": \"mm/yr\"\n },\n \"mm/a\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_yr\",\n \"label\": \"mm/yr\"\n },\n \"((( null ))) mm /// mm/a\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mm_yr\",\n \"label\": \"mm/yr\"\n },\n \"mmol/mol\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mmol_mol\",\n \"label\": \"mmol/mol\"\n },\n \"mmol_mol\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mmol_mol\",\n \"label\": \"mmol/mol\"\n },\n \"millimole per mole\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#mmol_mol\",\n \"label\": \"mmol/mol\"\n },\n \"months/year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#months_year\",\n \"label\": \"months/year\"\n },\n \"months_year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#months_year\",\n \"label\": \"months/year\"\n },\n \"needstobechanged\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"1s\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"a\\u20ac\\u00b0\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"floods per 30 years\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"floods per 30 yrs (200 yr running average)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hu\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"layers/200yrs\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"[\\u00b1]\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"0.5s\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"1 sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"10-5\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"10^-9 am2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"1sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"a\\u0080\\u00b0\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"afae\\u2019a\\u2020a\\u20ac\\u2122afa\\u00a2a\\u00a2a\\u20acsa\\u00aca\\u2026a\\u00a1afae\\u2019a\\u00a2a\\u201a\\u00aca\\u00a1afa\\u20acsa\\u201aaug/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"unknown\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mcm\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mwe\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"1041 m3/kg\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"am2kg-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"area\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"aug/cm2/ka\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"gomcm2yr-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"sum\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"total\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cm2yr-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"square mm/cubic cm\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ng\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng\",\n \"label\": \"ng\"\n },\n \"nanogram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng\",\n \"label\": \"ng\"\n },\n \"ng/sample\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng\",\n \"label\": \"ng\"\n },\n \"ng/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng_g\",\n \"label\": \"ng/g\"\n },\n \"ng_g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng_g\",\n \"label\": \"ng/g\"\n },\n \"nanogram per gram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng_g\",\n \"label\": \"ng/g\"\n },\n \"ng/g sed\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ng_g\",\n \"label\": \"ng/g\"\n },\n \"peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#peak_area\",\n \"label\": \"peak area\"\n },\n \"peak_area\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#peak_area\",\n \"label\": \"peak area\"\n },\n \"peak area integral\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#peak_area\",\n \"label\": \"peak area\"\n },\n \"pa/kcps\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#peak_area\",\n \"label\": \"peak area\"\n },\n \"percent\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"%\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"((( null ))) % /// percent\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"wt %\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"% abs\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"mol%\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"mole per mole * 100\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"percentbyweight\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"precent\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#percent\",\n \"label\": \"percent\"\n },\n \"permil\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"((( null ))) per mil /// permil\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil vs pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"((( null ))) per mil /// unitless\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil (vpdb)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil vs vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil (vsmow)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil (pdb)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vs pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil (pdb)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil (smow)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil smow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vsmow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil (vpdb)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vs vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vpdb 1sig\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"\\u2030 pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil vsmow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"((( null ))) permil /// unitless\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"+/- permil pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"+/- permil smow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"\\u00b1 permil\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"per mil vsmow 1sig\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"((( null ))) permil /// per mil\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"\\u2030 smow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"1000*counts/counts\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"pemil\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil (pbd)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil (smow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"not pdb!)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil v pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vmow\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permil vsmow 1sig\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"permit\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"perml\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#permil\",\n \"label\": \"permil\"\n },\n \"ph\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#pH\",\n \"label\": \"pH\"\n },\n \"acidity\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#pH\",\n \"label\": \"pH\"\n },\n \"ppb\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ppb\",\n \"label\": \"ppb\"\n },\n \"parts per billion\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ppb\",\n \"label\": \"ppb\"\n },\n \"ppm\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ppm\",\n \"label\": \"ppm\"\n },\n \"parts per million\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ppm\",\n \"label\": \"ppm\"\n },\n \"practical salinity unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#practical_salinity_unit\",\n \"label\": \"practical salinity unit\"\n },\n \"practical_salinity_unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#practical_salinity_unit\",\n \"label\": \"practical salinity unit\"\n },\n \"psu\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#practical_salinity_unit\",\n \"label\": \"practical salinity unit\"\n },\n \"ratio\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"relative unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"ratio cps\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"g/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"(mg/kg)/(mg/kg)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"cps/cps\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"grams/dry weight\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"sediment 130um\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"((( null ))) ratio /// unitless\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"mm/m\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"mol_mol\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"mol/mol\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"r660_670\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ratio\",\n \"label\": \"ratio\"\n },\n \"si\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#SI\",\n \"label\": \"SI\"\n },\n \"dimensionless (si system)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#SI\",\n \"label\": \"SI\"\n },\n \"10^-6si\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#SI\",\n \"label\": \"SI\"\n },\n \"dimensionless (si)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#SI\",\n \"label\": \"SI\"\n },\n \"si 10^-5\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#SI\",\n \"label\": \"SI\"\n },\n \"ug/cm2/yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_cm2_yr\",\n \"label\": \"ug/cm2/yr\"\n },\n \"ug_cm2_yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_cm2_yr\",\n \"label\": \"ug/cm2/yr\"\n },\n \"microgram per square centimeter per year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_cm2_yr\",\n \"label\": \"ug/cm2/yr\"\n },\n \"ugcm-2yr-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_cm2_yr\",\n \"label\": \"ug/cm2/yr\"\n },\n \"ug/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"ug_g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"microgram per gram\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"ug/g dry sediment\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"ug/g dry sed\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"ug g-1 dw\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"microg_g\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"[ug/g]\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#ug_g\",\n \"label\": \"ug/g\"\n },\n \"um\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#um\",\n \"label\": \"um\"\n },\n \"micrometer\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#um\",\n \"label\": \"um\"\n },\n \"umol/mol\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#umol_mol\",\n \"label\": \"umol/mol\"\n },\n \"umol_mol\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#umol_mol\",\n \"label\": \"umol/mol\"\n },\n \"micromole per mole\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#umol_mol\",\n \"label\": \"umol/mol\"\n },\n \"unitless\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"dimensionless\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"unitless index\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"index\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"type\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"absorbance units\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"ftirs absorbance units\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"name\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"uk37\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"unitless (anomalies)\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"pc\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"standardized\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"0-10\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#unitless\",\n \"label\": \"unitless\"\n },\n \"yr 14c bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"yr_14c_bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"radiocarbon year before present\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"radiocarbon years bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"14c yr bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"yr 14c yr bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"bp14c\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"c14yr bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_14C_BP\",\n \"label\": \"yr 14C BP\"\n },\n \"yr ad\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"yr_ad\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"year common era\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"ce\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"ad\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"year ce\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"ad/bc\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"cal yr ad\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"year a.d.\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"year c.e.\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"yr ce\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"yrad/bc\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_AD\",\n \"label\": \"yr AD\"\n },\n \"yr b2k\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_b2k\",\n \"label\": \"yr b2k\"\n },\n \"yr_b2k\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_b2k\",\n \"label\": \"yr b2k\"\n },\n \"b2000\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_b2k\",\n \"label\": \"yr b2k\"\n },\n \"cal. bp2000\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_b2k\",\n \"label\": \"yr b2k\"\n },\n \"years before 2k\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_b2k\",\n \"label\": \"yr b2k\"\n },\n \"yr bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"yr_bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"calendar year before present\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal years bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal year bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal yr bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"year bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"years bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"yr b.p.\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"yrs bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal yr b.p.\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"age=1950-year\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal age bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"cal yrs bp\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"yr bo\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"yr p\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"calibrated\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_BP\",\n \"label\": \"yr BP\"\n },\n \"yr ka\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_ka\",\n \"label\": \"yr ka\"\n },\n \"yr_ka\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_ka\",\n \"label\": \"yr ka\"\n },\n \"calendar kiloyear before present\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_ka\",\n \"label\": \"yr ka\"\n },\n \"ka\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#yr_ka\",\n \"label\": \"yr ka\"\n },\n \"z score\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n },\n \"z_score\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n },\n \"standard deviation unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n },\n \"zscore\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n },\n \"sd units\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n },\n \"std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n },\n \"sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_units#z_score\",\n \"label\": \"z score\"\n }\n }\n },\n \"VARIABLES\": {\n \"PaleoVariable\": {\n \"acl\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"average chain length\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"acl (27-33)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"acl25-35\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"acl27-31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"aclc22-30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"averagechainlength20to30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"averagechainlength20to32\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ACL\",\n \"label\": \"ACL\"\n },\n \"aet/pet\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#AET_PET\",\n \"label\": \"AET/PET\"\n },\n \"aet_pet\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#AET_PET\",\n \"label\": \"AET/PET\"\n },\n \"arm/irm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ARM_IRM\",\n \"label\": \"ARM/IRM\"\n },\n \"arm_irm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ARM_IRM\",\n \"label\": \"ARM/IRM\"\n },\n \"anhysteretic remanent magnetization/isothermal remanent magnetization\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ARM_IRM\",\n \"label\": \"ARM/IRM\"\n },\n \"arstan\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ARSTAN\",\n \"label\": \"ARSTAN\"\n },\n \"arstan chronology method\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ARSTAN\",\n \"label\": \"ARSTAN\"\n },\n \"ars\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ARSTAN\",\n \"label\": \"ARSTAN\"\n },\n \"al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Al\",\n \"label\": \"Al\"\n },\n \"aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Al\",\n \"label\": \"Al\"\n },\n \"al peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Al\",\n \"label\": \"Al\"\n },\n \"alprop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Al\",\n \"label\": \"Al\"\n },\n \"al2o3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Al2O3\",\n \"label\": \"Al2O3\"\n },\n \"aluminum oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Al2O3\",\n \"label\": \"Al2O3\"\n },\n \"as\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#As\",\n \"label\": \"As\"\n },\n \"arsenic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#As\",\n \"label\": \"As\"\n },\n \"ppm as\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#As\",\n \"label\": \"As\"\n },\n \"bit\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BIT\",\n \"label\": \"BIT\"\n },\n \"branched and isoprenoid tetraether index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BIT\",\n \"label\": \"BIT\"\n },\n \"bitindex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BIT\",\n \"label\": \"BIT\"\n },\n \"bitindex-3pt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BIT\",\n \"label\": \"BIT\"\n },\n \"bsi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BSi\",\n \"label\": \"BSi\"\n },\n \"biogenic silica\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BSi\",\n \"label\": \"BSi\"\n },\n \"biosi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BSi\",\n \"label\": \"BSi\"\n },\n \"bsi_3pt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BSi\",\n \"label\": \"BSi\"\n },\n \"bsi_raw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BSi\",\n \"label\": \"BSi\"\n },\n \"inferred bsi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#BSi\",\n \"label\": \"BSi\"\n },\n \"ba\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba\",\n \"label\": \"Ba\"\n },\n \"barium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba\",\n \"label\": \"Ba\"\n },\n \"ba (ppm)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba\",\n \"label\": \"Ba\"\n },\n \"ba peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba\",\n \"label\": \"Ba\"\n },\n \"ppm ba\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba\",\n \"label\": \"Ba\"\n },\n \"ba/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"ba_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"barium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"ppmba/%al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Al\",\n \"label\": \"Ba/Al\"\n },\n \"ba/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"ba_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"barium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"baca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ba_Ca\",\n \"label\": \"Ba/Ca\"\n },\n \"be\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Be\",\n \"label\": \"Be\"\n },\n \"beryllium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Be\",\n \"label\": \"Be\"\n },\n \"ppm be\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Be\",\n \"label\": \"Be\"\n },\n \"br\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Br\",\n \"label\": \"Br\"\n },\n \"bromine\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Br\",\n \"label\": \"Br\"\n },\n \"c20n-alkenoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20 sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c20n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\",\n \"label\": \"C20n-alkenoicAcid\"\n },\n \"c21n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C21n-alkanoicAcid\",\n \"label\": \"C21n-alkanoicAcid\"\n },\n \"c21 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C21n-alkanoicAcid\",\n \"label\": \"C21n-alkanoicAcid\"\n },\n \"c21 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C21n-alkanoicAcid\",\n \"label\": \"C21n-alkanoicAcid\"\n },\n \"c21 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C21n-alkanoicAcid\",\n \"label\": \"C21n-alkanoicAcid\"\n },\n \"c21fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C21n-alkanoicAcid\",\n \"label\": \"C21n-alkanoicAcid\"\n },\n \"c22n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22 sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c22n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\",\n \"label\": \"C22n-alkanoicAcid\"\n },\n \"c23n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c23 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c23 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c23 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c23 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c23c31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c23fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\",\n \"label\": \"C23n-alkanoicAcid\"\n },\n \"c24n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24 sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c24n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"n c24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"nc24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\",\n \"label\": \"C24n-alkanoicAcid\"\n },\n \"c25_2n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25_2n-alkanoicAcid\",\n \"label\": \"C25_2n-alkanoicAcid\"\n },\n \"c25:2 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25_2n-alkanoicAcid\",\n \"label\": \"C25_2n-alkanoicAcid\"\n },\n \"c25n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\",\n \"label\": \"C25n-alkanoicAcid\"\n },\n \"c25 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\",\n \"label\": \"C25n-alkanoicAcid\"\n },\n \"c25 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\",\n \"label\": \"C25n-alkanoicAcid\"\n },\n \"c25 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\",\n \"label\": \"C25n-alkanoicAcid\"\n },\n \"c25 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\",\n \"label\": \"C25n-alkanoicAcid\"\n },\n \"c25fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\",\n \"label\": \"C25n-alkanoicAcid\"\n },\n \"c26n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26 sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26oh0x2f0x28c26oh0x2bc290x29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c26n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"n c26\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"nc26\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\",\n \"label\": \"C26n-alkanoicAcid\"\n },\n \"c27n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\",\n \"label\": \"C27n-alkanoicAcid\"\n },\n \"c27 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\",\n \"label\": \"C27n-alkanoicAcid\"\n },\n \"c27 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\",\n \"label\": \"C27n-alkanoicAcid\"\n },\n \"c27 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\",\n \"label\": \"C27n-alkanoicAcid\"\n },\n \"c27 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\",\n \"label\": \"C27n-alkanoicAcid\"\n },\n \"c27fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\",\n \"label\": \"C27n-alkanoicAcid\"\n },\n \"c28n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28 sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c28n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"n c28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"n-c28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"nc28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"nc28_err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"nc28_rep\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\",\n \"label\": \"C28n-alkanoicAcid\"\n },\n \"c29n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\",\n \"label\": \"C29n-alkanoicAcid\"\n },\n \"c29 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\",\n \"label\": \"C29n-alkanoicAcid\"\n },\n \"c29 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\",\n \"label\": \"C29n-alkanoicAcid\"\n },\n \"c29 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\",\n \"label\": \"C29n-alkanoicAcid\"\n },\n \"c29 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\",\n \"label\": \"C29n-alkanoicAcid\"\n },\n \"c29fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\",\n \"label\": \"C29n-alkanoicAcid\"\n },\n \"c30n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30 fame concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30 sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30 n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c30n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"nc30_rep\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\",\n \"label\": \"C30n-alkanoicAcid\"\n },\n \"c31n-alkanoicacid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C31n-alkanoicAcid\",\n \"label\": \"C31n-alkanoicAcid\"\n },\n \"c31 n-alkanoic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C31n-alkanoicAcid\",\n \"label\": \"C31n-alkanoicAcid\"\n },\n \"c31 concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C31n-alkanoicAcid\",\n \"label\": \"C31n-alkanoicAcid\"\n },\n \"c31fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C31n-alkanoicAcid\",\n \"label\": \"C31n-alkanoicAcid\"\n },\n \"c32fameconcentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C31n-alkanoicAcid\",\n \"label\": \"C31n-alkanoicAcid\"\n },\n \"c37alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37Alkenone\",\n \"label\": \"C37Alkenone\"\n },\n \"c37 alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37Alkenone\",\n \"label\": \"C37Alkenone\"\n },\n \"c37.concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37Alkenone\",\n \"label\": \"C37Alkenone\"\n },\n \"totalc37\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37Alkenone\",\n \"label\": \"C37Alkenone\"\n },\n \"c37:2alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_2Alkenone\",\n \"label\": \"C37:2Alkenone\"\n },\n \"c37_2alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_2Alkenone\",\n \"label\": \"C37:2Alkenone\"\n },\n \"c37:2 alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_2Alkenone\",\n \"label\": \"C37:2Alkenone\"\n },\n \"c37:2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_2Alkenone\",\n \"label\": \"C37:2Alkenone\"\n },\n \"c37:3aalkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3aAlkenone\",\n \"label\": \"C37:3aAlkenone\"\n },\n \"c37_3aalkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3aAlkenone\",\n \"label\": \"C37:3aAlkenone\"\n },\n \"c37:3 alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3bAlkenone\",\n \"label\": \"C37:3bAlkenone\"\n },\n \"c37:3a\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3aAlkenone\",\n \"label\": \"C37:3aAlkenone\"\n },\n \"c37:3balkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3bAlkenone\",\n \"label\": \"C37:3bAlkenone\"\n },\n \"c37_3balkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3bAlkenone\",\n \"label\": \"C37:3bAlkenone\"\n },\n \"c37:3b\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_3bAlkenone\",\n \"label\": \"C37:3bAlkenone\"\n },\n \"c37:4alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_4Alkenone\",\n \"label\": \"C37:4Alkenone\"\n },\n \"c37_4alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_4Alkenone\",\n \"label\": \"C37:4Alkenone\"\n },\n \"c37:4 alkenone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_4Alkenone\",\n \"label\": \"C37:4Alkenone\"\n },\n \"c34:4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_4Alkenone\",\n \"label\": \"C37:4Alkenone\"\n },\n \"c370x3a4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C37_4Alkenone\",\n \"label\": \"C37:4Alkenone\"\n },\n \"cbt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CBT\",\n \"label\": \"CBT\"\n },\n \"cyclization index of branched tetraethers\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CBT\",\n \"label\": \"CBT\"\n },\n \"cca1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CCA1\",\n \"label\": \"CCA1\"\n },\n \"multivariate eigenvector-based variable\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CCA2\",\n \"label\": \"CCA2\"\n },\n \"caaxis1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CCA1\",\n \"label\": \"CCA1\"\n },\n \"cca2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CCA2\",\n \"label\": \"CCA2\"\n },\n \"caaxis2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CCA2\",\n \"label\": \"CCA2\"\n },\n \"cpi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"carbon preference index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"cpi (27-33)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"cpi22-30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"cpi_25-33\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"carbonpreferenceindex20to30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"carbonpreferenceindex20to32\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CPI\",\n \"label\": \"CPI\"\n },\n \"c/n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C_N\",\n \"label\": \"C/N\"\n },\n \"c_n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C_N\",\n \"label\": \"C/N\"\n },\n \"carbon/nitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C_N\",\n \"label\": \"C/N\"\n },\n \"c/n organic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C_N\",\n \"label\": \"C/N\"\n },\n \"molarcn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#C_N\",\n \"label\": \"C/N\"\n },\n \"ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"% ca-detr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"% ca-ex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"ca peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"caprop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"ca__\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca\",\n \"label\": \"Ca\"\n },\n \"caco3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CaCO3\",\n \"label\": \"CaCO3\"\n },\n \"calcium carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CaCO3\",\n \"label\": \"CaCO3\"\n },\n \"% caco3-ex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CaCO3\",\n \"label\": \"CaCO3\"\n },\n \"caco3-ic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CaCO3\",\n \"label\": \"CaCO3\"\n },\n \"cao\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CaO\",\n \"label\": \"CaO\"\n },\n \"calcium oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#CaO\",\n \"label\": \"CaO\"\n },\n \"ca/k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_K\",\n \"label\": \"Ca/K\"\n },\n \"ca_k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_K\",\n \"label\": \"Ca/K\"\n },\n \"calcium/potassium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_K\",\n \"label\": \"Ca/K\"\n },\n \"ca/sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Sr\",\n \"label\": \"Ca/Sr\"\n },\n \"ca_sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Sr\",\n \"label\": \"Ca/Sr\"\n },\n \"calcium/strontium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Sr\",\n \"label\": \"Ca/Sr\"\n },\n \"ca/ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"ca_ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"calcium/titanium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"ca/ti-z\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ca_Ti\",\n \"label\": \"Ca/Ti\"\n },\n \"ti/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"cd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd\",\n \"label\": \"Cd\"\n },\n \"cadmium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd\",\n \"label\": \"Cd\"\n },\n \"cd mar (ug/cm2/ky)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd\",\n \"label\": \"Cd\"\n },\n \"ppm cd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd\",\n \"label\": \"Cd\"\n },\n \"cd/mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd_Mn\",\n \"label\": \"Cd/Mn\"\n },\n \"cd_mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd_Mn\",\n \"label\": \"Cd/Mn\"\n },\n \"ppm cd/% mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cd_Mn\",\n \"label\": \"Cd/Mn\"\n },\n \"cl\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cl\",\n \"label\": \"Cl\"\n },\n \"chlorine\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cl\",\n \"label\": \"Cl\"\n },\n \"cl_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cl\",\n \"label\": \"Cl\"\n },\n \"co\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Co\",\n \"label\": \"Co\"\n },\n \"cobalt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Co\",\n \"label\": \"Co\"\n },\n \"ppm co\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Co\",\n \"label\": \"Co\"\n },\n \"cr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cr\",\n \"label\": \"Cr\"\n },\n \"chromium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cr\",\n \"label\": \"Cr\"\n },\n \"ppm cr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cr\",\n \"label\": \"Cr\"\n },\n \"cu\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cu\",\n \"label\": \"Cu\"\n },\n \"copper\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cu\",\n \"label\": \"Cu\"\n },\n \"ppm cu\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Cu\",\n \"label\": \"Cu\"\n },\n \"dwhi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#DWHI\",\n \"label\": \"DWHI\"\n },\n \"ecosystem index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#DWHI\",\n \"label\": \"DWHI\"\n },\n \"dd2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Dd2H\",\n \"label\": \"Dd2H\"\n },\n \"\\u03b4\\u03b4dterr-aq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Dd2H\",\n \"label\": \"Dd2H\"\n },\n \"eps\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#EPS\",\n \"label\": \"EPS\"\n },\n \"expressed population signal\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#EPS\",\n \"label\": \"EPS\"\n },\n \"elninoevent\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ElNinoEvent\",\n \"label\": \"ElNinoEvent\"\n },\n \"el ni\\u00f1o event\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ElNinoEvent\",\n \"label\": \"ElNinoEvent\"\n },\n \"enso_events\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ElNinoEvent\",\n \"label\": \"ElNinoEvent\"\n },\n \"eu/zr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Eu_Zr\",\n \"label\": \"Eu/Zr\"\n },\n \"eu_zr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Eu_Zr\",\n \"label\": \"Eu/Zr\"\n },\n \"eu/zr-z\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Eu_Zr\",\n \"label\": \"Eu/Zr\"\n },\n \"fe\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe\",\n \"label\": \"Fe\"\n },\n \"iron\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe\",\n \"label\": \"Fe\"\n },\n \"fe peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe\",\n \"label\": \"Fe\"\n },\n \"feprop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe\",\n \"label\": \"Fe\"\n },\n \"fe2o3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe2O3\",\n \"label\": \"Fe2O3\"\n },\n \"iron(iii) oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe2O3\",\n \"label\": \"Fe2O3\"\n },\n \"fe/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Al\",\n \"label\": \"Fe/Al\"\n },\n \"fe_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Al\",\n \"label\": \"Fe/Al\"\n },\n \"iron/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Al\",\n \"label\": \"Fe/Al\"\n },\n \"fe/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Ca\",\n \"label\": \"Fe/Ca\"\n },\n \"fe_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Ca\",\n \"label\": \"Fe/Ca\"\n },\n \"iron/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Ca\",\n \"label\": \"Fe/Ca\"\n },\n \"ln(fe/ca)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Ca\",\n \"label\": \"Fe/Ca\"\n },\n \"fe/k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_K\",\n \"label\": \"Fe/K\"\n },\n \"fe_k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_K\",\n \"label\": \"Fe/K\"\n },\n \"iron/potassium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_K\",\n \"label\": \"Fe/K\"\n },\n \"fe/mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Mn\",\n \"label\": \"Fe/Mn\"\n },\n \"fe_mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Mn\",\n \"label\": \"Fe/Mn\"\n },\n \"iron/manganese\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Fe_Mn\",\n \"label\": \"Fe/Mn\"\n },\n \"gdgt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#GDGT\",\n \"label\": \"GDGT\"\n },\n \"glycerol dialkyl glycerol tetraether\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#GDGT\",\n \"label\": \"GDGT\"\n },\n \"brgdgt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#GDGT\",\n \"label\": \"GDGT\"\n },\n \"gdgt-0/cren\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#GDGT-0_Cren\",\n \"label\": \"GDGT-0/Cren\"\n },\n \"gdgt-0_cren\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#GDGT-0_Cren\",\n \"label\": \"GDGT-0/Cren\"\n },\n \"ip25\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#IP25\",\n \"label\": \"IP25\"\n },\n \"ice proxy with 25 carbon atoms\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#IP25\",\n \"label\": \"IP25\"\n },\n \"ip25_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#IP25\",\n \"label\": \"IP25\"\n },\n \"irm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#IRM\",\n \"label\": \"IRM\"\n },\n \"isothermal remanent magnetization\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#IRM\",\n \"label\": \"IRM\"\n },\n \"irm_softflux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#IRM\",\n \"label\": \"IRM\"\n },\n \"itcz\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ITCZ\",\n \"label\": \"ITCZ\"\n },\n \"intertropical convergence zone index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ITCZ\",\n \"label\": \"ITCZ\"\n },\n \"itcz_index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ITCZ\",\n \"label\": \"ITCZ\"\n },\n \"julianday\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#JulianDay\",\n \"label\": \"JulianDay\"\n },\n \"k2o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K2O\",\n \"label\": \"K2O\"\n },\n \"potassium oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K2O\",\n \"label\": \"K2O\"\n },\n \"k37\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K37\",\n \"label\": \"K37\"\n },\n \"k37s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K37\",\n \"label\": \"K37\"\n },\n \"k/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K_Al\",\n \"label\": \"K/Al\"\n },\n \"k_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K_Al\",\n \"label\": \"K/Al\"\n },\n \"potassium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K_Al\",\n \"label\": \"K/Al\"\n },\n \"ln(k/al)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#K_Al\",\n \"label\": \"K/Al\"\n },\n \"ldi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#LDI\",\n \"label\": \"LDI\"\n },\n \"long-chain diol index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#LDI\",\n \"label\": \"LDI\"\n },\n \"loi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#LOI\",\n \"label\": \"LOI\"\n },\n \"loss on ignition\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#LOI\",\n \"label\": \"LOI\"\n },\n \"la\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#La\",\n \"label\": \"La\"\n },\n \"lanthanum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#La\",\n \"label\": \"La\"\n },\n \"ppm la\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#La\",\n \"label\": \"La\"\n },\n \"mar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"mass per area per time unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"bulk mar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"cordmar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"mo mar (ug/cm2/ky)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"bulkmar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"massacum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MAR\",\n \"label\": \"MAR\"\n },\n \"mbt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MBT\",\n \"label\": \"MBT\"\n },\n \"methylation index of branched tetraethers\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MBT\",\n \"label\": \"MBT\"\n },\n \"mbt\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MBT\",\n \"label\": \"MBT\"\n },\n \"mbt\\u20195me\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MBT\",\n \"label\": \"MBT\"\n },\n \"ms\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MS\",\n \"label\": \"MS\"\n },\n \"magnetic susceptibility\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MS\",\n \"label\": \"MS\"\n },\n \"avg_ms_drs1_2a_3_2b_4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MS\",\n \"label\": \"MS\"\n },\n \"avg_ms\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MS\",\n \"label\": \"MS\"\n },\n \"massmagsus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MS\",\n \"label\": \"MS\"\n },\n \"si\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si\",\n \"label\": \"Si\"\n },\n \"mxd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MXD\",\n \"label\": \"MXD\"\n },\n \"latewood density\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MXD\",\n \"label\": \"MXD\"\n },\n \"mg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"magnesium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"% mg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"%mg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"mgdetrended\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"mg__\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"detrendmg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg\",\n \"label\": \"Mg\"\n },\n \"mgo\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MgO\",\n \"label\": \"MgO\"\n },\n \"magnesium oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MgO\",\n \"label\": \"MgO\"\n },\n \"mg/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mg_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"magnesium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"cdr3_mgca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mg/ca raw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"ndutertreimg/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_bulloides\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_crassaformis\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_dutertrei\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_inflata\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_obliquiloculata\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_pachyderma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_pachyderma_d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_ruber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_ruber_lato\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_ruber_pink\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_ruber_stricto\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_sacculifer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mgca_truncatulinoides\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"planktic.mgca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mg_Ca\",\n \"label\": \"Mg/Ca\"\n },\n \"mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn\",\n \"label\": \"Mn\"\n },\n \"manganese\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn\",\n \"label\": \"Mn\"\n },\n \"% mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn\",\n \"label\": \"Mn\"\n },\n \"ppm mn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn\",\n \"label\": \"Mn\"\n },\n \"mno\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MnO\",\n \"label\": \"MnO\"\n },\n \"manganese oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#MnO\",\n \"label\": \"MnO\"\n },\n \"mn/fe\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn_Fe\",\n \"label\": \"Mn/Fe\"\n },\n \"mn_fe\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn_Fe\",\n \"label\": \"Mn/Fe\"\n },\n \"manganese/iron\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn_Fe\",\n \"label\": \"Mn/Fe\"\n },\n \"mn/mo\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn_Mo\",\n \"label\": \"Mn/Mo\"\n },\n \"mn_mo\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mn_Mo\",\n \"label\": \"Mn/Mo\"\n },\n \"mo\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mo\",\n \"label\": \"Mo\"\n },\n \"molybdenum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mo\",\n \"label\": \"Mo\"\n },\n \"mo_xs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mo\",\n \"label\": \"Mo\"\n },\n \"ppm mo\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Mo\",\n \"label\": \"Mo\"\n },\n \"no3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#NO3\",\n \"label\": \"NO3\"\n },\n \"nitrate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#nitrate\",\n \"label\": \"nitrate\"\n },\n \"no3_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#NO3\",\n \"label\": \"NO3\"\n },\n \"n/c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#N_C\",\n \"label\": \"N/C\"\n },\n \"n_c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#N_C\",\n \"label\": \"N/C\"\n },\n \"nc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#N_C\",\n \"label\": \"N/C\"\n },\n \"na2o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Na2O\",\n \"label\": \"Na2O\"\n },\n \"sodium oxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Na2O\",\n \"label\": \"Na2O\"\n },\n \"ni\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ni\",\n \"label\": \"Ni\"\n },\n \"nickel\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ni\",\n \"label\": \"Ni\"\n },\n \"ppm ni\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ni\",\n \"label\": \"Ni\"\n },\n \"pc1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC1\",\n \"label\": \"PC1\"\n },\n \"empirical orthogonal function\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC3\",\n \"label\": \"PC3\"\n },\n \"p1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC1\",\n \"label\": \"PC1\"\n },\n \"pc1gs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC1\",\n \"label\": \"PC1\"\n },\n \"pca1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC1\",\n \"label\": \"PC1\"\n },\n \"droughtindex (pc1)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC1\",\n \"label\": \"PC1\"\n },\n \"pc2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC2\",\n \"label\": \"PC2\"\n },\n \"pca2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC2\",\n \"label\": \"PC2\"\n },\n \"pc3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#PC3\",\n \"label\": \"PC3\"\n },\n \"paq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Paq\",\n \"label\": \"Paq\"\n },\n \"p-aqueous\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Paq\",\n \"label\": \"Paq\"\n },\n \"pb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Pb\",\n \"label\": \"Pb\"\n },\n \"lead\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Pb\",\n \"label\": \"Pb\"\n },\n \"ppm pb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Pb\",\n \"label\": \"Pb\"\n },\n \"picea/artemisia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Picea_Artemisia\",\n \"label\": \"Picea/Artemisia\"\n },\n \"picea_artemisia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Picea_Artemisia\",\n \"label\": \"Picea/Artemisia\"\n },\n \"picea/artemesia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Picea_Artemisia\",\n \"label\": \"Picea/Artemisia\"\n },\n \"picea/pinus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Picea_Pinus\",\n \"label\": \"Picea/Pinus\"\n },\n \"picea_pinus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Picea_Pinus\",\n \"label\": \"Picea/Pinus\"\n },\n \"pinus/artemisia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Pinus_Artemisia\",\n \"label\": \"Pinus/Artemisia\"\n },\n \"pinus_artemisia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Pinus_Artemisia\",\n \"label\": \"Pinus/Artemisia\"\n },\n \"poaceae/ephedra\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Poaceae_Ephedra\",\n \"label\": \"Poaceae/Ephedra\"\n },\n \"poaceae_ephedra\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Poaceae_Ephedra\",\n \"label\": \"Poaceae/Ephedra\"\n },\n \"r570/r630\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#R570_R630\",\n \"label\": \"R570/R630\"\n },\n \"r570_r630\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#R570_R630\",\n \"label\": \"R570/R630\"\n },\n \"r570_630\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#R570_R630\",\n \"label\": \"R570/R630\"\n },\n \"r650/r700\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#R650_R700\",\n \"label\": \"R650/R700\"\n },\n \"r650_r700\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#R650_R700\",\n \"label\": \"R650/R700\"\n },\n \"r650_700\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#R650_R700\",\n \"label\": \"R650/R700\"\n },\n \"rabd660670\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RABD660670\",\n \"label\": \"RABD660670\"\n },\n \"r660_670\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RABD660670\",\n \"label\": \"RABD660670\"\n },\n \"rabd660;670 index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RABD660670\",\n \"label\": \"RABD660670\"\n },\n \"rabd660_670\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RABD660670\",\n \"label\": \"RABD660670\"\n },\n \"ran15\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RAN15\",\n \"label\": \"RAN15\"\n },\n \"organic compound index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RAN15\",\n \"label\": \"RAN15\"\n },\n \"rbar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RBAR\",\n \"label\": \"RBAR\"\n },\n \"average correlation coefficient\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#RBAR\",\n \"label\": \"RBAR\"\n },\n \"rb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb\",\n \"label\": \"Rb\"\n },\n \"rubidium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb\",\n \"label\": \"Rb\"\n },\n \"rb peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb\",\n \"label\": \"Rb\"\n },\n \"rb87/sr86\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb87_Sr86\",\n \"label\": \"Rb87/Sr86\"\n },\n \"rb87_sr86\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb87_Sr86\",\n \"label\": \"Rb87/Sr86\"\n },\n \"87rb/86sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb87_Sr86\",\n \"label\": \"Rb87/Sr86\"\n },\n \"rb/sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Rb87_Sr86\",\n \"label\": \"Rb87/Sr86\"\n },\n \"so4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#SO4\",\n \"label\": \"SO4\"\n },\n \"sulfate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sulfate\",\n \"label\": \"sulfate\"\n },\n \"so4__\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#SO4\",\n \"label\": \"SO4\"\n },\n \"sss\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"sc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sc\",\n \"label\": \"Sc\"\n },\n \"scandium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sc\",\n \"label\": \"Sc\"\n },\n \"ppm sc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sc\",\n \"label\": \"Sc\"\n },\n \"silicon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si\",\n \"label\": \"Si\"\n },\n \"si peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si\",\n \"label\": \"Si\"\n },\n \"siprop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si\",\n \"label\": \"Si\"\n },\n \"norm silicon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si\",\n \"label\": \"Si\"\n },\n \"si/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si_Al\",\n \"label\": \"Si/Al\"\n },\n \"si_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si_Al\",\n \"label\": \"Si/Al\"\n },\n \"silicon/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si_Ti\",\n \"label\": \"Si/Ti\"\n },\n \"si/ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si_Ti\",\n \"label\": \"Si/Ti\"\n },\n \"si_ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si_Ti\",\n \"label\": \"Si/Ti\"\n },\n \"norm si/ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Si_Ti\",\n \"label\": \"Si/Ti\"\n },\n \"sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr\",\n \"label\": \"Sr\"\n },\n \"strontium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr\",\n \"label\": \"Sr\"\n },\n \"sr (ppm)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr\",\n \"label\": \"Sr\"\n },\n \"sr peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr\",\n \"label\": \"Sr\"\n },\n \"ppm sr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr\",\n \"label\": \"Sr\"\n },\n \"sr/ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"sr_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"strontium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"cdr3_srca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"srca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"srca_annual\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"wr11_srca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Sr_Ca\",\n \"label\": \"Sr/Ca\"\n },\n \"tds\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TDS\",\n \"label\": \"TDS\"\n },\n \"total dissolved solids\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TDS\",\n \"label\": \"TDS\"\n },\n \"tex86\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TEX86\",\n \"label\": \"TEX86\"\n },\n \"tetraether index of 86 carbon atoms\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TEX86\",\n \"label\": \"TEX86\"\n },\n \"tex86l\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TEX86\",\n \"label\": \"TEX86\"\n },\n \"tic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TIC\",\n \"label\": \"TIC\"\n },\n \"inorganic carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TIC\",\n \"label\": \"TIC\"\n },\n \"% ic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TIC\",\n \"label\": \"TIC\"\n },\n \"toc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"organic carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicCarbon\",\n \"label\": \"organicCarbon\"\n },\n \"% oc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"% organic carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"corg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"oc-mar (g)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"oc-mar (mg)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"organic carbon concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"toc_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"tocmg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC\",\n \"label\": \"TOC\"\n },\n \"toc/tn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC_TN\",\n \"label\": \"TOC/TN\"\n },\n \"toc_tn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TOC_TN\",\n \"label\": \"TOC/TN\"\n },\n \"ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"titanium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"% ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"%ti\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"ti peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"tiprop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"tiash\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti\",\n \"label\": \"Ti\"\n },\n \"tio2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TiO2\",\n \"label\": \"TiO2\"\n },\n \"titanium dioxide\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#TiO2\",\n \"label\": \"TiO2\"\n },\n \"ti/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Al\",\n \"label\": \"Ti/Al\"\n },\n \"ti_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Al\",\n \"label\": \"Ti/Al\"\n },\n \"titanium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Al\",\n \"label\": \"Ti/Al\"\n },\n \"ti_ca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"titanium/calcium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"ln(ti/ca)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"log(ti/ca)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Ti_Ca\",\n \"label\": \"Ti/Ca\"\n },\n \"uk37\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37\",\n \"label\": \"Uk37\"\n },\n \"alkenone unsaturation index uk37\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37\",\n \"label\": \"Uk37\"\n },\n \"sumuk37\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#UK37\",\n \"label\": \"UK37\"\n },\n \"uk37-sfs values\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37\",\n \"label\": \"Uk37\"\n },\n \"uk37\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37_\",\n \"label\": \"Uk37\\u2019\"\n },\n \"uk37_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37_\",\n \"label\": \"Uk37\\u2019\"\n },\n \"alkenone unsaturation index uk37 prime\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37_\",\n \"label\": \"Uk37\\u2019\"\n },\n \"uk\\u201937\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Uk37_\",\n \"label\": \"Uk37\\u2019\"\n },\n \"v\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#V\",\n \"label\": \"V\"\n },\n \"vanadium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#V\",\n \"label\": \"V\"\n },\n \"ppm v\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#V\",\n \"label\": \"V\"\n },\n \"v/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#V_Al\",\n \"label\": \"V/Al\"\n },\n \"v_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#V_Al\",\n \"label\": \"V/Al\"\n },\n \"vanadium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#V_Al\",\n \"label\": \"V/Al\"\n },\n \"y\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Y\",\n \"label\": \"Y\"\n },\n \"yttrium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Y\",\n \"label\": \"Y\"\n },\n \"ppm y\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Y\",\n \"label\": \"Y\"\n },\n \"zn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zn\",\n \"label\": \"Zn\"\n },\n \"zinc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zn\",\n \"label\": \"Zn\"\n },\n \"ppm zn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zn\",\n \"label\": \"Zn\"\n },\n \"zr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zr\",\n \"label\": \"Zr\"\n },\n \"zirconium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zr\",\n \"label\": \"Zr\"\n },\n \"ppm zr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zr\",\n \"label\": \"Zr\"\n },\n \"zr/al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zr_Al\",\n \"label\": \"Zr/Al\"\n },\n \"zr_al\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zr_Al\",\n \"label\": \"Zr/Al\"\n },\n \"zirconium/aluminum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#Zr_Al\",\n \"label\": \"Zr/Al\"\n },\n \"accumulation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#accumulation\",\n \"label\": \"accumulation\"\n },\n \"accumulation rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#accumulation\",\n \"label\": \"accumulation\"\n },\n \"accumulation rate ice (kg/m2/yr)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#accumulation\",\n \"label\": \"accumulation\"\n },\n \"ice accumulation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#accumulation\",\n \"label\": \"accumulation\"\n },\n \"acc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#accumulation\",\n \"label\": \"accumulation\"\n },\n \"age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"age_original\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"intcal09age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"marine09\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"median cal age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"shcal04age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agebacon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agebchron\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"ageduplicate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"ageensemble\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agemarine09\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agemedian\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agemedianbacon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"ageoriginal\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"ageother\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"ageoxcal\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agerounded\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agestalage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"age_calibrated\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"age_alt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agecopra\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agelininterp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"agelinreg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"medianage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"varvecountedagead0x2fbc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"varvecountedageka\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age\",\n \"label\": \"age\"\n },\n \"age14c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age14C\",\n \"label\": \"age14C\"\n },\n \"radiocarbon year\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age14C\",\n \"label\": \"age14C\"\n },\n \"c14age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age14C\",\n \"label\": \"age14C\"\n },\n \"radiocarbondatesad0x2fbc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#age14C\",\n \"label\": \"age14C\"\n },\n \"ammonium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ammonium\",\n \"label\": \"ammonium\"\n },\n \"nh4_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ammonium\",\n \"label\": \"ammonium\"\n },\n \"amps\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#amps\",\n \"label\": \"amps\"\n },\n \"ampere\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#amps\",\n \"label\": \"amps\"\n },\n \"aragonite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#aragonite\",\n \"label\": \"aragonite\"\n },\n \"ash\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ash\",\n \"label\": \"ash\"\n },\n \"boron\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#boron\",\n \"label\": \"boron\"\n },\n \"b\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#boron\",\n \"label\": \"boron\"\n },\n \"brgdgt-iiia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa\",\n \"label\": \"brGDGT-IIIa\"\n },\n \"branched glycerol dialkyl glycerol tetraether\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Id\",\n \"label\": \"brGDGT-Id\"\n },\n \"br1050\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa\",\n \"label\": \"brGDGT-IIIa\"\n },\n \"iiia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa\",\n \"label\": \"brGDGT-IIIa\"\n },\n \"brgdgtiiia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa\",\n \"label\": \"brGDGT-IIIa\"\n },\n \"brgdgt-iiia\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa_\",\n \"label\": \"brGDGT-IIIa\\u2019\"\n },\n \"brgdgt-iiia_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa_\",\n \"label\": \"brGDGT-IIIa\\u2019\"\n },\n \"iiia\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa_\",\n \"label\": \"brGDGT-IIIa\\u2019\"\n },\n \"brgdgt-iiib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb\",\n \"label\": \"brGDGT-IIIb\"\n },\n \"br1048\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb\",\n \"label\": \"brGDGT-IIIb\"\n },\n \"iiib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb\",\n \"label\": \"brGDGT-IIIb\"\n },\n \"brgdgtiiib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb\",\n \"label\": \"brGDGT-IIIb\"\n },\n \"brgdgt-iiib\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb_\",\n \"label\": \"brGDGT-IIIb\\u2019\"\n },\n \"brgdgt-iiib_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb_\",\n \"label\": \"brGDGT-IIIb\\u2019\"\n },\n \"iiib\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb_\",\n \"label\": \"brGDGT-IIIb\\u2019\"\n },\n \"brgdgt-iiic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc\",\n \"label\": \"brGDGT-IIIc\"\n },\n \"iiic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc\",\n \"label\": \"brGDGT-IIIc\"\n },\n \"brgdgt-iiic\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc_\",\n \"label\": \"brGDGT-IIIc\\u2019\"\n },\n \"brgdgt-iiic_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc_\",\n \"label\": \"brGDGT-IIIc\\u2019\"\n },\n \"iiic\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc_\",\n \"label\": \"brGDGT-IIIc\\u2019\"\n },\n \"brgdgt-iia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa\",\n \"label\": \"brGDGT-IIa\"\n },\n \"br1036\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa\",\n \"label\": \"brGDGT-IIa\"\n },\n \"iia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa\",\n \"label\": \"brGDGT-IIa\"\n },\n \"brgdgtiia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa\",\n \"label\": \"brGDGT-IIa\"\n },\n \"brgdgt-iia\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa_\",\n \"label\": \"brGDGT-IIa\\u2019\"\n },\n \"brgdgt-iia_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa_\",\n \"label\": \"brGDGT-IIa\\u2019\"\n },\n \"iia\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIa_\",\n \"label\": \"brGDGT-IIa\\u2019\"\n },\n \"brgdgt-iib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIb\",\n \"label\": \"brGDGT-IIb\"\n },\n \"iib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIb\",\n \"label\": \"brGDGT-IIb\"\n },\n \"brgdgtiib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIb\",\n \"label\": \"brGDGT-IIb\"\n },\n \"brgdgt-iib\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIb_\",\n \"label\": \"brGDGT-IIb\\u2019\"\n },\n \"brgdgt-iib_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIb_\",\n \"label\": \"brGDGT-IIb\\u2019\"\n },\n \"iib\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIb_\",\n \"label\": \"brGDGT-IIb\\u2019\"\n },\n \"brgdgt-iic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIc\",\n \"label\": \"brGDGT-IIc\"\n },\n \"iic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIc\",\n \"label\": \"brGDGT-IIc\"\n },\n \"brgdgt-iic\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIc_\",\n \"label\": \"brGDGT-IIc\\u2019\"\n },\n \"brgdgt-iic_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIc_\",\n \"label\": \"brGDGT-IIc\\u2019\"\n },\n \"iic\\u2019\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-IIc_\",\n \"label\": \"brGDGT-IIc\\u2019\"\n },\n \"brgdgt-ia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ia\",\n \"label\": \"brGDGT-Ia\"\n },\n \"ia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ia\",\n \"label\": \"brGDGT-Ia\"\n },\n \"brgdgtia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ia\",\n \"label\": \"brGDGT-Ia\"\n },\n \"brgdgt-ib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ib\",\n \"label\": \"brGDGT-Ib\"\n },\n \"br1020\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ib\",\n \"label\": \"brGDGT-Ib\"\n },\n \"ib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ib\",\n \"label\": \"brGDGT-Ib\"\n },\n \"brgdgtib\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ib\",\n \"label\": \"brGDGT-Ib\"\n },\n \"brgdgt-ic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ic\",\n \"label\": \"brGDGT-Ic\"\n },\n \"ic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Ic\",\n \"label\": \"brGDGT-Ic\"\n },\n \"brgdgt-id\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#brGDGT-Id\",\n \"label\": \"brGDGT-Id\"\n },\n \"id\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"bubblenumberdensity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#bubbleNumberDensity\",\n \"label\": \"bubbleNumberDensity\"\n },\n \"bulkdensity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#bulkDensity\",\n \"label\": \"bulkDensity\"\n },\n \"bulk density\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#bulkDensity\",\n \"label\": \"bulkDensity\"\n },\n \"calcificationrate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#calcificationRate\",\n \"label\": \"calcificationRate\"\n },\n \"calcification rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#calcificationRate\",\n \"label\": \"calcificationRate\"\n },\n \"calcification\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#calcificationRate\",\n \"label\": \"calcificationRate\"\n },\n \"calcite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#calcite\",\n \"label\": \"calcite\"\n },\n \"carbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbon\",\n \"label\": \"carbon\"\n },\n \"% tc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbon\",\n \"label\": \"carbon\"\n },\n \"% total c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbon\",\n \"label\": \"carbon\"\n },\n \"%_tc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbon\",\n \"label\": \"carbon\"\n },\n \"c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbon\",\n \"label\": \"carbon\"\n },\n \"x_c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbon\",\n \"label\": \"carbon\"\n },\n \"carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbonate\",\n \"label\": \"carbonate\"\n },\n \"% carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#carbonate\",\n \"label\": \"carbonate\"\n },\n \"charcoal\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#charcoal\",\n \"label\": \"charcoal\"\n },\n \"chacoal_influx\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#charcoal\",\n \"label\": \"charcoal\"\n },\n \"chloride\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#chloride\",\n \"label\": \"chloride\"\n },\n \"circulationindex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"circulation index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"goe\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"gof\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#circulationIndex\",\n \"label\": \"circulationIndex\"\n },\n \"clay\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#clay\",\n \"label\": \"clay\"\n },\n \"%_clay\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#clay\",\n \"label\": \"clay\"\n },\n \"x_clay\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#clay\",\n \"label\": \"clay\"\n },\n \"cluster\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#cluster\",\n \"label\": \"cluster\"\n },\n \"statistical variable\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#index\",\n \"label\": \"index\"\n },\n \"cluster2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#cluster\",\n \"label\": \"cluster\"\n },\n \"composite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#composite\",\n \"label\": \"composite\"\n },\n \"proxy composite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#composite\",\n \"label\": \"composite\"\n },\n \"hybrid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#composite\",\n \"label\": \"composite\"\n },\n \"concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#concentration\",\n \"label\": \"concentration\"\n },\n \"concentration unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#concentration\",\n \"label\": \"concentration\"\n },\n \"concentration (c25-35)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#concentration\",\n \"label\": \"concentration\"\n },\n \"friedel-3-ene concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#concentration\",\n \"label\": \"concentration\"\n },\n \"hop-17(21)-ene concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#concentration\",\n \"label\": \"concentration\"\n },\n \"core\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"core id\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"core name\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"core section\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"corename\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"coresect1h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"core_number\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"dune_a\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"stal.id\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"originalcorename\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#core\",\n \"label\": \"core\"\n },\n \"correction\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correction\",\n \"label\": \"correction\"\n },\n \"corrected\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correction\",\n \"label\": \"correction\"\n },\n \"iso adjustment for ocean calibration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correction\",\n \"label\": \"correction\"\n },\n \"years for ocean correction\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correction\",\n \"label\": \"correction\"\n },\n \"hasaragonitecorrection\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correction\",\n \"label\": \"correction\"\n },\n \"hasaragonitecorrectioncomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correction\",\n \"label\": \"correction\"\n },\n \"correlationcoefficient\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correlationCoefficient\",\n \"label\": \"correlationCoefficient\"\n },\n \"correlation coefficient\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correlationCoefficient\",\n \"label\": \"correlationCoefficient\"\n },\n \"corrs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#correlationCoefficient\",\n \"label\": \"correlationCoefficient\"\n },\n \"count\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleCount\",\n \"label\": \"sampleCount\"\n },\n \"numbe_counted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"number_counted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"slide count\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"totalammoniabeccarii\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"total_grains_counted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"varve_number\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"abundance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"count_analyses_b3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"count_analyses_c2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"count_analyses_c3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"count_analyses_c5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"count_analyses_c6\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"numinzone\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"number\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"sampledensity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"total\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"total_non_chaetoceros_counted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"total_xount\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#count\",\n \"label\": \"count\"\n },\n \"d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"delta 13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"bulk om d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c13bulk\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c21 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c23 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c25 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c25:2 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c27 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c28 d13c vs.\\u00a0vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c29 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c29 \\u03b413c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c31 d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c31 \\u03b413c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c31d13c_pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"c33 \\u03b413c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"cdr3_d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_c28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"friedel-3-ene d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"hop-17(21)-ene d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"taraxer-14-ene d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13/12c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c18 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c18 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c20 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c20 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c21 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c21 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c22 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c22 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c23 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c23 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c24 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c24 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c25\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c25 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c25 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c26 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c26 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c27\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c27 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c27 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c28 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c28 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c29 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c29 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c30 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c30 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c31 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c31 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c32 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c32 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c33 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c33 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c34 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c34 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c35 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c c35 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c bulk\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c bulk calcite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c organic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c ostracod\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13ccomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cmean\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cpisid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cprecisioncomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cstandardcomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_c31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_org\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13ccarb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc27\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc27err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc29err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc31err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc33\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cleafwaxc33err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13cwax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_bulloides\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_dutertrei\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_pachyderma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_pachyderma_d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_ruber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_ruber_pink\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d13c_sacculifer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"planktic.d13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"\\u03b413c n-alkanes\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"\\u03b413c n-alkanes std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d13C\",\n \"label\": \"d13C\"\n },\n \"d15n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d15N\",\n \"label\": \"d15N\"\n },\n \"delta 15n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d15N\",\n \"label\": \"d15N\"\n },\n \"bulk om d15n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d15N\",\n \"label\": \"d15N\"\n },\n \"d15n/14n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d15N\",\n \"label\": \"d15N\"\n },\n \"dn15\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d15N\",\n \"label\": \"d15N\"\n },\n \"dn15_corrected\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d15N\",\n \"label\": \"d15N\"\n },\n \"d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"delta 18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"cdr3_d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"chironomid d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"g. ruber w \\u03b418o\\u00a0[\\u2030 pdb]\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"gbulloidesd18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"ndutertreid18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"wr11_d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"bagd18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d180_corrc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o (sea level corrected)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o avg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o chironomid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o lake water\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o bulk calcite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o carbonate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o carbonate corrected for dolomite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o encrustation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o ostracod\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o pore ice\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o pore ice sw corr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18obsi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18ocomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18opisid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18oterrestrialgastropods\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_210yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_gb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_grass_leaf\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_pdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_smow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_sphagnum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_annual\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_sw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_sw_annual\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_swcorr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_vpdb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_vp\\u2013sp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18ocarb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18odiatom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18og.rub\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18omean\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18osw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18osw-g.rub\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18osw-sl-g.rubw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18otr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18otr+\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18otr-\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_acicula\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_bulloides\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_crassaformis\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_dutertrei\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_inflata\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_mabahethi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_marginata\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_menardii\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_obliquiloculata\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_pachyderma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_pachyderma_d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_peregrina\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_quinqueloba\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_ruber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_ruber_lato\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_ruber_pink\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_ruber_stricto\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_sacculifer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d18o_tumida\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"dd18o5pt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"nonreliabled18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"planktic.d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"ruberd18\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"x18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"x18orub_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"\\u03b418o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d18O\",\n \"label\": \"d18O\"\n },\n \"d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"delta 2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c20 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c20 d2h sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c20d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c21 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c22 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c22 d2h sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c22d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c23 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c23 \\u03b4d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c24 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c24d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c25 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c25 \\u03b4d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c25:2 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c26 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c26 d2h sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c26d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c27 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c28 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c28 d2h sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c28_dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c28_ddiv\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c28d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29 dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29 \\u03b4d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29 \\u03b4d corrected\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29 \\u03b4d ice volume adjusted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29 \\u03b4d ice volume and vegetation adjusted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c29-c31 \\u03b4d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c30 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c30 d2h sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c30 dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c30 dd iv corrected (3\\u00b0c)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c30 dd iv corrected (7\\u00b0c)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c30d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c31 d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c31 dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c31 \\u03b4d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c31dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c31ddsd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c32 dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"c33 \\u03b4d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"friedel-3-ene d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"hop-17(21)-ene d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"long chain n-alkane avg d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"long chain n-acid avg d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"mid-chain n-acid avg d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"midchain n-alkane avg d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"precip d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"taraxer-14-ene d2h\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"bagdd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c20\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c20 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c20 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c21 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c21 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c22\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c22 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c22 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c23\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c23 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c23 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c24 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c24 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c25\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c25 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c25 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c25 error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c25:2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c26 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c26 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c27\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c27 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c27 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c27 error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c28 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c28 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c29 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c29 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c29 error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c30 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c30 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c31 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c31 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c31 error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c32 fame\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c32 fame sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c33 alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h c33 alkane sem\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h avg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h pore ice\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h pore ice sw corr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h precip\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hc24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hc26\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hc28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hc29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hc30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h_c16\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h_c26\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h_c28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2h_c30\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hleafwaxc29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hleafwaxc29err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hleafwaxc31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hleafwaxc31err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hleafwaxc33\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hleafwaxc33err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2hsw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd iv\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddc29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddc31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd_c29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd_c31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd_c31_sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd_ivandbio\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd_ivonly\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"dd_swcorr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddwax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddwax corrected\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddwax_corr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"ddwax_iv\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"nc28_dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"nc30_dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"\\u03b4daq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"\\u03b4dterr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2H\",\n \"label\": \"d2H\"\n },\n \"d2huncertaintyhigh80\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2HUncertaintyHigh80\",\n \"label\": \"d2HUncertaintyHigh80\"\n },\n \"precip dd 90 ci\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2HUncertaintyHigh80\",\n \"label\": \"d2HUncertaintyHigh80\"\n },\n \"d2huncertaintylow80\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2HUncertaintyLow80\",\n \"label\": \"d2HUncertaintyLow80\"\n },\n \"precip dd 10 ci\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#d2HUncertaintyLow80\",\n \"label\": \"d2HUncertaintyLow80\"\n },\n \"deleteme\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"a\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"cal\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"calibrated\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"imon1953/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"lazerprofiler\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"rcs.ars\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"saug/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"sete/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"sfev/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"shiv/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"tete/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"tfev/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"thiv/3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"unkowncolumn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"average c26 c28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"hobdob\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"interval\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"noid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deleteMe\",\n \"label\": \"deleteMe\"\n },\n \"deltarelativehumidity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deltaRelativeHumidity\",\n \"label\": \"deltaRelativeHumidity\"\n },\n \"\\u2206rh_mid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deltaRelativeHumidity\",\n \"label\": \"deltaRelativeHumidity\"\n },\n \"deltatemperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deltaTemperature\",\n \"label\": \"deltaTemperature\"\n },\n \"deltat\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deltaTemperature\",\n \"label\": \"deltaTemperature\"\n },\n \"density\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#density\",\n \"label\": \"density\"\n },\n \"depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"adjusted depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"composite depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"composite depth in core\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"composite depth mid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"composite_depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"core depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth blf\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"drillhole depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"midpointdepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"section depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"compositedepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"cor_depth_cm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth corrected\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depthbycore\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depthcomp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depthcomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth_cmbs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth_core\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth_core1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth_corr_cm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth_merge\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depth_merged\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depthice\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depthwe\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"drive-depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"mean depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"originalcoredepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depth\",\n \"label\": \"depth\"\n },\n \"depthbottom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"depth at sample start\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"bot\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"bottom depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"bottom_depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"composite depth bottom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"section depth bottom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"bottom depth in section\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"bottomdepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"depth.bottom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"depth_bot\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"depth_bottom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"uncorrected_depth_bot\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthBottom\",\n \"label\": \"depthBottom\"\n },\n \"depthtop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"acetic acid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"composite depth top\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"section depth top\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"top\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"top depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"top_depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"depth.top\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"depth_top\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"depth_top_m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"logdepthtop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"logdepthtop-edc99\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"logdepttop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"top depth in section\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"topdepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"uncorrected_depth_top\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#depthTop\",\n \"label\": \"depthTop\"\n },\n \"deuteriumexcess\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"deuterium excess\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"bagdexcess\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"d-excess\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"d-excess pore ice\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"d-excess pore ice sw corr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"d-excess sw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"d-excess_swcorr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"deutex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"dxs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#deuteriumExcess\",\n \"label\": \"deuteriumExcess\"\n },\n \"diatom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%benthic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%indif.\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%saline\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%benth.dia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%fresh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%plank.dia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"%saline.dia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"sumdiatoms\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatom\",\n \"label\": \"diatom\"\n },\n \"diatomcount\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatomCount\",\n \"label\": \"diatomCount\"\n },\n \"diatom index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatomCount\",\n \"label\": \"diatomCount\"\n },\n \"diatoms_per_traverse\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatomCount\",\n \"label\": \"diatomCount\"\n },\n \"diatom_abundance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatomCount\",\n \"label\": \"diatomCount\"\n },\n \"seaicediatoms\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#diatomCount\",\n \"label\": \"diatomCount\"\n },\n \"dinocyst\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dinocyst\",\n \"label\": \"dinocyst\"\n },\n \"total dinocysts\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dinocyst\",\n \"label\": \"dinocyst\"\n },\n \"flux_dino\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dinocyst\",\n \"label\": \"dinocyst\"\n },\n \"dolomite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dolomite\",\n \"label\": \"dolomite\"\n },\n \"% dolomite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dolomite\",\n \"label\": \"dolomite\"\n },\n \"drybulkdensity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dryBulkDensity\",\n \"label\": \"dryBulkDensity\"\n },\n \"dbd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dryBulkDensity\",\n \"label\": \"dryBulkDensity\"\n },\n \"dry bulk density\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dryBulkDensity\",\n \"label\": \"dryBulkDensity\"\n },\n \"estdrybd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dryBulkDensity\",\n \"label\": \"dryBulkDensity\"\n },\n \"dry_bd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dryBulkDensity\",\n \"label\": \"dryBulkDensity\"\n },\n \"duration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#duration\",\n \"label\": \"duration\"\n },\n \"duration unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#duration\",\n \"label\": \"duration\"\n },\n \"yearspersample\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#duration\",\n \"label\": \"duration\"\n },\n \"dust\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dust\",\n \"label\": \"dust\"\n },\n \"0.50_quantile_dust_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dust\",\n \"label\": \"dust\"\n },\n \"dmar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dust\",\n \"label\": \"dust\"\n },\n \"dustflux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#dust\",\n \"label\": \"dust\"\n },\n \"effectiveprecipitation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#effectivePrecipitation\",\n \"label\": \"effectivePrecipitation\"\n },\n \"precipitation minus evaporation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#effectivePrecipitation\",\n \"label\": \"effectivePrecipitation\"\n },\n \"moisture_index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#effectivePrecipitation\",\n \"label\": \"effectivePrecipitation\"\n },\n \"effectivemoisture\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#effectivePrecipitation\",\n \"label\": \"effectivePrecipitation\"\n },\n \"waterbalance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#effectivePrecipitation\",\n \"label\": \"effectivePrecipitation\"\n },\n \"elevation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#elevation\",\n \"label\": \"elevation\"\n },\n \"collection elevation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#zscore\",\n \"label\": \"zscore\"\n },\n \"elevation a.s.l.\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#elevation\",\n \"label\": \"elevation\"\n },\n \"elevation sample\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#elevation\",\n \"label\": \"elevation\"\n },\n \"epsilonc28c22\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC28C22\",\n \"label\": \"epsilonC28C22\"\n },\n \"epsilon c28-c22\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC28C22\",\n \"label\": \"epsilonC28C22\"\n },\n \"epsilon28-22\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC28C22\",\n \"label\": \"epsilonC28C22\"\n },\n \"epsilonc28c24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC28C24\",\n \"label\": \"epsilonC28C24\"\n },\n \"epsilon c28-c24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC28C24\",\n \"label\": \"epsilonC28C24\"\n },\n \"epsilonc29c23\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC29C23\",\n \"label\": \"epsilonC29C23\"\n },\n \"epsilon c29-c23\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#epsilonC29C23\",\n \"label\": \"epsilonC29C23\"\n },\n \"equilibriumlinealtitude\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#equilibriumLineAltitude\",\n \"label\": \"equilibriumLineAltitude\"\n },\n \"equilibrium line altitude\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#equilibriumLineAltitude\",\n \"label\": \"equilibriumLineAltitude\"\n },\n \"ela\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#equilibriumLineAltitude\",\n \"label\": \"equilibriumLineAltitude\"\n },\n \"ela_alt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#equilibriumLineAltitude\",\n \"label\": \"equilibriumLineAltitude\"\n },\n \"event\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#event\",\n \"label\": \"event\"\n },\n \"eventlayer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#eventLayer\",\n \"label\": \"eventLayer\"\n },\n \"event layer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#eventLayer\",\n \"label\": \"eventLayer\"\n },\n \"layer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#eventLayer\",\n \"label\": \"eventLayer\"\n },\n \"layer_type\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#eventLayer\",\n \"label\": \"eventLayer\"\n },\n \"facies\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#facies\",\n \"label\": \"facies\"\n },\n \"lithologic unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#facies\",\n \"label\": \"facies\"\n },\n \"lithology\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#facies\",\n \"label\": \"facies\"\n },\n \"feldspar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#feldspar\",\n \"label\": \"feldspar\"\n },\n \"feldspar group\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#feldspar\",\n \"label\": \"feldspar\"\n },\n \"flood\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"m-flood\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"m-flood 200 yr avg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"m-flood 30 yr sum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"p-flood\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"p-flood 200 yr avg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"p-flood 30 yr sum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"floods\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#flood\",\n \"label\": \"flood\"\n },\n \"fluorine\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#fluorine\",\n \"label\": \"fluorine\"\n },\n \"f\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#fluorine\",\n \"label\": \"fluorine\"\n },\n \"f_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#fluorine\",\n \"label\": \"fluorine\"\n },\n \"foraminifera\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"foraminifer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"foram\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#foraminifera\",\n \"label\": \"foraminifera\"\n },\n \"gamma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#gamma\",\n \"label\": \"gamma\"\n },\n \"gamma radiation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#gamma\",\n \"label\": \"gamma\"\n },\n \"glaciercoverage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#glacierCoverage\",\n \"label\": \"glacierCoverage\"\n },\n \"globigerinoidesruber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#globigerinoidesRuber\",\n \"label\": \"globigerinoidesRuber\"\n },\n \"globigerinoides ruber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#globigerinoidesRuber\",\n \"label\": \"globigerinoidesRuber\"\n },\n \"gruber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#globigerinoidesRuber\",\n \"label\": \"globigerinoidesRuber\"\n },\n \"grainsize\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"grain size\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lithics\",\n \"label\": \"lithics\"\n },\n \"250-31 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"63-4 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"<16 \\u03bcm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"<2 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"<2um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"<4 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \">63 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"d50\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"grain size mean\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"grainsizemode\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grainSize\",\n \"label\": \"grainSize\"\n },\n \"grayscale\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grayscale\",\n \"label\": \"grayscale\"\n },\n \"grayscale20lp_detrended\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grayscale\",\n \"label\": \"grayscale\"\n },\n \"grey_scale\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#grayscale\",\n \"label\": \"grayscale\"\n },\n \"growing degree days\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#growing_degree_days\",\n \"label\": \"growing degree days\"\n },\n \"growing_degree_days\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#growing_degree_days\",\n \"label\": \"growing degree days\"\n },\n \"gdd5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#growing_degree_days\",\n \"label\": \"growing degree days\"\n },\n \"growthrate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#growthRate\",\n \"label\": \"growthRate\"\n },\n \"growth rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#growthRate\",\n \"label\": \"growthRate\"\n },\n \"hasgap\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#hasGap\",\n \"label\": \"hasGap\"\n },\n \"hashiatus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#hasHiatus\",\n \"label\": \"hasHiatus\"\n },\n \"hashiatuscomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#hasHiatus\",\n \"label\": \"hasHiatus\"\n },\n \"hole\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#hole\",\n \"label\": \"hole\"\n },\n \"humidificationindex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#humidificationIndex\",\n \"label\": \"humidificationIndex\"\n },\n \"humification index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#humidificationIndex\",\n \"label\": \"humidificationIndex\"\n },\n \"hindex\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#humidificationIndex\",\n \"label\": \"humidificationIndex\"\n },\n \"icemelt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceMelt\",\n \"label\": \"iceMelt\"\n },\n \"ice melt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceMelt\",\n \"label\": \"iceMelt\"\n },\n \"ice_melt_fraction\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceMelt\",\n \"label\": \"iceMelt\"\n },\n \"melt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceMelt\",\n \"label\": \"iceMelt\"\n },\n \"meltlayerfrequency\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceMelt\",\n \"label\": \"iceMelt\"\n },\n \"meltlayers\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceMelt\",\n \"label\": \"iceMelt\"\n },\n \"icerafteddebris\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceRaftedDebris\",\n \"label\": \"iceRaftedDebris\"\n },\n \"ice rafted debris\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceRaftedDebris\",\n \"label\": \"iceRaftedDebris\"\n },\n \"ird\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#iceRaftedDebris\",\n \"label\": \"iceRaftedDebris\"\n },\n \"inc/coh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#inc_coh\",\n \"label\": \"inc/coh\"\n },\n \"inc_coh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#inc_coh\",\n \"label\": \"inc/coh\"\n },\n \"incoherent:coherent scattering\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#inc_coh\",\n \"label\": \"inc/coh\"\n },\n \"index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#index\",\n \"label\": \"index\"\n },\n \"pls-1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#index\",\n \"label\": \"index\"\n },\n \"pls-2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#index\",\n \"label\": \"index\"\n },\n \"sm/illitechlorite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#index\",\n \"label\": \"index\"\n },\n \"isreliable\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliabieyn1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliabieyn2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable?\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable 1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable 2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable_1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable_2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable_3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"reliable_4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#isReliable\",\n \"label\": \"isReliable\"\n },\n \"lakearea\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeArea\",\n \"label\": \"lakeArea\"\n },\n \"lake area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeArea\",\n \"label\": \"lakeArea\"\n },\n \"lakelevel\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"lake level\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"lake level a.s.l.\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"lakedepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"lakelevel_cm_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"depth.lake\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"lakelevelrelative\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"lakestatus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeLevel\",\n \"label\": \"lakeLevel\"\n },\n \"laketrend\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeTrend\",\n \"label\": \"lakeTrend\"\n },\n \"lakevolume\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lakeVolume\",\n \"label\": \"lakeVolume\"\n },\n \"landscapecover\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#landscapeCover\",\n \"label\": \"landscapeCover\"\n },\n \"ecosystem quantity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#percent\",\n \"label\": \"percent\"\n },\n \"openvegetation___\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#landscapeCover\",\n \"label\": \"landscapeCover\"\n },\n \"latitude\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#latitude\",\n \"label\": \"latitude\"\n },\n \"latitude sample\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#latitude\",\n \"label\": \"latitude\"\n },\n \"layerthickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"layer thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"fld lay thick\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"flood lay (annual)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"flood lay (fall)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"flood lay (spring)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"flood lay (summer)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"flood lay (winter)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"laminathickenss\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"lamina_thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"debrislaythick\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"eventlayerthick\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"floodlaythick\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#layerThickness\",\n \"label\": \"layerThickness\"\n },\n \"lithics\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lithics\",\n \"label\": \"lithics\"\n },\n \"%_lithics\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lithics\",\n \"label\": \"lithics\"\n },\n \"lithic flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#lithics\",\n \"label\": \"lithics\"\n },\n \"longitude\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#longitude\",\n \"label\": \"longitude\"\n },\n \"longitude sample\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#longitude\",\n \"label\": \"longitude\"\n },\n \"material\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#material\",\n \"label\": \"material\"\n },\n \"reconstruction material\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#material\",\n \"label\": \"material\"\n },\n \"mineralogy\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#mineralogy\",\n \"label\": \"mineralogy\"\n },\n \"identified mineral\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#mineralogy\",\n \"label\": \"mineralogy\"\n },\n \"mineral_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#mineralogy\",\n \"label\": \"mineralogy\"\n },\n \"mineralogycomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#mineralogy\",\n \"label\": \"mineralogy\"\n },\n \"needstobechanged\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"((( null ))) ac ratio? /// pollenratio\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"-\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"10%max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"10%min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"100yrsum\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"10yrrun.avg.\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"20%max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"20%min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"30%max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"30%min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"50%max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"50%min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"80%max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"80%min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"a odd (25-35)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"a/c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"a/c ratio\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"alkenones\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"analogues\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"analogues#\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"bs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"bs_comx\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"bs_landscape_openness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"bag\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"benthic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"c170x2d28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cast1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cast2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ci\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cia\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cmt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cmt_max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cmt_min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cmtmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"cmtmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ct\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"d\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"dec\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"di\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"dryelements\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"e2hterr-2haq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"em1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"em2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"em3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"emi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"eaq-p\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hc/g\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hii (h-set)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hii (n-set)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hii std (h-set)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hii std (n-set)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"hulunnuur\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"imi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"intv0x2e\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"jult-esep\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"lorca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"lsr (cm/ky)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"laminae\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"lyc.added\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mg0\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mst\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mshellcrn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mag0x2e\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mark add\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mark found\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mean consensus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mean_anomaly\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"minidiscus?\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mode\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"moistelements\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ne.ars\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"oep\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ppexp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"rra\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"reconstructed\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"s52\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"tct\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"totc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"ts\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"tsar\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"tsar5pt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"tt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"taraxer-14-ene concentration\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"th13c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"u_xs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"unit\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wacls\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wacls_total\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wainv\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wainv_total\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wapls-2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"wmt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"water/relict ice age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"aridity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"bagdepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"benth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"d0x2800x2e10x29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"d0x2800x2e50x29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"d0x2800x2e90x29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"d13o_pachyderma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"distance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"dln\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"drive-type\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"esep_pls_c2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"esep_wmat\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"kyryr bp2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"log[em3/(em1+em2)]\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"lower band\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"mineral\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"n-alkane\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sulfur\",\n \"label\": \"sulfur\"\n },\n \"stage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"tempsource\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"thin-mid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"thisshouldntbeempty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"thisshouldntbeempty1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"unnamed\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"water\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x00x2e020xb5m0x2d30x2e890xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x10000x2e010xb5m0x2d20000x2e000xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x1250x2e000xb5m0x2d2490x2e990xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x150x2e600xb5m0x2d300x2e990xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x2500x2e000xb5m0x2d4990x2e990xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x30x2e900xb5m0x2d70x2e790xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x310x2e000xb5m0x2d620x2e490xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x5000x2e000xb5m0x2d10000x2e000xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x620x2e500xb5m0x2d1240x2e990xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"x70x2e800xb5m0x2d150x2e590xb5m\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeChanged\",\n \"label\": \"needsToBeChanged\"\n },\n \"needstobesplitintomultiplecolumns\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeSplitIntoMultipleColumns\",\n \"label\": \"needsToBeSplitIntoMultipleColumns\"\n },\n \"depth-range\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeSplitIntoMultipleColumns\",\n \"label\": \"needsToBeSplitIntoMultipleColumns\"\n },\n \"depthrange\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeSplitIntoMultipleColumns\",\n \"label\": \"needsToBeSplitIntoMultipleColumns\"\n },\n \"depth_range\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#needsToBeSplitIntoMultipleColumns\",\n \"label\": \"needsToBeSplitIntoMultipleColumns\"\n },\n \"nitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#nitrogen\",\n \"label\": \"nitrogen\"\n },\n \"n\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#nitrogen\",\n \"label\": \"nitrogen\"\n },\n \"notes\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"bsi_regime\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"codename\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"commentregardingreliability\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"commentregardingreliability1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"commentregardingreliability2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"commentregardingreliability3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"commentregardingreliability4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"reworked\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"color\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"entityname\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"note\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"notes_c5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"repeats\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#notes\",\n \"label\": \"notes\"\n },\n \"organiccarbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicCarbon\",\n \"label\": \"organicCarbon\"\n },\n \"acc rate toc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicCarbon\",\n \"label\": \"organicCarbon\"\n },\n \"c_organic_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicCarbon\",\n \"label\": \"organicCarbon\"\n },\n \"corg dens\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicCarbon\",\n \"label\": \"organicCarbon\"\n },\n \"organicmatter\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicMatter\",\n \"label\": \"organicMatter\"\n },\n \"organic matter\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicMatter\",\n \"label\": \"organicMatter\"\n },\n \"%_tom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicMatter\",\n \"label\": \"organicMatter\"\n },\n \"om\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicMatter\",\n \"label\": \"organicMatter\"\n },\n \"om dens\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicMatter\",\n \"label\": \"organicMatter\"\n },\n \"organic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicMatter\",\n \"label\": \"organicMatter\"\n },\n \"organicnitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicNitrogen\",\n \"label\": \"organicNitrogen\"\n },\n \"norg\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#organicNitrogen\",\n \"label\": \"organicNitrogen\"\n },\n \"oxygen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#oxygen\",\n \"label\": \"oxygen\"\n },\n \"%o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#oxygen\",\n \"label\": \"oxygen\"\n },\n \"ph\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#pH\",\n \"label\": \"pH\"\n },\n \"phsoil\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#pH\",\n \"label\": \"pH\"\n },\n \"soilph\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#pH\",\n \"label\": \"pH\"\n },\n \"peat\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#peat\",\n \"label\": \"peat\"\n },\n \"peatflux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#peat\",\n \"label\": \"peat\"\n },\n \"percent\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#percent\",\n \"label\": \"percent\"\n },\n \"woodycover___\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#percent\",\n \"label\": \"percent\"\n },\n \"phosphorus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#phosphorus\",\n \"label\": \"phosphorus\"\n },\n \"%p\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#phosphorus\",\n \"label\": \"phosphorus\"\n },\n \"potassium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"% k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"%k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"k peak area\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"kprop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"k_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#potassium\",\n \"label\": \"potassium\"\n },\n \"precipitation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"annual precipitation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"map\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"p\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"pannom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"panom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"precip\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"summer precipitation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"winter precipitation\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"precip51yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"precip5yr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"precipitation (with h-set)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"precipobs\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#precipitation\",\n \"label\": \"precipitation\"\n },\n \"productivity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#productivity\",\n \"label\": \"productivity\"\n },\n \"pyrite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#pyrite\",\n \"label\": \"pyrite\"\n },\n \"quartz\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#quartz\",\n \"label\": \"quartz\"\n },\n \"reflectance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#reflectance\",\n \"label\": \"reflectance\"\n },\n \"brightness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#reflectance\",\n \"label\": \"reflectance\"\n },\n \"x_radiograph_dark_layer\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#reflectance\",\n \"label\": \"reflectance\"\n },\n \"blueintensity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#reflectance\",\n \"label\": \"reflectance\"\n },\n \"red_color_intensity_units\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#reflectance\",\n \"label\": \"reflectance\"\n },\n \"redness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#reflectance\",\n \"label\": \"reflectance\"\n },\n \"relativehumidity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#relativeHumidity\",\n \"label\": \"relativeHumidity\"\n },\n \"relative humidity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#relativeHumidity\",\n \"label\": \"relativeHumidity\"\n },\n \"rh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#relativeHumidity\",\n \"label\": \"relativeHumidity\"\n },\n \"residualchronology\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#residualChronology\",\n \"label\": \"residualChronology\"\n },\n \"residual chronology method\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#residualChronology\",\n \"label\": \"residualChronology\"\n },\n \"residual\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#residualChronology\",\n \"label\": \"residualChronology\"\n },\n \"ringwidth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ringWidth\",\n \"label\": \"ringWidth\"\n },\n \"ring width\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ringWidth\",\n \"label\": \"ringWidth\"\n },\n \"trw\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ringWidth\",\n \"label\": \"ringWidth\"\n },\n \"trsgi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#ringWidth\",\n \"label\": \"ringWidth\"\n },\n \"salinity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"saug\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"sete\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"sfev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"shiv\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"logsalinity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#salinity\",\n \"label\": \"salinity\"\n },\n \"samplecount\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleCount\",\n \"label\": \"sampleCount\"\n },\n \"num_samples\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleCount\",\n \"label\": \"sampleCount\"\n },\n \"sampleid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample identification\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"dateid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"lab code\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"lab id\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"originalsampleid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample id\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample label\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample interval\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"label\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"plotname\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sambleid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample # in section\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sampleida\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sampleidb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sampleidc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"samplenumber\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample_code\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sample_number\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"samples\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sisalsampleid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sisalsampleidcomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"smapleid\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sampleID\",\n \"label\": \"sampleID\"\n },\n \"sand\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sand\",\n \"label\": \"sand\"\n },\n \"%_sand\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sand\",\n \"label\": \"sand\"\n },\n \"x_sand\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sand\",\n \"label\": \"sand\"\n },\n \"seaice\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#seaIce\",\n \"label\": \"seaIce\"\n },\n \"sea ice cover\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#seaIce\",\n \"label\": \"seaIce\"\n },\n \"imon1953\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#seaIce\",\n \"label\": \"seaIce\"\n },\n \"sea_ice_conc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#seaIce\",\n \"label\": \"seaIce\"\n },\n \"sea_ice_months\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#seaIce\",\n \"label\": \"seaIce\"\n },\n \"section\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"sec label\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"section #\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"section [#]\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"section number\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"core_section\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"section name\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#section\",\n \"label\": \"section\"\n },\n \"sedimentdry\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"dry sediment\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"clastic\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"clastic_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"dry sample mass\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"mass dry\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"mass dry 106 to 1000 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"mass dry 63 to 106 um\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"mass dry >1mm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"massdry\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"massdry_1mm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"sedimentweight\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentDry\",\n \"label\": \"sedimentDry\"\n },\n \"sedimentationrate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentationRate\",\n \"label\": \"sedimentationRate\"\n },\n \"sedimentation rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentationRate\",\n \"label\": \"sedimentationRate\"\n },\n \"mean sedim rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentationRate\",\n \"label\": \"sedimentationRate\"\n },\n \"sedim rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentationRate\",\n \"label\": \"sedimentationRate\"\n },\n \"sed rate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentationRate\",\n \"label\": \"sedimentationRate\"\n },\n \"sedrate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sedimentationRate\",\n \"label\": \"sedimentationRate\"\n },\n \"segmentlength\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#segmentLength\",\n \"label\": \"segmentLength\"\n },\n \"segment\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#segmentLength\",\n \"label\": \"segmentLength\"\n },\n \"sequence\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sequence\",\n \"label\": \"sequence\"\n },\n \"pollen sequence\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sequence\",\n \"label\": \"sequence\"\n },\n \"silt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#silt\",\n \"label\": \"silt\"\n },\n \"%_silt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#silt\",\n \"label\": \"silt\"\n },\n \"x_silt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#silt\",\n \"label\": \"silt\"\n },\n \"site\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"coresite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"drilling project\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"lakename\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"region\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"sitename\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"site/hole\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#site\",\n \"label\": \"site\"\n },\n \"sitecount\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#siteCount\",\n \"label\": \"siteCount\"\n },\n \"#ofsites\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#siteCount\",\n \"label\": \"siteCount\"\n },\n \"sodium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sodium\",\n \"label\": \"sodium\"\n },\n \"na\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sodium\",\n \"label\": \"sodium\"\n },\n \"na_\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sodium\",\n \"label\": \"sodium\"\n },\n \"solarirradiance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#solarIrradiance\",\n \"label\": \"solarIrradiance\"\n },\n \"solar irradiance\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#solarIrradiance\",\n \"label\": \"solarIrradiance\"\n },\n \"sunfrac\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#solarIrradiance\",\n \"label\": \"solarIrradiance\"\n },\n \"streamflow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"aprq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"augq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"decq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"febq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"janq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"julyq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"juneq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"marchq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"mayq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"novq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"octq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"septq\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"discharge\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#streamflow\",\n \"label\": \"streamflow\"\n },\n \"sulfur\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sulfur\",\n \"label\": \"sulfur\"\n },\n \"sulphur\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#sulfur\",\n \"label\": \"sulfur\"\n },\n \"temperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature variable\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"apr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"aug\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"fra06 air temperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"feb\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"ice_core_c\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"jul\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"jun\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"jan\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"jultanom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"jultanomloess\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"maat\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"mat\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"may\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"msat\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"msat russell 2018\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"meant\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nov\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"oct\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"pls_c2_temp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"pollen_t\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sbt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sep\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst-d18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst_ldi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst_amj\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst_from_uk37\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst_from_planktic0x2emgca\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"sst_from_planktic0x2ed18o\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"t anomaly\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tete\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tfev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"thiv\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tanom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom 10 ci\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom 25\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom 75\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom 90\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom best\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom for15\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom fra06\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp anom fra06-tr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tsource\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"deep.temp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"interpolatedtemperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature 1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature_1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature_2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature_3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature_4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"nonreliabletemperature 2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"smoothedtemp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"soiltemp\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"subt\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"t-source\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temp2s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tempav0\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tempav8\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tempk\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tempnoelevcorrection\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tempnosourcecorrection\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temppartialcorrect\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"tempsmooth5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature 1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature 2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperaturecomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature_1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature_2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature_3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperature_4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"temperaturer2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#temperature\",\n \"label\": \"temperature\"\n },\n \"thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#thickness\",\n \"label\": \"thickness\"\n },\n \"samp thick\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#thickness\",\n \"label\": \"thickness\"\n },\n \"sample thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#thickness\",\n \"label\": \"thickness\"\n },\n \"sample_thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#thickness\",\n \"label\": \"thickness\"\n },\n \"thicknesscomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#thickness\",\n \"label\": \"thickness\"\n },\n \"totalcarbon\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalCarbon\",\n \"label\": \"totalCarbon\"\n },\n \"tc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalCarbon\",\n \"label\": \"totalCarbon\"\n },\n \"totalnitrogen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalNitrogen\",\n \"label\": \"totalNitrogen\"\n },\n \"tn\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalNitrogen\",\n \"label\": \"totalNitrogen\"\n },\n \"totalpollen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalPollen\",\n \"label\": \"totalPollen\"\n },\n \"pollen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalPollen\",\n \"label\": \"totalPollen\"\n },\n \"treepollen\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#totalPollen\",\n \"label\": \"totalPollen\"\n },\n \"treecover\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#treeCover\",\n \"label\": \"treeCover\"\n },\n \"uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"unspecified margin of error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"13cleafwaxc29-33err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"a_site_std\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"age_uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"annual precipitation error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"c20 total unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"c22 total unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"c24 total unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"c26 total unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"c28 total unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"c30 total unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"calibration error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"dmar_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"dmar_uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"epsilon c28-c22 uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"epsilon c28-c24 uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"epsilon uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"epsilon28-22uncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"jas_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"jaserror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"srcauncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"summer precipitation error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"tterror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"t_site_std\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uk37_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uk_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"winter precipitation error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"ageerror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"ageuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"ageuncertaintyother\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"bubblenumberdensityerror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d13c error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d13c std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d13cprecision\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d13cstandard\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d13c_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18o error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18oprecision\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18oprecisioncomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18ostandard\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18ostandardcomposite\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18ouncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18o_grass_leaf_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18o_sphagnum_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d18o_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"d2hleafwaxc28err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"dd error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"dd unc\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"dduncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"error1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"error2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"error3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"lakeareaerror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"lakevolumeerror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"nc30_err\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"precipitationuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"range\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"temperror\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"temperatureuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"temperature_error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty (\\u00b1)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty.temperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty_1\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty_2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty_3\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty_4\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty_temperature\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty\",\n \"label\": \"uncertainty\"\n },\n \"uncertainty1s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"68% confidence interval margin of error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"2h_dino_1sig\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c23 stdev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c23 \\u03b4d std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c24 d2h stdev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c25 stdev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c25 \\u03b4d std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c27 stdev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 d13c std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 dd std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 stdev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 \\u03b413c std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 \\u03b413c std dev\\u00a0[\\u00b1]\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 \\u03b4d std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c29 \\u03b4d std dev\\u00a0[\\u00b1]\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c30 dd std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c31 d13c std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c31 dd std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c31 \\u03b413c std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c31 \\u03b4d std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c31d13csd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c33 \\u03b413c std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"c33 \\u03b4d std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"cbtsd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"map1-sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"mbtsd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"mg_ca_sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"sd_anomaly\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"se\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdev c28 dd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"u371sigmauncertainty-\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"wmt1-sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"d excess stdev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"d13c_c31_sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"dd std dev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"from_68\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"precipitation std\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"precipitation std (with h-set)\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"std\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stddev\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stddev___\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdev c24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdev c26\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdev c28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdev weighted average\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc24\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc25\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc26\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc27\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc28\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"stdevc31\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"to_68\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty1s\",\n \"label\": \"uncertainty1s\"\n },\n \"uncertainty2s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"95% confidence interval margin of error\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"2 sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"map2-sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"wmt2-sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"from_95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"to_95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertainty2s\",\n \"label\": \"uncertainty2s\"\n },\n \"uncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"unspecified error upper bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"acc max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"ageold\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"age_max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"chironomid d18o max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"imon1953_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"jas+\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"map_max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"mat_max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"matmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"maxelevm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"pannommax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"pannommaxuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"panommax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"panommaxuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"pmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"saug_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"sete_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"sfev_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"shiv_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"sunfracmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"tete_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"tfev_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"thiv_s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"treecover_max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"uncertaintydust0x5b0x250x5d0x28plus0x29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"wmt_max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"wmtmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"age max\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agebaconuncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agebchronuncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agemax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"ageoxcaluncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agestalageuncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"ageuncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"age_old\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agecoprauncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agelininterpuncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"agelinreguncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"cal_age_range_old\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"d18ouncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"errorup\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"errorup2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"error_older_age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"lakelevelhi\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"lakelevelmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"max age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"max rh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"maxage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"meltuncertaintyhigh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"precip+\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"temperrorplus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"temperrorupper\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"temperaturewarm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"uncertainty_plus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"upper band\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"uppererr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"uppererr2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"year_old\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"\\u2206rh_upper\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\",\n \"label\": \"uncertaintyHigh\"\n },\n \"uncertaintyhigh1s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"68% confidence interval upper bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"p+sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"q0.84\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"t+sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"t.plussd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"temperature 1 sigma range high\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"age_y_bp+1s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"ddp_1s_upper\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"deltat + 1 sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"ice volume adjusted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"ice volume and vegetation adjusted\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"precip_1s_upper\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"precip_1s_uppper\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\",\n \"label\": \"uncertaintyHigh1s\"\n },\n \"uncertaintyhigh50\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh50\",\n \"label\": \"uncertaintyHigh50\"\n },\n \"50% confidence interval upper bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh50\",\n \"label\": \"uncertaintyHigh50\"\n },\n \"0.25_quantile_dust_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh50\",\n \"label\": \"uncertaintyHigh50\"\n },\n \"0.75_quantile_dust_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh50\",\n \"label\": \"uncertaintyHigh50\"\n },\n \"precip dd 75 ci\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh50\",\n \"label\": \"uncertaintyHigh50\"\n },\n \"uncertaintyhigh90\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh90\",\n \"label\": \"uncertaintyHigh90\"\n },\n \"90% confidence interval upper bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh90\",\n \"label\": \"uncertaintyHigh90\"\n },\n \"pcpanomci95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh90\",\n \"label\": \"uncertaintyHigh90\"\n },\n \"uncertaintyhigh95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"95% confidence interval upper bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"0.975_quantile_dust_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"95upperage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"q0.975\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"age95conmax\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"age_97.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"age_calbp95+\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"d13c_97.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"d18o_97.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"maxage95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"max_age_95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"upper95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\",\n \"label\": \"uncertaintyHigh95\"\n },\n \"uncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"unspecified error lower bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"acc min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"age_min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"chironomid d18o min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"imon1953_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"jas-\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"map_min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"mat_min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"matmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"minelevm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"pannommin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"pannomminuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"panommin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"panomminuncertainty\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"pmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"saug_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"sete_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"sfev_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"shiv_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"sunfracmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"tete_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"tfev_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"thiv_i\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"treecover_min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"uncertaintydust0x5b0x250x5d0x28minus0x29\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"wmt_min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"wmtmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"age min\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agebaconuncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agebchronuncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agemin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"ageoxcaluncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agestalageuncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"ageuncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"ageyoung\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"age_young\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agecoprauncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agelininterpuncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"agelinreguncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"cal_age_range_young\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"d18ouncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"errorlow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"errorlow2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"error_younger_age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"lakelevello\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"lakelevelmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"lowererr\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"meltuncertaintylow\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"min age\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"min rh\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"minage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"precip-\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"temperrorlower\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"temperaturecold\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"undertainty_minus\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"yearbottom\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"yeartop\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"\\u2206rh_lower\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow\",\n \"label\": \"uncertaintyLow\"\n },\n \"uncertaintylow1s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"68% confidence interval lower bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"p-sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"q0.16\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"t-sd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"t.minussd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"temperature 1 sigma range low\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"age_y_bp-1s\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"ddp_1s_lower\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"deltat - 1 sigma\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"precip_1s_lower\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\",\n \"label\": \"uncertaintyLow1s\"\n },\n \"uncertaintylow90\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow90\",\n \"label\": \"uncertaintyLow90\"\n },\n \"90% confidence interval lower bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow90\",\n \"label\": \"uncertaintyLow90\"\n },\n \"age97.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow90\",\n \"label\": \"uncertaintyLow90\"\n },\n \"age_5thpercentile\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow90\",\n \"label\": \"uncertaintyLow90\"\n },\n \"age_95thpercentile\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow90\",\n \"label\": \"uncertaintyLow90\"\n },\n \"uncertaintylow95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"95% confidence interval lower bound\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"0.025_quantile_dust_flux\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"95lowerage\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"precip dd 25 ci\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"q0.025\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"age2.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"age95confmin\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"age_2.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"age_calbp95-\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"d13c_2.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"d18o_2.5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"lower95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"lowererr2\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"minage95\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"pcpanomci5\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\",\n \"label\": \"uncertaintyLow95\"\n },\n \"upwelling\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#upwelling\",\n \"label\": \"upwelling\"\n },\n \"upwelling index\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#upwelling\",\n \"label\": \"upwelling\"\n },\n \"uranium\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uranium\",\n \"label\": \"uranium\"\n },\n \"u\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#uranium\",\n \"label\": \"uranium\"\n },\n \"varvethickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#varveThickness\",\n \"label\": \"varveThickness\"\n },\n \"varve thickness\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#varveThickness\",\n \"label\": \"varveThickness\"\n },\n \"varve_width\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#varveThickness\",\n \"label\": \"varveThickness\"\n },\n \"volume\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#volume\",\n \"label\": \"volume\"\n },\n \"samp vol\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#volume\",\n \"label\": \"volume\"\n },\n \"watercontent\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterContent\",\n \"label\": \"waterContent\"\n },\n \"water content\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterContent\",\n \"label\": \"waterContent\"\n },\n \"watertabledepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"water table depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"water table\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"water table detrended\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"water_tabledepth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"water wm\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"water_table_depth\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#waterTableDepth\",\n \"label\": \"waterTableDepth\"\n },\n \"wetbulkdensity\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#wetBulkDensity\",\n \"label\": \"wetBulkDensity\"\n },\n \"wetbd\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#wetBulkDensity\",\n \"label\": \"wetBulkDensity\"\n },\n \"year\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"recon0x2edate\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"year b2k\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"age_ce\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"year start\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"yearensemble\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"yearrounded\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#year\",\n \"label\": \"year\"\n },\n \"zscore\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#zscore\",\n \"label\": \"zscore\"\n },\n \"z_score\": {\n \"id\": \"http://linked.earth/ontology/paleo_variables#zscore\",\n \"label\": \"zscore\"\n }\n }\n }\n}\n\n// Reverse synonyms mapping from ID to label\nexport const RSYNONYMS: { [id: string]: string } = {};\n\n// Populate RSYNONYMS by iterating through SYNONYMS\nfor (const category in SYNONYMS) {\n for (const className in SYNONYMS[category as keyof typeof SYNONYMS]) {\n const categoryObj = SYNONYMS[category as keyof typeof SYNONYMS];\n if (categoryObj) {\n const synonyms: any = categoryObj[className as keyof typeof categoryObj];\n if (synonyms) {\n for (const synonym in synonyms) {\n const synObj = synonyms[synonym];\n RSYNONYMS[synObj.id] = synObj.label;\n }\n }\n }\n }\n}\n","import { SYNONYMS } from './synonyms';\n\nexport const SCHEMA = {\n 'Dataset': {\n '@id': ['{dataSetName}'],\n '@toJson_pre': [\n 'setArchiveTypeLabel'\n ],\n 'datasetId': {\n 'name': 'hasDatasetId'\n },\n 'dataSetName': { \n 'name': 'hasName', \n 'alternates': ['paleoArchiveName'] \n },\n 'dataSource': { \n 'name': 'hasDataSource'\n },\n 'originalDataURL': { \n 'name': 'hasOriginalDataUrl', \n 'alternates': ['originalDataUrl', 'additionalDataUrl', 'originalDataSource', 'originalDataURL', 'originalSourceUrl', 'paleoData_WDSPaleoUrl'] \n },\n 'dataContributor': {\n 'name': 'hasContributor',\n 'schema': 'Person',\n 'alternates': ['whoEnteredinDB', 'MetadataEnteredByWhom', 'contributorName'],\n 'fromJson': 'parsePersons',\n 'multiple': true,\n },\n 'archiveType': {\n 'name': 'hasArchiveType', \n 'alternates':[\n 'archive',\n 'paleoDataArchive',\n 'paleoData_Archive',\n 'Archive'\n ],\n 'type': 'Individual',\n 'synonyms': SYNONYMS['ARCHIVES']['ArchiveType'],\n 'class_range': 'ArchiveType',\n 'skip_auto_convert_to_json': true\n },\n 'changelog': {\n 'name': 'hasChangeLog',\n 'schema': 'ChangeLog',\n 'multiple': true\n },\n 'notes': {\n 'name': 'hasNotes'\n },\n 'collectionName': {\n 'name': 'hasCollectionName',\n 'alternates': ['collectionName1', 'collectionName2', 'collectionName3']\n },\n 'collectionYear': {\n 'name': 'hasCollectionYear'\n },\n 'investigator': {\n 'name': 'hasInvestigator',\n 'alternates': ['investigators'],\n 'schema': 'Person',\n 'multiple': true,\n 'fromJson': 'parsePersons'\n },\n 'creator': {\n 'name': 'hasCreator',\n 'schema': 'Person',\n 'multiple': true,\n 'fromJson': 'parsePersons'\n },\n 'funding': { \n 'name': 'hasFunding', \n 'multiple': true, \n 'schema': 'Funding' \n },\n 'pub': { \n 'name': 'hasPublication', \n 'multiple': true, \n 'schema': 'Publication' \n },\n 'geo': {\n 'name': 'hasLocation',\n 'schema': 'Location',\n 'fromJson': 'parseLocation',\n 'toJson': 'locationToJson'\n },\n 'paleoData': {\n 'name': 'hasPaleoData',\n 'multiple': true,\n 'schema': 'PaleoData'\n },\n 'chronData': {\n 'name': 'hasChronData',\n 'multiple': true,\n 'schema': 'ChronData'\n },\n 'googleSpreadSheetKey': {\n 'name': 'hasSpreadsheetLink',\n 'fromJson': 'getGoogleSpreadsheetUrl',\n 'toJson': 'getGoogleSpreadsheetKey'\n },\n 'dataSetVersion': { \n 'name': 'hasVersion' \n },\n 'compilation_nest': {\n 'name': 'hasCompilationNest',\n 'alternates': ['pages2kRegion', 'paleoDIVERSiteId', 'sisalSiteId', 'LegacyClimateDatasetId', \n 'LegacyClimateSiteId', 'ch2kCoreCode', 'coralHydro2kGroup', 'iso2kCertification', \n 'iso2kUI', 'ocean2kID', 'pages2kId', 'pages2kID', 'QCCertification', 'SISALEntityID' ]\n }\n },\n 'Compilation': {\n '@id': ['{compilationName}', '.', '{@id}'],\n 'compilationName': {\n 'name': 'hasName'\n },\n 'compilationVersion': {\n 'name': 'hasVersion',\n 'multiple': true\n }\n },\n 'ChangeLog': {\n '@id': ['{@parent.@id}', '.ChangeLog.', '{@index}'],\n '@category': 'ChangeLog',\n 'curator': {\n 'name': 'hasCurator',\n },\n 'version': {\n 'name': 'hasVersion'\n },\n 'lastVersion': {\n 'name': 'hasLastVersion'\n },\n 'timestamp': {\n 'name': 'hasTimestamp'\n },\n 'changes': {\n 'name': 'hasChanges',\n 'multiple': true,\n 'type': 'Individual',\n 'schema': 'Change',\n 'fromJson': 'parseChanges',\n 'toJson': 'changesToJson'\n },\n 'notes': {\n 'name': 'hasNotes'\n }\n },\n 'Change': {\n '@id': ['{@parent.@id}', '.Change.', '{@index}'],\n 'name': {\n 'name': 'hasName'\n },\n 'notes': {\n 'name': 'hasNotes',\n 'multiple': true\n }\n },\n 'Funding': {\n '@id': [\n '{fundingAgency|agency}',\n '.',\n '{fundingGrant|grant}'\n ],\n 'agency': { \n 'name': 'hasFundingAgency', \n 'alternates': ['fundingAgency'] \n },\n 'grant': {\n 'name': 'hasGrant',\n 'multiple': true,\n 'alternates': ['fundingGrant']\n },\n 'country': {\n 'name': 'hasFundingCountry',\n 'alternates': ['fundingCountry']\n },\n 'investigator': {\n 'name': 'hasInvestigator',\n 'schema': 'Person',\n 'multiple': true,\n 'fromJson': 'parsePersons'\n } \n },\n 'Publication': {\n '@id': [\n 'Publication.',\n '{identifier.0.id|@parent.dataSetName}',\n '{index}'\n ],\n 'title': { \n 'name': 'hasTitle' \n },\n 'abstract': { \n 'name': 'hasAbstract'\n },\n 'institution': { \n 'name': 'hasInstitution'\n },\n 'issue': { \n 'name': 'hasIssue'\n },\n 'journal': { \n 'name': 'hasJournal'\n }, \n 'volume': { \n 'name': 'hasVolume',\n 'type': 'string'\n },\n 'pages': { \n 'name': 'hasPages'\n },\n 'year': { \n 'name': 'hasYear', \n 'type': 'integer',\n 'alternates': ['pubYear'] \n }, \n 'publisher': { \n 'name': 'hasPublisher'\n },\n 'report': { \n 'name': 'hasReport'\n },\n 'type': { \n 'name': 'hasType'\n },\n 'citation': { \n 'name': 'hasCitation', \n 'type': 'string'\n },\n 'citeKey': { \n 'name': 'hasCiteKey', \n 'type': 'string'\n },\n 'url': { \n 'name': 'hasUrl', \n 'alternates': ['link'],\n 'multiple': true \n },\n 'dataUrl': { \n 'name': 'hasDataUrl', \n 'alternates': ['data_Url', 'pubDataUrl'],\n 'multiple': true \n },\n 'doi': {\n 'name': 'hasDOI',\n 'type': 'string',\n 'alternates': ['DOI']\n },\n 'author': {\n 'name': 'hasAuthor',\n 'alternates': ['authors'],\n 'schema': 'Person',\n 'multiple': true,\n 'fromJson': 'parsePersons'\n },\n 'firstauthor': {\n 'name': 'hasFirstAuthor',\n 'alternates': ['firstAuthor'],\n 'schema': 'Person',\n 'fromJson': 'parsePersons'\n }\n },\n 'PaleoData': {\n '@id': [\n '{@parent.dataSetName}',\n '.PaleoData',\n '{@index}'\n ],\n 'paleoDataName': { \n 'name': 'hasName' \n },\n 'measurementTable': {\n 'alternates': ['paleoMeasurementTable'],\n 'name': 'hasMeasurementTable',\n 'multiple': true,\n 'schema': 'DataTable'\n },\n 'model': {\n 'alternates': ['paleoModel'], \n 'name': 'modeledBy',\n 'multiple': true,\n 'schema': 'Model'\n }\n },\n 'ChronData': {\n '@id': [\n '{@parent.dataSetName}',\n '.ChronData',\n '{@index}'\n ],\n 'measurementTable': {\n 'alternates': ['chronMeasurementTable'],\n 'name': 'hasMeasurementTable',\n 'multiple': true,\n 'schema': 'DataTable'\n },\n 'model': {\n 'alternates': ['chronModel'], \n 'name': 'modeledBy',\n 'multiple': true,\n 'schema': 'Model'\n }\n },\n 'Model': {\n '@id': ['{@parent.@id}', '.Model', '{@index}'],\n 'method': { \n 'name': 'hasCode'\n },\n 'summaryTable': {\n 'name': 'hasSummaryTable',\n 'multiple': true,\n 'schema': 'DataTable'\n },\n 'ensembleTable': {\n 'name': 'hasEnsembleTable',\n 'multiple': true,\n 'schema': 'DataTable'\n },\n 'distributionTable': {\n 'name': 'hasDistributionTable',\n 'multiple': true,\n 'schema': 'DataTable'\n }\n }, \n 'DataTable': {\n '@id': ['{filename}', '_trunc(4)'],\n 'toJson': ['orderVariables'],\n 'fromJson': ['setColumnNumbers'],\n 'filename': { \n 'name': 'hasFileName'\n },\n 'columns': {\n 'name': 'hasVariable',\n 'multiple': true,\n 'schema': 'Variable'\n },\n 'missingValue': { \n 'name': 'hasMissingValue' \n }\n },\n 'Variable': {\n '@id': [\n '{foundInTable|@parent.@id}',\n '.',\n '{TSid|tsid|tSid}',\n '.',\n '{variableName|name}'\n ],\n '@fromJson': [\n 'wrapUncertainty',\n 'addFoundInTable',\n 'addFoundInDataset',\n 'addVariableValues',\n 'addStandardVariable',\n 'stringifyColumnNumbersArray'\n ],\n '@toJson_pre': [\n 'removeFoundInTable',\n 'removeFoundInDataset',\n 'setVariableNameFromStandardVariableLabel',\n 'setUnitsLabel',\n 'setProxyLabel',\n 'setArchiveTypeLabel',\n 'setProxyGeneralLabel'\n ],\n '@toJson': [\n 'unwrapUncertainty',\n 'extractVariableValues',\n 'unarrayColumnNumber'\n ],\n 'number': { \n 'name': 'hasColumnNumber', \n 'type': 'integer'\n },\n 'TSid': { \n 'name': 'hasVariableId', \n 'alternates': ['tsid', 'tSid'] \n },\n 'variableName': { \n 'name': 'hasName' \n },\n 'variableType': { \n 'name': 'hasType' \n },\n 'archiveType': {\n 'name': 'hasArchiveType', \n 'alternates':[\n 'archive',\n 'paleoDataArchive',\n 'paleoData_Archive',\n 'Archive'\n ],\n 'type': 'Individual',\n 'synonyms': SYNONYMS.ARCHIVES?.ArchiveType,\n 'class_range': 'ArchiveType',\n 'skip_auto_convert_to_json': true\n },\n 'units': { \n 'name': 'hasUnits',\n 'type': 'Individual',\n 'synonyms': SYNONYMS.UNITS?.PaleoUnit,\n 'class_range': 'PaleoUnit',\n 'skip_auto_convert_to_json': true\n },\n 'missingValue': { \n 'name': 'hasMissingValue' \n },\n 'hasMaxValue': { \n 'name': 'hasMaxValue', \n 'alternates': ['hasMax'], \n 'type': 'float' \n },\n 'hasMinValue': { \n 'name': 'hasMinValue', \n 'alternates': ['hasMin'], \n 'type': 'float' \n },\n 'hasMeanValue': { \n 'name': 'hasMeanValue', \n 'alternates': ['hasMean'], \n 'type': 'float' \n },\n 'hasMedianValue': { \n 'name': 'hasMedianValue', \n 'alternates': ['hasMedian'], \n 'type': 'float' \n },\n 'description': {\n 'name': 'hasDescription'\n },\n 'isPrimary': {\n 'name': 'isPrimary',\n 'type': 'boolean'\n },\n 'isComposite': {\n 'name': 'isComposite',\n 'type': 'boolean'\n },\n 'measurementInstrument': {\n 'name': 'hasInstrument',\n 'type': 'Individual',\n 'category': 'Instrument'\n },\n 'calibration': {\n 'name': 'calibratedVia',\n 'schema': 'Calibration',\n 'type': 'Individual',\n 'multiple': true\n },\n 'interpretation': {\n 'name': 'hasInterpretation',\n 'schema': 'Interpretation',\n 'category': 'Interpretation',\n 'type': 'Individual',\n 'multiple': true\n },\n 'resolution': {\n 'name': 'hasResolution',\n 'category': 'Resolution',\n 'schema': 'Resolution',\n 'type': 'Individual',\n 'alternates': ['hasResolution']\n },\n 'physicalSample': {\n 'name': 'hasPhysicalSample',\n 'schema': 'PhysicalSample',\n 'category': 'PhysicalSample',\n 'alternates': ['hasPhysicalSample'],\n 'type': 'Individual',\n 'multiple': true\n },\n 'uncertainty': { \n 'name': 'hasUncertainty' \n },\n 'uncertaintyAnalytical': { \n 'name': 'hasUncertaintyAnalytical'\n },\n 'uncertaintyReproducibility': { \n 'name': 'hasUncertaintyReproducibility'\n },\n 'proxy': {\n 'name': 'hasProxy',\n 'type': 'Individual',\n 'synonyms': SYNONYMS.PROXIES?.PaleoProxy,\n 'class_range': 'PaleoProxy',\n 'skip_auto_convert_to_json': true\n },\n 'proxyGeneral': {\n 'name': 'hasProxyGeneral',\n 'type': 'Individual',\n 'synonyms': SYNONYMS.PROXIES?.PaleoProxyGeneral,\n 'class_range': 'PaleoProxyGeneral',\n 'skip_auto_convert_to_json': true\n },\n 'inCompilationBeta': {\n 'name': 'partOfCompilation',\n 'schema': 'Compilation',\n 'category': 'Compilation',\n 'type': 'Individual',\n 'multiple': true\n },\n 'notes': {\n 'name': 'hasNotes',\n 'alternates': ['qcNotes', 'qCNotes', 'qCnotes', 'qcnotes', 'QCnotes', 'QCNotes']\n },\n 'hasValues': {\n 'type': 'string'\n },\n 'foundInTable': {\n 'type': 'Individual'\n },\n 'foundInDataset': {\n 'type': 'Individual'\n },\n 'hasStandardVariable': {\n 'type': 'EnumeratedIndividual',\n 'synonyms': SYNONYMS.VARIABLES?.PaleoVariable,\n 'class_range': 'PaleoVariable',\n 'skip_auto_convert_to_json': true\n } \n },\n 'PhysicalSample': {\n 'hasidentifier': { \n 'name': 'hasIGSN' \n },\n 'hasname': { \n 'name': 'name' \n },\n 'housedat': { \n 'name': 'housedAt' \n }\n },\n 'Resolution': {\n '@id': ['{@parent.@id}', '.Resolution'],\n '@toJson_pre': [\n 'setUnitsLabel'\n ],\n 'hasMaxValue': { 'name': 'hasMaxValue', 'alternates': ['hasMax'], 'type': 'float' },\n 'hasMinValue': { 'name': 'hasMinValue', 'alternates': ['hasMin'], 'type': 'float' },\n 'hasMeanValue': { 'name': 'hasMeanValue', 'alternates': ['hasMean'], 'type': 'float' },\n 'hasMedianValue': { 'name': 'hasMedianValue', 'alternates': ['hasMedian'], 'type': 'float' },\n 'units': { \n 'name': 'hasUnits',\n 'type': 'Individual',\n 'synonyms': SYNONYMS.UNITS?.PaleoUnit,\n 'class_range': 'PaleoUnit',\n 'skip_auto_convert_to_json': true\n }\n },\n 'Location': {\n '@id': ['{@parent.dataSetName}', '.Location'],\n 'coordinates': { \n 'type': 'Geographic_coordinate',\n 'class_type': 'string'\n },\n 'coordinatesFor': { \n 'type': 'Individual' \n },\n 'type': { 'name': 'hasType' },\n 'continent': { 'name': 'hasContinent' },\n 'country': { 'name': 'hasCountry' },\n 'countryOcean': { 'name': 'hasCountryOcean' },\n 'description': { 'name': 'hasDescription' },\n 'elevation': { 'name': 'hasElevation' },\n 'geometryType': { 'name': 'hasGeometryType' },\n 'latitude': { 'name': 'hasLatitude' },\n 'longitude': { 'name': 'hasLongitude' },\n 'locationName': { 'name': 'hasLocationName', 'alternates': ['secondarySiteName'] },\n 'ocean': { 'name': 'hasOcean', 'alternates': ['ocean2'] },\n 'siteName': { 'name': 'hasSiteName' },\n 'notes': { 'name': 'hasNotes' }\n },\n 'Interpretation': {\n '@id': [\n '{@parent.@id}',\n '.Interpretation',\n '{@index}'\n ],\n '@fromJson': ['addInterpretationRank'],\n '@toJson_pre': [\n 'setUnitsLabel',\n 'setSeasonalityLabels',\n 'setInterpretationVariableLabel'\n ], \n 'variable': { \n 'name': 'hasVariable',\n 'type': 'Individual',\n 'synonyms': SYNONYMS['INTERPRETATION']['InterpretationVariable'],\n 'class_range': 'InterpretationVariable',\n 'skip_auto_convert_to_json': true\n },\n 'variableGeneral': { \n 'name': 'hasVariableGeneral',\n 'alternates': ['variableGroup']\n },\n 'variableGeneralDirection': { \n 'name': 'hasVariableGeneralDirection',\n 'alternates': ['variableGroupDirection'] \n },\n 'variableDetail': { \n 'name': 'hasVariableDetail', \n 'alternates': ['variabledetail'] \n }, \n 'seasonality': { \n 'name': 'hasSeasonality',\n 'type': 'Individual',\n 'synonyms': SYNONYMS['INTERPRETATION']['InterpretationSeasonality'],\n 'class_range': 'InterpretationSeasonality',\n 'skip_auto_convert_to_json': true\n },\n 'seasonalityOriginal': { \n 'name': 'hasSeasonalityOriginal',\n 'type': 'Individual',\n 'synonyms': SYNONYMS['INTERPRETATION']['InterpretationSeasonality'],\n 'class_range': 'InterpretationSeasonality',\n 'skip_auto_convert_to_json': true\n },\n 'seasonalityGeneral': { \n 'name': 'hasSeasonalityGeneral',\n 'type': 'Individual',\n 'synonyms': SYNONYMS['INTERPRETATION']['InterpretationSeasonality'],\n 'class_range': 'InterpretationSeasonality',\n 'skip_auto_convert_to_json': true\n },\n 'notes': { 'name': 'hasNotes' },\n 'rank': { 'name': 'hasRank' }, // TODO: Auto-create if it doesnt exist\n 'basis': { 'name': 'hasBasis' },\n 'scope': { 'name': 'hasScope' },\n 'mathematicalRelation': { 'name': 'hasMathematicalRelation' },\n 'direction': { \n 'name': 'hasDirection', \n 'alternates': ['interpDirection']\n },\n 'isLocal': { \n 'name': 'isLocal', \n 'alternates': ['local']\n }\n },\n 'Calibration': {\n '@id': ['{@parent.@id}', '.Calibration'],\n '@fromJson': ['wrapUncertainty'],\n '@toJson': ['unwrapUncertainty'],\n 'datasetRange': {\n 'name': 'hasDatasetRange'\n },\n 'doi': {\n 'name': 'hasDOI',\n 'alternates': ['calibrationDOI', 'hasDOI', 'transferFunctionDOI']\n },\n 'equation': {\n 'name': 'hasEquation',\n 'alternates': ['calibrationEquation']\n },\n 'equationIntercept': {\n 'name': 'hasEquationIntercept'\n },\n 'equationR2': {\n 'name': 'hasEquationR2'\n },\n 'equationSlope': {\n 'name': 'hasEquationSlope'\n },\n 'equationSlopeUncertainty': {\n 'name': 'hasEquationSlopeUncertainty'\n },\n 'method': {\n 'name': 'hasMethod'\n },\n 'methodDetail': {\n 'name': 'hasMethodDetail'\n },\n 'proxyDataset': {\n 'name': 'hasProxyDataset',\n 'alternates': ['transferFunctionTrainingSet']\n },\n 'targetDataset': {\n 'name': 'hasTargetDataset',\n 'alternates': ['target', 'dataset']\n },\n 'hasSeasonality': {\n 'name': 'seasonality',\n 'alternates': ['transferFunctionTrainingSet']\n },\n 'notes': {\n 'name': 'hasNotes',\n 'alternates': ['Note']\n },\n 'uncertainty': { \n 'name': 'hasUncertainty',\n 'alternates': ['uncertainty', 'calibrationUncertainty', 'temperature12kUncertainty', 'transferFunctionUncertainty'],\n }\n },\n 'Person': { \n '@id': ['{name}'],\n 'name': {\n 'name': 'hasName'\n }\n }\n}","export const BLACKLIST = {\n 'metadataMD5' : 1,\n 'paleoData_paleoDataMD5' : 1,\n 'paleoData_paleoMeasurementTableMD5' : 1,\n 'paleoDataMD5' : 1,\n 'paleoMeasurementTableMD5' : 1,\n 'tagMD5' : 1,\n 'chronData_chronDataMD5' : 1,\n 'chronData_chronMeasurementTableMD5' : 1,\n 'chronDataMD5' : 1,\n 'chronMeasurementTableMD5' : 1\n}\n\nexport const REVERSE_BLACKLIST = {\n 'inferredFrom' : 1,\n 'foundInTable' : 1,\n 'foundInDataset' : 1\n //'takenAtDepth' : 1\n}","import { Writer } from 'n3';\nimport { Store } from 'n3';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Logger } from './logger';\n\n// Helper export functions\nexport function uniqid(prefix: string = '', moreEntropy: boolean = false): string {\n let theUniqid: string;\n \n if (moreEntropy) {\n // Generate two UUIDs for extra entropy and combine them\n const uuid1 = uuidv4().replace(/-/g, '');\n const uuid2 = uuidv4().replace(/-/g, '').substring(0, 8); // Take first 8 chars of second UUID\n theUniqid = uuid1 + uuid2;\n } else {\n // Standard UUID4 without hyphens\n theUniqid = uuidv4().replace(/-/g, '');\n }\n \n // Add prefix if provided\n return (prefix || '') + theUniqid;\n}\n\nexport function sanitizeId(id: string): string {\n if (!id) return '';\n return encodeURIComponent(id.replace(/[^a-zA-Z0-9\\-\\.]/g, '_'));\n}\n\nexport function ucfirst(str: string): string {\n if (!str) return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function lcfirst(str: string): string {\n if (!str) return str;\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n\nexport function camelCase(str: string): string {\n if (!str) return str;\n // Remove non-alphanumeric characters and split by them\n const words = str.split(/[^a-zA-Z0-9]+/);\n return words.map((word, i) => {\n if (i === 0) return lcfirst(word);\n return ucfirst(word);\n }).join('');\n}\n\nexport function escape(str: string): string {\n if (!str) return str;\n return str.replace(/[\\\\\"']/g, '\\\\$&').replace(/\\u0000/g, '\\\\0');\n}\n\n\n/**\n * Write LiPD RDF Graph to a file\n * @param type Output format ('json', 'turtle', 'n3', 'ntriples', etc.)\n * @returns Serialized string\n */\nexport async function serializeStore(store: Store, type: string = 'turtle', logger: Logger): Promise<string> {\n try {\n const quads = store.getQuads(null, null, null, null);\n \n // Create a new N3 writer with the specified format\n const writer = new Writer({ format: type });\n \n // Add each quad to the writer\n for (const quad of quads) {\n writer.addQuad(quad);\n }\n \n // Get the serialized string\n return new Promise((resolve, reject) => {\n writer.end((error, result) => {\n if (error) {\n reject(error);\n } else {\n resolve(result);\n }\n });\n });\n } catch (error) {\n logger.error('Error serializing graph: %s', error instanceof Error ? error.message : String(error));\n throw new Error(`Failed to serialize graph: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nexport function parseVariableValues(valuestr: string): any {\n if (Array.isArray(valuestr)) {\n return valuestr;\n }\n \n let values;\n try {\n // First try direct parsing\n values = JSON.parse(valuestr);\n } catch (error) {\n // If direct parsing fails, the string might be already stringified\n // or contain escaped quotes that need another layer of parsing\n try {\n // Remove any extra escaping if present\n const cleanedStr = valuestr.replace(/\\\\\"/g, '\"');\n // Replace any NaN values with null\n // more ways to handle NaN values but not if it appears in a string\n \n const parsedStr = cleanedStr.replace(/NaN/g, 'null')\n .replace(/\\bNaN\\b/g, 'null')\n .replace(/\\bnan\\b/g, 'null')\n .replace(/\\bNAN\\b/g, 'null')\n .replace(/\"NaN\"/g, 'null')\n .replace(/\"nan\"/g, 'null')\n .replace(/\"NAN\"/g, 'null');\n values = JSON.parse(parsedStr);\n } catch (innerError) {\n // If all parsing attempts fail, log the error and use the original string\n console.error('Failed to parse variable values:', innerError);\n values = valuestr;\n }\n } \n return values;\n}","import * as fs from 'fs';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\n\n/**\n * Create BagIt files for a directory\n * \n * @param bagitDir The directory to create BagIt files in\n * @param metadata Optional metadata for bag-info.txt\n * @returns Promise that resolves when BagIt files are created\n */\nexport async function createBagitFiles(bagitDir: string, metadata: Record<string, string> = {}): Promise<void> {\n // Create bagit.txt\n const bagitContent = 'BagIt-Version: 1.0\\nTag-File-Character-Encoding: UTF-8';\n fs.writeFileSync(path.join(bagitDir, 'bagit.txt'), bagitContent);\n \n // Create bag-info.txt\n const bagInfo = {\n 'Bagging-Date': new Date().toISOString(),\n 'Bag-Software-Agent': 'lipdjs',\n ...metadata\n };\n \n const bagInfoContent = Object.entries(bagInfo)\n .map(([key, value]) => `${key}: ${value}`)\n .join('\\n');\n \n fs.writeFileSync(path.join(bagitDir, 'bag-info.txt'), bagInfoContent);\n \n // Create manifest-md5.txt\n await createManifest(bagitDir, 'md5');\n}\n\n/**\n * Create a manifest file for a BagIt directory\n * \n * @param bagitDir The BagIt directory\n * @param algorithm The hash algorithm to use\n * @returns Promise that resolves when the manifest is created\n */\nasync function createManifest(bagitDir: string, algorithm: string): Promise<void> {\n const dataDir = path.join(bagitDir, 'data');\n const manifestPath = path.join(bagitDir, `manifest-${algorithm}.txt`);\n \n // Get all files in the data directory\n const files = getAllFiles(dataDir);\n \n // Calculate checksums for each file\n const checksums = await Promise.all(\n files.map(async (file) => {\n const relativePath = path.relative(bagitDir, file).replace(/\\\\/g, '/');\n const checksum = await calculateChecksum(file, algorithm);\n return `${checksum} ${relativePath}`;\n })\n );\n \n // Write manifest file\n fs.writeFileSync(manifestPath, checksums.join('\\n'));\n}\n\n/**\n * Get all files in a directory recursively\n * \n * @param dir The directory to search\n * @returns Array of file paths\n */\nfunction getAllFiles(dir: string): string[] {\n const files: string[] = [];\n \n function processDir(directory: string) {\n const entries = fs.readdirSync(directory, { withFileTypes: true });\n \n for (const entry of entries) {\n const fullPath = path.join(directory, entry.name);\n \n if (entry.isDirectory()) {\n processDir(fullPath);\n } else {\n files.push(fullPath);\n }\n }\n }\n \n processDir(dir);\n return files;\n}\n\n/**\n * Calculate checksum for a file\n * \n * @param filePath Path to the file\n * @param algorithm Hash algorithm to use\n * @returns Promise that resolves with the checksum\n */\nfunction calculateChecksum(filePath: string, algorithm: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const hash = crypto.createHash(algorithm);\n const stream = fs.createReadStream(filePath);\n \n stream.on('error', (err) => {\n reject(err);\n });\n \n stream.on('data', (chunk) => {\n hash.update(chunk);\n });\n \n stream.on('end', () => {\n resolve(hash.digest('hex'));\n });\n });\n} ","/**\n * The LipdToRDF class helps in converting a LiPD file to an RDF Graph.\n * It uses the SCHEMA object (from globals/schema.ts) to do the conversion\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as os from 'os';\nimport AdmZip from 'adm-zip';\nimport * as Papa from 'papaparse';\nimport { Store } from 'n3';\nimport { DataFactory } from 'n3';\nimport { Logger } from '../utils/logger';\nimport { ONTONS, NAMESPACES, NSURL, DATAURL } from '../globals/urls';\nimport { SCHEMA } from '../globals/schema';\nimport { SYNONYMS } from '../globals/synonyms';\n\nimport { uniqid, sanitizeId, ucfirst, lcfirst, camelCase, escape, serializeStore } from './utils';\nimport { BLACKLIST } from '../globals/blacklist';\nimport { ChangeLog } from '../classes/changelog';\nimport JSZip from 'jszip';\nimport { isBrowser } from './env';\n\n// Get the logger instance\nconst logger = Logger.getInstance();\nconst DF = DataFactory\n\nfunction expandSchema(schema: any): any {\n // Clone schema to avoid modifying the original\n const expandedSchema = JSON.parse(JSON.stringify(schema));\n \n // Expand schema by adding alternate keys\n for (const key in expandedSchema) {\n for (const lipdKey in expandedSchema[key]) {\n const pdetails = expandedSchema[key][lipdKey];\n \n // Skip if not an object\n if (typeof pdetails !== 'object' || pdetails === null) {\n continue;\n }\n \n // Add alternates if they exist\n if (pdetails.alternates && Array.isArray(pdetails.alternates)) {\n for (const altKey of pdetails.alternates) {\n expandedSchema[key][altKey] = { ...pdetails };\n }\n }\n }\n }\n // Mark as expanded\n expandedSchema.__expanded = true;\n return expandedSchema;\n}\n\nexport class LipdToRDF {\n public store: Store;\n public graphUrl: string;\n public namespaces: {\n ont: any;\n rdf: any;\n rdfs: any;\n xsd: any;\n owl: any;\n wgs84: any;\n };\n private lipdCsvs: { [key: string]: any[][] } = {};\n private standardize: boolean;\n private addLabels: boolean;\n private schema: any;\n private namespace: string;\n\n constructor(standardize: boolean = true, addLabels: boolean = true) {\n this.store = new Store();\n this.graphUrl = NSURL;\n this.namespace = NSURL + \"/\"\n \n // Define namespaces using DataFactory\n this.namespaces = {\n ont: DF.namedNode(ONTONS),\n rdf: DF.namedNode(NAMESPACES.rdf),\n rdfs: DF.namedNode(NAMESPACES.rdfs),\n xsd: DF.namedNode(NAMESPACES.xsd),\n owl: DF.namedNode(NAMESPACES.owl),\n wgs84: DF.namedNode(NAMESPACES.wgs84)\n };\n this.standardize = standardize;\n this.addLabels = addLabels;\n this.schema = expandSchema(JSON.parse(JSON.stringify(SCHEMA)));\n logger.debug('LipdToRDF instance created with standardize=%s, addLabels=%s', standardize, addLabels);\n }\n\n /**\n * Convert LiPD file to RDF Graph\n * @param lipdPath Path to LiPD file (can be a local file or URL)\n */\n public async convert(lipdPath: string): Promise<void> {\n logger.debug('Starting conversion of LiPD file: %s', lipdPath);\n \n if (isBrowser()) {\n await this._convertBrowser(lipdPath);\n logger.debug('Browser conversion completed');\n return;\n }\n \n // Reset graph\n for (const quad of this.store.getQuads(null, null, null, null)) {\n this.store.removeQuad(quad);\n }\n \n // Get the base name of the LiPD file\n const lpdName = path.basename(lipdPath).replace('.lpd', '').replace(/\\?.+$/, '');\n this.graphUrl = NSURL + \"/\" + lpdName;\n logger.debug('Set graph URL to: %s', this.graphUrl);\n \n // Create a temporary directory\n const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'lipd_to_rdf_'));\n logger.debug('Created temporary directory: %s', tmpDir);\n \n try {\n // Unzip the LiPD file\n logger.debug('Unzipping LiPD file to temporary directory');\n this._unzipLipdFile(lipdPath, tmpDir);\n \n // Find JSON-LD files\n logger.debug('Looking for JSON-LD files in the extracted content');\n const jsons = this._findFilesWithExtension(tmpDir, 'jsonld');\n logger.debug('Found %d JSON-LD files', jsons.length);\n \n // Process each JSON-LD file\n for (const [jsonPath, jsonName] of jsons) {\n logger.debug('Processing JSON-LD file: %s', jsonName);\n const jsonDir = path.dirname(jsonPath);\n \n // Find CSV files\n logger.debug('Looking for CSV files in %s', jsonDir);\n const csvs = this._findFilesWithExtension(jsonDir, 'csv');\n logger.debug('Found %d CSV files', csvs.length);\n\n // Reset the CSV cache\n this.lipdCsvs = {};\n \n // Load each CSV file\n for (const [csvPath, csvName] of csvs) {\n try {\n logger.debug('Processing CSV file: %s', csvName);\n // Read the CSV file\n const csvData = fs.readFileSync(csvPath, 'utf8');\n // Parse the CSV\n const parsedCsv = Papa.parse(csvData, { header: false });\n \n if (parsedCsv.data && Array.isArray(parsedCsv.data)) {\n this.lipdCsvs[csvName] = parsedCsv.data as any[][];\n logger.debug('Successfully loaded CSV file: %s', csvName);\n }\n } catch (error) {\n logger.warn('CSV file %s might have inconsistent columns: %s', csvName, error instanceof Error ? error.message : String(error));\n // Try to detect columns and load\n this.lipdCsvs[csvName] = this._detectColumnsAndLoad(csvPath);\n }\n }\n \n // Process the JSON file\n logger.debug('Loading JSON-LD data into RDF graph');\n this._loadLipdJsonToGraph(jsonPath);\n }\n \n logger.debug('Conversion completed successfully');\n } catch (error) {\n logger.error('Error during conversion: %s', error instanceof Error ? error.message : String(error));\n throw error;\n } finally {\n // Clean up the temporary directory\n try {\n logger.debug('Cleaning up temporary directory: %s', tmpDir);\n fs.rmSync(tmpDir, { recursive: true });\n } catch (error) {\n logger.error('Error cleaning up temporary directory: %s', error instanceof Error ? error.message : String(error));\n }\n }\n }\n\n /**\n * Load LiPD file from a File object (for browser file input)\n * @param file File object from HTML5 file input\n */\n public async loadFromFile(file: File): Promise<void> {\n if (!isBrowser()) {\n throw new Error('loadFromFile() is only available in browser environments');\n }\n\n logger.debug('Loading LiPD file from File object: %s', file.name);\n \n try {\n // Reset graph\n for (const quad of this.store.getQuads(null, null, null, null)) {\n this.store.removeQuad(quad);\n }\n\n // Read file as ArrayBuffer\n const arrayBuffer = await file.arrayBuffer();\n\n // Load with JSZip\n const zip = await JSZip.loadAsync(arrayBuffer);\n\n // Set graph URL based on filename\n const lpdName = file.name.replace('.lpd', '').replace(/\\?.+$/, '');\n this.graphUrl = NSURL + \"/\" + sanitizeId(lpdName);\n logger.debug('Set graph URL to: %s', this.graphUrl);\n\n // Reset CSV cache\n this.lipdCsvs = {};\n\n // Separate CSV and JSON entries for two-pass processing\n const csvEntries: Array<[string, JSZip.JSZipObject]> = [];\n const jsonEntries: JSZip.JSZipObject[] = [];\n\n for (const fileName of Object.keys(zip.files)) {\n const zipFile = zip.files[fileName];\n if (zipFile.dir) continue;\n\n if (fileName.endsWith('.csv')) {\n csvEntries.push([fileName, zipFile]);\n } else if (fileName.endsWith('.jsonld')) {\n jsonEntries.push(zipFile);\n }\n }\n\n // Pass 1: cache CSVs\n for (const [fileName, zipFile] of csvEntries) {\n const csvContent = await zipFile.async('string');\n const parsedCsv = Papa.parse(csvContent, { header: false });\n this.lipdCsvs[fileName] = parsedCsv.data as any[][];\n const baseName = fileName.split('/').pop();\n if (baseName) {\n this.lipdCsvs[baseName] = parsedCsv.data as any[][];\n }\n logger.debug(`Loaded CSV '${fileName}' (${parsedCsv.data.length}×${((parsedCsv.data as any[])[0] as any[]).length || 0})`);\n }\n\n // Pass 2: process JSON after CSVs are ready\n for (const zipFile of jsonEntries) {\n const jsonContent = await zipFile.async('string');\n this._loadLipdJsonString(jsonContent);\n }\n\n logger.debug('File loading completed successfully');\n } catch (error) {\n logger.error('Error loading LiPD file from File object: %s', error instanceof Error ? error.message : String(error));\n throw error;\n }\n }\n\n /**\n * Detect the number of columns in a CSV and load it\n * @param filePath Path to the CSV file\n * @returns Parsed CSV data as array of arrays\n */\n private _detectColumnsAndLoad(filePath: string): any[][] {\n // Detect number of columns\n let numColumns = 0;\n const lines = fs.readFileSync(filePath, 'utf8').split('\\n');\n \n for (const line of lines) {\n const num = line.split(',').length;\n if (num > numColumns) {\n numColumns = num;\n }\n }\n \n // Parse the CSV with the detected number of columns\n const csvData = fs.readFileSync(filePath, 'utf8');\n const parsedCsv = Papa.parse(csvData, { header: false });\n return parsedCsv.data as any[][];\n }\n\n /**\n * Write LiPD RDF Graph to a file\n * @param toPath Path to output file\n * @param type Output format ('json', 'turtle', 'n3', 'ntriples', etc.)\n */\n public async serialize(toPath: string, type: string = 'turtle'): Promise<void> {\n logger.debug('Serializing graph to %s in %s format', toPath, type);\n \n if (this.store) {\n try {\n const serialized = await serializeStore(this.store, type, logger);\n fs.writeFileSync(toPath, serialized);\n logger.debug('Successfully wrote graph to: %s', toPath);\n } catch (error) {\n logger.error('Error serializing graph: %s', error instanceof Error ? error.message : String(error));\n throw new Error(`Failed to serialize graph: ${error instanceof Error ? error.message : String(error)}`);\n }\n } else {\n logger.error('Cannot serialize: Graph is null or undefined');\n throw new Error('Cannot serialize: Graph is null or undefined');\n }\n }\n\n /**\n * Write LiPD RDF Graph to a file\n * @param toPath Path to output file\n * @param type Output format ('json', 'turtle', 'n3', 'ntriples', etc.)\n */\n public async toString(type: string = 'turtle'): Promise<string> {\n if (this.store) {\n try {\n let serialized: string | undefined;\n serialized = await serializeStore(this.store, type, logger);\n \n return serialized || '';\n } catch (error) {\n logger.error('Error serializing graph:', error);\n throw new Error(`Failed to serialize graph: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n return '';\n }\n\n /**\n * Unzip a LiPD file to a directory\n * @param lipdFile Path to the LiPD file\n * @param unzipDir Directory to extract to\n */\n private _unzipLipdFile(lipdFile: string, unzipDir: string): void {\n try {\n if (lipdFile.startsWith('http')) {\n // If this is a URL, fetch it first (would use fetch API in a full implementation)\n throw new Error('URL-based LiPD files not yet supported in this implementation');\n } else {\n // If this is a local file, unzip it\n logger.debug('Unzipping local file: %s to %s', lipdFile, unzipDir);\n const zip = new AdmZip(lipdFile);\n zip.extractAllTo(unzipDir, true);\n logger.debug('Unzipping completed successfully');\n }\n } catch (error) {\n logger.error('Error unzipping LiPD file: %s', error instanceof Error ? error.message : String(error));\n throw new Error(`Failed to unzip LiPD file: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Find files with a specific extension in a directory (recursively)\n * @param directory Directory to search in\n * @param extension File extension to look for\n * @returns Array of [filePath, fileName] tuples\n */\n private _findFilesWithExtension(directory: string, extension: string): Array<[string, string]> {\n const regex = new RegExp(`\\\\.${extension}$`);\n const results: Array<[string, string]> = [];\n \n try {\n const entries = fs.readdirSync(directory, { withFileTypes: true });\n \n for (const entry of entries) {\n const entryPath = path.join(directory, entry.name);\n \n if (entry.isFile() && regex.test(entry.name)) {\n results.push([entryPath, entry.name]);\n } else if (entry.isDirectory()) {\n // Recursively search subdirectories\n const subResults = this._findFilesWithExtension(entryPath, extension);\n results.push(...subResults);\n }\n }\n } catch (error) {\n logger.error(`Cannot access ${directory}. Probably a permissions error:`, error);\n }\n return results;\n }\n\n /**\n * Load LiPD JSON data into the RDF graph\n * @param jsonPath Path to the JSON file\n * @param url Optional URL of the LiPD file\n */\n private _loadLipdJsonToGraph(jsonPath: string, url?: string): void {\n logger.debug('Loading JSON file to graph: %s', jsonPath);\n for (const quad of this.store.getQuads(null, null, null, null)) {\n this.store.removeQuad(quad);\n }\n \n try {\n // Read and parse the JSON file\n const jsonContent = fs.readFileSync(jsonPath, 'utf8');\n const obj = JSON.parse(jsonContent);\n logger.debug('JSON file parsed successfully');\n \n // Set the graph URL based on dataset name if available\n if (obj.dataSetName) {\n this.graphUrl = NSURL + \"/\" + sanitizeId(obj.dataSetName);\n logger.debug('Updated graph URL based on dataset name: %s', this.graphUrl);\n }\n \n // Map the LiPD data to RDF\n logger.debug('Mapping LiPD data to RDF structure');\n const objHash: Record<string, any> = {};\n this._mapLipdToJson(obj, null, null, 'Dataset', 'Dataset', objHash);\n \n // Set URL if provided\n if (url) {\n objHash[obj['@id']].hasUrl = url;\n logger.debug('Set URL from parameter: %s', url);\n } else if (obj['@id']) {\n objHash[obj['@id']].hasUrl = DATAURL + \"/\" + obj['@id'] + '.lpd';\n logger.debug('Set derived URL: %s', DATAURL + \"/\" + obj['@id'] + '.lpd');\n }\n \n // Create individuals for all objects in the hash\n logger.debug('Creating RDF individuals for %d objects', Object.keys(objHash).length);\n for (const [key, item] of Object.entries(objHash)) {\n this._createIndividualFull(item);\n }\n \n logger.debug('Successfully loaded JSON data into RDF graph');\n } catch (error) {\n logger.error('Error loading JSON to graph: %s', error instanceof Error ? error.message : String(error));\n throw new Error(`Failed to load JSON to graph: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Map LiPD JSON data to a structured format suitable for RDF conversion\n * @param obj The JSON object to map\n * @param parent Parent object\n * @param index Index in parent's array\n * @param category Category of the object\n * @param schemaName Schema name to use\n * @param hash Object hash for storing objects by ID\n * @returns ID of the created object\n */\n private _mapLipdToJson(obj: any, parent: any, index: any, category: string, schemaName: string, hash: Record<string, any>): string {\n const schema = this.schema[schemaName] ? this.schema[schemaName] : {};\n \n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n \n obj['@parent'] = parent;\n obj['@index'] = index;\n obj['@schema'] = schemaName;\n \n let objId = this.getObjectId(obj, category, schema);\n if ('@id' in obj) {\n objId = obj['@id'];\n }\n if (objId in hash) {\n return objId;\n }\n obj['@id'] = objId;\n \n [obj, hash] = this.modifyStructureIfNeeded(obj, hash, schema);\n \n if ('@category' in obj) {\n category = obj['@category'];\n }\n hash[objId] = {\n '@id': objId,\n '@category': category,\n '@schema': schemaName\n };\n const item = hash[objId];\n \n if (typeof obj === 'object') {\n for (const [propKey, value] of Object.entries(obj)) {\n if (propKey[0] === '@') {\n continue;\n }\n \n if (propKey in BLACKLIST) {\n continue;\n }\n \n let details: any = {};\n let pname = propKey;\n if (propKey in schema) {\n details = schema[propKey];\n pname = details['name'] ? details['name'] : propKey;\n }\n \n const dtype = details['type'] ? details['type'] : null;\n let cat = details['category'] ? details['category'] : null;\n let sch = details['schema'] ? details['schema'] : null;\n const fromJson = details['fromJson'] ? details['fromJson'] : null;\n \n if (sch && !cat) {\n cat = sch;\n }\n \n if (fromJson) {\n const fn = this[fromJson as keyof this] as Function;\n const processedValue = fn.call(this, value, obj);\n \n if (!processedValue) {\n continue;\n }\n \n if (pname) {\n if (Array.isArray(processedValue)) {\n let idx = 1;\n for (const subValue of processedValue) {\n if (typeof subValue === 'object') {\n if (!(propKey in item)) {\n item[propKey] = [];\n }\n item[propKey].push(this._mapLipdToJson(subValue, obj, idx, cat, sch, hash));\n idx++;\n }\n }\n } else if (typeof processedValue === 'object') {\n item[propKey] = this._mapLipdToJson(processedValue, obj, null, cat, sch, hash);\n } else {\n item[propKey] = processedValue;\n }\n } else if (typeof processedValue === 'object') {\n for (const [subPropKey, subValue] of Object.entries(processedValue)) {\n item[subPropKey] = subValue;\n }\n }\n continue;\n }\n \n if (!pname) {\n continue;\n }\n \n if (Array.isArray(value)) {\n let idx = 1;\n for (const subValue of value) {\n if (!(propKey in item)) {\n item[propKey] = [];\n }\n item[propKey].push(this._mapLipdToJson(subValue, obj, idx, cat, sch, hash));\n idx++;\n }\n } else if (typeof value === 'object') {\n if (!(propKey in item)) {\n item[propKey] = [];\n }\n item[propKey].push(this._mapLipdToJson(value, obj, null, cat, sch, hash));\n } else {\n if (dtype === 'Individual') {\n item[propKey] = value;\n if (!(String(value) in hash)) {\n hash[String(value)] = {\n '@id': value,\n '@category': cat,\n '@schema': sch\n };\n }\n } else {\n item[propKey] = value;\n }\n }\n }\n }\n \n hash[objId] = item;\n return objId;\n }\n\n\n /**\n * Get compound key ID from an object\n * @param compoundKey Array of keys to traverse the object\n * @param obj Object to extract value from\n * @returns The value at the end of the key path or null if not found\n */\n private getCompoundKeyId(compoundKey: string[], obj: any): any {\n let tobj = obj;\n \n for (const key of compoundKey) {\n if (typeof tobj === 'object' && tobj !== null && key in tobj) {\n tobj = tobj[key];\n } else {\n return null;\n }\n }\n \n if (typeof tobj !== 'object' || tobj === null) {\n return tobj;\n }\n \n return null;\n }\n \n /**\n * Get binding key ID from an object\n * @param key Key or compound key (separated by dots) or alternative keys (separated by pipes)\n * @param obj Object to extract value from\n * @returns The value found or a unique ID if not found\n */\n private getBindingKeyId(key: string, obj: any): string {\n const keyOptions = key.split('|');\n \n for (const optKey of keyOptions) {\n const compoundKey = optKey.split('.');\n const keyId = this.getCompoundKeyId(compoundKey, obj);\n \n if (keyId) {\n return String(keyId);\n }\n }\n \n return uniqid();\n }\n \n /**\n * Apply a function to a key ID\n * @param fn Function name to apply\n * @param arg Argument for the function\n * @param curObjId Current object ID\n * @returns Modified object ID\n */\n private getFunctionKeyId(fn: string, arg: string, curObjId: string): string {\n if (fn === 'trunc') {\n return curObjId.substring(0, curObjId.length - parseInt(arg));\n } else if (fn === 'uniqid') {\n return String(curObjId) + uniqid(arg);\n }\n \n return curObjId;\n }\n \n /**\n * Create an ID from a pattern\n * @param pattern Array of pattern parts\n * @param obj Object to extract values from\n * @returns Generated ID string\n */\n private createIdFromPattern(pattern: string[], obj: any): string {\n let objId = '';\n \n for (const key of pattern) {\n const bindingMatch = key.match(/{(.+)}/);\n \n if (bindingMatch && bindingMatch.length > 1) {\n objId += String(this.getBindingKeyId(bindingMatch[1], obj));\n } else {\n const funcMatch = key.match(/_(.+)\\((.*)\\)/);\n \n if (funcMatch && funcMatch.length > 2) {\n const fn = funcMatch[1];\n const arg = funcMatch[2];\n objId = String(this.getFunctionKeyId(fn, arg, objId));\n } else {\n objId += String(key);\n }\n }\n }\n \n return objId;\n }\n \n /**\n * Fix title by replacing problematic characters\n * @param titleId Title ID to fix\n * @returns Fixed title ID\n */\n private fixTitle(titleId: string): string {\n return titleId.replace(/@\\\\x{FFFD}@u/g, '_');\n }\n \n /**\n * Get object ID based on schema and category\n * @param obj Object to generate ID for\n * @param category Category of the object\n * @param schema Schema definition\n * @returns Generated object ID\n */\n private getObjectId(obj: any, category: string, schema: any): string {\n let objId: string;\n \n if (typeof obj === 'object' && obj !== null) {\n objId = \"Unknown.\" + uniqid(category);\n } else {\n objId = ucfirst(String(obj)).replace(/\\s/g, '_');\n }\n \n if (schema && '@id' in schema) {\n objId = this.createIdFromPattern(schema['@id'], obj);\n }\n \n return this.fixTitle(objId);\n }\n\n /**\n * Modify the object structure if needed based on schema\n * @param obj Object to modify\n * @param hash Object hash\n * @param schema Schema definition\n * @returns [modified object, modified hash]\n */\n private modifyStructureIfNeeded(obj: any, hash: any, schema: any): [any, any] {\n if (schema['@fromJson']) {\n for (const func of schema['@fromJson']) {\n if (func in this) {\n const fn = this[func as keyof LipdToRDF];\n if (typeof fn === 'function') {\n const result = (fn as Function).call(this, obj, hash);\n if (Array.isArray(result) && result.length >= 2) {\n [obj, hash] = result;\n }\n }\n }\n }\n }\n return [obj, hash];\n }\n \n /**\n * Guess the data value type based on string pattern\n * @param val Value to analyze\n * @returns Detected data type\n */\n private _guessDataValueType(val: any): string {\n const value = String(val);\n \n if (/^-?\\d+$/.test(value)) {\n return \"float\"; // \"integer\"\n }\n \n if (/^-?\\d+\\.\\d+$/.test(value)) {\n return \"float\";\n }\n \n if (/^[2][0-9]{3}[-][0-1][0-9][-][0-3][0-9]( |T)[0-9]{2}:[0-9]{2}:[0-9]{2}/.test(value)) {\n return \"datetime\";\n }\n \n if (/^[2][0-9]{3}[-][0-1][0-9][-][0-3][0-9]/.test(value)) {\n return \"date\";\n }\n \n if (/^(true|false)$/i.test(value)) {\n return \"boolean\";\n }\n \n if (/^http/.test(value)) {\n return \"url\";\n }\n \n // if (/^.+@.+\\..+/.test(value)) {\n // return \"Email\";\n // }\n \n if (/^\".+\"$/.test(value)) {\n return \"string\";\n }\n \n if (/^'.+'$/.test(value)) {\n return \"string\";\n }\n \n return \"string\";\n }\n \n /**\n * Guess the value type for any kind of value\n * @param value Value to analyze\n * @returns Detected data type\n */\n private _guessValueType(value: any): string {\n if (value) {\n if (Array.isArray(value)) {\n for (const subvalue of value) {\n return this._guessValueType(subvalue);\n }\n } else if (typeof value === 'object' && value !== null) {\n return \"Individual\";\n } else {\n const valtype = this._guessDataValueType(value);\n return valtype;\n }\n }\n \n return \"string\";\n }\n \n /**\n * Get property details from schema and value\n * @param key Property key\n * @param schema Schema definition\n * @param value Property value\n * @returns Property details object\n */\n private getPropertyDetails(key: string, schema: any, value: any): any {\n let pname = key;\n const details: Record<string, any> = {\n \"name\": pname\n };\n \n if (key in schema && \"@@processed\" in schema[key]) {\n return schema[key];\n }\n \n // Get details from schema\n if (key in schema) {\n for (const [skey, svalue] of Object.entries(schema[key])) {\n details[skey] = svalue;\n }\n }\n \n if (\"schema\" in details) {\n details[\"type\"] = \"Individual\";\n }\n \n pname = lcfirst(details[\"name\"]);\n \n if (!(\"type\" in details)) {\n details[\"type\"] = this._guessValueType(value);\n if (!(\"type\" in details)) {\n details[\"type\"] = \"string\";\n }\n }\n \n details[\"@@processed\"] = true;\n schema[key] = details;\n return details;\n }\n\n \n /**\n * Create an individual\n * @param objId ID of the individual\n * @returns Fully qualified URI for the individual\n */\n private createIndividual(objId: string): string {\n return this.namespace + sanitizeId(objId);\n }\n \n /**\n * Create a class\n * @param category Category name\n * @returns Fully qualified URI for the class\n */\n private createClass(category: string): string {\n return ONTONS + sanitizeId(category);\n }\n \n /**\n * Create a property\n * @param prop Property name\n * @param dtype Data type\n * @param cat Category\n * @param multiple Whether the property can have multiple values\n * @returns [property URI, data type, category, multiple flag]\n */\n private createProperty(prop: string, dtype: string, cat: string, multiple: boolean): [string, string, string, boolean] {\n const nsProp = prop.split(':', 2);\n let ns = ONTONS;\n \n if (nsProp.length > 1) {\n const prefix = nsProp[0];\n if (prefix in NAMESPACES) {\n ns = NAMESPACES[prefix];\n }\n prop = nsProp[1];\n }\n \n return [ns + lcfirst(sanitizeId(prop)), dtype, cat, multiple];\n }\n \n /**\n * Set individual classes\n * @param objId ID of the individual\n * @param category Primary category\n * @param extraCats Additional categories\n */\n private setIndividualClasses(objId: string, category: string | null, extraCats: string[]): void {\n if (objId && category) {\n this.store.addQuad(\n DF.quad(\n DF.namedNode(objId),\n DF.namedNode(NAMESPACES.rdf + 'type'),\n DF.namedNode(category),\n DF.namedNode(this.graphUrl)\n )\n );\n }\n \n for (const ecat of extraCats) {\n if (objId && ecat) {\n this.store.addQuad(\n DF.quad(\n DF.namedNode(objId),\n DF.namedNode(NAMESPACES.rdf + 'type'),\n DF.namedNode(this.createClass(ecat)),\n DF.namedNode(this.graphUrl)\n )\n );\n }\n }\n }\n \n /**\n * Set object label\n * @param objId ID of the object\n * @param label Label to set\n */\n private setObjectLabel(objId: string, label: string): void {\n if (objId && label) {\n DF.quad\n this.store.addQuad(\n DF.quad(\n DF.namedNode(objId),\n DF.namedNode(NAMESPACES.rdfs + 'label'),\n DF.literal(label),\n DF.namedNode(this.graphUrl)\n )\n );\n }\n }\n \n /**\n * Set property value\n * @param objId ID of the object\n * @param prop Property details (from _createProperty)\n * @param value Value to set\n */\n private setPropertyValue(objId: string, prop: [string, string, string, boolean], value: any): void {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n this.setPropertyValue(objId, prop, subValue);\n }\n return;\n }\n \n const [propId, dtype, cat, multiple] = prop;\n if (!objId || value === null || value === undefined) {\n return;\n }\n \n let objItem = null;\n \n // Handle special values for numeric types\n if (dtype === 'float' || dtype === 'integer') {\n if (String(value).toLowerCase().includes('nan')) return;\n if (String(value).toLowerCase().includes('na')) return;\n }\n \n // Escape string values\n if (typeof value === 'string') {\n value = escape(value);\n }\n \n // Convert to appropriate type\n if (dtype === 'boolean') {\n value = String(value).toLowerCase();\n if (value !== 'true') {\n value = 'false';\n }\n } else if (dtype === 'float') {\n const match = String(value).match(/(-?\\d+\\.?\\d*)/);\n if (match) {\n value = match[1];\n } else {\n value = 0.0;\n }\n } else if (dtype === 'integer') {\n const match = String(value).match(/(-?\\d+)/);\n if (match) {\n value = match[1];\n } else {\n value = 0;\n }\n }\n \n // Create the appropriate RDF object\n if (dtype === 'Individual') {\n value = this.createIndividual(value);\n objItem = DF.namedNode(value);\n } else if (dtype === 'EnumeratedIndividual') {\n objItem = DF.namedNode(value);\n } else if (dtype === 'List') {\n objItem = value;\n } else {\n // Get XSD datatype URI\n let datatype = undefined;\n if (dtype === 'float') datatype = DF.namedNode(NAMESPACES.xsd + 'float');\n else if (dtype === 'integer') datatype = DF.namedNode(NAMESPACES.xsd + 'integer');\n else if (dtype === 'boolean') datatype = DF.namedNode(NAMESPACES.xsd + 'boolean');\n else if (dtype === 'date') datatype = DF.namedNode(NAMESPACES.xsd + 'date');\n else if (dtype === 'dateTime') datatype = DF.namedNode(NAMESPACES.xsd + 'dateTime');\n else if (dtype === 'string') datatype = DF.namedNode(NAMESPACES.xsd + 'string');\n \n objItem = DF.literal(String(value), datatype);\n }\n \n // Don't add if property doesn't allow multiple values and a value already exists\n if (!multiple) {\n const existing = this.store.getQuads(\n DF.namedNode(objId),\n DF.namedNode(propId),\n null,\n null\n );\n \n if (existing.length > 0) {\n return;\n }\n }\n \n // Add the triple to the graph\n this.store.addQuad(\n DF.quad(\n DF.namedNode(objId),\n DF.namedNode(propId),\n objItem,\n DF.namedNode(this.graphUrl)\n )\n );\n }\n \n /**\n * Create a full individual with all its properties\n * @param obj Object to create\n */\n private _createIndividualFull(obj: any): void {\n const category = obj['@category'];\n const extraCats = obj['@extracats'] || [];\n const schemaName = obj['@schema'] || category;\n const schema = this.schema[schemaName] || {};\n const objId = obj['@id'];\n \n if (!objId) {\n return;\n }\n \n // Create category class\n let categoryUri = null;\n if (category) {\n categoryUri = this.createClass(category);\n }\n \n // Create individual\n const objUri = this.createIndividual(objId);\n \n // Set individual classes\n this.setIndividualClasses(objUri, categoryUri, extraCats);\n \n // Set properties\n for (const [key, value] of Object.entries(obj)) {\n if (key[0] === '@') {\n continue;\n }\n \n const details = this.getPropertyDetails(key, schema, value);\n const prop = details.name;\n const dtype = details.type;\n const synonyms = details.synonyms || {};\n let cat = details.category || null;\n const sch = details.schema || null;\n const fromJson = details.fromJson || null;\n const multiple = details.multiple || false;\n \n if (!prop) {\n continue;\n }\n \n // Use schema if category is not set\n if (sch && !cat) {\n cat = sch;\n }\n \n // Create Property\n const propDI = this.createProperty(prop, dtype, cat, multiple);\n \n // Set property value\n if (dtype === 'Individual') {\n if (typeof value === 'string' && Object.keys(synonyms).length > 0) {\n // If the value is a string and there are synonyms for this Individual\n const lowerValue = value.toLowerCase();\n if (synonyms[lowerValue]) {\n // If we have a synonym-mapping for the value to an Individual\n propDI[1] = 'EnumeratedIndividual'; // Rename property type to be an enumeration\n let synId = synonyms[lowerValue].id;\n \n if (!this.standardize) {\n // If we don't want to standardize, then create a unique id for the individual\n synId += '.' + uniqid();\n }\n \n this.setPropertyValue(objUri, propDI, synId);\n \n // Only add object label in the current graph if set\n if (this.addLabels) {\n let label;\n if (this.standardize) {\n // Set the standard label for the individual\n label = synonyms[lowerValue].label;\n } else {\n // Set the user label for the individual\n label = value;\n }\n this.setObjectLabel(synId, label);\n }\n } else {\n // We don't have a synonym-mapping for the value\n // Create an individual and set its label to the value\n propDI[1] = 'EnumeratedIndividual';\n const synId = this.createIndividual(value) + '.' + uniqid();\n this.setPropertyValue(objUri, propDI, synId);\n this.setObjectLabel(synId, value);\n }\n } else {\n // There are no synonyms, and value is not a string. Just use it directly\n this.setPropertyValue(objUri, propDI, value);\n }\n } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n this.setPropertyValue(objUri, propDI, value);\n } else {\n if (dtype === 'File') {\n // File handling could be implemented here\n // Similar to the Python code's commented section\n } else {\n this.setPropertyValue(objUri, propDI, value);\n }\n }\n }\n }\n \n /**\n * Parse persons string into array of person objects\n * @param authorString String containing author names\n * @param parent Optional parent object\n * @returns Array of parsed author names\n */\n private parsePersonsString(authorString: string, parent?: any): string[] {\n // Check for semi-colon delimiter and split accordingly\n if (authorString.includes(';')) {\n const authorSplit = authorString.split(/\\s*;\\s*/);\n // Further split the authors with commas if necessary\n const authorList: string[] = [];\n \n for (const author of authorSplit) {\n if (author.includes(',')) {\n const lastFirst = author.split(/\\s*,\\s*/);\n authorList.push(`${lastFirst[1]} ${lastFirst[0]}`);\n } else {\n authorList.push(author);\n }\n }\n \n return authorList;\n } else {\n // Split the author string with commas\n const authorList: string[] = [];\n const authorSplit = authorString.split(/\\s*,\\s*/);\n \n if (authorSplit.length % 2 === 0) {\n // Even number: last name first name\n for (let i = 0; i < authorSplit.length; i += 2) {\n authorList.push(`${authorSplit[i+1]} ${authorSplit[i]}`);\n }\n } else {\n // Odd number: first name last name\n for (const author of authorSplit) {\n authorList.push(author);\n }\n }\n \n return authorList;\n }\n }\n \n /**\n * Parse persons object into standardized format\n * @param auths Author string or array of authors\n * @param parent Optional parent object\n * @returns Array of parsed person objects\n */\n private parsePersons(auths: any, parent?: any): any[] {\n const authors: string[] = [];\n \n if (!Array.isArray(auths)) {\n auths = [auths];\n }\n \n for (const authstr of auths) {\n let authname = null;\n \n if (typeof authstr === 'object' && authstr !== null) {\n if ('name' in authstr) {\n authname = authstr.name;\n }\n } else {\n authname = authstr;\n }\n \n if (authname) {\n const auth = this.parsePersonsString(authname, parent);\n \n if (Array.isArray(auth)) {\n authors.push(...auth);\n } else {\n authors.push(auth);\n }\n }\n }\n \n return authors.map(auth => ({ name: auth }));\n }\n\n /**\n * Flatten array recursively (browser-compatible alternative to Array.flat())\n * @param arr Array to flatten\n * @returns Flattened array\n */\n private _flattenArray(arr: any[]): any[] {\n const result: any[] = [];\n for (const item of arr) {\n if (Array.isArray(item)) {\n result.push(...this._flattenArray(item));\n } else {\n result.push(item);\n }\n }\n return result;\n }\n\n /**\n * Set column numbers for variables\n * @param datatable Datatable object\n * @param parent Parent object\n * @returns Datatable object with ordered variables\n */\n private setColumnNumbers(datatable: any, parent: any = null): any {\n for (const [index, variable] of datatable.variables.entries()) {\n variable.columnNumber = index + 1;\n console.log(\"setColumnNumbers\", variable);\n }\n return datatable;\n }\n\n /**\n * Parse changeLog object into standardized format\n * @param changes Change list\n * @param parent Optional parent object\n * @returns Array of parsed person objects\n */\n private parseChanges(changes: any, parent?: any): any {\n const newChanges: any = []\n if (!Array.isArray(changes)) {\n changes = [changes]\n }\n for (const change of changes) {\n for (const name of Object.keys(change)) {\n let notes = change[name] || []\n // Convert notes to 1-dimensional array (browser-compatible alternative to flat())\n notes = Array.isArray(notes) ? this._flattenArray(notes) : [notes];\n const newChange = {\n name: name,\n notes: notes\n }\n newChanges.push(newChange);\n }\n }\n return newChanges;\n }\n\n /**\n * Parse location object\n * @param geo Location object\n * @param parent Parent object\n * @returns Processed location object\n */\n private parseLocation(geo: any, parent?: any): any {\n const ngeo: Record<string, any> = {};\n \n ngeo.locationType = geo.type || null;\n if (parent && parent['@id']) {\n ngeo.coordinatesFor = parent['@id'];\n }\n \n if (geo.geometry && geo.geometry.coordinates) {\n const coords = geo.geometry.coordinates;\n \n if (coords && coords.length > 0) {\n ngeo.coordinates = `${coords[1]},${coords[0]}`;\n ngeo['wgs84:lat'] = coords[1];\n ngeo.hasLatitude = coords[1];\n ngeo.latitude = coords[1];\n \n ngeo['wgs84:long'] = coords[0];\n ngeo.longitude = coords[0];\n ngeo.hasLongitude = coords[0];\n \n if (coords.length > 2) {\n ngeo['wgs84:alt'] = coords[2];\n ngeo.elevation = coords[2];\n ngeo.hasElevation = coords[2];\n }\n }\n }\n \n if (geo.properties && typeof geo.properties === 'object') {\n for (const [key, value] of Object.entries(geo.properties)) {\n ngeo[key] = value;\n }\n } else if (typeof geo === 'object') {\n for (const [key, value] of Object.entries(geo)) {\n if (key !== 'geometry') {\n // Do not add lat long if they are already added\n if (!(`wgs84:${key}` in ngeo)) {\n ngeo[key] = value;\n }\n }\n }\n }\n \n return ngeo;\n }\n \n /**\n * Process uncertainty values\n * @param val Uncertainty value\n * @param parent Parent object\n * @returns Uncertainty object\n */\n private getUncertainty(val: any, parent?: any): any {\n const uncertainty: Record<string, any> = {};\n uncertainty.hasValue = val;\n uncertainty.analytical = val;\n uncertainty.reproducibility = val;\n return uncertainty;\n }\n \n /**\n * Get Google Spreadsheet URL from key\n * @param key Spreadsheet key\n * @param parent Parent object\n * @returns Spreadsheet URL\n */\n private getGoogleSpreadsheetUrl(key: string, parent?: any): string {\n return `https://docs.google.com/spreadsheets/d/${key}`;\n }\n \n /**\n * Get a property from a parent object\n * @param obj Object with parent reference\n * @param prop Property to find\n * @returns Property value or null\n */\n private getParentProperty(obj: any, prop: string): any {\n let parent = obj['@parent'];\n while (parent) {\n if (prop in parent) {\n return parent[prop];\n }\n \n parent = parent['@parent'];\n }\n return null;\n }\n \n /**\n * Get a parent with a specific property value\n * @param obj Object with parent reference\n * @param prop Property to check\n * @param val Value to match\n * @returns Parent object or null\n */\n private getParentWithPropertyValue(obj: any, prop: string, val: any): any {\n let parent = obj['@parent'];\n while (parent) {\n if (prop in parent && parent[prop] === val) {\n return parent;\n }\n \n parent = parent['@parent'];\n }\n return null;\n }\n\n /**\n * Set identifier properties for publications\n * @param pub Publication object\n * @param objHash Object hash\n * @returns [modified publication, modified hash, added objects]\n */\n private setIdentifierProperties(pub: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if ('identifier' in pub) {\n for (const identifier of pub.identifier) {\n if (identifier.type === 'doi') {\n if (!('hasDOI' in pub)) {\n pub.hasDOI = [];\n }\n pub.hasDOI.push(identifier.id);\n } else if (identifier.type === 'issn') {\n if (!('hasISSN' in pub)) {\n pub.hasISSN = [];\n }\n pub.hasISSN.push(identifier.id);\n } else if (identifier.type === 'isbn') {\n if (!('hasISBN' in pub)) {\n pub.hasISBN = [];\n }\n pub.hasISBN.push(identifier.id);\n }\n \n if ('url' in identifier) {\n if (!('hasLink' in pub)) {\n pub.hasLink = [];\n }\n pub.hasLink.push(identifier.url);\n }\n }\n \n delete pub.identifier;\n }\n \n return [pub, objHash, []];\n }\n \n /**\n * Convert values array to string\n * @param obj Object with values\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private valuesToString(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if ('values' in obj && Array.isArray(obj.values)) {\n obj.values = obj.values.join(', ');\n }\n return [obj, objHash, []];\n }\n \n /**\n * Guess sensor type based on archive, observation, and sensor\n * @param archive Archive type\n * @param observation Observation type\n * @param sensor Sensor data\n * @returns Guessed sensor type\n */\n private guessSensorType(archive: string, observation: string, sensor: any): string {\n if (('sensorGenus' in sensor) || ('sensorSpecies' in sensor)) {\n if (archive === 'MarineSediment') {\n return 'Foraminifera';\n } else if (archive === 'Coral') {\n return 'Polyp';\n } else if (archive === 'Wood') {\n return 'Vegetation';\n } else if (archive === 'MolluskShell') {\n return 'Bivalves';\n } else if (archive === 'Sclerosponge') {\n return 'Sponge';\n }\n return 'OrganicSensor';\n } else {\n if (archive === 'MarineSediment' && (observation === 'Uk37' || observation === 'Alkenone')) {\n return 'Coccolithophores';\n } else if (archive === 'MarineSediment' && observation === 'TEX86') {\n return 'Archea';\n } else if (archive === 'MarineSediment' && observation === 'D18O') {\n return 'Foraminifera';\n } else if (archive === 'MarineSediment' && observation === 'Mg/Ca') {\n return 'Foraminifera';\n } else if (archive === 'LakeSediment' && (observation === 'Uk37' || observation === 'Alkenone')) {\n return 'Coccolithophores';\n } else if (archive === 'LakeSediment' && observation === 'TEX86') {\n return 'Archea';\n } else if (archive === 'LakeSediment' && observation === 'Midge') {\n return 'Chironomids';\n } else if (archive === 'LakeSediment' && observation === 'BSi') {\n return 'Diatoms';\n } else if (archive === 'LakeSediment' && observation === 'Chironomid') {\n return 'Chironomids';\n } else if (archive === 'LakeSediment' && observation === 'Reflectance') {\n return 'PhotosyntheticAlgae';\n } else if (archive === 'LakeSediment' && observation === 'Pollen') {\n return 'Watershed';\n } else if (archive === 'Coral') {\n return 'Polyp';\n } else if (archive === 'Wood') {\n return 'Vegetation';\n } else if (archive === 'MolluskShell') {\n return 'Bivalves';\n } else if (archive === 'Sclerosponge') {\n return 'Sponge';\n } else if (archive === 'Speleothem') {\n return 'Karst';\n } else if (archive === 'GlacierIce') {\n return 'Snow';\n } else if (archive === 'LakeSediment' && observation === 'VarveThickness') {\n return 'Catchment';\n } else if (archive === 'GlacierIce' && observation === 'Melt') {\n return 'IceSurface';\n } else if (archive === 'Borehole') {\n return 'Soil';\n } else {\n return 'InorganicSensor';\n }\n }\n }\n \n /**\n * Standardize observation names\n * @param observation Observation name\n * @returns Standardized observation name\n */\n private getObservation(observation: string | null | undefined): string | null {\n if (observation === null || observation === undefined) {\n return null;\n }\n if (observation.toLowerCase() === 'alkenone') {\n return 'Uk37';\n }\n return camelCase(observation);\n }\n \n /**\n * Generate a variable ID\n * @param obj Variable object\n * @param parentId Parent ID\n * @returns Generated variable ID\n */\n private getVariableId(obj: any, parentId: string): string {\n const iobj: Record<string, any> = {};\n \n // Convert keys to lowercase for case-insensitive matching\n for (const [key, value] of Object.entries(obj)) {\n iobj[key.toLowerCase()] = value;\n }\n \n if (!('tsid' in iobj)) {\n iobj.tsid = uniqid();\n }\n \n let id = `${parentId}.${iobj.tsid}`;\n id += `.${iobj.variablename || ''}`;\n \n return id;\n }\n \n /**\n * Wrap integration time data\n * @param obj Object with integration time data\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private wrapIntegrationTime(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n const objId = obj['@id'];\n const pvals: Record<string, any> = {};\n \n // Process all integration time related properties\n const keysToDelete: string[] = [];\n \n for (const [key, value] of Object.entries(obj)) {\n if (/^integrationTime$/i.test(key)) {\n pvals.hasValue = value;\n keysToDelete.push(key);\n } else {\n const match = key.match(/^integrationTime(.+)/);\n if (match) {\n const nkey = match[1];\n const nkeyLcfirst = lcfirst(nkey);\n pvals[nkeyLcfirst] = value;\n keysToDelete.push(key);\n }\n }\n }\n \n // Delete the processed keys\n for (const key of keysToDelete) {\n delete obj[key];\n }\n \n // If we found any integration time values, create a new object\n if (Object.keys(pvals).length > 0) {\n const inTimeId = `${objId}.IntegrationTime`;\n obj.integrationTime = inTimeId;\n \n const inTime: Record<string, any> = {\n '@id': inTimeId,\n '@category': 'IntegrationTime',\n '@schema': 'IntegrationTime'\n };\n \n // Add all properties\n Object.assign(inTime, pvals);\n \n // Add to object hash\n objHash[inTimeId] = inTime;\n \n return [obj, objHash, [inTimeId]];\n }\n \n return [obj, objHash, []];\n }\n \n /**\n * Add interpretation rank\n * @param obj Interpretation object\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private addInterpretationRank(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if (!('rank' in obj) || typeof obj.rank !== 'number') {\n const rank = obj['@index'] - 1;\n obj.rank = rank;\n }\n return [obj, objHash, []];\n }\n \n /**\n * Wrap uncertainty data\n * @param obj Object with uncertainty data\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private wrapUncertainty(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n const objId = obj['@id'];\n const pvals: Record<string, any> = {};\n const keysToBeDeleted: string[] = [];\n \n // Process all uncertainty related properties\n for (const [key, value] of Object.entries(obj)) {\n if (/^uncertainty$/i.test(key)) {\n pvals.hasValue = value;\n keysToBeDeleted.push(key);\n } else if (/^uncertainty/i.test(key)) {\n pvals[key] = value;\n keysToBeDeleted.push(key);\n }\n }\n \n // Delete the processed keys\n for (const key of keysToBeDeleted) {\n delete obj[key];\n }\n \n // If we found any uncertainty values, create a new object\n if (Object.keys(pvals).length > 0) {\n const uncId = `${objId}.Uncertainty`;\n obj.hasUncertainty = uncId;\n \n const uncertainty: Record<string, any> = {\n '@id': uncId,\n '@category': 'Uncertainty'\n };\n \n // Add all properties\n for (const [prop, value] of Object.entries(pvals)) {\n uncertainty[prop] = value;\n }\n \n // Add to object hash\n objHash[uncId] = uncertainty;\n \n return [obj, objHash, [uncId]];\n }\n \n return [obj, objHash, []];\n }\n \n /**\n * Add found in table reference\n * @param obj Object to modify\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private addFoundInTable(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if (obj['@parent'] && obj['@parent']['@id']) {\n obj.foundInTable = obj['@parent']['@id'];\n }\n return [obj, objHash, []];\n }\n \n /**\n * Add found in dataset reference\n * @param obj Object to modify\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private addFoundInDataset(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n let parent = obj['@parent'];\n let top = parent;\n \n while (parent) {\n top = parent;\n parent = parent['@parent'];\n }\n \n if (top && top['@id']) {\n obj.foundInDataset = top['@id'];\n }\n \n return [obj, objHash, []];\n }\n \n /**\n * Add variable values from CSV data\n * @param obj Variable object\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private addVariableValues(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if (!obj['@parent'] || !obj['@parent']['@id']) {\n return [obj, objHash, []];\n }\n \n const csvName = `${obj['@parent']['@id']}.csv`;\n \n if (!('number' in obj)) {\n obj.number = obj['@index'];\n }\n \n if (typeof obj.number === 'string') {\n obj.number = parseInt(obj.number, 10);\n }\n \n if (!Array.isArray(obj.number)) {\n obj.number = [obj.number];\n }\n \n const indices = obj.number.map((col: any) => parseInt(col, 10) - 1);\n \n // Enhanced CSV lookup - try multiple variants\n let csvData: any[][] | null = null;\n const lookupKeys = [\n csvName, // e.g., \"tableId.csv\"\n csvName.split('/').pop(), // basename only\n ];\n \n // Also try all CSV filenames that end with the expected name\n const availableCsvs = Object.keys(this.lipdCsvs);\n for (const availableCsv of availableCsvs) {\n if (availableCsv.endsWith(csvName)) {\n lookupKeys.push(availableCsv);\n }\n }\n \n logger.debug(`Looking for CSV with keys: ${lookupKeys.join(', ')}`);\n logger.debug(`Available CSVs: ${availableCsvs.join(', ')}`);\n \n for (const key of lookupKeys) {\n if (key && key in this.lipdCsvs) {\n csvData = this.lipdCsvs[key];\n logger.debug(`Found CSV data with key: ${key}`);\n break;\n }\n }\n \n if (csvData) {\n let values: any[] = [];\n \n if (indices.length === 1) {\n if (indices[0] >= 0 && csvData.length > 0 && indices[0] < csvData[0].length) {\n // Extract column from all rows\n values = csvData.map(row => row[indices[0]]);\n }\n } else {\n // Handle multiple columns\n values = indices.map((index: number) => {\n return csvData!.map((row: any[]) => row[index]);\n });\n }\n \n // Convert to JSON string\n const valString = JSON.stringify(values);\n obj.hasValues = valString;\n logger.debug(`Added ${values.length} values for variable`);\n \n return [obj, objHash, []];\n } else {\n logger.debug(`CSV '${csvName}' not found in zip — cannot fill hasValues. Available: ${availableCsvs.join(', ')}`);\n }\n \n return [obj, objHash, []];\n }\n \n /**\n * Add standard variable reference\n * @param obj Variable object\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private addStandardVariable(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if ('variableName' in obj) {\n const name = obj.variableName;\n const synonyms = SYNONYMS.VARIABLES?.PaleoVariable;\n \n if (typeof name === 'string' && synonyms && name.toLowerCase() in synonyms) {\n obj.hasStandardVariable = synonyms[name.toLowerCase()].id;\n \n // Only add object label in the current graph if set\n if (this.addLabels) {\n const label = synonyms[name.toLowerCase()].label;\n this.setObjectLabel(obj.hasStandardVariable, label);\n }\n }\n }\n \n return [obj, objHash, []];\n }\n \n /**\n * Stringify column numbers array\n * @param obj Variable object\n * @param objHash Object hash\n * @returns [modified object, modified hash, added objects]\n */\n private stringifyColumnNumbersArray(obj: any, objHash: Record<string, any>): [any, Record<string, any>, string[]] {\n if ('number' in obj && Array.isArray(obj.number) && obj.number.length > 1) {\n obj.hasColumnNumber = JSON.stringify(obj.number);\n delete obj.number;\n }\n \n return [obj, objHash, []];\n }\n\n private async _convertBrowser(lipdPath: string): Promise<void> {\n try {\n // Fetch the LiPD file as ArrayBuffer\n const response = await fetch(lipdPath);\n if (!response.ok) {\n throw new Error(`Failed to fetch LiPD file: ${response.statusText}`);\n }\n const arrayBuffer = await response.arrayBuffer();\n\n // Load with JSZip\n const zip = await JSZip.loadAsync(arrayBuffer);\n\n // Separate CSV and JSON entries so we can ensure CSVs are cached first\n const csvEntries: Array<[string, JSZip.JSZipObject]> = [];\n const jsonEntries: JSZip.JSZipObject[] = [];\n\n for (const fileName of Object.keys(zip.files)) {\n const file = zip.files[fileName];\n if (file.dir) continue;\n\n if (fileName.endsWith('.csv')) {\n csvEntries.push([fileName, file]);\n } else if (fileName.endsWith('.jsonld')) {\n jsonEntries.push(file);\n }\n }\n\n // Pass 1: load all CSVs\n for (const [fileName, file] of csvEntries) {\n const csvContent = await file.async('string');\n const parsedCsv = Papa.parse(csvContent, { header: false });\n this.lipdCsvs[fileName] = parsedCsv.data as any[][];\n const baseName = fileName.split('/').pop();\n if (baseName) {\n this.lipdCsvs[baseName] = parsedCsv.data as any[][];\n }\n logger.debug(`Loaded CSV '${fileName}' (${parsedCsv.data.length}×${((parsedCsv.data as any[])[0] as any[]).length || 0})`);\n }\n\n // Pass 2: process JSON after CSVs are ready\n for (const file of jsonEntries) {\n const jsonContent = await file.async('string');\n this._loadLipdJsonString(jsonContent);\n }\n } catch (error) {\n logger.error('Error converting LiPD in browser: %s', error instanceof Error ? error.message : String(error));\n throw error;\n }\n }\n\n /**\n * Load LiPD JSON content that is already available as a string (used in browser flow)\n * @param jsonContent Raw JSON-LD content\n */\n private _loadLipdJsonString(jsonContent: string): void {\n try {\n const obj = JSON.parse(jsonContent);\n\n // Set graph URL based on dataset name if available\n if (obj.dataSetName) {\n this.graphUrl = NSURL + \"/\" + sanitizeId(obj.dataSetName);\n }\n\n // Map LiPD data to RDF\n const objHash: Record<string, any> = {};\n this._mapLipdToJson(obj, null, null, 'Dataset', 'Dataset', objHash);\n\n // Set hasUrl to the source if possible (not available from buffer)\n if (obj['@id']) {\n objHash[obj['@id']].hasUrl = DATAURL + \"/\" + obj['@id'] + '.lpd';\n }\n\n // Create individuals for all objects in the hash\n for (const item of Object.values(objHash)) {\n this._createIndividualFull(item);\n }\n } catch (error) {\n logger.error('Error loading JSON content in browser: %s', error instanceof Error ? error.message : String(error));\n throw error;\n }\n }\n} ","import { Logger } from './utils/logger';\nimport { RDFGraph } from './rdfGraph';\nimport { LiPD } from './lipd';\nimport { Store } from 'n3';\n\nconst logger = Logger.getInstance();\n\nexport class LiPDSeries extends RDFGraph {\n private lipds: { [key: string]: LiPD } = {};\n\n constructor(graph?: Store) {\n super(graph);\n }\n\n /**\n * Load LiPD data into the series\n * @param lipd LiPD object to load\n */\n public load(lipd: LiPD): void {\n // TODO: Implement loading of LiPD data into series\n }\n} ","export const QUERY_DSNAME = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dsname WHERE {\n GRAPH ?g {\n ?ds a le:Dataset .\n ?ds le:hasName ?dsname\n }\n }\n`\n\nexport const QUERY_DSID = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dsid WHERE {\n GRAPH ?g {\n ?ds a le:Dataset .\n OPTIONAL{?ds le:hasDatasetId ?dsid}\n }\n }\n`\n\nexport const QUERY_UNIQUE_ARCHIVE_TYPE = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT DISTINCT ?archiveType WHERE {\n GRAPH ?g {\n ?ds a le:Dataset .\n ?ds le:hasArchiveType ?archiveType\n }\n }\n`\n\nexport const QUERY_ENSEMBLE_TABLE_SHORT = `\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n SELECT ?datasetName ?ensembleTable ?ensembleVariableName ?ensembleVariableValues ?ensembleVariableUnits ?ensembleDepthName ?ensembleDepthValues ?ensembleDepthUnits ?notes \n WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?datasetName .\n FILTER regex(str(?datasetName), \"[dsname].*\", \"i\").\n \n ?ds le:hasChronData ?chron .\n ?chron le:modeledBy ?model .\n ?model le:hasEnsembleTable ?ensembleTable .\n OPTIONAL{?ensembleTable le:hasNotes ?notes}\n \n ?ensembleTable le:hasVariable ?ensvar .\n ?ensvar le:hasName ?ensembleVariableName .\n FILTER (regex(lcase(str(?ensembleVariableName)), \"year.*\", \"i\") || regex(str(?ensembleVariableName), \"age.*\", \"i\")) .\n ?ensvar le:hasValues ?ensembleVariableValues\n OPTIONAL{\n ?ensvar le:hasUnits ?ensembleVariableUnitsObj .\n ?ensembleVariableUnitsObj rdfs:label ?ensembleVariableUnits .\n }\n \n ?ensembleTable le:hasVariable ?ensdepthvar .\n ?ensdepthvar le:hasName ?ensembleDepthName .\n FILTER regex(lcase(str(?ensembleDepthName)), \"[ensembleDepthVarName].*\").\n ?ensdepthvar le:hasValues ?ensembleDepthValues .\n OPTIONAL{\n ?ensdepthvar le:hasUnits ?ensembleDepthUnitsObj .\n ?ensembleDepthUnitsObj rdfs:label ?ensembleDepthUnits .\n }\n }\n`\n\nexport const QUERY_ENSEMBLE_TABLE = `\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n SELECT ?datasetName ?ensembleTable ?ensembleVariableName ?ensembleVariableValues ?ensembleVariableUnits ?ensembleDepthName ?ensembleDepthValues ?ensembleDepthUnits ?notes ?methodobj ?methods\n WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?datasetName .\n FILTER regex(str(?datasetName), \"[dsname].*\", \"i\").\n \n ?ds le:hasChronData ?chron .\n ?chron le:modeledBy ?model .\n ?model le:hasEnsembleTable ?ensembleTable .\n OPTIONAL{?ensembleTable le:hasNotes ?notes}\n \n ?ensembleTable le:hasVariable ?ensvar .\n ?ensvar le:hasName ?ensembleVariableName .\n FILTER regex(lcase(str(?ensembleVariableName)), \"[ensembleVarName].*\", \"i\").\n ?ensvar le:hasValues ?ensembleVariableValues\n OPTIONAL{\n ?ensvar le:hasUnits ?ensembleVariableUnitsObj .\n ?ensembleVariableUnitsObj rdfs:label ?ensembleVariableUnits .\n }\n \n ?ensembleTable le:hasVariable ?ensdepthvar .\n ?ensdepthvar le:hasName ?ensembleDepthName .\n FILTER regex(lcase(str(?ensembleDepthName)), \"[ensembleDepthVarName].*\", \"i\").\n ?ensdepthvar le:hasValues ?ensembleDepthValues .\n OPTIONAL{\n ?ensdepthvar le:hasUnits ?ensembleDepthUnitsObj .\n ?ensembleDepthUnitsObj rdfs:label ?ensembleDepthUnits .\n }\n }\n`\n\n\nexport const QUERY_BIBLIO = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dsname ?title (GROUP_CONCAT(?authorName;separator=\" and \") as ?authors) \n ?doi ?pubyear ?year ?journal ?volume ?issue ?pages ?type ?publisher ?report ?citeKey ?edition ?institution ?url ?url2\n WHERE { \n ?ds a le:Dataset .\n ?ds le:hasName ?dsname .\n ?ds le:hasPublication ?pub .\n OPTIONAL{?pub le:hasDOI ?doi .}\n OPTIONAL{\n ?pub le:hasAuthor ?author .\n ?author le:hasName ?authorName .\n }\n OPTIONAL{?pub le:publicationYear ?pubyear .}\n OPTIONAL{?pub le:hasYear ?year .}\n OPTIONAL{?pub le:hasTitle ?title .}\n OPTIONAL{?pub le:hasJournal ?journal .}\n OPTIONAL{?pub le:hasVolume ?volume .}\n OPTIONAL{?pub le:hasIssue ?issue .}\n OPTIONAL{?pub le:hasPages ?pages .}\n OPTIONAL{?pub le:hasType ?type .}\n OPTIONAL{?pub le:hasPublisher ?publisher .}\n OPTIONAL{?pub le:hasReport ?report .}\n OPTIONAL{?pub le:hasCiteKey ?citeKey .}\n OPTIONAL{?pub le:hasEdition ?edition .}\n OPTIONAL{?pub le:hasInstitution ?institution .}\n OPTIONAL{?pub le:hasLink ?url .}\n OPTIONAL{?pub le:hasUrl ?url2 .}\n }\n GROUP BY ?pub ?dsname ?title ?doi ?year ?pubyear ?journal ?volume ?issue ?pages ?type ?publisher ?report ?citeKey ?edition ?institution ?url ?url2\n`\n\nexport const QUERY_DISTINCT_VARIABLE=`\n PREFIX le: <http://linked.earth/ontology#>\n \n SELECT DISTINCT ?variableName \n WHERE {\n ?uri le:hasName ?variableName .\n ?uri le:hasVariableId ?TSID\n }\n`\n\nexport const QUERY_DISTINCT_PROXY = `\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n \n SELECT DISTINCT ?proxy \n WHERE {\n OPTIONAL{?uri le:hasProxy ?proxyObj .\n ?proxyObj rdfs:label ?proxy .}\n ?uri le:hasVariableId ?TSID\n }\n`\n\nexport const QUERY_VARIABLE = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?uri ?TSID ?variableName \n WHERE {\n ?uri le:hasName ?variableName .\n ?uri le:hasVariableId ?TSID\n }\n`\n\nexport const QUERY_VARIABLE_GRAPH = `\n PREFIX le: <http://linked.earth/ontology#>\n\n CONSTRUCT {\n <[varid]> ?p1 ?o1 .\n <[varid]> ?pv1 ?v1 .\n ?s2 ?pv2 ?v2 .\n }\n WHERE {\n # level 1\n <[varid]> ?p1 ?o1 # get objects\n FILTER (\n (?p1 != le:foundInTable && ?p1 != le:takenAtDepth) &&\n isIRI(?o1)\n ) .\n <[varid]> ?pv1 ?v1 # get primitives\n FILTER (isLiteral(?v1)) .\n \n BIND (?o1 as ?s2) . # rename binding for readability\n\n # level 2\n ?s2 ?pv2 ?v2 \n FILTER (isLiteral(?v2)) .\n }\n`\n\nexport const QUERY_ALL_VARIABLES_GRAPH = `\n PREFIX le: <http://linked.earth/ontology#>\n\n INSERT {\n GRAPH ?var\n {\n ?var ?pv1 ?v1 .\n ?var ?p1 ?o1 . \n ?o1 ?pv2 ?v2 .\n ?o1 ?p2 ?o2 .\n ?o2 ?pv3 ?v3 .\n ?var le:foundInTable ?table .\n ?var le:foundInDataset ?ds .\n ?var le:foundInDatasetName ?dsname\n }\n }\n WHERE {\n ?table le:hasVariable ?var .\n {\n {\n # level 1\n ?var le:foundInDataset ?ds .\n ?ds le:hasName ?dsname .\n ?var ?pv1 ?v1 # get primitives\n FILTER (isLiteral(?v1)) .\n }\n UNION\n {\n # level 2\n {\n ?var ?p1 ?o1\n FILTER (?p1 != le:foundInTable && ?p1 != le:foundInDataset) .\n ?o1 ?pv2 ?v2 \n FILTER (isLiteral(?v2)) .\n } .\n }\n #UNION\n #{\n # # level 3\n # {\n # ?var ?p1 ?o1\n # FILTER (?p1 NOT IN (le:foundInTable, le:foundInDataset)) .\n # ?o1 ?p2 ?o2\n # FILTER (?p1 NOT IN (le:foundInTable, le:foundInDataset)) .\n # ?o2 ?pv3 ?v3\n # FILTER (isLiteral(?v2)) .\n # } .\n #}\n }\n }\n`\n\n\nexport const QUERY_FILTER_GEO = `\n PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dsname WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dsname .\n ?ds le:hasLocation ?loc .\n { {?loc le:hasLatitude ?lat} UNION {?loc wgs84:lat ?lat } } .\n { {?loc le:hasLongitude ?lon} UNION {?loc wgs84:long ?lon } } .\n FILTER ( ?lat >= [latMin] && ?lat < [latMax] && ?lon >= [lonMin] && ?lon < [lonMax] ) .\n }\n`\n\nexport const QUERY_FILTER_ARCHIVE_TYPE = `\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n SELECT ?dsname WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dsname .\n ?ds le:hasArchiveType ?archiveTypeObj .\n ?archiveTypeObj rdfs:label ?archiveType .\n FILTER regex(str(?archiveType), \"[archiveType].*\", \"i\")\n }\n`\n\nexport const QUERY_FILTER_DATASET_NAME = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dsname WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dsname .\n FILTER regex(str(?dsname), \"[datasetName].*\", \"i\")\n }\n`\n\nexport const QUERY_FILTER_TIME = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dsname ?minage ?maxage WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dsname .\n \n ?ds le:hasPaleoData ?data .\n ?data le:hasMeasurementTable ?table .\n ?table le:hasVariable ?var .\n ?table le:hasVariable ?timevar .\n ?timevar le:hasName ?time_variableName .\n FILTER (regex(str(?time_variableName), \"year.*\") || regex(str(?time_variableName), \"age.*\")) .\n ?timevar le:hasMinValue ?minage .\n ?timevar le:hasMaxValue ?maxage .\n}\n`\n\nexport const QUERY_FILTER_VARIABLE_NAME = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?uri ?dsuri ?dsname ?tableuri ?id ?name WHERE {\n ?uri le:hasVariableId ?id .\n ?uri le:hasName ?name .\n FILTER regex(str(?name), \"[name].*\", \"i\") .\n ?uri le:foundInDataset ?dsuri .\n ?uri le:foundInDatasetName ?dataSetName .\n ?uri le:foundInTable ?tableuri .\n }\n`\n\nexport const QUERY_FILTER_VARIABLE_PROXY = `\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n SELECT ?uri ?dsuri ?dsname ?tableuri ?id ?proxy WHERE {\n ?uri le:hasVariableId ?id .\n ?uri le:hasProxy ?proxyObj .\n ?proxyObj rdfs:label ?proxy .\n FILTER regex(str(?proxy), \"[proxy].*\", \"i\") .\n ?uri le:foundInDataset ?dsuri .\n ?uri le:foundInDatasetName ?dataSetName .\n ?uri le:foundInTable ?tableuri .\n }\n`\n\nexport const QUERY_FILTER_VARIABLE_RESOLUTION = `\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?uri ?dsuri ?dsname ?tableuri ?id ?v WHERE {\n ?uri le:hasVariableId ?id .\n ?uri le:hasResolution ?res .\n ?res le:has[stat]Value ?v .\n FILTER(?v<[value]) .\n ?uri le:foundInDataset ?dsuri .\n ?uri le:foundInDatasetName ?dataSetName .\n ?uri le:foundInTable ?tableuri . \n }\n`\n\n\nexport const QUERY_TIMESERIES_ESSENTIALS_PALEO =`\n PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n SELECT ?dataSetName ?archiveType ?geo_meanLat ?geo_meanLon ?geo_meanElev \n ?paleoData_variableName ?paleoData_values ?paleoData_units \n ?paleoData_proxy ?paleoData_proxyGeneral ?time_variableName ?time_values \n ?time_units ?depth_variableName ?depth_values ?depth_units WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dataSetName .\n FILTER regex(str(?dataSetName), \"[dsname].*\", \"i\").\n \n OPTIONAL{\n ?ds le:hasArchiveType ?archiveTypeObj .\n ?archiveTypeObj rdfs:label ?archiveType .\n }\n \n ?ds le:hasLocation ?loc .\n OPTIONAL { {?loc le:hasLatitude ?geo_meanLat} UNION {?loc wgs84:lat ?geo_meanLat } } .\n OPTIONAL { {?loc le:hasLongitude ?geo_meanLon} UNION {?loc wgs84:long ?geo_meanLon } } .\n OPTIONAL { {?loc le:hasElevation ?geo_meanElev} UNION {?loc wgs84:alt ?geo_meanElev } } .\n \n ?ds le:hasPaleoData ?data .\n ?data le:hasMeasurementTable ?table .\n ?table le:hasVariable ?var .\n \n ?var le:hasName ?paleoData_variableName .\n FILTER (!regex(str(?paleoData_variableName), \"year.*\") && !regex(str(?paleoData_variableName), \"age.*\") && !regex(str(?paleoData_variableName), \"depth.*\")) .\n \t\t\n ?var le:hasValues ?paleoData_values .\n OPTIONAL{\n ?var le:hasUnits ?paleoData_unitsObj .\n ?paleoData_unitsObj rdfs:label ?paleoData_units .\n }\n OPTIONAL{\n ?var le:hasProxy ?paleoData_proxyObj .\n ?paleoData_proxyObj rdfs:label ?paleoData_proxy .\n }\n OPTIONAL{\n ?var le:hasProxyGeneral ?paleoData_proxyGeneralObj .\n ?paleoData_proxyGeneralObj rdfs:label ?paleoData_proxyGeneral .\n }\n \n \n OPTIONAL{\n ?table le:hasVariable ?timevar .\n ?timevar le:hasName ?time_variableName .\n FILTER (regex(str(?time_variableName), \"year.*\") || regex(str(?time_variableName), \"age.*\")) .\n ?timevar le:hasValues ?time_values .\n OPTIONAL{\n ?timevar le:hasUnits ?time_unitsObj .\n ?time_unitsObj rdfs:label ?time_units .\n }\n }\n \n OPTIONAL{\n ?table le:hasVariable ?depthvar .\n ?depthvar le:hasName ?depth_variableName .\n FILTER regex(str(?depth_variableName), \"depth.*\") .\n ?depthvar le:hasValues ?depth_values .\n OPTIONAL{\n ?depthvar le:hasUnits ?depth_unitsObj .\n ?depth_unitsObj rdfs:label ?depth_units .\n }\n }\n \n }\n`\n\nexport const QUERY_TIMESERIES_ESSENTIALS_CHRON =`\n PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n SELECT ?dataSetName ?archiveType ?geo_meanLat ?geo_meanLon ?geo_meanElev \n ?chronData_variableName ?chronData_values ?chronData_units \n ?time_variableName ?time_values \n ?time_units ?depth_variableName ?depth_values ?depth_units WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dataSetName .\n FILTER regex(str(?dataSetName), \"[dsname].*\", \"i\").\n \n OPTIONAL{\n ?ds le:hasArchiveType ?archiveTypeObj .\n ?archiveTypeObj rdfs:label ?archiveType .\n }\n \n ?ds le:hasLocation ?loc .\n OPTIONAL { {?loc le:hasLatitude ?geo_meanLat} UNION {?loc wgs84:lat ?geo_meanLat } } .\n OPTIONAL { {?loc le:hasLongitude ?geo_meanLon} UNION {?loc wgs84:long ?geo_meanLon } } .\n OPTIONAL { {?loc le:hasElevation ?geo_meanElev} UNION {?loc wgs84:alt ?geo_meanElev } } .\n \n ?ds le:hasChronData ?data .\n ?data le:hasMeasurementTable ?table .\n ?table le:hasVariable ?var .\n ?var le:hasName ?chronData_variableName .\n \t\t\n ?var le:hasValues ?chronData_values .\n OPTIONAL{\n ?var le:hasUnits ?chronData_unitsObj .\n ?chronData_unitsObj rdfs:label ?chronData_units .\n }\n \n OPTIONAL{?table le:hasVariable ?timevar .\n ?timevar le:hasName ?time_variableName .\n FILTER (regex(str(?time_variableName), \"year.*\") || regex(str(?time_variableName), \"age.*\")) .\n ?timevar le:hasValues ?time_values .\n OPTIONAL{\n ?timevar le:hasUnits ?time_unitsObj .\n ?time_unitsObj rdfs:label ?time_units .\n }\n }\n \n OPTIONAL{?table le:hasVariable ?depthvar .\n ?depthvar le:hasName ?depth_variableName .\n FILTER regex(str(?depth_variableName), \"depth.*\") .\n ?depthvar le:hasValues ?depth_values .\n OPTIONAL{\n ?depthvar le:hasUnits ?depth_unitsObj .\n ?depth_unitsObj rdfs:label ?depth_units .\n }\n }\n }\n`\n\nexport const QUERY_VARIABLE_PROPERTIES=`\n PREFIX le: <http://linked.earth/ontology#>\n SELECT DISTINCT ?property WHERE {\n \n ?ds a le:Dataset .\n \n {?ds le:hasPaleoData ?data .\n ?data le:hasMeasurementTable ?table .\n ?table le:hasVariable ?var .\n ?var ?property ?value .}\n \n UNION\n \n {OPTIONAL{?ds le:hasChronData ?data1 .\n ?data1 le:hasMeasurementTable ?table1 .\n ?table1 le:hasVariable ?var1 .\n ?var1 ?property ?value1 .}}\n \n }\n`\n\n// At the LiPDSeries level\n\nexport const QUERY_LiPDSERIES_PROPERTIES=`\n SELECT DISTINCT ?p WHERE {\n ?uri ?p ?v .}\n `\n\nexport const QUERY_DATASET_PROPERTIES=`\n PREFIX le: <http://linked.earth/ontology#>\n SELECT DISTINCT ?property WHERE {\n ?ds a le:Dataset .\n ?ds ?property ?value .\n }\n`\n\nexport const QUERY_MODEL_PROPERTIES=`\n PREFIX le: <http://linked.earth/ontology#>\n SELECT DISTINCT ?property WHERE {\n \n ?ds a le:Dataset .\n \n {OPTIONAL{?ds le:hasPaleoData ?data .\n ?data le:modeledBy ?paleomodel .\n ?paleomodel ?property ?value .}}\n \n UNION\n \n {OPTIONAL{?ds le:hasChronData ?chron .\n ?chron le:modeledBy ?chronmodel .\n ?chronmodel ?property ?value .}}\n \n }\n`\n\nexport const QUERY_VARIABLE_ESSENTIALS=`\n PREFIX le: <http://linked.earth/ontology#>\n PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n \n SELECT ?dataSetName ?archiveType ?name ?TSID ?values ?units ?proxy WHERE {\n ?var le:hasName ?name .\n ?var le:foundInDatasetName ?dataSetName .\n #FILTER regex(?dataSetName, \"[dsname].*\", \"i\").\n \n OPTIONAL{?var le:hasVariableId ?TSID .}\n ?var le:hasValues ?values .\n OPTIONAL{\n ?var le:hasUnits ?unitsObj .\n ?unitsObj rdfs:label ?units .\n }\n OPTIONAL{\n ?var le:hasArchiveType ?archiveTypeObj .\n ?archiveTypeObj rdfs:label ?archiveType .\n }\n OPTIONAL{\n ?var le:hasProxy ?paleoData_proxyObj .\n ?paleoData_proxyObj rdfs:label ?paleoData_proxy .\n } \n }\n`\n\nexport const QUERY_LOCATION =`\n PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT ?dataSetName ?geo_meanLat ?geo_meanLon ?geo_meanElev WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dataSetName .\n FILTER regex(str(?dataSetName), \"[dsname].*\", \"i\").\n \n ?ds le:hasLocation ?loc .\n OPTIONAL { {?loc le:hasLatitude ?geo_meanLat} UNION {?loc wgs84:lat ?geo_meanLat } } .\n OPTIONAL { {?loc le:hasLongitude ?geo_meanLon} UNION {?loc wgs84:long ?geo_meanLon } } .\n OPTIONAL { {?loc le:hasElevation ?geo_meanElev} UNION {?loc wgs84:alt ?geo_meanElev } } \n }\n`\n\nexport const QUERY_FILTER_COMPILATION=`\n PREFIX le: <http://linked.earth/ontology#>\n\n SELECT DISTINCT ?dataSetName WHERE {\n ?ds a le:Dataset .\n ?ds le:hasName ?dataSetName .\n \n ?ds le:hasPaleoData ?data .\n ?data le:hasMeasurementTable ?table .\n ?table le:hasVariable ?var .\n \n ?var le:partOfCompilation ?compilation . \n ?compilation le:hasName ?compilationName .\n FILTER regex(str(?compilationName), \"[compilationName].*\", \"i\")}\n \n `\n\nexport const QUERY_COMPILATION_NAME=`\n PREFIX le: <http://linked.earth/ontology#>\n \n SELECT DISTINCT ?compilationName WHERE {\n ?var a le:Variable .\n ?var le:partOfCompilation ?compilation . \n ?compilation le:hasName ?compilationName .}\n`\n","import { Logger } from './logger';\nimport { LipdToRDF } from './lipdToRdf';\nimport { Store } from 'n3';\n\nconst logger = Logger.getInstance();\n\n/**\n * Convert a single LiPD file to an RDF graph\n * @param args Tuple containing [lipdfile, standardize, addLabels]\n * @returns RDF graph for the LiPD file\n */\nasync function convertLipdToGraph(args: [string, boolean, boolean]): Promise<Store> {\n const [lipdfile, standardize, addLabels] = args;\n try {\n const converter = new LipdToRDF(standardize, addLabels);\n await converter.convert(lipdfile);\n return converter.store;\n } catch (error) {\n logger.error('Error converting LiPD file %s to RDF: %s', lipdfile, error instanceof Error ? error.message : String(error));\n throw error;\n }\n}\n\n/**\n * Load multiple LiPD files into an RDF graph\n * @param graph Target RDF graph to add data to\n * @param lipdFiles Array of LiPD file paths\n * @param parallel Whether to process files in parallel\n * @param standardize Whether to standardize the data\n * @param addLabels Whether to add labels\n * @returns Updated RDF graph\n */\nexport async function multiLoadLipd(\n store: Store,\n lipdFiles: string[],\n parallel: boolean = true,\n standardize: boolean = true,\n addLabels: boolean = true\n): Promise<Store> {\n const args = lipdFiles.map(file => [file, standardize, addLabels] as [string, boolean, boolean]);\n \n if (parallel) {\n // Process files in parallel\n const promises = args.map(arg => convertLipdToGraph(arg));\n const subgraphs = await Promise.all(promises);\n \n // Add all subgraphs to the main graph\n for (const subgraph of subgraphs) {\n // Merge the subgraph into the main graph\n const quads = subgraph.getQuads(null, null, null, null);\n for (const quad of quads) {\n if (store.getQuads(quad.subject, quad.predicate, quad.object, quad.graph).length === 0) {\n store.addQuad(quad);\n }\n }\n }\n } else {\n // Process files sequentially\n for (const arg of args) {\n const subgraph = await convertLipdToGraph(arg);\n // Merge the subgraph into the main graph\n const quads = subgraph.getQuads(null, null, null, null);\n for (const quad of quads) {\n if (store.getQuads(quad.subject, quad.predicate, quad.object, quad.graph).length === 0) {\n store.addQuad(quad);\n }\n }\n }\n }\n \n return store;\n} ","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class ArchiveType {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.ARCHIVES?.ArchiveType;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: ArchiveType): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): ArchiveType | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in ArchiveType.synonyms) {\n const synobj = ArchiveType.synonyms[lowerSynonym];\n return new ArchiveType(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class ArchiveTypeConstants {\n static Borehole = new ArchiveType(\"http://linked.earth/ontology/archive#Borehole\", \"Borehole\");\n static Coral = new ArchiveType(\"http://linked.earth/ontology/archive#Coral\", \"Coral\");\n static FluvialSediment = new ArchiveType(\"http://linked.earth/ontology/archive#FluvialSediment\", \"Fluvial sediment\");\n static GlacierIce = new ArchiveType(\"http://linked.earth/ontology/archive#GlacierIce\", \"Glacier ice\");\n static GroundIce = new ArchiveType(\"http://linked.earth/ontology/archive#GroundIce\", \"Ground ice\");\n static LakeSediment = new ArchiveType(\"http://linked.earth/ontology/archive#LakeSediment\", \"Lake sediment\");\n static MarineSediment = new ArchiveType(\"http://linked.earth/ontology/archive#MarineSediment\", \"Marine sediment\");\n static Midden = new ArchiveType(\"http://linked.earth/ontology/archive#Midden\", \"Midden\");\n static MolluskShell = new ArchiveType(\"http://linked.earth/ontology/archive#MolluskShell\", \"Mollusk shell\");\n static Peat = new ArchiveType(\"http://linked.earth/ontology/archive#Peat\", \"Peat\");\n static Sclerosponge = new ArchiveType(\"http://linked.earth/ontology/archive#Sclerosponge\", \"Sclerosponge\");\n static Shoreline = new ArchiveType(\"http://linked.earth/ontology/archive#Shoreline\", \"Shoreline\");\n static Speleothem = new ArchiveType(\"http://linked.earth/ontology/archive#Speleothem\", \"Speleothem\");\n static TerrestrialSediment = new ArchiveType(\"http://linked.earth/ontology/archive#TerrestrialSediment\", \"Terrestrial sediment\");\n static Wood = new ArchiveType(\"http://linked.earth/ontology/archive#Wood\", \"Wood\");\n static Documents = new ArchiveType(\"http://linked.earth/ontology/archive#Documents\", \"Documents\");\n static Other = new ArchiveType(\"http://linked.earth/ontology/archive#Other\", \"Other\");\n}","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\n\n\n\nexport class Change {\n\n public name: string | null;\n public notes: string[];\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.name = null;\n this.notes = [];\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Change\";\n this._id = this._ns + \"/\" + uniqid(\"Change\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Change {\n const thisObj = new Change();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n thisObj.notes = [];\n for (const value of (data.notes || []) as any[]) {\n thisObj.notes.push(value);\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Change {\n const thisObj = new Change();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n thisObj.notes = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasName\"] = [obj];\n }\n if (this.notes.length > 0) {\n data[this._id][\"hasNotes\"] = [];\n for (const valueObj of this.notes) {\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"name\"] = obj;\n }\n if (this.notes.length > 0) {\n data[\"notes\"] = [];\n for (const valueObj of this.notes) {\n const obj = valueObj\n data[\"notes\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Change {\n const thisObj = new Change();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"name\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n thisObj.notes = [];\n for (const value of pvalue as any[]) {\n obj = value\n thisObj.notes.push(obj);\n }\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n }\n getNotes(): string[] {\n return this.notes;\n }\n\n setNotes(notes: string[]): void {\n // if (!Array.isArray(notes)) {\n // throw new Error(\"Error: notes is not an array\");\n // }\n // if (!notes.every(x => x instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n\n addNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes.push(notes);\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { Change } from \"./change\";\n\n\n\nexport class ChangeLog {\n\n public changes: Change[];\n public curator: string | null;\n public lastVersion: string | null;\n public notes: string | null;\n public timestamp: string | null;\n public version: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.changes = [];\n this.curator = null;\n this.lastVersion = null;\n this.notes = null;\n this.timestamp = null;\n this.version = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#ChangeLog\";\n this._id = this._ns + \"/\" + uniqid(\"ChangeLog\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): ChangeLog {\n const thisObj = new ChangeLog();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.curator !== null) {\n thisObj.curator = data.curator;\n }\n if (data.lastVersion !== null) {\n thisObj.lastVersion = data.lastVersion;\n }\n if (data.notes !== null) {\n thisObj.notes = data.notes;\n }\n if (data.timestamp !== null) {\n thisObj.timestamp = data.timestamp;\n }\n if (data.version !== null) {\n thisObj.version = data.version;\n }\n thisObj.changes = [];\n for (const value of (data.changes || []) as any[]) {\n thisObj.changes.push(Change.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): ChangeLog {\n const thisObj = new ChangeLog();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasChanges\") {\n thisObj.changes = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Change.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.changes.push(obj);\n }\n }\n \n else if (key === \"hasCurator\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.curator = obj;\n }\n }\n \n else if (key === \"hasLastVersion\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.lastVersion = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes = obj;\n }\n }\n \n else if (key === \"hasTimestamp\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.timestamp = obj;\n }\n }\n \n else if (key === \"hasVersion\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.version = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.changes.length > 0) {\n data[this._id][\"hasChanges\"] = [];\n for (const valueObj of this.changes) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasChanges\"].push(obj);\n }\n }\n if (this.curator !== null) {\n const valueObj = this.curator;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCurator\"] = [obj];\n }\n if (this.lastVersion !== null) {\n const valueObj = this.lastVersion;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasLastVersion\"] = [obj];\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"] = [obj];\n }\n if (this.timestamp !== null) {\n const valueObj = this.timestamp;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasTimestamp\"] = [obj];\n }\n if (this.version !== null) {\n const valueObj = this.version;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVersion\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.changes.length > 0) {\n data[\"changes\"] = [];\n for (const valueObj of this.changes) {\n const obj = valueObj.toJson()\n data[\"changes\"].push(obj);\n }\n }\n if (this.curator !== null) {\n const valueObj = this.curator;\n const obj = valueObj\n data[\"curator\"] = obj;\n }\n if (this.lastVersion !== null) {\n const valueObj = this.lastVersion;\n const obj = valueObj\n data[\"lastVersion\"] = obj;\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = valueObj\n data[\"notes\"] = obj;\n }\n if (this.timestamp !== null) {\n const valueObj = this.timestamp;\n const obj = valueObj\n data[\"timestamp\"] = obj;\n }\n if (this.version !== null) {\n const valueObj = this.version;\n const obj = valueObj\n data[\"version\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): ChangeLog {\n const thisObj = new ChangeLog();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"changes\") {\n let obj: any = null;\n thisObj.changes = [];\n for (const value of pvalue as any[]) {\n obj = Change.fromJson(value)\n thisObj.changes.push(obj);\n }\n continue;\n }\n if (key === \"curator\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.curator = obj;\n continue;\n }\n if (key === \"lastVersion\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.lastVersion = obj;\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.notes = obj;\n continue;\n }\n if (key === \"timestamp\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.timestamp = obj;\n continue;\n }\n if (key === \"version\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.version = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getChanges(): Change[] {\n return this.changes;\n }\n\n setChanges(changes: Change[]): void {\n // if (!Array.isArray(changes)) {\n // throw new Error(\"Error: changes is not an array\");\n // }\n // if (!changes.every(x => x instanceof Change)) {\n // throw new Error(`Error: '${changes}' is not of type Change`);\n // }\n this.changes = changes;\n }\n\n addChanges(changes: Change): void {\n // if (!(changes instanceof Change)) {\n // throw new Error(`Error: '${changes}' is not of type Change`);\n // }\n this.changes.push(changes);\n }\n getCurator(): string | null {\n return this.curator;\n }\n\n setCurator(curator: string): void {\n // if (!(curator instanceof string)) {\n // throw new Error(`Error: '${curator}' is not of type string`);\n // }\n this.curator = curator;\n }\n getLastVersion(): string | null {\n return this.lastVersion;\n }\n\n setLastVersion(lastVersion: string): void {\n // if (!(lastVersion instanceof string)) {\n // throw new Error(`Error: '${lastVersion}' is not of type string`);\n // }\n this.lastVersion = lastVersion;\n }\n getNotes(): string | null {\n return this.notes;\n }\n\n setNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n getTimestamp(): string | null {\n return this.timestamp;\n }\n\n setTimestamp(timestamp: string): void {\n // if (!(timestamp instanceof string)) {\n // throw new Error(`Error: '${timestamp}' is not of type string`);\n // }\n this.timestamp = timestamp;\n }\n getVersion(): string | null {\n return this.version;\n }\n\n setVersion(version: string): void {\n // if (!(version instanceof string)) {\n // throw new Error(`Error: '${version}' is not of type string`);\n // }\n this.version = version;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\n\n\n\nexport class Calibration {\n\n public dOI: string | null;\n public datasetRange: string | null;\n public equation: string | null;\n public equationIntercept: string | null;\n public equationR2: string | null;\n public equationSlope: string | null;\n public equationSlopeUncertainty: string | null;\n public method: string | null;\n public methodDetail: string | null;\n public notes: string | null;\n public proxyDataset: string | null;\n public seasonality: string | null;\n public targetDataset: string | null;\n public uncertainty: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.dOI = null;\n this.datasetRange = null;\n this.equation = null;\n this.equationIntercept = null;\n this.equationR2 = null;\n this.equationSlope = null;\n this.equationSlopeUncertainty = null;\n this.method = null;\n this.methodDetail = null;\n this.notes = null;\n this.proxyDataset = null;\n this.seasonality = null;\n this.targetDataset = null;\n this.uncertainty = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Calibration\";\n this._id = this._ns + \"/\" + uniqid(\"Calibration\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Calibration {\n const thisObj = new Calibration();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.dOI !== null) {\n thisObj.dOI = data.dOI;\n }\n if (data.datasetRange !== null) {\n thisObj.datasetRange = data.datasetRange;\n }\n if (data.equation !== null) {\n thisObj.equation = data.equation;\n }\n if (data.equationIntercept !== null) {\n thisObj.equationIntercept = data.equationIntercept;\n }\n if (data.equationR2 !== null) {\n thisObj.equationR2 = data.equationR2;\n }\n if (data.equationSlope !== null) {\n thisObj.equationSlope = data.equationSlope;\n }\n if (data.equationSlopeUncertainty !== null) {\n thisObj.equationSlopeUncertainty = data.equationSlopeUncertainty;\n }\n if (data.method !== null) {\n thisObj.method = data.method;\n }\n if (data.methodDetail !== null) {\n thisObj.methodDetail = data.methodDetail;\n }\n if (data.notes !== null) {\n thisObj.notes = data.notes;\n }\n if (data.proxyDataset !== null) {\n thisObj.proxyDataset = data.proxyDataset;\n }\n if (data.seasonality !== null) {\n thisObj.seasonality = data.seasonality;\n }\n if (data.targetDataset !== null) {\n thisObj.targetDataset = data.targetDataset;\n }\n if (data.uncertainty !== null) {\n thisObj.uncertainty = data.uncertainty;\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Calibration {\n const thisObj = new Calibration();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasDOI\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.dOI = obj;\n }\n }\n \n else if (key === \"hasDatasetRange\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.datasetRange = obj;\n }\n }\n \n else if (key === \"hasEquation\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.equation = obj;\n }\n }\n \n else if (key === \"hasEquationIntercept\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.equationIntercept = obj;\n }\n }\n \n else if (key === \"hasEquationR2\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.equationR2 = obj;\n }\n }\n \n else if (key === \"hasEquationSlope\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.equationSlope = obj;\n }\n }\n \n else if (key === \"hasEquationSlopeUncertainty\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.equationSlopeUncertainty = obj;\n }\n }\n \n else if (key === \"hasMethod\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.method = obj;\n }\n }\n \n else if (key === \"hasMethodDetail\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.methodDetail = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes = obj;\n }\n }\n \n else if (key === \"hasProxyDataset\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.proxyDataset = obj;\n }\n }\n \n else if (key === \"hasTargetDataset\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.targetDataset = obj;\n }\n }\n \n else if (key === \"hasUncertainty\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.uncertainty = obj;\n }\n }\n \n else if (key === \"seasonality\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.seasonality = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.dOI !== null) {\n const valueObj = this.dOI;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDOI\"] = [obj];\n }\n if (this.datasetRange !== null) {\n const valueObj = this.datasetRange;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDatasetRange\"] = [obj];\n }\n if (this.equation !== null) {\n const valueObj = this.equation;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasEquation\"] = [obj];\n }\n if (this.equationIntercept !== null) {\n const valueObj = this.equationIntercept;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasEquationIntercept\"] = [obj];\n }\n if (this.equationR2 !== null) {\n const valueObj = this.equationR2;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasEquationR2\"] = [obj];\n }\n if (this.equationSlope !== null) {\n const valueObj = this.equationSlope;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasEquationSlope\"] = [obj];\n }\n if (this.equationSlopeUncertainty !== null) {\n const valueObj = this.equationSlopeUncertainty;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasEquationSlopeUncertainty\"] = [obj];\n }\n if (this.method !== null) {\n const valueObj = this.method;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasMethod\"] = [obj];\n }\n if (this.methodDetail !== null) {\n const valueObj = this.methodDetail;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasMethodDetail\"] = [obj];\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"] = [obj];\n }\n if (this.proxyDataset !== null) {\n const valueObj = this.proxyDataset;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasProxyDataset\"] = [obj];\n }\n if (this.seasonality !== null) {\n const valueObj = this.seasonality;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"seasonality\"] = [obj];\n }\n if (this.targetDataset !== null) {\n const valueObj = this.targetDataset;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasTargetDataset\"] = [obj];\n }\n if (this.uncertainty !== null) {\n const valueObj = this.uncertainty;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasUncertainty\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.dOI !== null) {\n const valueObj = this.dOI;\n const obj = valueObj\n data[\"doi\"] = obj;\n }\n if (this.datasetRange !== null) {\n const valueObj = this.datasetRange;\n const obj = valueObj\n data[\"datasetRange\"] = obj;\n }\n if (this.equation !== null) {\n const valueObj = this.equation;\n const obj = valueObj\n data[\"equation\"] = obj;\n }\n if (this.equationIntercept !== null) {\n const valueObj = this.equationIntercept;\n const obj = valueObj\n data[\"equationIntercept\"] = obj;\n }\n if (this.equationR2 !== null) {\n const valueObj = this.equationR2;\n const obj = valueObj\n data[\"equationR2\"] = obj;\n }\n if (this.equationSlope !== null) {\n const valueObj = this.equationSlope;\n const obj = valueObj\n data[\"equationSlope\"] = obj;\n }\n if (this.equationSlopeUncertainty !== null) {\n const valueObj = this.equationSlopeUncertainty;\n const obj = valueObj\n data[\"equationSlopeUncertainty\"] = obj;\n }\n if (this.method !== null) {\n const valueObj = this.method;\n const obj = valueObj\n data[\"method\"] = obj;\n }\n if (this.methodDetail !== null) {\n const valueObj = this.methodDetail;\n const obj = valueObj\n data[\"methodDetail\"] = obj;\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = valueObj\n data[\"notes\"] = obj;\n }\n if (this.proxyDataset !== null) {\n const valueObj = this.proxyDataset;\n const obj = valueObj\n data[\"proxyDataset\"] = obj;\n }\n if (this.seasonality !== null) {\n const valueObj = this.seasonality;\n const obj = valueObj\n data[\"hasSeasonality\"] = obj;\n }\n if (this.targetDataset !== null) {\n const valueObj = this.targetDataset;\n const obj = valueObj\n data[\"targetDataset\"] = obj;\n }\n if (this.uncertainty !== null) {\n const valueObj = this.uncertainty;\n const obj = valueObj\n data[\"uncertainty\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Calibration {\n const thisObj = new Calibration();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"datasetRange\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.datasetRange = obj;\n continue;\n }\n if (key === \"doi\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.dOI = obj;\n continue;\n }\n if (key === \"equation\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.equation = obj;\n continue;\n }\n if (key === \"equationIntercept\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.equationIntercept = obj;\n continue;\n }\n if (key === \"equationR2\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.equationR2 = obj;\n continue;\n }\n if (key === \"equationSlope\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.equationSlope = obj;\n continue;\n }\n if (key === \"equationSlopeUncertainty\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.equationSlopeUncertainty = obj;\n continue;\n }\n if (key === \"hasSeasonality\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.seasonality = obj;\n continue;\n }\n if (key === \"method\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.method = obj;\n continue;\n }\n if (key === \"methodDetail\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.methodDetail = obj;\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.notes = obj;\n continue;\n }\n if (key === \"proxyDataset\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.proxyDataset = obj;\n continue;\n }\n if (key === \"targetDataset\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.targetDataset = obj;\n continue;\n }\n if (key === \"uncertainty\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.uncertainty = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getDOI(): string | null {\n return this.dOI;\n }\n\n setDOI(dOI: string): void {\n // if (!(dOI instanceof string)) {\n // throw new Error(`Error: '${dOI}' is not of type string`);\n // }\n this.dOI = dOI;\n }\n getDatasetRange(): string | null {\n return this.datasetRange;\n }\n\n setDatasetRange(datasetRange: string): void {\n // if (!(datasetRange instanceof string)) {\n // throw new Error(`Error: '${datasetRange}' is not of type string`);\n // }\n this.datasetRange = datasetRange;\n }\n getEquation(): string | null {\n return this.equation;\n }\n\n setEquation(equation: string): void {\n // if (!(equation instanceof string)) {\n // throw new Error(`Error: '${equation}' is not of type string`);\n // }\n this.equation = equation;\n }\n getEquationIntercept(): string | null {\n return this.equationIntercept;\n }\n\n setEquationIntercept(equationIntercept: string): void {\n // if (!(equationIntercept instanceof string)) {\n // throw new Error(`Error: '${equationIntercept}' is not of type string`);\n // }\n this.equationIntercept = equationIntercept;\n }\n getEquationR2(): string | null {\n return this.equationR2;\n }\n\n setEquationR2(equationR2: string): void {\n // if (!(equationR2 instanceof string)) {\n // throw new Error(`Error: '${equationR2}' is not of type string`);\n // }\n this.equationR2 = equationR2;\n }\n getEquationSlope(): string | null {\n return this.equationSlope;\n }\n\n setEquationSlope(equationSlope: string): void {\n // if (!(equationSlope instanceof string)) {\n // throw new Error(`Error: '${equationSlope}' is not of type string`);\n // }\n this.equationSlope = equationSlope;\n }\n getEquationSlopeUncertainty(): string | null {\n return this.equationSlopeUncertainty;\n }\n\n setEquationSlopeUncertainty(equationSlopeUncertainty: string): void {\n // if (!(equationSlopeUncertainty instanceof string)) {\n // throw new Error(`Error: '${equationSlopeUncertainty}' is not of type string`);\n // }\n this.equationSlopeUncertainty = equationSlopeUncertainty;\n }\n getMethod(): string | null {\n return this.method;\n }\n\n setMethod(method: string): void {\n // if (!(method instanceof string)) {\n // throw new Error(`Error: '${method}' is not of type string`);\n // }\n this.method = method;\n }\n getMethodDetail(): string | null {\n return this.methodDetail;\n }\n\n setMethodDetail(methodDetail: string): void {\n // if (!(methodDetail instanceof string)) {\n // throw new Error(`Error: '${methodDetail}' is not of type string`);\n // }\n this.methodDetail = methodDetail;\n }\n getNotes(): string | null {\n return this.notes;\n }\n\n setNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n getProxyDataset(): string | null {\n return this.proxyDataset;\n }\n\n setProxyDataset(proxyDataset: string): void {\n // if (!(proxyDataset instanceof string)) {\n // throw new Error(`Error: '${proxyDataset}' is not of type string`);\n // }\n this.proxyDataset = proxyDataset;\n }\n getSeasonality(): string | null {\n return this.seasonality;\n }\n\n setSeasonality(seasonality: string): void {\n // if (!(seasonality instanceof string)) {\n // throw new Error(`Error: '${seasonality}' is not of type string`);\n // }\n this.seasonality = seasonality;\n }\n getTargetDataset(): string | null {\n return this.targetDataset;\n }\n\n setTargetDataset(targetDataset: string): void {\n // if (!(targetDataset instanceof string)) {\n // throw new Error(`Error: '${targetDataset}' is not of type string`);\n // }\n this.targetDataset = targetDataset;\n }\n getUncertainty(): string | null {\n return this.uncertainty;\n }\n\n setUncertainty(uncertainty: string): void {\n // if (!(uncertainty instanceof string)) {\n // throw new Error(`Error: '${uncertainty}' is not of type string`);\n // }\n this.uncertainty = uncertainty;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\n\n\n\nexport class Compilation {\n\n public name: string | null;\n public versions: string[];\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.name = null;\n this.versions = [];\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Compilation\";\n this._id = this._ns + \"/\" + uniqid(\"Compilation\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Compilation {\n const thisObj = new Compilation();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n thisObj.versions = [];\n for (const value of (data.versions || []) as any[]) {\n thisObj.versions.push(value);\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Compilation {\n const thisObj = new Compilation();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n \n else if (key === \"hasVersion\") {\n thisObj.versions = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.versions.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasName\"] = [obj];\n }\n if (this.versions.length > 0) {\n data[this._id][\"hasVersion\"] = [];\n for (const valueObj of this.versions) {\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVersion\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"compilationName\"] = obj;\n }\n if (this.versions.length > 0) {\n data[\"compilationVersion\"] = [];\n for (const valueObj of this.versions) {\n const obj = valueObj\n data[\"compilationVersion\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Compilation {\n const thisObj = new Compilation();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"compilationName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n if (key === \"compilationVersion\") {\n let obj: any = null;\n thisObj.versions = [];\n for (const value of pvalue as any[]) {\n obj = value\n thisObj.versions.push(obj);\n }\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n }\n getVersions(): string[] {\n return this.versions;\n }\n\n setVersions(versions: string[]): void {\n // if (!Array.isArray(versions)) {\n // throw new Error(\"Error: versions is not an array\");\n // }\n // if (!versions.every(x => x instanceof string)) {\n // throw new Error(`Error: '${versions}' is not of type string`);\n // }\n this.versions = versions;\n }\n\n addVersion(versions: string): void {\n // if (!(versions instanceof string)) {\n // throw new Error(`Error: '${versions}' is not of type string`);\n // }\n this.versions.push(versions);\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class InterpretationSeasonality {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.INTERPRETATION?.InterpretationSeasonality;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: InterpretationSeasonality): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): InterpretationSeasonality | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in InterpretationSeasonality.synonyms) {\n const synobj = InterpretationSeasonality.synonyms[lowerSynonym];\n return new InterpretationSeasonality(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class InterpretationSeasonalityConstants {\n static Oct_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-May\", \"Oct-May\");\n static Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun\", \"Jun\");\n static Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul\", \"Jul\");\n static Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug\", \"Aug\");\n static Annual = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Annual\", \"Annual\");\n static Winter = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Winter\", \"Winter\");\n static Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr\", \"Apr\");\n static Apr_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Aug\", \"Apr-Aug\");\n static Apr_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Dec\", \"Apr-Dec\");\n static Apr_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Feb\", \"Apr-Feb\");\n static Apr_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Jan\", \"Apr-Jan\");\n static Apr_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Jul\", \"Apr-Jul\");\n static Apr_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Jun\", \"Apr-Jun\");\n static Apr_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Mar\", \"Apr-Mar\");\n static Apr_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-May\", \"Apr-May\");\n static Apr_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Nov\", \"Apr-Nov\");\n static Apr_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Oct\", \"Apr-Oct\");\n static Apr_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Apr-Sep\", \"Apr-Sep\");\n static Summer = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Summer\", \"Summer\");\n static Aug_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Apr\", \"Aug-Apr\");\n static Aug_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Dec\", \"Aug-Dec\");\n static Aug_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Feb\", \"Aug-Feb\");\n static Aug_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Jan\", \"Aug-Jan\");\n static Aug_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Jul\", \"Aug-Jul\");\n static Aug_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Jun\", \"Aug-Jun\");\n static Aug_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Mar\", \"Aug-Mar\");\n static Aug_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-May\", \"Aug-May\");\n static Aug_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Nov\", \"Aug-Nov\");\n static Aug_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Oct\", \"Aug-Oct\");\n static Aug_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Aug-Sep\", \"Aug-Sep\");\n static Growing_Season = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Growing_Season\", \"Growing Season\");\n static Coldest_Month = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Coldest_Month\", \"Coldest Month\");\n static Dec_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Apr\", \"Dec-Apr\");\n static Dec_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Aug\", \"Dec-Aug\");\n static Dec_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Feb\", \"Dec-Feb\");\n static Dec_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Jan\", \"Dec-Jan\");\n static Dec_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Jul\", \"Dec-Jul\");\n static Dec_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Jun\", \"Dec-Jun\");\n static Dec_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Mar\", \"Dec-Mar\");\n static Dec_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-May\", \"Dec-May\");\n static Dec_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Oct\", \"Dec-Oct\");\n static Dec_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Dec-Sep\", \"Dec-Sep\");\n static Fall = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Fall\", \"Fall\");\n static Feb_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Aug\", \"Feb-Aug\");\n static Feb_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Apr\", \"Feb-Apr\");\n static Feb_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Dec\", \"Feb-Dec\");\n static Feb_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Jul\", \"Feb-Jul\");\n static Feb_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Jun\", \"Feb-Jun\");\n static Feb_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Mar\", \"Feb-Mar\");\n static Feb_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-May\", \"Feb-May\");\n static Feb_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Nov\", \"Feb-Nov\");\n static Feb_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Oct\", \"Feb-Oct\");\n static Feb_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Feb-Sep\", \"Feb-Sep\");\n static Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan\", \"Jan\");\n static Jan_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Apr\", \"Jan-Apr\");\n static Jan_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Aug\", \"Jan-Aug\");\n static Jan_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Feb\", \"Jan-Feb\");\n static Jan_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Jul\", \"Jan-Jul\");\n static Jan_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Jun\", \"Jan-Jun\");\n static Jan_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Mar\", \"Jan-Mar\");\n static Jan_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-May\", \"Jan-May\");\n static Jan_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Nov\", \"Jan-Nov\");\n static Jan_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Oct\", \"Jan-Oct\");\n static Jan_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jan-Sep\", \"Jan-Sep\");\n static May_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Sep\", \"May-Sep\");\n static Jul_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Apr\", \"Jul-Apr\");\n static Jul_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Aug\", \"Jul-Aug\");\n static Jul_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Dec\", \"Jul-Dec\");\n static Jul_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Feb\", \"Jul-Feb\");\n static Jul_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Jan\", \"Jul-Jan\");\n static Jul_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Jun\", \"Jul-Jun\");\n static Jul_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Mar\", \"Jul-Mar\");\n static Jul_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-May\", \"Jul-May\");\n static Jul_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Nov\", \"Jul-Nov\");\n static Jul_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Oct\", \"Jul-Oct\");\n static Jul_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jul-Sep\", \"Jul-Sep\");\n static Jun_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Apr\", \"Jun-Apr\");\n static Jun_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Aug\", \"Jun-Aug\");\n static Jun_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Sep\", \"Jun-Sep\");\n static Jun_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Dec\", \"Jun-Dec\");\n static Jun_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Feb\", \"Jun-Feb\");\n static Jun_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Jan\", \"Jun-Jan\");\n static Jun_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Jul\", \"Jun-Jul\");\n static Jun_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Mar\", \"Jun-Mar\");\n static Jun_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Nov\", \"Jun-Nov\");\n static Jun_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Jun-Oct\", \"Jun-Oct\");\n static Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar\", \"Mar\");\n static Mar_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Apr\", \"Mar-Apr\");\n static Mar_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Aug\", \"Mar-Aug\");\n static Mar_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Dec\", \"Mar-Dec\");\n static Mar_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Jan\", \"Mar-Jan\");\n static Mar_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Jul\", \"Mar-Jul\");\n static Mar_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Jun\", \"Mar-Jun\");\n static Mar_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-May\", \"Mar-May\");\n static Mar_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Nov\", \"Mar-Nov\");\n static Mar_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Oct\", \"Mar-Oct\");\n static Mar_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Mar-Sep\", \"Mar-Sep\");\n static May_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Apr\", \"May-Apr\");\n static May_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Aug\", \"May-Aug\");\n static May_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Dec\", \"May-Dec\");\n static May_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Oct\", \"May-Oct\");\n static May_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Feb\", \"May-Feb\");\n static May_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Jan\", \"May-Jan\");\n static May_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Jul\", \"May-Jul\");\n static May_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Jun\", \"May-Jun\");\n static May_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Mar\", \"May-Mar\");\n static May_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#May-Nov\", \"May-Nov\");\n static needsToBeChanged = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#needsToBeChanged\", \"needsToBeChanged\");\n static Nov_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Apr\", \"Nov-Apr\");\n static Nov_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Aug\", \"Nov-Aug\");\n static Nov_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Dec\", \"Nov-Dec\");\n static Nov_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Feb\", \"Nov-Feb\");\n static Nov_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Jan\", \"Nov-Jan\");\n static Nov_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Jul\", \"Nov-Jul\");\n static Nov_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Jun\", \"Nov-Jun\");\n static Nov_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Mar\", \"Nov-Mar\");\n static Nov_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-May\", \"Nov-May\");\n static Nov_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Oct\", \"Nov-Oct\");\n static Nov_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Nov-Sep\", \"Nov-Sep\");\n static Oct_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Apr\", \"Oct-Apr\");\n static Oct_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Aug\", \"Oct-Aug\");\n static Oct_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Dec\", \"Oct-Dec\");\n static Oct_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Feb\", \"Oct-Feb\");\n static Oct_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Jan\", \"Oct-Jan\");\n static Oct_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Jul\", \"Oct-Jul\");\n static Oct_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Jun\", \"Oct-Jun\");\n static Oct_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Mar\", \"Oct-Mar\");\n static Oct_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Nov\", \"Oct-Nov\");\n static Oct_Sep = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Oct-Sep\", \"Oct-Sep\");\n static Sep_Apr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Apr\", \"Sep-Apr\");\n static Sep_Aug = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Aug\", \"Sep-Aug\");\n static Sep_Dec = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Dec\", \"Sep-Dec\");\n static Sep_Feb = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Feb\", \"Sep-Feb\");\n static Sep_Jan = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Jan\", \"Sep-Jan\");\n static Sep_Jul = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Jul\", \"Sep-Jul\");\n static Sep_Jun = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Jun\", \"Sep-Jun\");\n static Sep_Mar = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Mar\", \"Sep-Mar\");\n static Sep_May = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-May\", \"Sep-May\");\n static Sep_Nov = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Nov\", \"Sep-Nov\");\n static Sep_Oct = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Sep-Oct\", \"Sep-Oct\");\n static Spr_Sum = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Spr-Sum\", \"Spr-Sum\");\n static Spring = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Spring\", \"Spring\");\n static subannual = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#subannual\", \"subannual\");\n static Warmest_Month = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Warmest_Month\", \"Warmest Month\");\n static Wet_Season = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Wet_Season\", \"Wet Season\");\n static Win_Spr = new InterpretationSeasonality(\"http://linked.earth/ontology/interpretation#Win-Spr\", \"Win-Spr\");\n}","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class InterpretationVariable {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.INTERPRETATION?.InterpretationVariable;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: InterpretationVariable): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): InterpretationVariable | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in InterpretationVariable.synonyms) {\n const synobj = InterpretationVariable.synonyms[lowerSynonym];\n return new InterpretationVariable(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class InterpretationVariableConstants {\n static C3C4Ratio = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#C3C4Ratio\", \"C3C4Ratio\");\n static circulationIndex = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#circulationIndex\", \"circulationIndex\");\n static circulationVariable = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#circulationVariable\", \"circulationVariable\");\n static dissolvedOxygen = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#dissolvedOxygen\", \"dissolvedOxygen\");\n static dust = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#dust\", \"dust\");\n static ELA = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#ELA\", \"ELA\");\n static evaporation = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#evaporation\", \"evaporation\");\n static fire = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#fire\", \"fire\");\n static growingDegreeDays = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#growingDegreeDays\", \"growingDegreeDays\");\n static hydrologicBalance = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#hydrologicBalance\", \"hydrologicBalance\");\n static lakeWaterIsotope = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#lakeWaterIsotope\", \"lakeWaterIsotope\");\n static meltwater = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#meltwater\", \"meltwater\");\n static needsToBeReplaced = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#needsToBeReplaced\", \"needsToBeReplaced\");\n static P_E = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#P-E\", \"P-E\");\n static precipitation = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#precipitation\", \"precipitation\");\n static precipitationDeuteriumExcess = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#precipitationDeuteriumExcess\", \"precipitationDeuteriumExcess\");\n static precipitationIsotope = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#precipitationIsotope\", \"precipitationIsotope\");\n static productivity = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#productivity\", \"productivity\");\n static relativeHumidity = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#relativeHumidity\", \"relativeHumidity\");\n static salinity = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#salinity\", \"salinity\");\n static seaIce = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#seaIce\", \"seaIce\");\n static seasonality = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#seasonality\", \"seasonality\");\n static seawaterIsotope = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#seawaterIsotope\", \"seawaterIsotope\");\n static streamflow = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#streamflow\", \"streamflow\");\n static sunlight = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#sunlight\", \"sunlight\");\n static surfacePressure = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#surfacePressure\", \"surfacePressure\");\n static temperature = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#temperature\", \"temperature\");\n static upwelling = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#upwelling\", \"upwelling\");\n static windSpeed = new InterpretationVariable(\"http://linked.earth/ontology/interpretation#windSpeed\", \"windSpeed\");\n}","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { InterpretationSeasonality } from \"./interpretationseasonality\";\nimport { InterpretationVariable } from \"./interpretationvariable\";\n\n\n\nexport class Interpretation {\n\n public basis: string | null;\n public direction: string | null;\n public local: string | null;\n public mathematicalRelation: string | null;\n public notes: string | null;\n public rank: string | null;\n public scope: string | null;\n public seasonality: InterpretationSeasonality | null;\n public seasonalityGeneral: InterpretationSeasonality | null;\n public seasonalityOriginal: InterpretationSeasonality | null;\n public variable: InterpretationVariable | null;\n public variableDetail: string | null;\n public variableGeneral: string | null;\n public variableGeneralDirection: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.basis = null;\n this.direction = null;\n this.local = null;\n this.mathematicalRelation = null;\n this.notes = null;\n this.rank = null;\n this.scope = null;\n this.seasonality = null;\n this.seasonalityGeneral = null;\n this.seasonalityOriginal = null;\n this.variable = null;\n this.variableDetail = null;\n this.variableGeneral = null;\n this.variableGeneralDirection = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Interpretation\";\n this._id = this._ns + \"/\" + uniqid(\"Interpretation\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Interpretation {\n const thisObj = new Interpretation();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.basis !== null) {\n thisObj.basis = data.basis;\n }\n if (data.direction !== null) {\n thisObj.direction = data.direction;\n }\n if (data.local !== null) {\n thisObj.local = data.local;\n }\n if (data.mathematicalRelation !== null) {\n thisObj.mathematicalRelation = data.mathematicalRelation;\n }\n if (data.notes !== null) {\n thisObj.notes = data.notes;\n }\n if (data.rank !== null) {\n thisObj.rank = data.rank;\n }\n if (data.scope !== null) {\n thisObj.scope = data.scope;\n }\n if (data.seasonality !== null) {\n thisObj.seasonality = new InterpretationSeasonality(data.seasonality.id, data.seasonality.label);\n }\n if (data.seasonalityGeneral !== null) {\n thisObj.seasonalityGeneral = new InterpretationSeasonality(data.seasonalityGeneral.id, data.seasonalityGeneral.label);\n }\n if (data.seasonalityOriginal !== null) {\n thisObj.seasonalityOriginal = new InterpretationSeasonality(data.seasonalityOriginal.id, data.seasonalityOriginal.label);\n }\n if (data.variable !== null) {\n thisObj.variable = new InterpretationVariable(data.variable.id, data.variable.label);\n }\n if (data.variableDetail !== null) {\n thisObj.variableDetail = data.variableDetail;\n }\n if (data.variableGeneral !== null) {\n thisObj.variableGeneral = data.variableGeneral;\n }\n if (data.variableGeneralDirection !== null) {\n thisObj.variableGeneralDirection = data.variableGeneralDirection;\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Interpretation {\n const thisObj = new Interpretation();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasBasis\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.basis = obj;\n }\n }\n \n else if (key === \"hasDirection\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.direction = obj;\n }\n }\n \n else if (key === \"hasMathematicalRelation\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.mathematicalRelation = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes = obj;\n }\n }\n \n else if (key === \"hasRank\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.rank = obj;\n }\n }\n \n else if (key === \"hasScope\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.scope = obj;\n }\n }\n \n else if (key === \"hasSeasonality\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = InterpretationSeasonality.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.seasonality = obj;\n }\n }\n \n else if (key === \"hasSeasonalityGeneral\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = InterpretationSeasonality.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.seasonalityGeneral = obj;\n }\n }\n \n else if (key === \"hasSeasonalityOriginal\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = InterpretationSeasonality.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.seasonalityOriginal = obj;\n }\n }\n \n else if (key === \"hasVariable\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = InterpretationVariable.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.variable = obj;\n }\n }\n \n else if (key === \"hasVariableDetail\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.variableDetail = obj;\n }\n }\n \n else if (key === \"hasVariableGeneral\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.variableGeneral = obj;\n }\n }\n \n else if (key === \"hasVariableGeneralDirection\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.variableGeneralDirection = obj;\n }\n }\n \n else if (key === \"isLocal\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.local = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.basis !== null) {\n const valueObj = this.basis;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasBasis\"] = [obj];\n }\n if (this.direction !== null) {\n const valueObj = this.direction;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDirection\"] = [obj];\n }\n if (this.local !== null) {\n const valueObj = this.local;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"isLocal\"] = [obj];\n }\n if (this.mathematicalRelation !== null) {\n const valueObj = this.mathematicalRelation;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasMathematicalRelation\"] = [obj];\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"] = [obj];\n }\n if (this.rank !== null) {\n const valueObj = this.rank;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasRank\"] = [obj];\n }\n if (this.scope !== null) {\n const valueObj = this.scope;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasScope\"] = [obj];\n }\n if (this.seasonality !== null) {\n const valueObj = this.seasonality;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasSeasonality\"] = [obj];\n }\n if (this.seasonalityGeneral !== null) {\n const valueObj = this.seasonalityGeneral;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasSeasonalityGeneral\"] = [obj];\n }\n if (this.seasonalityOriginal !== null) {\n const valueObj = this.seasonalityOriginal;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasSeasonalityOriginal\"] = [obj];\n }\n if (this.variable !== null) {\n const valueObj = this.variable;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasVariable\"] = [obj];\n }\n if (this.variableDetail !== null) {\n const valueObj = this.variableDetail;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVariableDetail\"] = [obj];\n }\n if (this.variableGeneral !== null) {\n const valueObj = this.variableGeneral;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVariableGeneral\"] = [obj];\n }\n if (this.variableGeneralDirection !== null) {\n const valueObj = this.variableGeneralDirection;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVariableGeneralDirection\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.basis !== null) {\n const valueObj = this.basis;\n const obj = valueObj\n data[\"basis\"] = obj;\n }\n if (this.direction !== null) {\n const valueObj = this.direction;\n const obj = valueObj\n data[\"direction\"] = obj;\n }\n if (this.local !== null) {\n const valueObj = this.local;\n const obj = valueObj\n data[\"isLocal\"] = obj;\n }\n if (this.mathematicalRelation !== null) {\n const valueObj = this.mathematicalRelation;\n const obj = valueObj\n data[\"mathematicalRelation\"] = obj;\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = valueObj\n data[\"notes\"] = obj;\n }\n if (this.rank !== null) {\n const valueObj = this.rank;\n const obj = valueObj\n data[\"rank\"] = obj;\n }\n if (this.scope !== null) {\n const valueObj = this.scope;\n const obj = valueObj\n data[\"scope\"] = obj;\n }\n if (this.seasonality !== null) {\n const valueObj = this.seasonality;\n const obj = valueObj.toJson()\n data[\"seasonality\"] = obj;\n }\n if (this.seasonalityGeneral !== null) {\n const valueObj = this.seasonalityGeneral;\n const obj = valueObj.toJson()\n data[\"seasonalityGeneral\"] = obj;\n }\n if (this.seasonalityOriginal !== null) {\n const valueObj = this.seasonalityOriginal;\n const obj = valueObj.toJson()\n data[\"seasonalityOriginal\"] = obj;\n }\n if (this.variable !== null) {\n const valueObj = this.variable;\n const obj = valueObj.toJson()\n data[\"variable\"] = obj;\n }\n if (this.variableDetail !== null) {\n const valueObj = this.variableDetail;\n const obj = valueObj\n data[\"variableDetail\"] = obj;\n }\n if (this.variableGeneral !== null) {\n const valueObj = this.variableGeneral;\n const obj = valueObj\n data[\"variableGeneral\"] = obj;\n }\n if (this.variableGeneralDirection !== null) {\n const valueObj = this.variableGeneralDirection;\n const obj = valueObj\n data[\"variableGeneralDirection\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Interpretation {\n const thisObj = new Interpretation();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"basis\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.basis = obj;\n continue;\n }\n if (key === \"direction\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.direction = obj;\n continue;\n }\n if (key === \"isLocal\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.local = obj;\n continue;\n }\n if (key === \"mathematicalRelation\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.mathematicalRelation = obj;\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.notes = obj;\n continue;\n }\n if (key === \"rank\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.rank = obj;\n continue;\n }\n if (key === \"scope\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.scope = obj;\n continue;\n }\n if (key === \"seasonality\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = InterpretationSeasonality.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.seasonality = obj;\n continue;\n }\n if (key === \"seasonalityGeneral\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = InterpretationSeasonality.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.seasonalityGeneral = obj;\n continue;\n }\n if (key === \"seasonalityOriginal\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = InterpretationSeasonality.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.seasonalityOriginal = obj;\n continue;\n }\n if (key === \"variable\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = InterpretationVariable.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.variable = obj;\n continue;\n }\n if (key === \"variableDetail\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.variableDetail = obj;\n continue;\n }\n if (key === \"variableGeneral\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.variableGeneral = obj;\n continue;\n }\n if (key === \"variableGeneralDirection\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.variableGeneralDirection = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getBasis(): string | null {\n return this.basis;\n }\n\n setBasis(basis: string): void {\n // if (!(basis instanceof string)) {\n // throw new Error(`Error: '${basis}' is not of type string`);\n // }\n this.basis = basis;\n }\n getDirection(): string | null {\n return this.direction;\n }\n\n setDirection(direction: string): void {\n // if (!(direction instanceof string)) {\n // throw new Error(`Error: '${direction}' is not of type string`);\n // }\n this.direction = direction;\n }\n getMathematicalRelation(): string | null {\n return this.mathematicalRelation;\n }\n\n setMathematicalRelation(mathematicalRelation: string): void {\n // if (!(mathematicalRelation instanceof string)) {\n // throw new Error(`Error: '${mathematicalRelation}' is not of type string`);\n // }\n this.mathematicalRelation = mathematicalRelation;\n }\n getNotes(): string | null {\n return this.notes;\n }\n\n setNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n getRank(): string | null {\n return this.rank;\n }\n\n setRank(rank: string): void {\n // if (!(rank instanceof string)) {\n // throw new Error(`Error: '${rank}' is not of type string`);\n // }\n this.rank = rank;\n }\n getScope(): string | null {\n return this.scope;\n }\n\n setScope(scope: string): void {\n // if (!(scope instanceof string)) {\n // throw new Error(`Error: '${scope}' is not of type string`);\n // }\n this.scope = scope;\n }\n getSeasonality(): InterpretationSeasonality | null {\n return this.seasonality;\n }\n\n setSeasonality(seasonality: InterpretationSeasonality): void {\n // if (!(seasonality instanceof InterpretationSeasonality)) {\n // throw new Error(`Error: '${seasonality}' is not of type InterpretationSeasonality\\nYou can create a new InterpretationSeasonality object from a string using the following syntax:\\n- Fetch existing InterpretationSeasonality by synonym: InterpretationSeasonality.fromSynonym(\"${seasonality}\")\\n- Create a new custom InterpretationSeasonality: new InterpretationSeasonality(\"${seasonality}\")`);\n // }\n this.seasonality = seasonality;\n }\n getSeasonalityGeneral(): InterpretationSeasonality | null {\n return this.seasonalityGeneral;\n }\n\n setSeasonalityGeneral(seasonalityGeneral: InterpretationSeasonality): void {\n // if (!(seasonalityGeneral instanceof InterpretationSeasonality)) {\n // throw new Error(`Error: '${seasonalityGeneral}' is not of type InterpretationSeasonality\\nYou can create a new InterpretationSeasonality object from a string using the following syntax:\\n- Fetch existing InterpretationSeasonality by synonym: InterpretationSeasonality.fromSynonym(\"${seasonalityGeneral}\")\\n- Create a new custom InterpretationSeasonality: new InterpretationSeasonality(\"${seasonalityGeneral}\")`);\n // }\n this.seasonalityGeneral = seasonalityGeneral;\n }\n getSeasonalityOriginal(): InterpretationSeasonality | null {\n return this.seasonalityOriginal;\n }\n\n setSeasonalityOriginal(seasonalityOriginal: InterpretationSeasonality): void {\n // if (!(seasonalityOriginal instanceof InterpretationSeasonality)) {\n // throw new Error(`Error: '${seasonalityOriginal}' is not of type InterpretationSeasonality\\nYou can create a new InterpretationSeasonality object from a string using the following syntax:\\n- Fetch existing InterpretationSeasonality by synonym: InterpretationSeasonality.fromSynonym(\"${seasonalityOriginal}\")\\n- Create a new custom InterpretationSeasonality: new InterpretationSeasonality(\"${seasonalityOriginal}\")`);\n // }\n this.seasonalityOriginal = seasonalityOriginal;\n }\n getVariable(): InterpretationVariable | null {\n return this.variable;\n }\n\n setVariable(variable: InterpretationVariable): void {\n // if (!(variable instanceof InterpretationVariable)) {\n // throw new Error(`Error: '${variable}' is not of type InterpretationVariable\\nYou can create a new InterpretationVariable object from a string using the following syntax:\\n- Fetch existing InterpretationVariable by synonym: InterpretationVariable.fromSynonym(\"${variable}\")\\n- Create a new custom InterpretationVariable: new InterpretationVariable(\"${variable}\")`);\n // }\n this.variable = variable;\n }\n getVariableDetail(): string | null {\n return this.variableDetail;\n }\n\n setVariableDetail(variableDetail: string): void {\n // if (!(variableDetail instanceof string)) {\n // throw new Error(`Error: '${variableDetail}' is not of type string`);\n // }\n this.variableDetail = variableDetail;\n }\n getVariableGeneral(): string | null {\n return this.variableGeneral;\n }\n\n setVariableGeneral(variableGeneral: string): void {\n // if (!(variableGeneral instanceof string)) {\n // throw new Error(`Error: '${variableGeneral}' is not of type string`);\n // }\n this.variableGeneral = variableGeneral;\n }\n getVariableGeneralDirection(): string | null {\n return this.variableGeneralDirection;\n }\n\n setVariableGeneralDirection(variableGeneralDirection: string): void {\n // if (!(variableGeneralDirection instanceof string)) {\n // throw new Error(`Error: '${variableGeneralDirection}' is not of type string`);\n // }\n this.variableGeneralDirection = variableGeneralDirection;\n }\n isLocal(): string | null {\n return this.local;\n }\n\n setLocal(local: string): void {\n // if (!(local instanceof string)) {\n // throw new Error(`Error: '${local}' is not of type string`);\n // }\n this.local = local;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class PaleoProxy {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.PROXIES?.PaleoProxy;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: PaleoProxy): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): PaleoProxy | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in PaleoProxy.synonyms) {\n const synobj = PaleoProxy.synonyms[lowerSynonym];\n return new PaleoProxy(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class PaleoProxyConstants {\n static accumulation_rate = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#accumulation_rate\", \"accumulation rate\");\n static ACL = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#ACL\", \"ACL\");\n static Al2O3 = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Al2O3\", \"Al2O3\");\n static alkenone = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#alkenone\", \"alkenone\");\n static amoeba = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#amoeba\", \"amoeba\");\n static Ba_Al = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ba_Al\", \"Ba/Al\");\n static Ba_Ca = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ba_Ca\", \"Ba/Ca\");\n static biomarker = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#biomarker\", \"biomarker\");\n static BIT = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#BIT\", \"BIT\");\n static borehole = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#borehole\", \"borehole\");\n static BSi = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#BSi\", \"BSi\");\n static bubble_frequency = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#bubble_frequency\", \"bubble frequency\");\n static bulk_density = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#bulk_density\", \"bulk density\");\n static bulk_sediment = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#bulk_sediment\", \"bulk sediment\");\n static C_N = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#C_N\", \"C/N\");\n static Ca_K = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ca_K\", \"Ca/K\");\n static Ca_Ti = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ca_Ti\", \"Ca/Ti\");\n static CaCO3 = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#CaCO3\", \"CaCO3\");\n static calcification_rate = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#calcification_rate\", \"calcification rate\");\n static calcite = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#calcite\", \"calcite\");\n static carbonate = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#carbonate\", \"carbonate\");\n static cellulose = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#cellulose\", \"cellulose\");\n static charcoal = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#charcoal\", \"charcoal\");\n static chironomid = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#chironomid\", \"chironomid\");\n static chlorophyll = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#chlorophyll\", \"chlorophyll\");\n static chrysophyte_assemblage = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#chrysophyte_assemblage\", \"chrysophyte assemblage\");\n static cladoceran = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#cladoceran\", \"cladoceran\");\n static coccolithophore = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#coccolithophore\", \"coccolithophore\");\n static d13C = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#d13C\", \"d13C\");\n static d15N = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#d15N\", \"d15N\");\n static d15N_d40Ar = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#d15N_d40Ar\", \"d15N/d40Ar\");\n static d18O = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#d18O\", \"d18O\");\n static dD = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#dD\", \"dD\");\n static deuterium_excess = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#deuterium_excess\", \"deuterium excess\");\n static diatom = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#diatom\", \"diatom\");\n static dinocyst = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#dinocyst\", \"dinocyst\");\n static dry_bulk_density = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#dry_bulk_density\", \"dry bulk density\");\n static Eu_Zr = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Eu_Zr\", \"Eu/Zr\");\n static Fe = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Fe\", \"Fe\");\n static Fe_Al = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Fe_Al\", \"Fe/Al\");\n static foraminifera = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#foraminifera\", \"foraminifera\");\n static GDGT = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#GDGT\", \"GDGT\");\n static grain_size = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#grain_size\", \"grain size\");\n static HBI = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#HBI\", \"HBI\");\n static historical = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#historical\", \"historical\");\n static humification = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#humification\", \"humification\");\n static ice_accumulation = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#ice_accumulation\", \"ice accumulation\");\n static ice_melt = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#ice_melt\", \"ice melt\");\n static inorganic_carbon = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#inorganic_carbon\", \"inorganic carbon\");\n static IP25 = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#IP25\", \"IP25\");\n static lake_level = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#lake_level\", \"lake level\");\n static latewood_cellulose = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#latewood_cellulose\", \"latewood cellulose\");\n static LDI = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#LDI\", \"LDI\");\n static macrofossils = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#macrofossils\", \"macrofossils\");\n static magnetic = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#magnetic\", \"magnetic\");\n static magnetic_susceptibility = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#magnetic_susceptibility\", \"magnetic susceptibility\");\n static mass_accumulation_rate = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#mass_accumulation_rate\", \"mass accumulation rate\");\n static maximum_latewood_density = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#maximum_latewood_density\", \"maximum latewood density\");\n static Mg = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Mg\", \"Mg\");\n static Mg_Ca = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Mg_Ca\", \"Mg/Ca\");\n static multiproxy = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#multiproxy\", \"multiproxy\");\n static Ti = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ti\", \"Ti\");\n static needs_to_be_changed = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#needs_to_be_changed\", \"needs to be changed\");\n static needsToBeChanged = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#needsToBeChanged\", \"needsToBeChanged\");\n static ostracod = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#ostracod\", \"ostracod\");\n static P_aqueous = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#P-aqueous\", \"P-aqueous\");\n static peat_ash = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#peat_ash\", \"peat ash\");\n static pH = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#pH\", \"pH\");\n static pollen = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#pollen\", \"pollen\");\n static radiolaria = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#radiolaria\", \"radiolaria\");\n static Rb = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Rb\", \"Rb\");\n static Rb_Sr = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Rb_Sr\", \"Rb/Sr\");\n static reflectance = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#reflectance\", \"reflectance\");\n static ring_width = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#ring_width\", \"ring width\");\n static Sr = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Sr\", \"Sr\");\n static Sr_Ca = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Sr_Ca\", \"Sr/Ca\");\n static stratigraphy = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#stratigraphy\", \"stratigraphy\");\n static sulfur = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#sulfur\", \"sulfur\");\n static TEX86 = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#TEX86\", \"TEX86\");\n static Ti_Al = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ti_Al\", \"Ti/Al\");\n static Ti_Ca = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#Ti_Ca\", \"Ti/Ca\");\n static TOC = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#TOC\", \"TOC\");\n static total_nitrogen = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#total_nitrogen\", \"total nitrogen\");\n static varve_thickness = new PaleoProxy(\"http://linked.earth/ontology/paleo_proxy#varve_thickness\", \"varve thickness\");\n}","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class PaleoProxyGeneral {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.PROXIES?.PaleoProxyGeneral;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: PaleoProxyGeneral): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): PaleoProxyGeneral | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in PaleoProxyGeneral.synonyms) {\n const synobj = PaleoProxyGeneral.synonyms[lowerSynonym];\n return new PaleoProxyGeneral(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class PaleoProxyGeneralConstants {\n static biogenic = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#biogenic\", \"biogenic\");\n static cryophysical = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#cryophysical\", \"cryophysical\");\n static dendrophysical = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#dendrophysical\", \"dendrophysical\");\n static elemental = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#elemental\", \"elemental\");\n static faunal_assemblage = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#faunal_assemblage\", \"faunal assemblage\");\n static floral_assemblage = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#floral_assemblage\", \"floral assemblage\");\n static isotopic = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#isotopic\", \"isotopic\");\n static mineral = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#mineral\", \"mineral\");\n static pyrogenic = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#pyrogenic\", \"pyrogenic\");\n static sedimentology = new PaleoProxyGeneral(\"http://linked.earth/ontology/paleo_proxy#sedimentology\", \"sedimentology\");\n}","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class PaleoUnit {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.UNITS?.PaleoUnit;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: PaleoUnit): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): PaleoUnit | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in PaleoUnit.synonyms) {\n const synobj = PaleoUnit.synonyms[lowerSynonym];\n return new PaleoUnit(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class PaleoUnitConstants {\n static atomic_ratio = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#atomic_ratio\", \"atomic ratio\");\n static cgs = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#cgs\", \"cgs\");\n static cm = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#cm\", \"cm\");\n static cm_kyr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#cm_kyr\", \"cm/kyr\");\n static cm_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#cm_yr\", \"cm/yr\");\n static cm3 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#cm3\", \"cm3\");\n static count = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count\", \"count\");\n static count_century = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_century\", \"count/century\");\n static count_cm2 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_cm2\", \"count/cm2\");\n static count_cm2_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_cm2_yr\", \"count/cm2/yr\");\n static count_cm3 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_cm3\", \"count/cm3\");\n static count_g = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_g\", \"count/g\");\n static count_kyr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_kyr\", \"count/kyr\");\n static count_mL = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_mL\", \"count/mL\");\n static count_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#count_yr\", \"count/yr\");\n static cps = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#cps\", \"cps\");\n static day = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#day\", \"day\");\n static degC = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#degC\", \"degC\");\n static degree = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#degree\", \"degree\");\n static fraction = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#fraction\", \"fraction\");\n static g = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g\", \"g\");\n static g_cm_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_cm_yr\", \"g/cm/yr\");\n static g_cm2 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_cm2\", \"g/cm2\");\n static g_cm2_kyr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_cm2_kyr\", \"g/cm2/kyr\");\n static g_cm2_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_cm2_yr\", \"g/cm2/yr\");\n static g_cm3 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_cm3\", \"g/cm3\");\n static g_L = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_L\", \"g/L\");\n static g_m2 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_m2\", \"g/m2\");\n static g_m2_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#g_m2_yr\", \"g/m2/yr\");\n static grayscale = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#grayscale\", \"grayscale\");\n static kg_m2_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#kg_m2_yr\", \"kg/m2/yr\");\n static kg_m3 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#kg_m3\", \"kg/m3\");\n static km2 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#km2\", \"km2\");\n static km3 = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#km3\", \"km3\");\n static log_mg_L_ = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#log_mg_L_\", \"log(mg/L)\");\n static m = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#m\", \"m\");\n static m3_kg = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#m3_kg\", \"m3/kg\");\n static mg = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mg\", \"mg\");\n static mg_cm2_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mg_cm2_yr\", \"mg/cm2/yr\");\n static mg_g = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mg_g\", \"mg/g\");\n static mg_kg = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mg_kg\", \"mg/kg\");\n static mg_L = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mg_L\", \"mg/L\");\n static mm = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mm\", \"mm\");\n static mm_day = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mm_day\", \"mm/day\");\n static mm_season = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mm_season\", \"mm/season\");\n static mm_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mm_yr\", \"mm/yr\");\n static mmol_mol = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#mmol_mol\", \"mmol/mol\");\n static months_year = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#months_year\", \"months/year\");\n static needsToBeChanged = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#needsToBeChanged\", \"needsToBeChanged\");\n static ng = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ng\", \"ng\");\n static ng_g = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ng_g\", \"ng/g\");\n static peak_area = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#peak_area\", \"peak area\");\n static percent = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#percent\", \"percent\");\n static permil = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#permil\", \"permil\");\n static pH = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#pH\", \"pH\");\n static ppb = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ppb\", \"ppb\");\n static ppm = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ppm\", \"ppm\");\n static practical_salinity_unit = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#practical_salinity_unit\", \"practical salinity unit\");\n static ratio = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ratio\", \"ratio\");\n static SI = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#SI\", \"SI\");\n static ug_cm2_yr = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ug_cm2_yr\", \"ug/cm2/yr\");\n static ug_g = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#ug_g\", \"ug/g\");\n static um = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#um\", \"um\");\n static umol_mol = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#umol_mol\", \"umol/mol\");\n static unitless = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#unitless\", \"unitless\");\n static yr_14C_BP = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#yr_14C_BP\", \"yr 14C BP\");\n static yr_AD = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#yr_AD\", \"yr AD\");\n static yr_b2k = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#yr_b2k\", \"yr b2k\");\n static yr_BP = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#yr_BP\", \"yr BP\");\n static yr_ka = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#yr_ka\", \"yr ka\");\n static z_score = new PaleoUnit(\"http://linked.earth/ontology/paleo_units#z_score\", \"z score\");\n}","\n// Auto-generated. Do not edit.\nimport { SYNONYMS } from \"../globals/synonyms\";\n\nexport class PaleoVariable {\n private id: string;\n private label: string;\n static synonyms: any = SYNONYMS.VARIABLES?.PaleoVariable;\n\n constructor(id: string, label: string) {\n this.id = id;\n this.label = label;\n }\n\n equals(value: PaleoVariable): boolean {\n return this.id === value.id;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getId(): string {\n return this.id;\n }\n\n toData(data: Record<string, any> = {}): Record<string, any> {\n data[this.id] = {\n \"label\": [\n {\n \"@datatype\": null,\n \"@type\": \"literal\",\n \"@value\": this.label\n }\n ]\n };\n return data;\n }\n\n toJson(): string {\n return this.label;\n }\n\n static fromSynonym(synonym: string): PaleoVariable | null {\n const lowerSynonym = synonym.toLowerCase();\n if (lowerSynonym in PaleoVariable.synonyms) {\n const synobj = PaleoVariable.synonyms[lowerSynonym];\n return new PaleoVariable(synobj.id, synobj.label);\n }\n return null;\n }\n}\n\nexport class PaleoVariableConstants {\n static ACL = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ACL\", \"ACL\");\n static AET_PET = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#AET_PET\", \"AET/PET\");\n static ARM_IRM = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ARM_IRM\", \"ARM/IRM\");\n static ARSTAN = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ARSTAN\", \"ARSTAN\");\n static Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Al\", \"Al\");\n static Al2O3 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Al2O3\", \"Al2O3\");\n static As = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#As\", \"As\");\n static BIT = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#BIT\", \"BIT\");\n static BSi = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#BSi\", \"BSi\");\n static Ba = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ba\", \"Ba\");\n static Ba_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ba_Al\", \"Ba/Al\");\n static Ba_Ca = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ba_Ca\", \"Ba/Ca\");\n static Be = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Be\", \"Be\");\n static Br = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Br\", \"Br\");\n static C20n_alkenoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C20n-alkenoicAcid\", \"C20n-alkenoicAcid\");\n static C21n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C21n-alkanoicAcid\", \"C21n-alkanoicAcid\");\n static C22n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C22n-alkanoicAcid\", \"C22n-alkanoicAcid\");\n static C23n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C23n-alkanoicAcid\", \"C23n-alkanoicAcid\");\n static C24n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C24n-alkanoicAcid\", \"C24n-alkanoicAcid\");\n static C25_2n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C25_2n-alkanoicAcid\", \"C25_2n-alkanoicAcid\");\n static C25n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C25n-alkanoicAcid\", \"C25n-alkanoicAcid\");\n static C26n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C26n-alkanoicAcid\", \"C26n-alkanoicAcid\");\n static C27n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C27n-alkanoicAcid\", \"C27n-alkanoicAcid\");\n static C28n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C28n-alkanoicAcid\", \"C28n-alkanoicAcid\");\n static C29n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C29n-alkanoicAcid\", \"C29n-alkanoicAcid\");\n static C30n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C30n-alkanoicAcid\", \"C30n-alkanoicAcid\");\n static C31n_alkanoicAcid = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C31n-alkanoicAcid\", \"C31n-alkanoicAcid\");\n static C37Alkenone = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C37Alkenone\", \"C37Alkenone\");\n static C37_2Alkenone = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C37_2Alkenone\", \"C37:2Alkenone\");\n static C37_3aAlkenone = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C37_3aAlkenone\", \"C37:3aAlkenone\");\n static C37_3bAlkenone = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C37_3bAlkenone\", \"C37:3bAlkenone\");\n static C37_4Alkenone = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C37_4Alkenone\", \"C37:4Alkenone\");\n static CBT = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#CBT\", \"CBT\");\n static CCA1 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#CCA1\", \"CCA1\");\n static CCA2 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#CCA2\", \"CCA2\");\n static CPI = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#CPI\", \"CPI\");\n static C_N = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#C_N\", \"C/N\");\n static Ca = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ca\", \"Ca\");\n static CaCO3 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#CaCO3\", \"CaCO3\");\n static CaO = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#CaO\", \"CaO\");\n static Ca_K = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ca_K\", \"Ca/K\");\n static Ca_Sr = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ca_Sr\", \"Ca/Sr\");\n static Ca_Ti = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ca_Ti\", \"Ca/Ti\");\n static Ti_Ca = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ti_Ca\", \"Ti/Ca\");\n static Cd = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Cd\", \"Cd\");\n static Cd_Mn = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Cd_Mn\", \"Cd/Mn\");\n static Cl = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Cl\", \"Cl\");\n static Co = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Co\", \"Co\");\n static Cr = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Cr\", \"Cr\");\n static Cu = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Cu\", \"Cu\");\n static DWHI = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#DWHI\", \"DWHI\");\n static Dd2H = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Dd2H\", \"Dd2H\");\n static EPS = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#EPS\", \"EPS\");\n static ElNinoEvent = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ElNinoEvent\", \"ElNinoEvent\");\n static Eu_Zr = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Eu_Zr\", \"Eu/Zr\");\n static Fe = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Fe\", \"Fe\");\n static Fe2O3 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Fe2O3\", \"Fe2O3\");\n static Fe_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Fe_Al\", \"Fe/Al\");\n static Fe_Ca = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Fe_Ca\", \"Fe/Ca\");\n static Fe_K = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Fe_K\", \"Fe/K\");\n static Fe_Mn = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Fe_Mn\", \"Fe/Mn\");\n static GDGT = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#GDGT\", \"GDGT\");\n static GDGT_0_Cren = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#GDGT-0_Cren\", \"GDGT-0/Cren\");\n static IP25 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#IP25\", \"IP25\");\n static IRM = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#IRM\", \"IRM\");\n static ITCZ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ITCZ\", \"ITCZ\");\n static JulianDay = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#JulianDay\", \"JulianDay\");\n static K2O = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#K2O\", \"K2O\");\n static K37 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#K37\", \"K37\");\n static K_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#K_Al\", \"K/Al\");\n static LDI = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#LDI\", \"LDI\");\n static LOI = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#LOI\", \"LOI\");\n static La = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#La\", \"La\");\n static MAR = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#MAR\", \"MAR\");\n static MBT = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#MBT\", \"MBT\");\n static MS = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#MS\", \"MS\");\n static Si = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Si\", \"Si\");\n static MXD = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#MXD\", \"MXD\");\n static Mg = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Mg\", \"Mg\");\n static MgO = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#MgO\", \"MgO\");\n static Mg_Ca = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Mg_Ca\", \"Mg/Ca\");\n static Mn = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Mn\", \"Mn\");\n static MnO = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#MnO\", \"MnO\");\n static Mn_Fe = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Mn_Fe\", \"Mn/Fe\");\n static Mn_Mo = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Mn_Mo\", \"Mn/Mo\");\n static Mo = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Mo\", \"Mo\");\n static NO3 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#NO3\", \"NO3\");\n static nitrate = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#nitrate\", \"nitrate\");\n static N_C = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#N_C\", \"N/C\");\n static Na2O = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Na2O\", \"Na2O\");\n static Ni = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ni\", \"Ni\");\n static PC1 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#PC1\", \"PC1\");\n static PC3 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#PC3\", \"PC3\");\n static PC2 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#PC2\", \"PC2\");\n static Paq = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Paq\", \"Paq\");\n static Pb = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Pb\", \"Pb\");\n static Picea_Artemisia = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Picea_Artemisia\", \"Picea/Artemisia\");\n static Picea_Pinus = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Picea_Pinus\", \"Picea/Pinus\");\n static Pinus_Artemisia = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Pinus_Artemisia\", \"Pinus/Artemisia\");\n static Poaceae_Ephedra = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Poaceae_Ephedra\", \"Poaceae/Ephedra\");\n static R570_R630 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#R570_R630\", \"R570/R630\");\n static R650_R700 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#R650_R700\", \"R650/R700\");\n static RABD660670 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#RABD660670\", \"RABD660670\");\n static RAN15 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#RAN15\", \"RAN15\");\n static RBAR = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#RBAR\", \"RBAR\");\n static Rb = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Rb\", \"Rb\");\n static Rb87_Sr86 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Rb87_Sr86\", \"Rb87/Sr86\");\n static SO4 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#SO4\", \"SO4\");\n static sulfate = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sulfate\", \"sulfate\");\n static salinity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#salinity\", \"salinity\");\n static Sc = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Sc\", \"Sc\");\n static Si_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Si_Al\", \"Si/Al\");\n static Si_Ti = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Si_Ti\", \"Si/Ti\");\n static Sr = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Sr\", \"Sr\");\n static Sr_Ca = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Sr_Ca\", \"Sr/Ca\");\n static TDS = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#TDS\", \"TDS\");\n static TEX86 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#TEX86\", \"TEX86\");\n static TIC = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#TIC\", \"TIC\");\n static TOC = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#TOC\", \"TOC\");\n static organicCarbon = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#organicCarbon\", \"organicCarbon\");\n static TOC_TN = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#TOC_TN\", \"TOC/TN\");\n static Ti = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ti\", \"Ti\");\n static TiO2 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#TiO2\", \"TiO2\");\n static Ti_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Ti_Al\", \"Ti/Al\");\n static Uk37 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Uk37\", \"Uk37\");\n static UK37 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#UK37\", \"UK37\");\n static Uk37_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Uk37_\", \"Uk37’\");\n static V = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#V\", \"V\");\n static V_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#V_Al\", \"V/Al\");\n static Y = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Y\", \"Y\");\n static Zn = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Zn\", \"Zn\");\n static Zr = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Zr\", \"Zr\");\n static Zr_Al = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#Zr_Al\", \"Zr/Al\");\n static accumulation = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#accumulation\", \"accumulation\");\n static age = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#age\", \"age\");\n static age14C = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#age14C\", \"age14C\");\n static ammonium = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ammonium\", \"ammonium\");\n static amps = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#amps\", \"amps\");\n static aragonite = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#aragonite\", \"aragonite\");\n static ash = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ash\", \"ash\");\n static boron = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#boron\", \"boron\");\n static brGDGT_IIIa = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa\", \"brGDGT-IIIa\");\n static brGDGT_Id = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-Id\", \"brGDGT-Id\");\n static brGDGT_IIIa_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIIa_\", \"brGDGT-IIIa’\");\n static brGDGT_IIIb = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb\", \"brGDGT-IIIb\");\n static brGDGT_IIIb_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIIb_\", \"brGDGT-IIIb’\");\n static brGDGT_IIIc = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc\", \"brGDGT-IIIc\");\n static brGDGT_IIIc_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIIc_\", \"brGDGT-IIIc’\");\n static brGDGT_IIa = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIa\", \"brGDGT-IIa\");\n static brGDGT_IIa_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIa_\", \"brGDGT-IIa’\");\n static brGDGT_IIb = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIb\", \"brGDGT-IIb\");\n static brGDGT_IIb_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIb_\", \"brGDGT-IIb’\");\n static brGDGT_IIc = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIc\", \"brGDGT-IIc\");\n static brGDGT_IIc_ = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-IIc_\", \"brGDGT-IIc’\");\n static brGDGT_Ia = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-Ia\", \"brGDGT-Ia\");\n static brGDGT_Ib = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-Ib\", \"brGDGT-Ib\");\n static brGDGT_Ic = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#brGDGT-Ic\", \"brGDGT-Ic\");\n static sampleID = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sampleID\", \"sampleID\");\n static bubbleNumberDensity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#bubbleNumberDensity\", \"bubbleNumberDensity\");\n static bulkDensity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#bulkDensity\", \"bulkDensity\");\n static calcificationRate = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#calcificationRate\", \"calcificationRate\");\n static calcite = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#calcite\", \"calcite\");\n static carbon = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#carbon\", \"carbon\");\n static carbonate = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#carbonate\", \"carbonate\");\n static charcoal = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#charcoal\", \"charcoal\");\n static chloride = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#chloride\", \"chloride\");\n static circulationIndex = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#circulationIndex\", \"circulationIndex\");\n static clay = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#clay\", \"clay\");\n static cluster = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#cluster\", \"cluster\");\n static index = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#index\", \"index\");\n static composite = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#composite\", \"composite\");\n static concentration = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#concentration\", \"concentration\");\n static core = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#core\", \"core\");\n static correction = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#correction\", \"correction\");\n static correlationCoefficient = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#correlationCoefficient\", \"correlationCoefficient\");\n static sampleCount = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sampleCount\", \"sampleCount\");\n static count = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#count\", \"count\");\n static d13C = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#d13C\", \"d13C\");\n static d15N = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#d15N\", \"d15N\");\n static d18O = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#d18O\", \"d18O\");\n static d2H = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#d2H\", \"d2H\");\n static d2HUncertaintyHigh80 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#d2HUncertaintyHigh80\", \"d2HUncertaintyHigh80\");\n static d2HUncertaintyLow80 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#d2HUncertaintyLow80\", \"d2HUncertaintyLow80\");\n static deleteMe = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#deleteMe\", \"deleteMe\");\n static needsToBeChanged = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#needsToBeChanged\", \"needsToBeChanged\");\n static deltaRelativeHumidity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#deltaRelativeHumidity\", \"deltaRelativeHumidity\");\n static deltaTemperature = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#deltaTemperature\", \"deltaTemperature\");\n static density = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#density\", \"density\");\n static depth = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#depth\", \"depth\");\n static depthBottom = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#depthBottom\", \"depthBottom\");\n static depthTop = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#depthTop\", \"depthTop\");\n static deuteriumExcess = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#deuteriumExcess\", \"deuteriumExcess\");\n static diatom = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#diatom\", \"diatom\");\n static diatomCount = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#diatomCount\", \"diatomCount\");\n static dinocyst = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#dinocyst\", \"dinocyst\");\n static dolomite = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#dolomite\", \"dolomite\");\n static dryBulkDensity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#dryBulkDensity\", \"dryBulkDensity\");\n static duration = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#duration\", \"duration\");\n static dust = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#dust\", \"dust\");\n static effectivePrecipitation = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#effectivePrecipitation\", \"effectivePrecipitation\");\n static elevation = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#elevation\", \"elevation\");\n static zscore = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#zscore\", \"zscore\");\n static epsilonC28C22 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#epsilonC28C22\", \"epsilonC28C22\");\n static epsilonC28C24 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#epsilonC28C24\", \"epsilonC28C24\");\n static epsilonC29C23 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#epsilonC29C23\", \"epsilonC29C23\");\n static equilibriumLineAltitude = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#equilibriumLineAltitude\", \"equilibriumLineAltitude\");\n static event = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#event\", \"event\");\n static eventLayer = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#eventLayer\", \"eventLayer\");\n static facies = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#facies\", \"facies\");\n static feldspar = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#feldspar\", \"feldspar\");\n static flood = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#flood\", \"flood\");\n static fluorine = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#fluorine\", \"fluorine\");\n static foraminifera = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#foraminifera\", \"foraminifera\");\n static gamma = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#gamma\", \"gamma\");\n static glacierCoverage = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#glacierCoverage\", \"glacierCoverage\");\n static globigerinoidesRuber = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#globigerinoidesRuber\", \"globigerinoidesRuber\");\n static grainSize = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#grainSize\", \"grainSize\");\n static lithics = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#lithics\", \"lithics\");\n static grayscale = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#grayscale\", \"grayscale\");\n static growing_degree_days = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#growing_degree_days\", \"growing degree days\");\n static growthRate = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#growthRate\", \"growthRate\");\n static hasGap = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#hasGap\", \"hasGap\");\n static hasHiatus = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#hasHiatus\", \"hasHiatus\");\n static hole = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#hole\", \"hole\");\n static humidificationIndex = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#humidificationIndex\", \"humidificationIndex\");\n static iceMelt = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#iceMelt\", \"iceMelt\");\n static iceRaftedDebris = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#iceRaftedDebris\", \"iceRaftedDebris\");\n static inc_coh = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#inc_coh\", \"inc/coh\");\n static isReliable = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#isReliable\", \"isReliable\");\n static lakeArea = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#lakeArea\", \"lakeArea\");\n static lakeLevel = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#lakeLevel\", \"lakeLevel\");\n static lakeTrend = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#lakeTrend\", \"lakeTrend\");\n static lakeVolume = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#lakeVolume\", \"lakeVolume\");\n static landscapeCover = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#landscapeCover\", \"landscapeCover\");\n static percent = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#percent\", \"percent\");\n static latitude = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#latitude\", \"latitude\");\n static layerThickness = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#layerThickness\", \"layerThickness\");\n static longitude = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#longitude\", \"longitude\");\n static material = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#material\", \"material\");\n static mineralogy = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#mineralogy\", \"mineralogy\");\n static sulfur = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sulfur\", \"sulfur\");\n static needsToBeSplitIntoMultipleColumns = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#needsToBeSplitIntoMultipleColumns\", \"needsToBeSplitIntoMultipleColumns\");\n static nitrogen = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#nitrogen\", \"nitrogen\");\n static notes = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#notes\", \"notes\");\n static organicMatter = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#organicMatter\", \"organicMatter\");\n static organicNitrogen = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#organicNitrogen\", \"organicNitrogen\");\n static oxygen = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#oxygen\", \"oxygen\");\n static pH = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#pH\", \"pH\");\n static peat = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#peat\", \"peat\");\n static phosphorus = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#phosphorus\", \"phosphorus\");\n static potassium = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#potassium\", \"potassium\");\n static precipitation = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#precipitation\", \"precipitation\");\n static productivity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#productivity\", \"productivity\");\n static pyrite = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#pyrite\", \"pyrite\");\n static quartz = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#quartz\", \"quartz\");\n static reflectance = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#reflectance\", \"reflectance\");\n static relativeHumidity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#relativeHumidity\", \"relativeHumidity\");\n static residualChronology = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#residualChronology\", \"residualChronology\");\n static ringWidth = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#ringWidth\", \"ringWidth\");\n static sand = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sand\", \"sand\");\n static seaIce = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#seaIce\", \"seaIce\");\n static section = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#section\", \"section\");\n static sedimentDry = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sedimentDry\", \"sedimentDry\");\n static sedimentationRate = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sedimentationRate\", \"sedimentationRate\");\n static segmentLength = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#segmentLength\", \"segmentLength\");\n static sequence = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sequence\", \"sequence\");\n static silt = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#silt\", \"silt\");\n static site = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#site\", \"site\");\n static siteCount = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#siteCount\", \"siteCount\");\n static sodium = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#sodium\", \"sodium\");\n static solarIrradiance = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#solarIrradiance\", \"solarIrradiance\");\n static streamflow = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#streamflow\", \"streamflow\");\n static temperature = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#temperature\", \"temperature\");\n static thickness = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#thickness\", \"thickness\");\n static totalCarbon = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#totalCarbon\", \"totalCarbon\");\n static totalNitrogen = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#totalNitrogen\", \"totalNitrogen\");\n static totalPollen = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#totalPollen\", \"totalPollen\");\n static treeCover = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#treeCover\", \"treeCover\");\n static uncertainty = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertainty\", \"uncertainty\");\n static uncertainty1s = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertainty1s\", \"uncertainty1s\");\n static uncertainty2s = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertainty2s\", \"uncertainty2s\");\n static uncertaintyHigh = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyHigh\", \"uncertaintyHigh\");\n static uncertaintyHigh1s = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyHigh1s\", \"uncertaintyHigh1s\");\n static uncertaintyLow95 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyLow95\", \"uncertaintyLow95\");\n static uncertaintyHigh50 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyHigh50\", \"uncertaintyHigh50\");\n static uncertaintyHigh90 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyHigh90\", \"uncertaintyHigh90\");\n static uncertaintyHigh95 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyHigh95\", \"uncertaintyHigh95\");\n static uncertaintyLow = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyLow\", \"uncertaintyLow\");\n static uncertaintyLow1s = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyLow1s\", \"uncertaintyLow1s\");\n static uncertaintyLow90 = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uncertaintyLow90\", \"uncertaintyLow90\");\n static upwelling = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#upwelling\", \"upwelling\");\n static uranium = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#uranium\", \"uranium\");\n static varveThickness = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#varveThickness\", \"varveThickness\");\n static volume = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#volume\", \"volume\");\n static waterContent = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#waterContent\", \"waterContent\");\n static waterTableDepth = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#waterTableDepth\", \"waterTableDepth\");\n static wetBulkDensity = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#wetBulkDensity\", \"wetBulkDensity\");\n static year = new PaleoVariable(\"http://linked.earth/ontology/paleo_variables#year\", \"year\");\n}","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\n\n\n\nexport class PhysicalSample {\n\n public housedAt: string | null;\n public iGSN: string | null;\n public name: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.housedAt = null;\n this.iGSN = null;\n this.name = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#PhysicalSample\";\n this._id = this._ns + \"/\" + uniqid(\"PhysicalSample\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): PhysicalSample {\n const thisObj = new PhysicalSample();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.housedAt !== null) {\n thisObj.housedAt = data.housedAt;\n }\n if (data.iGSN !== null) {\n thisObj.iGSN = data.iGSN;\n }\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): PhysicalSample {\n const thisObj = new PhysicalSample();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasIGSN\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.iGSN = obj;\n }\n }\n \n else if (key === \"housedAt\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.housedAt = obj;\n }\n }\n \n else if (key === \"name\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.housedAt !== null) {\n const valueObj = this.housedAt;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"housedAt\"] = [obj];\n }\n if (this.iGSN !== null) {\n const valueObj = this.iGSN;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasIGSN\"] = [obj];\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"name\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.housedAt !== null) {\n const valueObj = this.housedAt;\n const obj = valueObj\n data[\"housedat\"] = obj;\n }\n if (this.iGSN !== null) {\n const valueObj = this.iGSN;\n const obj = valueObj\n data[\"hasidentifier\"] = obj;\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"hasname\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): PhysicalSample {\n const thisObj = new PhysicalSample();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"hasidentifier\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.iGSN = obj;\n continue;\n }\n if (key === \"hasname\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n if (key === \"housedat\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.housedAt = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getHousedAt(): string | null {\n return this.housedAt;\n }\n\n setHousedAt(housedAt: string): void {\n // if (!(housedAt instanceof string)) {\n // throw new Error(`Error: '${housedAt}' is not of type string`);\n // }\n this.housedAt = housedAt;\n }\n getIGSN(): string | null {\n return this.iGSN;\n }\n\n setIGSN(iGSN: string): void {\n // if (!(iGSN instanceof string)) {\n // throw new Error(`Error: '${iGSN}' is not of type string`);\n // }\n this.iGSN = iGSN;\n }\n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { PaleoUnit } from \"./paleounit\";\n\n\n\nexport class Resolution {\n\n public maxValue: number | null;\n public meanValue: number | null;\n public medianValue: number | null;\n public minValue: number | null;\n public units: PaleoUnit | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.maxValue = null;\n this.meanValue = null;\n this.medianValue = null;\n this.minValue = null;\n this.units = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Resolution\";\n this._id = this._ns + \"/\" + uniqid(\"Resolution\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Resolution {\n const thisObj = new Resolution();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.maxValue !== null) {\n thisObj.maxValue = data.maxValue;\n }\n if (data.meanValue !== null) {\n thisObj.meanValue = data.meanValue;\n }\n if (data.medianValue !== null) {\n thisObj.medianValue = data.medianValue;\n }\n if (data.minValue !== null) {\n thisObj.minValue = data.minValue;\n }\n if (data.units !== null) {\n thisObj.units = new PaleoUnit(data.units.id, data.units.label);\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Resolution {\n const thisObj = new Resolution();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasMaxValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.maxValue = obj;\n }\n }\n \n else if (key === \"hasMeanValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.meanValue = obj;\n }\n }\n \n else if (key === \"hasMedianValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.medianValue = obj;\n }\n }\n \n else if (key === \"hasMinValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.minValue = obj;\n }\n }\n \n else if (key === \"hasUnits\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = PaleoUnit.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.units = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.maxValue !== null) {\n const valueObj = this.maxValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMaxValue\"] = [obj];\n }\n if (this.meanValue !== null) {\n const valueObj = this.meanValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMeanValue\"] = [obj];\n }\n if (this.medianValue !== null) {\n const valueObj = this.medianValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMedianValue\"] = [obj];\n }\n if (this.minValue !== null) {\n const valueObj = this.minValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMinValue\"] = [obj];\n }\n if (this.units !== null) {\n const valueObj = this.units;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasUnits\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.maxValue !== null) {\n const valueObj = this.maxValue;\n const obj = valueObj\n data[\"hasMaxValue\"] = obj;\n }\n if (this.meanValue !== null) {\n const valueObj = this.meanValue;\n const obj = valueObj\n data[\"hasMeanValue\"] = obj;\n }\n if (this.medianValue !== null) {\n const valueObj = this.medianValue;\n const obj = valueObj\n data[\"hasMedianValue\"] = obj;\n }\n if (this.minValue !== null) {\n const valueObj = this.minValue;\n const obj = valueObj\n data[\"hasMinValue\"] = obj;\n }\n if (this.units !== null) {\n const valueObj = this.units;\n const obj = valueObj.toJson()\n data[\"units\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Resolution {\n const thisObj = new Resolution();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"hasMaxValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.maxValue = obj;\n continue;\n }\n if (key === \"hasMeanValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.meanValue = obj;\n continue;\n }\n if (key === \"hasMedianValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.medianValue = obj;\n continue;\n }\n if (key === \"hasMinValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.minValue = obj;\n continue;\n }\n if (key === \"units\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = PaleoUnit.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.units = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getMaxValue(): number | null {\n return this.maxValue;\n }\n\n setMaxValue(maxValue: number): void {\n // if (!(maxValue instanceof number)) {\n // throw new Error(`Error: '${maxValue}' is not of type number`);\n // }\n this.maxValue = maxValue;\n }\n getMeanValue(): number | null {\n return this.meanValue;\n }\n\n setMeanValue(meanValue: number): void {\n // if (!(meanValue instanceof number)) {\n // throw new Error(`Error: '${meanValue}' is not of type number`);\n // }\n this.meanValue = meanValue;\n }\n getMedianValue(): number | null {\n return this.medianValue;\n }\n\n setMedianValue(medianValue: number): void {\n // if (!(medianValue instanceof number)) {\n // throw new Error(`Error: '${medianValue}' is not of type number`);\n // }\n this.medianValue = medianValue;\n }\n getMinValue(): number | null {\n return this.minValue;\n }\n\n setMinValue(minValue: number): void {\n // if (!(minValue instanceof number)) {\n // throw new Error(`Error: '${minValue}' is not of type number`);\n // }\n this.minValue = minValue;\n }\n getUnits(): PaleoUnit | null {\n return this.units;\n }\n\n setUnits(units: PaleoUnit): void {\n // if (!(units instanceof PaleoUnit)) {\n // throw new Error(`Error: '${units}' is not of type PaleoUnit\\nYou can create a new PaleoUnit object from a string using the following syntax:\\n- Fetch existing PaleoUnit by synonym: PaleoUnit.fromSynonym(\"${units}\")\\n- Create a new custom PaleoUnit: new PaleoUnit(\"${units}\")`);\n // }\n this.units = units;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { ArchiveType } from \"./archivetype\";\nimport { Calibration } from \"./calibration\";\nimport { Compilation } from \"./compilation\";\nimport { Interpretation } from \"./interpretation\";\nimport { PaleoProxy } from \"./paleoproxy\";\nimport { PaleoProxyGeneral } from \"./paleoproxygeneral\";\nimport { PaleoUnit } from \"./paleounit\";\nimport { PaleoVariable } from \"./paleovariable\";\nimport { PhysicalSample } from \"./physicalsample\";\nimport { Resolution } from \"./resolution\";\n\n\n\nexport class Variable {\n\n public archiveType: ArchiveType | null;\n public calibratedVias: Calibration[];\n public columnNumber: number | null;\n public composite: boolean | null;\n public description: string | null;\n public foundInDataset: object | null;\n public foundInTable: object | null;\n public instrument: object | null;\n public interpretations: Interpretation[];\n public maxValue: number | null;\n public meanValue: number | null;\n public medianValue: number | null;\n public minValue: number | null;\n public missingValue: string | null;\n public name: string | null;\n public notes: string | null;\n public partOfCompilations: Compilation[];\n public physicalSamples: PhysicalSample[];\n public primary: boolean | null;\n public proxy: PaleoProxy | null;\n public proxyGeneral: PaleoProxyGeneral | null;\n public resolution: Resolution | null;\n public standardVariable: PaleoVariable | null;\n public uncertainty: string | null;\n public uncertaintyAnalytical: string | null;\n public uncertaintyReproducibility: string | null;\n public units: PaleoUnit | null;\n public values: string | null;\n public variableId: string | null;\n public variableType: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.archiveType = null;\n this.calibratedVias = [];\n this.columnNumber = null;\n this.composite = null;\n this.description = null;\n this.foundInDataset = null;\n this.foundInTable = null;\n this.instrument = null;\n this.interpretations = [];\n this.maxValue = null;\n this.meanValue = null;\n this.medianValue = null;\n this.minValue = null;\n this.missingValue = null;\n this.name = null;\n this.notes = null;\n this.partOfCompilations = [];\n this.physicalSamples = [];\n this.primary = null;\n this.proxy = null;\n this.proxyGeneral = null;\n this.resolution = null;\n this.standardVariable = null;\n this.uncertainty = null;\n this.uncertaintyAnalytical = null;\n this.uncertaintyReproducibility = null;\n this.units = null;\n this.values = null;\n this.variableId = null;\n this.variableType = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Variable\";\n this._id = this._ns + \"/\" + uniqid(\"Variable\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Variable {\n const thisObj = new Variable();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.archiveType !== null) {\n thisObj.archiveType = new ArchiveType(data.archiveType.id, data.archiveType.label);\n }\n if (data.columnNumber !== null) {\n thisObj.columnNumber = data.columnNumber;\n }\n if (data.composite !== null) {\n thisObj.composite = data.composite;\n }\n if (data.description !== null) {\n thisObj.description = data.description;\n }\n if (data.foundInDataset !== null) {\n thisObj.foundInDataset = data.foundInDataset;\n }\n if (data.foundInTable !== null) {\n thisObj.foundInTable = data.foundInTable;\n }\n if (data.instrument !== null) {\n thisObj.instrument = data.instrument;\n }\n if (data.maxValue !== null) {\n thisObj.maxValue = data.maxValue;\n }\n if (data.meanValue !== null) {\n thisObj.meanValue = data.meanValue;\n }\n if (data.medianValue !== null) {\n thisObj.medianValue = data.medianValue;\n }\n if (data.minValue !== null) {\n thisObj.minValue = data.minValue;\n }\n if (data.missingValue !== null) {\n thisObj.missingValue = data.missingValue;\n }\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n if (data.notes !== null) {\n thisObj.notes = data.notes;\n }\n if (data.primary !== null) {\n thisObj.primary = data.primary;\n }\n if (data.proxy !== null) {\n thisObj.proxy = new PaleoProxy(data.proxy.id, data.proxy.label);\n }\n if (data.proxyGeneral !== null) {\n thisObj.proxyGeneral = new PaleoProxyGeneral(data.proxyGeneral.id, data.proxyGeneral.label);\n }\n if (data.resolution !== null) {\n thisObj.resolution = Resolution.fromDictionary(data.resolution);\n }\n if (data.standardVariable !== null) {\n thisObj.standardVariable = new PaleoVariable(data.standardVariable.id, data.standardVariable.label);\n }\n if (data.uncertainty !== null) {\n thisObj.uncertainty = data.uncertainty;\n }\n if (data.uncertaintyAnalytical !== null) {\n thisObj.uncertaintyAnalytical = data.uncertaintyAnalytical;\n }\n if (data.uncertaintyReproducibility !== null) {\n thisObj.uncertaintyReproducibility = data.uncertaintyReproducibility;\n }\n if (data.units !== null) {\n thisObj.units = new PaleoUnit(data.units.id, data.units.label);\n }\n if (data.values !== null) {\n thisObj.values = data.values;\n }\n if (data.variableId !== null) {\n thisObj.variableId = data.variableId;\n }\n if (data.variableType !== null) {\n thisObj.variableType = data.variableType;\n }\n thisObj.calibratedVias = [];\n for (const value of (data.calibratedVias || []) as any[]) {\n thisObj.calibratedVias.push(Calibration.fromDictionary(value));\n }\n thisObj.interpretations = [];\n for (const value of (data.interpretations || []) as any[]) {\n thisObj.interpretations.push(Interpretation.fromDictionary(value));\n }\n thisObj.partOfCompilations = [];\n for (const value of (data.partOfCompilations || []) as any[]) {\n thisObj.partOfCompilations.push(Compilation.fromDictionary(value));\n }\n thisObj.physicalSamples = [];\n for (const value of (data.physicalSamples || []) as any[]) {\n thisObj.physicalSamples.push(PhysicalSample.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Variable {\n const thisObj = new Variable();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"calibratedVia\") {\n thisObj.calibratedVias = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Calibration.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.calibratedVias.push(obj);\n }\n }\n \n else if (key === \"foundInDataset\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.foundInDataset = obj;\n }\n }\n \n else if (key === \"foundInTable\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.foundInTable = obj;\n }\n }\n \n else if (key === \"hasArchiveType\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = ArchiveType.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.archiveType = obj;\n }\n }\n \n else if (key === \"hasColumnNumber\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.columnNumber = obj;\n }\n }\n \n else if (key === \"hasDescription\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.description = obj;\n }\n }\n \n else if (key === \"hasInstrument\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.instrument = obj;\n }\n }\n \n else if (key === \"hasInterpretation\") {\n thisObj.interpretations = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Interpretation.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.interpretations.push(obj);\n }\n }\n \n else if (key === \"hasMaxValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.maxValue = obj;\n }\n }\n \n else if (key === \"hasMeanValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.meanValue = obj;\n }\n }\n \n else if (key === \"hasMedianValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.medianValue = obj;\n }\n }\n \n else if (key === \"hasMinValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.minValue = obj;\n }\n }\n \n else if (key === \"hasMissingValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.missingValue = obj;\n }\n }\n \n else if (key === \"hasName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes = obj;\n }\n }\n \n else if (key === \"hasPhysicalSample\") {\n thisObj.physicalSamples = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = PhysicalSample.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.physicalSamples.push(obj);\n }\n }\n \n else if (key === \"hasProxy\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = PaleoProxy.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.proxy = obj;\n }\n }\n \n else if (key === \"hasProxyGeneral\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = PaleoProxyGeneral.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.proxyGeneral = obj;\n }\n }\n \n else if (key === \"hasResolution\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Resolution.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.resolution = obj;\n }\n }\n \n else if (key === \"hasStandardVariable\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = PaleoVariable.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.standardVariable = obj;\n }\n }\n \n else if (key === \"hasType\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.variableType = obj;\n }\n }\n \n else if (key === \"hasUncertainty\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.uncertainty = obj;\n }\n }\n \n else if (key === \"hasUncertaintyAnalytical\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.uncertaintyAnalytical = obj;\n }\n }\n \n else if (key === \"hasUncertaintyReproducibility\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.uncertaintyReproducibility = obj;\n }\n }\n \n else if (key === \"hasUnits\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = PaleoUnit.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.units = obj;\n }\n }\n \n else if (key === \"hasValues\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.values = obj;\n }\n }\n \n else if (key === \"hasVariableId\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.variableId = obj;\n }\n }\n \n else if (key === \"isComposite\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.composite = obj;\n }\n }\n \n else if (key === \"isPrimary\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.primary = obj;\n }\n }\n \n else if (key === \"partOfCompilation\") {\n thisObj.partOfCompilations = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Compilation.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.partOfCompilations.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.archiveType !== null) {\n const valueObj = this.archiveType;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasArchiveType\"] = [obj];\n }\n if (this.calibratedVias.length > 0) {\n data[this._id][\"calibratedVia\"] = [];\n for (const valueObj of this.calibratedVias) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"calibratedVia\"].push(obj);\n }\n }\n if (this.columnNumber !== null) {\n const valueObj = this.columnNumber;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#integer\"\n }\n data[this._id][\"hasColumnNumber\"] = [obj];\n }\n if (this.composite !== null) {\n const valueObj = this.composite;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#boolean\"\n }\n data[this._id][\"isComposite\"] = [obj];\n }\n if (this.description !== null) {\n const valueObj = this.description;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDescription\"] = [obj];\n }\n if (this.foundInDataset !== null) {\n const valueObj = this.foundInDataset;\n const obj = {\n \"@id\": valueObj,\n \"@type\": \"uri\"\n }\n data[this._id][\"foundInDataset\"] = [obj];\n }\n if (this.foundInTable !== null) {\n const valueObj = this.foundInTable;\n const obj = {\n \"@id\": valueObj,\n \"@type\": \"uri\"\n }\n data[this._id][\"foundInTable\"] = [obj];\n }\n if (this.instrument !== null) {\n const valueObj = this.instrument;\n const obj = {\n \"@id\": valueObj,\n \"@type\": \"uri\"\n }\n data[this._id][\"hasInstrument\"] = [obj];\n }\n if (this.interpretations.length > 0) {\n data[this._id][\"hasInterpretation\"] = [];\n for (const valueObj of this.interpretations) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasInterpretation\"].push(obj);\n }\n }\n if (this.maxValue !== null) {\n const valueObj = this.maxValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMaxValue\"] = [obj];\n }\n if (this.meanValue !== null) {\n const valueObj = this.meanValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMeanValue\"] = [obj];\n }\n if (this.medianValue !== null) {\n const valueObj = this.medianValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMedianValue\"] = [obj];\n }\n if (this.minValue !== null) {\n const valueObj = this.minValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#float\"\n }\n data[this._id][\"hasMinValue\"] = [obj];\n }\n if (this.missingValue !== null) {\n const valueObj = this.missingValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasMissingValue\"] = [obj];\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasName\"] = [obj];\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"] = [obj];\n }\n if (this.partOfCompilations.length > 0) {\n data[this._id][\"partOfCompilation\"] = [];\n for (const valueObj of this.partOfCompilations) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"partOfCompilation\"].push(obj);\n }\n }\n if (this.physicalSamples.length > 0) {\n data[this._id][\"hasPhysicalSample\"] = [];\n for (const valueObj of this.physicalSamples) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasPhysicalSample\"].push(obj);\n }\n }\n if (this.primary !== null) {\n const valueObj = this.primary;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#boolean\"\n }\n data[this._id][\"isPrimary\"] = [obj];\n }\n if (this.proxy !== null) {\n const valueObj = this.proxy;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasProxy\"] = [obj];\n }\n if (this.proxyGeneral !== null) {\n const valueObj = this.proxyGeneral;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasProxyGeneral\"] = [obj];\n }\n if (this.resolution !== null) {\n const valueObj = this.resolution;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasResolution\"] = [obj];\n }\n if (this.standardVariable !== null) {\n const valueObj = this.standardVariable;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasStandardVariable\"] = [obj];\n }\n if (this.uncertainty !== null) {\n const valueObj = this.uncertainty;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasUncertainty\"] = [obj];\n }\n if (this.uncertaintyAnalytical !== null) {\n const valueObj = this.uncertaintyAnalytical;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasUncertaintyAnalytical\"] = [obj];\n }\n if (this.uncertaintyReproducibility !== null) {\n const valueObj = this.uncertaintyReproducibility;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasUncertaintyReproducibility\"] = [obj];\n }\n if (this.units !== null) {\n const valueObj = this.units;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasUnits\"] = [obj];\n }\n if (this.values !== null) {\n const valueObj = this.values;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasValues\"] = [obj];\n }\n if (this.variableId !== null) {\n const valueObj = this.variableId;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVariableId\"] = [obj];\n }\n if (this.variableType !== null) {\n const valueObj = this.variableType;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasType\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.archiveType !== null) {\n const valueObj = this.archiveType;\n const obj = valueObj.toJson()\n data[\"archiveType\"] = obj;\n }\n if (this.calibratedVias.length > 0) {\n data[\"calibration\"] = [];\n for (const valueObj of this.calibratedVias) {\n const obj = valueObj.toJson()\n data[\"calibration\"].push(obj);\n }\n }\n if (this.columnNumber !== null) {\n const valueObj = this.columnNumber;\n const obj = valueObj\n data[\"number\"] = obj;\n }\n if (this.composite !== null) {\n const valueObj = this.composite;\n const obj = valueObj\n data[\"isComposite\"] = obj;\n }\n if (this.description !== null) {\n const valueObj = this.description;\n const obj = valueObj\n data[\"description\"] = obj;\n }\n if (this.instrument !== null) {\n const valueObj = this.instrument;\n const obj = valueObj\n data[\"measurementInstrument\"] = obj;\n }\n if (this.interpretations.length > 0) {\n data[\"interpretation\"] = [];\n for (const valueObj of this.interpretations) {\n const obj = valueObj.toJson()\n data[\"interpretation\"].push(obj);\n }\n }\n if (this.maxValue !== null) {\n const valueObj = this.maxValue;\n const obj = valueObj\n data[\"hasMaxValue\"] = obj;\n }\n if (this.meanValue !== null) {\n const valueObj = this.meanValue;\n const obj = valueObj\n data[\"hasMeanValue\"] = obj;\n }\n if (this.medianValue !== null) {\n const valueObj = this.medianValue;\n const obj = valueObj\n data[\"hasMedianValue\"] = obj;\n }\n if (this.minValue !== null) {\n const valueObj = this.minValue;\n const obj = valueObj\n data[\"hasMinValue\"] = obj;\n }\n if (this.missingValue !== null) {\n const valueObj = this.missingValue;\n const obj = valueObj\n data[\"missingValue\"] = obj;\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"variableName\"] = obj;\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = valueObj\n data[\"notes\"] = obj;\n }\n if (this.partOfCompilations.length > 0) {\n data[\"inCompilationBeta\"] = [];\n for (const valueObj of this.partOfCompilations) {\n const obj = valueObj.toJson()\n data[\"inCompilationBeta\"].push(obj);\n }\n }\n if (this.physicalSamples.length > 0) {\n data[\"physicalSample\"] = [];\n for (const valueObj of this.physicalSamples) {\n const obj = valueObj.toJson()\n data[\"physicalSample\"].push(obj);\n }\n }\n if (this.primary !== null) {\n const valueObj = this.primary;\n const obj = valueObj\n data[\"isPrimary\"] = obj;\n }\n if (this.proxy !== null) {\n const valueObj = this.proxy;\n const obj = valueObj.toJson()\n data[\"proxy\"] = obj;\n }\n if (this.proxyGeneral !== null) {\n const valueObj = this.proxyGeneral;\n const obj = valueObj.toJson()\n data[\"proxyGeneral\"] = obj;\n }\n if (this.resolution !== null) {\n const valueObj = this.resolution;\n const obj = valueObj.toJson()\n data[\"resolution\"] = obj;\n }\n if (this.standardVariable !== null) {\n const valueObj = this.standardVariable;\n const obj = valueObj.toJson()\n data[\"hasStandardVariable\"] = obj;\n }\n if (this.uncertainty !== null) {\n const valueObj = this.uncertainty;\n const obj = valueObj\n data[\"uncertainty\"] = obj;\n }\n if (this.uncertaintyAnalytical !== null) {\n const valueObj = this.uncertaintyAnalytical;\n const obj = valueObj\n data[\"uncertaintyAnalytical\"] = obj;\n }\n if (this.uncertaintyReproducibility !== null) {\n const valueObj = this.uncertaintyReproducibility;\n const obj = valueObj\n data[\"uncertaintyReproducibility\"] = obj;\n }\n if (this.units !== null) {\n const valueObj = this.units;\n const obj = valueObj.toJson()\n data[\"units\"] = obj;\n }\n if (this.values !== null) {\n const valueObj = this.values;\n const obj = valueObj\n data[\"hasValues\"] = obj;\n }\n if (this.variableId !== null) {\n const valueObj = this.variableId;\n const obj = valueObj\n data[\"TSid\"] = obj;\n }\n if (this.variableType !== null) {\n const valueObj = this.variableType;\n const obj = valueObj\n data[\"variableType\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Variable {\n const thisObj = new Variable();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"TSid\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.variableId = obj;\n continue;\n }\n if (key === \"archiveType\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = ArchiveType.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.archiveType = obj;\n continue;\n }\n if (key === \"calibration\") {\n let obj: any = null;\n thisObj.calibratedVias = [];\n for (const value of pvalue as any[]) {\n obj = Calibration.fromJson(value)\n thisObj.calibratedVias.push(obj);\n }\n continue;\n }\n if (key === \"description\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.description = obj;\n continue;\n }\n if (key === \"foundInDataset\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.foundInDataset = obj;\n continue;\n }\n if (key === \"foundInTable\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.foundInTable = obj;\n continue;\n }\n if (key === \"hasMaxValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.maxValue = obj;\n continue;\n }\n if (key === \"hasMeanValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.meanValue = obj;\n continue;\n }\n if (key === \"hasMedianValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.medianValue = obj;\n continue;\n }\n if (key === \"hasMinValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.minValue = obj;\n continue;\n }\n if (key === \"hasStandardVariable\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = PaleoVariable.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.standardVariable = obj;\n continue;\n }\n if (key === \"hasValues\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.values = obj;\n continue;\n }\n if (key === \"inCompilationBeta\") {\n let obj: any = null;\n thisObj.partOfCompilations = [];\n for (const value of pvalue as any[]) {\n obj = Compilation.fromJson(value)\n thisObj.partOfCompilations.push(obj);\n }\n continue;\n }\n if (key === \"interpretation\") {\n let obj: any = null;\n thisObj.interpretations = [];\n for (const value of pvalue as any[]) {\n obj = Interpretation.fromJson(value)\n thisObj.interpretations.push(obj);\n }\n continue;\n }\n if (key === \"isComposite\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.composite = obj;\n continue;\n }\n if (key === \"isPrimary\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.primary = obj;\n continue;\n }\n if (key === \"measurementInstrument\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.instrument = obj;\n continue;\n }\n if (key === \"missingValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.missingValue = obj;\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.notes = obj;\n continue;\n }\n if (key === \"number\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.columnNumber = obj;\n continue;\n }\n if (key === \"physicalSample\") {\n let obj: any = null;\n thisObj.physicalSamples = [];\n for (const value of pvalue as any[]) {\n obj = PhysicalSample.fromJson(value)\n thisObj.physicalSamples.push(obj);\n }\n continue;\n }\n if (key === \"proxy\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = PaleoProxy.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.proxy = obj;\n continue;\n }\n if (key === \"proxyGeneral\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = PaleoProxyGeneral.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.proxyGeneral = obj;\n continue;\n }\n if (key === \"resolution\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = Resolution.fromJson(value)\n thisObj.resolution = obj;\n continue;\n }\n if (key === \"uncertainty\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.uncertainty = obj;\n continue;\n }\n if (key === \"uncertaintyAnalytical\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.uncertaintyAnalytical = obj;\n continue;\n }\n if (key === \"uncertaintyReproducibility\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.uncertaintyReproducibility = obj;\n continue;\n }\n if (key === \"units\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = PaleoUnit.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.units = obj;\n continue;\n }\n if (key === \"variableName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n if (key === \"variableType\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.variableType = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getArchiveType(): ArchiveType | null {\n return this.archiveType;\n }\n\n setArchiveType(archiveType: ArchiveType): void {\n // if (!(archiveType instanceof ArchiveType)) {\n // throw new Error(`Error: '${archiveType}' is not of type ArchiveType\\nYou can create a new ArchiveType object from a string using the following syntax:\\n- Fetch existing ArchiveType by synonym: ArchiveType.fromSynonym(\"${archiveType}\")\\n- Create a new custom ArchiveType: new ArchiveType(\"${archiveType}\")`);\n // }\n this.archiveType = archiveType;\n }\n getCalibratedVias(): Calibration[] {\n return this.calibratedVias;\n }\n\n setCalibratedVias(calibratedVias: Calibration[]): void {\n // if (!Array.isArray(calibratedVias)) {\n // throw new Error(\"Error: calibratedVias is not an array\");\n // }\n // if (!calibratedVias.every(x => x instanceof Calibration)) {\n // throw new Error(`Error: '${calibratedVias}' is not of type Calibration`);\n // }\n this.calibratedVias = calibratedVias;\n }\n\n addCalibratedVia(calibratedVias: Calibration): void {\n // if (!(calibratedVias instanceof Calibration)) {\n // throw new Error(`Error: '${calibratedVias}' is not of type Calibration`);\n // }\n this.calibratedVias.push(calibratedVias);\n }\n getColumnNumber(): number | null {\n return this.columnNumber;\n }\n\n setColumnNumber(columnNumber: number): void {\n // if (!(columnNumber instanceof number)) {\n // throw new Error(`Error: '${columnNumber}' is not of type number`);\n // }\n this.columnNumber = columnNumber;\n }\n getDescription(): string | null {\n return this.description;\n }\n\n setDescription(description: string): void {\n // if (!(description instanceof string)) {\n // throw new Error(`Error: '${description}' is not of type string`);\n // }\n this.description = description;\n }\n getFoundInDataset(): object | null {\n return this.foundInDataset;\n }\n\n setFoundInDataset(foundInDataset: object): void {\n // if (!(foundInDataset instanceof object)) {\n // throw new Error(`Error: '${foundInDataset}' is not of type object`);\n // }\n this.foundInDataset = foundInDataset;\n }\n getFoundInTable(): object | null {\n return this.foundInTable;\n }\n\n setFoundInTable(foundInTable: object): void {\n // if (!(foundInTable instanceof object)) {\n // throw new Error(`Error: '${foundInTable}' is not of type object`);\n // }\n this.foundInTable = foundInTable;\n }\n getInstrument(): object | null {\n return this.instrument;\n }\n\n setInstrument(instrument: object): void {\n // if (!(instrument instanceof object)) {\n // throw new Error(`Error: '${instrument}' is not of type object`);\n // }\n this.instrument = instrument;\n }\n getInterpretations(): Interpretation[] {\n return this.interpretations;\n }\n\n setInterpretations(interpretations: Interpretation[]): void {\n // if (!Array.isArray(interpretations)) {\n // throw new Error(\"Error: interpretations is not an array\");\n // }\n // if (!interpretations.every(x => x instanceof Interpretation)) {\n // throw new Error(`Error: '${interpretations}' is not of type Interpretation`);\n // }\n this.interpretations = interpretations;\n }\n\n addInterpretation(interpretations: Interpretation): void {\n // if (!(interpretations instanceof Interpretation)) {\n // throw new Error(`Error: '${interpretations}' is not of type Interpretation`);\n // }\n this.interpretations.push(interpretations);\n }\n getMaxValue(): number | null {\n return this.maxValue;\n }\n\n setMaxValue(maxValue: number): void {\n // if (!(maxValue instanceof number)) {\n // throw new Error(`Error: '${maxValue}' is not of type number`);\n // }\n this.maxValue = maxValue;\n }\n getMeanValue(): number | null {\n return this.meanValue;\n }\n\n setMeanValue(meanValue: number): void {\n // if (!(meanValue instanceof number)) {\n // throw new Error(`Error: '${meanValue}' is not of type number`);\n // }\n this.meanValue = meanValue;\n }\n getMedianValue(): number | null {\n return this.medianValue;\n }\n\n setMedianValue(medianValue: number): void {\n // if (!(medianValue instanceof number)) {\n // throw new Error(`Error: '${medianValue}' is not of type number`);\n // }\n this.medianValue = medianValue;\n }\n getMinValue(): number | null {\n return this.minValue;\n }\n\n setMinValue(minValue: number): void {\n // if (!(minValue instanceof number)) {\n // throw new Error(`Error: '${minValue}' is not of type number`);\n // }\n this.minValue = minValue;\n }\n getMissingValue(): string | null {\n return this.missingValue;\n }\n\n setMissingValue(missingValue: string): void {\n // if (!(missingValue instanceof string)) {\n // throw new Error(`Error: '${missingValue}' is not of type string`);\n // }\n this.missingValue = missingValue;\n }\n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n }\n getNotes(): string | null {\n return this.notes;\n }\n\n setNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n getPartOfCompilations(): Compilation[] {\n return this.partOfCompilations;\n }\n\n setPartOfCompilations(partOfCompilations: Compilation[]): void {\n // if (!Array.isArray(partOfCompilations)) {\n // throw new Error(\"Error: partOfCompilations is not an array\");\n // }\n // if (!partOfCompilations.every(x => x instanceof Compilation)) {\n // throw new Error(`Error: '${partOfCompilations}' is not of type Compilation`);\n // }\n this.partOfCompilations = partOfCompilations;\n }\n\n addPartOfCompilation(partOfCompilations: Compilation): void {\n // if (!(partOfCompilations instanceof Compilation)) {\n // throw new Error(`Error: '${partOfCompilations}' is not of type Compilation`);\n // }\n this.partOfCompilations.push(partOfCompilations);\n }\n getPhysicalSamples(): PhysicalSample[] {\n return this.physicalSamples;\n }\n\n setPhysicalSamples(physicalSamples: PhysicalSample[]): void {\n // if (!Array.isArray(physicalSamples)) {\n // throw new Error(\"Error: physicalSamples is not an array\");\n // }\n // if (!physicalSamples.every(x => x instanceof PhysicalSample)) {\n // throw new Error(`Error: '${physicalSamples}' is not of type PhysicalSample`);\n // }\n this.physicalSamples = physicalSamples;\n }\n\n addPhysicalSample(physicalSamples: PhysicalSample): void {\n // if (!(physicalSamples instanceof PhysicalSample)) {\n // throw new Error(`Error: '${physicalSamples}' is not of type PhysicalSample`);\n // }\n this.physicalSamples.push(physicalSamples);\n }\n getProxy(): PaleoProxy | null {\n return this.proxy;\n }\n\n setProxy(proxy: PaleoProxy): void {\n // if (!(proxy instanceof PaleoProxy)) {\n // throw new Error(`Error: '${proxy}' is not of type PaleoProxy\\nYou can create a new PaleoProxy object from a string using the following syntax:\\n- Fetch existing PaleoProxy by synonym: PaleoProxy.fromSynonym(\"${proxy}\")\\n- Create a new custom PaleoProxy: new PaleoProxy(\"${proxy}\")`);\n // }\n this.proxy = proxy;\n }\n getProxyGeneral(): PaleoProxyGeneral | null {\n return this.proxyGeneral;\n }\n\n setProxyGeneral(proxyGeneral: PaleoProxyGeneral): void {\n // if (!(proxyGeneral instanceof PaleoProxyGeneral)) {\n // throw new Error(`Error: '${proxyGeneral}' is not of type PaleoProxyGeneral\\nYou can create a new PaleoProxyGeneral object from a string using the following syntax:\\n- Fetch existing PaleoProxyGeneral by synonym: PaleoProxyGeneral.fromSynonym(\"${proxyGeneral}\")\\n- Create a new custom PaleoProxyGeneral: new PaleoProxyGeneral(\"${proxyGeneral}\")`);\n // }\n this.proxyGeneral = proxyGeneral;\n }\n getResolution(): Resolution | null {\n return this.resolution;\n }\n\n setResolution(resolution: Resolution): void {\n // if (!(resolution instanceof Resolution)) {\n // throw new Error(`Error: '${resolution}' is not of type Resolution`);\n // }\n this.resolution = resolution;\n }\n getStandardVariable(): PaleoVariable | null {\n return this.standardVariable;\n }\n\n setStandardVariable(standardVariable: PaleoVariable): void {\n // if (!(standardVariable instanceof PaleoVariable)) {\n // throw new Error(`Error: '${standardVariable}' is not of type PaleoVariable\\nYou can create a new PaleoVariable object from a string using the following syntax:\\n- Fetch existing PaleoVariable by synonym: PaleoVariable.fromSynonym(\"${standardVariable}\")\\n- Create a new custom PaleoVariable: new PaleoVariable(\"${standardVariable}\")`);\n // }\n this.standardVariable = standardVariable;\n }\n getUncertainty(): string | null {\n return this.uncertainty;\n }\n\n setUncertainty(uncertainty: string): void {\n // if (!(uncertainty instanceof string)) {\n // throw new Error(`Error: '${uncertainty}' is not of type string`);\n // }\n this.uncertainty = uncertainty;\n }\n getUncertaintyAnalytical(): string | null {\n return this.uncertaintyAnalytical;\n }\n\n setUncertaintyAnalytical(uncertaintyAnalytical: string): void {\n // if (!(uncertaintyAnalytical instanceof string)) {\n // throw new Error(`Error: '${uncertaintyAnalytical}' is not of type string`);\n // }\n this.uncertaintyAnalytical = uncertaintyAnalytical;\n }\n getUncertaintyReproducibility(): string | null {\n return this.uncertaintyReproducibility;\n }\n\n setUncertaintyReproducibility(uncertaintyReproducibility: string): void {\n // if (!(uncertaintyReproducibility instanceof string)) {\n // throw new Error(`Error: '${uncertaintyReproducibility}' is not of type string`);\n // }\n this.uncertaintyReproducibility = uncertaintyReproducibility;\n }\n getUnits(): PaleoUnit | null {\n return this.units;\n }\n\n setUnits(units: PaleoUnit): void {\n // if (!(units instanceof PaleoUnit)) {\n // throw new Error(`Error: '${units}' is not of type PaleoUnit\\nYou can create a new PaleoUnit object from a string using the following syntax:\\n- Fetch existing PaleoUnit by synonym: PaleoUnit.fromSynonym(\"${units}\")\\n- Create a new custom PaleoUnit: new PaleoUnit(\"${units}\")`);\n // }\n this.units = units;\n }\n getValues(): string | null {\n return this.values;\n }\n\n setValues(values: string): void {\n // if (!(values instanceof string)) {\n // throw new Error(`Error: '${values}' is not of type string`);\n // }\n this.values = values;\n }\n getVariableId(): string | null {\n return this.variableId;\n }\n\n setVariableId(variableId: string): void {\n // if (!(variableId instanceof string)) {\n // throw new Error(`Error: '${variableId}' is not of type string`);\n // }\n this.variableId = variableId;\n }\n getVariableType(): string | null {\n return this.variableType;\n }\n\n setVariableType(variableType: string): void {\n // if (!(variableType instanceof string)) {\n // throw new Error(`Error: '${variableType}' is not of type string`);\n // }\n this.variableType = variableType;\n }\n isComposite(): boolean | null {\n return this.composite;\n }\n\n setComposite(composite: boolean): void {\n // if (!(composite instanceof boolean)) {\n // throw new Error(`Error: '${composite}' is not of type boolean`);\n // }\n this.composite = composite;\n }\n isPrimary(): boolean | null {\n return this.primary;\n }\n\n setPrimary(primary: boolean): void {\n // if (!(primary instanceof boolean)) {\n // throw new Error(`Error: '${primary}' is not of type boolean`);\n // }\n this.primary = primary;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { Variable } from \"./variable\";\n\n\ninterface VariableMetadata {\n hasValues?: boolean;\n [key: string]: any;\n}\n\ntype DataFrameData = {\n [K in string]: any[];\n};\n\ninterface DataFrame {\n data: DataFrameData;\n metadata: Record<string, VariableMetadata>;\n}\n\ninterface DataList {\n data: any[];\n metadata: VariableMetadata[];\n}\n\n\nexport class DataTable {\n\n public fileName: string | null;\n public missingValue: string | null;\n public variables: Variable[];\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.fileName = null;\n this.missingValue = null;\n this.variables = [];\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#DataTable\";\n this._id = this._ns + \"/\" + uniqid(\"DataTable\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): DataTable {\n const thisObj = new DataTable();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.fileName !== null) {\n thisObj.fileName = data.fileName;\n }\n if (data.missingValue !== null) {\n thisObj.missingValue = data.missingValue;\n }\n thisObj.variables = [];\n for (const value of (data.variables || []) as any[]) {\n thisObj.variables.push(Variable.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): DataTable {\n const thisObj = new DataTable();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasFileName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.fileName = obj;\n }\n }\n \n else if (key === \"hasMissingValue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.missingValue = obj;\n }\n }\n \n else if (key === \"hasVariable\") {\n thisObj.variables = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Variable.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.variables.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.fileName !== null) {\n const valueObj = this.fileName;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasFileName\"] = [obj];\n }\n if (this.missingValue !== null) {\n const valueObj = this.missingValue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasMissingValue\"] = [obj];\n }\n if (this.variables.length > 0) {\n data[this._id][\"hasVariable\"] = [];\n for (const valueObj of this.variables) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasVariable\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.fileName !== null) {\n const valueObj = this.fileName;\n const obj = valueObj\n data[\"filename\"] = obj;\n }\n if (this.missingValue !== null) {\n const valueObj = this.missingValue;\n const obj = valueObj\n data[\"missingValue\"] = obj;\n }\n if (this.variables.length > 0) {\n data[\"columns\"] = [];\n for (const valueObj of this.variables) {\n const obj = valueObj.toJson()\n data[\"columns\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): DataTable {\n const thisObj = new DataTable();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"columns\") {\n let obj: any = null;\n thisObj.variables = [];\n for (const value of pvalue as any[]) {\n obj = Variable.fromJson(value)\n thisObj.variables.push(obj);\n }\n continue;\n }\n if (key === \"filename\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.fileName = obj;\n continue;\n }\n if (key === \"missingValue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.missingValue = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getFileName(): string | null {\n return this.fileName;\n }\n\n setFileName(fileName: string): void {\n // if (!(fileName instanceof string)) {\n // throw new Error(`Error: '${fileName}' is not of type string`);\n // }\n this.fileName = fileName;\n }\n getMissingValue(): string | null {\n return this.missingValue;\n }\n\n setMissingValue(missingValue: string): void {\n // if (!(missingValue instanceof string)) {\n // throw new Error(`Error: '${missingValue}' is not of type string`);\n // }\n this.missingValue = missingValue;\n }\n getVariables(): Variable[] {\n return this.variables;\n }\n\n setVariables(variables: Variable[]): void {\n // if (!Array.isArray(variables)) {\n // throw new Error(\"Error: variables is not an array\");\n // }\n // if (!variables.every(x => x instanceof Variable)) {\n // throw new Error(`Error: '${variables}' is not of type Variable`);\n // }\n this.variables = variables;\n }\n\n addVariable(variables: Variable): void {\n // if (!(variables instanceof Variable)) {\n // throw new Error(`Error: '${variables}' is not of type Variable`);\n // }\n this.variables.push(variables);\n }\n /**\n * Get data as a DataFrame-like structure\n * @param useStandardNames Whether to use standard variable names instead of custom names\n * @returns Object containing data and metadata\n */\n public getDataFrame(useStandardNames: boolean = false): DataFrame {\n const result: DataFrame = {\n data: {},\n metadata: {}\n };\n \n for (const v of this.variables) {\n const name = v.getName();\n if (!name) continue;\n \n let colname = name;\n const standardVar = v.getStandardVariable();\n if (useStandardNames && standardVar !== null) {\n const label = standardVar.getLabel();\n if (label) colname = label;\n }\n \n // Get values\n const values = v.getValues();\n if (values) {\n result.data[colname] = parseVariableValues(values);\n }\n \n // Get metadata\n const varMetadata = v.toJson() as VariableMetadata;\n if (varMetadata) {\n // delete varMetadata.hasValues;\n result.metadata[colname] = varMetadata;\n delete result.metadata[colname].hasValues;\n delete result.metadata[colname].values;\n }\n }\n \n return result;\n }\n\n public getDataList(): DataList {\n const result: DataList = {\n data: [],\n metadata: []\n };\n \n for (const v of this.variables) {\n // Get values\n const values = v.getValues();\n if (values) {\n result.data.push(parseVariableValues(values));\n }\n \n // Get metadata\n const varMetadata = v.toJson() as VariableMetadata;\n if (varMetadata) {\n // delete varMetadata.hasValues;\n delete varMetadata.hasValues;\n delete varMetadata.values;\n result.metadata.push(varMetadata);\n }\n }\n return result;\n } \n\n /**\n * Set data from a DataFrame-like structure\n * @param data Object containing data and metadata\n */\n public setDataFrame(data: DataFrame): void {\n // Create new set of variable objects using the metadata\n this.variables = [];\n \n for (const [colname, values] of Object.entries(data.data)) {\n const metadata = data.metadata[colname];\n if (!metadata) continue;\n \n const v = Variable.fromJson(metadata);\n if (v) {\n v.setValues(JSON.stringify(values));\n this.addVariable(v);\n }\n }\n }\n\n /**\n * Set data from a DataFrame-like structure\n * @param data Object containing data and metadata\n */\n public setDataList(data: DataList): void {\n // Create new set of variable objects using the metadata\n this.variables = [];\n\n // Transpose the data which is currently a list of rows with each row being a list of values\n // into a list of columns with each column being a list of values\n const transposedData: any[][] = [];\n \n // Initialize transposed data structure\n for (let i = 0; i < data.metadata.length; i++) {\n transposedData[i] = [];\n }\n \n // Transpose rows to columns\n for (let rowIndex = 0; rowIndex < data.data.length; rowIndex++) {\n const row = data.data[rowIndex];\n for (let colIndex = 0; colIndex < row.length; colIndex++) {\n if (colIndex < transposedData.length) {\n transposedData[colIndex].push(row[colIndex]);\n }\n }\n }\n \n // Create variables from metadata and transposed data\n for (let i = 0; i < data.metadata.length; i++) {\n const values = transposedData[i];\n const metadata = data.metadata[i];\n if (!metadata) continue;\n \n const v = Variable.fromJson(metadata);\n if (v) {\n v.setValues(JSON.stringify(values));\n this.addVariable(v);\n }\n }\n }\n\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { DataTable } from \"./datatable\";\n\n\n\nexport class Model {\n\n public code: string | null;\n public distributionTables: DataTable[];\n public ensembleTables: DataTable[];\n public summaryTables: DataTable[];\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.code = null;\n this.distributionTables = [];\n this.ensembleTables = [];\n this.summaryTables = [];\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Model\";\n this._id = this._ns + \"/\" + uniqid(\"Model\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Model {\n const thisObj = new Model();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.code !== null) {\n thisObj.code = data.code;\n }\n thisObj.distributionTables = [];\n for (const value of (data.distributionTables || []) as any[]) {\n thisObj.distributionTables.push(DataTable.fromDictionary(value));\n }\n thisObj.ensembleTables = [];\n for (const value of (data.ensembleTables || []) as any[]) {\n thisObj.ensembleTables.push(DataTable.fromDictionary(value));\n }\n thisObj.summaryTables = [];\n for (const value of (data.summaryTables || []) as any[]) {\n thisObj.summaryTables.push(DataTable.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Model {\n const thisObj = new Model();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasCode\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.code = obj;\n }\n }\n \n else if (key === \"hasDistributionTable\") {\n thisObj.distributionTables = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = DataTable.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.distributionTables.push(obj);\n }\n }\n \n else if (key === \"hasEnsembleTable\") {\n thisObj.ensembleTables = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = DataTable.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.ensembleTables.push(obj);\n }\n }\n \n else if (key === \"hasSummaryTable\") {\n thisObj.summaryTables = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = DataTable.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.summaryTables.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.code !== null) {\n const valueObj = this.code;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCode\"] = [obj];\n }\n if (this.distributionTables.length > 0) {\n data[this._id][\"hasDistributionTable\"] = [];\n for (const valueObj of this.distributionTables) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasDistributionTable\"].push(obj);\n }\n }\n if (this.ensembleTables.length > 0) {\n data[this._id][\"hasEnsembleTable\"] = [];\n for (const valueObj of this.ensembleTables) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasEnsembleTable\"].push(obj);\n }\n }\n if (this.summaryTables.length > 0) {\n data[this._id][\"hasSummaryTable\"] = [];\n for (const valueObj of this.summaryTables) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasSummaryTable\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.code !== null) {\n const valueObj = this.code;\n const obj = valueObj\n data[\"method\"] = obj;\n }\n if (this.distributionTables.length > 0) {\n data[\"distributionTable\"] = [];\n for (const valueObj of this.distributionTables) {\n const obj = valueObj.toJson()\n data[\"distributionTable\"].push(obj);\n }\n }\n if (this.ensembleTables.length > 0) {\n data[\"ensembleTable\"] = [];\n for (const valueObj of this.ensembleTables) {\n const obj = valueObj.toJson()\n data[\"ensembleTable\"].push(obj);\n }\n }\n if (this.summaryTables.length > 0) {\n data[\"summaryTable\"] = [];\n for (const valueObj of this.summaryTables) {\n const obj = valueObj.toJson()\n data[\"summaryTable\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Model {\n const thisObj = new Model();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"distributionTable\") {\n let obj: any = null;\n thisObj.distributionTables = [];\n for (const value of pvalue as any[]) {\n obj = DataTable.fromJson(value)\n thisObj.distributionTables.push(obj);\n }\n continue;\n }\n if (key === \"ensembleTable\") {\n let obj: any = null;\n thisObj.ensembleTables = [];\n for (const value of pvalue as any[]) {\n obj = DataTable.fromJson(value)\n thisObj.ensembleTables.push(obj);\n }\n continue;\n }\n if (key === \"method\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.code = obj;\n continue;\n }\n if (key === \"summaryTable\") {\n let obj: any = null;\n thisObj.summaryTables = [];\n for (const value of pvalue as any[]) {\n obj = DataTable.fromJson(value)\n thisObj.summaryTables.push(obj);\n }\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getCode(): string | null {\n return this.code;\n }\n\n setCode(code: string): void {\n // if (!(code instanceof string)) {\n // throw new Error(`Error: '${code}' is not of type string`);\n // }\n this.code = code;\n }\n getDistributionTables(): DataTable[] {\n return this.distributionTables;\n }\n\n setDistributionTables(distributionTables: DataTable[]): void {\n // if (!Array.isArray(distributionTables)) {\n // throw new Error(\"Error: distributionTables is not an array\");\n // }\n // if (!distributionTables.every(x => x instanceof DataTable)) {\n // throw new Error(`Error: '${distributionTables}' is not of type DataTable`);\n // }\n this.distributionTables = distributionTables;\n }\n\n addDistributionTable(distributionTables: DataTable): void {\n // if (!(distributionTables instanceof DataTable)) {\n // throw new Error(`Error: '${distributionTables}' is not of type DataTable`);\n // }\n this.distributionTables.push(distributionTables);\n }\n getEnsembleTables(): DataTable[] {\n return this.ensembleTables;\n }\n\n setEnsembleTables(ensembleTables: DataTable[]): void {\n // if (!Array.isArray(ensembleTables)) {\n // throw new Error(\"Error: ensembleTables is not an array\");\n // }\n // if (!ensembleTables.every(x => x instanceof DataTable)) {\n // throw new Error(`Error: '${ensembleTables}' is not of type DataTable`);\n // }\n this.ensembleTables = ensembleTables;\n }\n\n addEnsembleTable(ensembleTables: DataTable): void {\n // if (!(ensembleTables instanceof DataTable)) {\n // throw new Error(`Error: '${ensembleTables}' is not of type DataTable`);\n // }\n this.ensembleTables.push(ensembleTables);\n }\n getSummaryTables(): DataTable[] {\n return this.summaryTables;\n }\n\n setSummaryTables(summaryTables: DataTable[]): void {\n // if (!Array.isArray(summaryTables)) {\n // throw new Error(\"Error: summaryTables is not an array\");\n // }\n // if (!summaryTables.every(x => x instanceof DataTable)) {\n // throw new Error(`Error: '${summaryTables}' is not of type DataTable`);\n // }\n this.summaryTables = summaryTables;\n }\n\n addSummaryTable(summaryTables: DataTable): void {\n // if (!(summaryTables instanceof DataTable)) {\n // throw new Error(`Error: '${summaryTables}' is not of type DataTable`);\n // }\n this.summaryTables.push(summaryTables);\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { DataTable } from \"./datatable\";\nimport { Model } from \"./model\";\n\n\n\nexport class ChronData {\n\n public measurementTables: DataTable[];\n public modeledBy: Model[];\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.measurementTables = [];\n this.modeledBy = [];\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#ChronData\";\n this._id = this._ns + \"/\" + uniqid(\"ChronData\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): ChronData {\n const thisObj = new ChronData();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n thisObj.measurementTables = [];\n for (const value of (data.measurementTables || []) as any[]) {\n thisObj.measurementTables.push(DataTable.fromDictionary(value));\n }\n thisObj.modeledBy = [];\n for (const value of (data.modeledBy || []) as any[]) {\n thisObj.modeledBy.push(Model.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): ChronData {\n const thisObj = new ChronData();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasMeasurementTable\") {\n thisObj.measurementTables = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = DataTable.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.measurementTables.push(obj);\n }\n }\n \n else if (key === \"modeledBy\") {\n thisObj.modeledBy = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Model.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.modeledBy.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.measurementTables.length > 0) {\n data[this._id][\"hasMeasurementTable\"] = [];\n for (const valueObj of this.measurementTables) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasMeasurementTable\"].push(obj);\n }\n }\n if (this.modeledBy.length > 0) {\n data[this._id][\"modeledBy\"] = [];\n for (const valueObj of this.modeledBy) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"modeledBy\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.measurementTables.length > 0) {\n data[\"measurementTable\"] = [];\n for (const valueObj of this.measurementTables) {\n const obj = valueObj.toJson()\n data[\"measurementTable\"].push(obj);\n }\n }\n if (this.modeledBy.length > 0) {\n data[\"model\"] = [];\n for (const valueObj of this.modeledBy) {\n const obj = valueObj.toJson()\n data[\"model\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): ChronData {\n const thisObj = new ChronData();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"measurementTable\") {\n let obj: any = null;\n thisObj.measurementTables = [];\n for (const value of pvalue as any[]) {\n obj = DataTable.fromJson(value)\n thisObj.measurementTables.push(obj);\n }\n continue;\n }\n if (key === \"model\") {\n let obj: any = null;\n thisObj.modeledBy = [];\n for (const value of pvalue as any[]) {\n obj = Model.fromJson(value)\n thisObj.modeledBy.push(obj);\n }\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getMeasurementTables(): DataTable[] {\n return this.measurementTables;\n }\n\n setMeasurementTables(measurementTables: DataTable[]): void {\n // if (!Array.isArray(measurementTables)) {\n // throw new Error(\"Error: measurementTables is not an array\");\n // }\n // if (!measurementTables.every(x => x instanceof DataTable)) {\n // throw new Error(`Error: '${measurementTables}' is not of type DataTable`);\n // }\n this.measurementTables = measurementTables;\n }\n\n addMeasurementTable(measurementTables: DataTable): void {\n // if (!(measurementTables instanceof DataTable)) {\n // throw new Error(`Error: '${measurementTables}' is not of type DataTable`);\n // }\n this.measurementTables.push(measurementTables);\n }\n getModeledBy(): Model[] {\n return this.modeledBy;\n }\n\n setModeledBy(modeledBy: Model[]): void {\n // if (!Array.isArray(modeledBy)) {\n // throw new Error(\"Error: modeledBy is not an array\");\n // }\n // if (!modeledBy.every(x => x instanceof Model)) {\n // throw new Error(`Error: '${modeledBy}' is not of type Model`);\n // }\n this.modeledBy = modeledBy;\n }\n\n addModeledBy(modeledBy: Model): void {\n // if (!(modeledBy instanceof Model)) {\n // throw new Error(`Error: '${modeledBy}' is not of type Model`);\n // }\n this.modeledBy.push(modeledBy);\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\n\n\n\nexport class Person {\n\n public name: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.name = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Person\";\n this._id = this._ns + \"/\" + uniqid(\"Person\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Person {\n const thisObj = new Person();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Person {\n const thisObj = new Person();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasName\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"name\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Person {\n const thisObj = new Person();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"name\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { Person } from \"./person\";\n\n\n\nexport class Funding {\n\n public fundingAgency: string | null;\n public fundingCountry: string | null;\n public grants: string[];\n public investigators: Person[];\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.fundingAgency = null;\n this.fundingCountry = null;\n this.grants = [];\n this.investigators = [];\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Funding\";\n this._id = this._ns + \"/\" + uniqid(\"Funding\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Funding {\n const thisObj = new Funding();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.fundingAgency !== null) {\n thisObj.fundingAgency = data.fundingAgency;\n }\n if (data.fundingCountry !== null) {\n thisObj.fundingCountry = data.fundingCountry;\n }\n thisObj.grants = [];\n for (const value of (data.grants || []) as any[]) {\n thisObj.grants.push(value);\n }\n thisObj.investigators = [];\n for (const value of (data.investigators || []) as any[]) {\n thisObj.investigators.push(Person.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Funding {\n const thisObj = new Funding();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasFundingAgency\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.fundingAgency = obj;\n }\n }\n \n else if (key === \"hasFundingCountry\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.fundingCountry = obj;\n }\n }\n \n else if (key === \"hasGrant\") {\n thisObj.grants = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.grants.push(obj);\n }\n }\n \n else if (key === \"hasInvestigator\") {\n thisObj.investigators = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Person.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.investigators.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.fundingAgency !== null) {\n const valueObj = this.fundingAgency;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasFundingAgency\"] = [obj];\n }\n if (this.fundingCountry !== null) {\n const valueObj = this.fundingCountry;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasFundingCountry\"] = [obj];\n }\n if (this.grants.length > 0) {\n data[this._id][\"hasGrant\"] = [];\n for (const valueObj of this.grants) {\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasGrant\"].push(obj);\n }\n }\n if (this.investigators.length > 0) {\n data[this._id][\"hasInvestigator\"] = [];\n for (const valueObj of this.investigators) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasInvestigator\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.fundingAgency !== null) {\n const valueObj = this.fundingAgency;\n const obj = valueObj\n data[\"agency\"] = obj;\n }\n if (this.fundingCountry !== null) {\n const valueObj = this.fundingCountry;\n const obj = valueObj\n data[\"country\"] = obj;\n }\n if (this.grants.length > 0) {\n data[\"grant\"] = [];\n for (const valueObj of this.grants) {\n const obj = valueObj\n data[\"grant\"].push(obj);\n }\n }\n if (this.investigators.length > 0) {\n data[\"investigator\"] = [];\n for (const valueObj of this.investigators) {\n const obj = valueObj.toJson()\n data[\"investigator\"].push(obj);\n }\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Funding {\n const thisObj = new Funding();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"agency\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.fundingAgency = obj;\n continue;\n }\n if (key === \"country\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.fundingCountry = obj;\n continue;\n }\n if (key === \"grant\") {\n let obj: any = null;\n thisObj.grants = [];\n for (const value of pvalue as any[]) {\n obj = value\n thisObj.grants.push(obj);\n }\n continue;\n }\n if (key === \"investigator\") {\n let obj: any = null;\n thisObj.investigators = [];\n for (const value of pvalue as any[]) {\n obj = Person.fromJson(value)\n thisObj.investigators.push(obj);\n }\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getFundingAgency(): string | null {\n return this.fundingAgency;\n }\n\n setFundingAgency(fundingAgency: string): void {\n // if (!(fundingAgency instanceof string)) {\n // throw new Error(`Error: '${fundingAgency}' is not of type string`);\n // }\n this.fundingAgency = fundingAgency;\n }\n getFundingCountry(): string | null {\n return this.fundingCountry;\n }\n\n setFundingCountry(fundingCountry: string): void {\n // if (!(fundingCountry instanceof string)) {\n // throw new Error(`Error: '${fundingCountry}' is not of type string`);\n // }\n this.fundingCountry = fundingCountry;\n }\n getGrants(): string[] {\n return this.grants;\n }\n\n setGrants(grants: string[]): void {\n // if (!Array.isArray(grants)) {\n // throw new Error(\"Error: grants is not an array\");\n // }\n // if (!grants.every(x => x instanceof string)) {\n // throw new Error(`Error: '${grants}' is not of type string`);\n // }\n this.grants = grants;\n }\n\n addGrant(grants: string): void {\n // if (!(grants instanceof string)) {\n // throw new Error(`Error: '${grants}' is not of type string`);\n // }\n this.grants.push(grants);\n }\n getInvestigators(): Person[] {\n return this.investigators;\n }\n\n setInvestigators(investigators: Person[]): void {\n // if (!Array.isArray(investigators)) {\n // throw new Error(\"Error: investigators is not an array\");\n // }\n // if (!investigators.every(x => x instanceof Person)) {\n // throw new Error(`Error: '${investigators}' is not of type Person`);\n // }\n this.investigators = investigators;\n }\n\n addInvestigator(investigators: Person): void {\n // if (!(investigators instanceof Person)) {\n // throw new Error(`Error: '${investigators}' is not of type Person`);\n // }\n this.investigators.push(investigators);\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\n\n\n\nexport class Location {\n\n public continent: string | null;\n public coordinates: string | null;\n public coordinatesFor: object | null;\n public country: string | null;\n public countryOcean: string | null;\n public description: string | null;\n public elevation: string | null;\n public geometryType: string | null;\n public latitude: string | null;\n public locationName: string | null;\n public locationType: string | null;\n public longitude: string | null;\n public notes: string | null;\n public ocean: string | null;\n public siteName: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.continent = null;\n this.coordinates = null;\n this.coordinatesFor = null;\n this.country = null;\n this.countryOcean = null;\n this.description = null;\n this.elevation = null;\n this.geometryType = null;\n this.latitude = null;\n this.locationName = null;\n this.locationType = null;\n this.longitude = null;\n this.notes = null;\n this.ocean = null;\n this.siteName = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Location\";\n this._id = this._ns + \"/\" + uniqid(\"Location\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Location {\n const thisObj = new Location();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.continent !== null) {\n thisObj.continent = data.continent;\n }\n if (data.coordinates !== null) {\n thisObj.coordinates = data.coordinates;\n }\n if (data.coordinatesFor !== null) {\n thisObj.coordinatesFor = data.coordinatesFor;\n }\n if (data.country !== null) {\n thisObj.country = data.country;\n }\n if (data.countryOcean !== null) {\n thisObj.countryOcean = data.countryOcean;\n }\n if (data.description !== null) {\n thisObj.description = data.description;\n }\n if (data.elevation !== null) {\n thisObj.elevation = data.elevation;\n }\n if (data.geometryType !== null) {\n thisObj.geometryType = data.geometryType;\n }\n if (data.latitude !== null) {\n thisObj.latitude = data.latitude;\n }\n if (data.locationName !== null) {\n thisObj.locationName = data.locationName;\n }\n if (data.locationType !== null) {\n thisObj.locationType = data.locationType;\n }\n if (data.longitude !== null) {\n thisObj.longitude = data.longitude;\n }\n if (data.notes !== null) {\n thisObj.notes = data.notes;\n }\n if (data.ocean !== null) {\n thisObj.ocean = data.ocean;\n }\n if (data.siteName !== null) {\n thisObj.siteName = data.siteName;\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Location {\n const thisObj = new Location();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"coordinates\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.coordinates = obj;\n }\n }\n \n else if (key === \"coordinatesFor\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.coordinatesFor = obj;\n }\n }\n \n else if (key === \"hasContinent\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.continent = obj;\n }\n }\n \n else if (key === \"hasCountry\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.country = obj;\n }\n }\n \n else if (key === \"hasCountryOcean\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.countryOcean = obj;\n }\n }\n \n else if (key === \"hasDescription\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.description = obj;\n }\n }\n \n else if (key === \"hasElevation\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.elevation = obj;\n }\n }\n \n else if (key === \"hasGeometryType\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.geometryType = obj;\n }\n }\n \n else if (key === \"hasLatitude\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.latitude = obj;\n }\n }\n \n else if (key === \"hasLocationName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.locationName = obj;\n }\n }\n \n else if (key === \"hasLongitude\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.longitude = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes = obj;\n }\n }\n \n else if (key === \"hasOcean\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.ocean = obj;\n }\n }\n \n else if (key === \"hasSiteName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.siteName = obj;\n }\n }\n \n else if (key === \"hasType\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.locationType = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.continent !== null) {\n const valueObj = this.continent;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasContinent\"] = [obj];\n }\n if (this.coordinates !== null) {\n const valueObj = this.coordinates;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"coordinates\"] = [obj];\n }\n if (this.coordinatesFor !== null) {\n const valueObj = this.coordinatesFor;\n const obj = {\n \"@id\": valueObj,\n \"@type\": \"uri\"\n }\n data[this._id][\"coordinatesFor\"] = [obj];\n }\n if (this.country !== null) {\n const valueObj = this.country;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCountry\"] = [obj];\n }\n if (this.countryOcean !== null) {\n const valueObj = this.countryOcean;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCountryOcean\"] = [obj];\n }\n if (this.description !== null) {\n const valueObj = this.description;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDescription\"] = [obj];\n }\n if (this.elevation !== null) {\n const valueObj = this.elevation;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasElevation\"] = [obj];\n }\n if (this.geometryType !== null) {\n const valueObj = this.geometryType;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasGeometryType\"] = [obj];\n }\n if (this.latitude !== null) {\n const valueObj = this.latitude;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasLatitude\"] = [obj];\n }\n if (this.locationName !== null) {\n const valueObj = this.locationName;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasLocationName\"] = [obj];\n }\n if (this.locationType !== null) {\n const valueObj = this.locationType;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasType\"] = [obj];\n }\n if (this.longitude !== null) {\n const valueObj = this.longitude;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasLongitude\"] = [obj];\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"] = [obj];\n }\n if (this.ocean !== null) {\n const valueObj = this.ocean;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasOcean\"] = [obj];\n }\n if (this.siteName !== null) {\n const valueObj = this.siteName;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasSiteName\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.continent !== null) {\n const valueObj = this.continent;\n const obj = valueObj\n data[\"continent\"] = obj;\n }\n if (this.coordinates !== null) {\n const valueObj = this.coordinates;\n const obj = valueObj\n data[\"coordinates\"] = obj;\n }\n if (this.coordinatesFor !== null) {\n const valueObj = this.coordinatesFor;\n const obj = valueObj\n data[\"coordinatesFor\"] = obj;\n }\n if (this.country !== null) {\n const valueObj = this.country;\n const obj = valueObj\n data[\"country\"] = obj;\n }\n if (this.countryOcean !== null) {\n const valueObj = this.countryOcean;\n const obj = valueObj\n data[\"countryOcean\"] = obj;\n }\n if (this.description !== null) {\n const valueObj = this.description;\n const obj = valueObj\n data[\"description\"] = obj;\n }\n if (this.elevation !== null) {\n const valueObj = this.elevation;\n const obj = valueObj\n data[\"elevation\"] = obj;\n }\n if (this.geometryType !== null) {\n const valueObj = this.geometryType;\n const obj = valueObj\n data[\"geometryType\"] = obj;\n }\n if (this.latitude !== null) {\n const valueObj = this.latitude;\n const obj = valueObj\n data[\"latitude\"] = obj;\n }\n if (this.locationName !== null) {\n const valueObj = this.locationName;\n const obj = valueObj\n data[\"locationName\"] = obj;\n }\n if (this.locationType !== null) {\n const valueObj = this.locationType;\n const obj = valueObj\n data[\"type\"] = obj;\n }\n if (this.longitude !== null) {\n const valueObj = this.longitude;\n const obj = valueObj\n data[\"longitude\"] = obj;\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = valueObj\n data[\"notes\"] = obj;\n }\n if (this.ocean !== null) {\n const valueObj = this.ocean;\n const obj = valueObj\n data[\"ocean\"] = obj;\n }\n if (this.siteName !== null) {\n const valueObj = this.siteName;\n const obj = valueObj\n data[\"siteName\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Location {\n const thisObj = new Location();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"continent\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.continent = obj;\n continue;\n }\n if (key === \"coordinates\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.coordinates = obj;\n continue;\n }\n if (key === \"coordinatesFor\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.coordinatesFor = obj;\n continue;\n }\n if (key === \"country\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.country = obj;\n continue;\n }\n if (key === \"countryOcean\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.countryOcean = obj;\n continue;\n }\n if (key === \"description\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.description = obj;\n continue;\n }\n if (key === \"elevation\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.elevation = obj;\n continue;\n }\n if (key === \"geometryType\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.geometryType = obj;\n continue;\n }\n if (key === \"latitude\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.latitude = obj;\n continue;\n }\n if (key === \"locationName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.locationName = obj;\n continue;\n }\n if (key === \"longitude\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.longitude = obj;\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.notes = obj;\n continue;\n }\n if (key === \"ocean\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.ocean = obj;\n continue;\n }\n if (key === \"siteName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.siteName = obj;\n continue;\n }\n if (key === \"type\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.locationType = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getContinent(): string | null {\n return this.continent;\n }\n\n setContinent(continent: string): void {\n // if (!(continent instanceof string)) {\n // throw new Error(`Error: '${continent}' is not of type string`);\n // }\n this.continent = continent;\n }\n getCoordinates(): string | null {\n return this.coordinates;\n }\n\n setCoordinates(coordinates: string): void {\n // if (!(coordinates instanceof string)) {\n // throw new Error(`Error: '${coordinates}' is not of type string`);\n // }\n this.coordinates = coordinates;\n }\n getCoordinatesFor(): object | null {\n return this.coordinatesFor;\n }\n\n setCoordinatesFor(coordinatesFor: object): void {\n // if (!(coordinatesFor instanceof object)) {\n // throw new Error(`Error: '${coordinatesFor}' is not of type object`);\n // }\n this.coordinatesFor = coordinatesFor;\n }\n getCountry(): string | null {\n return this.country;\n }\n\n setCountry(country: string): void {\n // if (!(country instanceof string)) {\n // throw new Error(`Error: '${country}' is not of type string`);\n // }\n this.country = country;\n }\n getCountryOcean(): string | null {\n return this.countryOcean;\n }\n\n setCountryOcean(countryOcean: string): void {\n // if (!(countryOcean instanceof string)) {\n // throw new Error(`Error: '${countryOcean}' is not of type string`);\n // }\n this.countryOcean = countryOcean;\n }\n getDescription(): string | null {\n return this.description;\n }\n\n setDescription(description: string): void {\n // if (!(description instanceof string)) {\n // throw new Error(`Error: '${description}' is not of type string`);\n // }\n this.description = description;\n }\n getElevation(): string | null {\n return this.elevation;\n }\n\n setElevation(elevation: string): void {\n // if (!(elevation instanceof string)) {\n // throw new Error(`Error: '${elevation}' is not of type string`);\n // }\n this.elevation = elevation;\n }\n getGeometryType(): string | null {\n return this.geometryType;\n }\n\n setGeometryType(geometryType: string): void {\n // if (!(geometryType instanceof string)) {\n // throw new Error(`Error: '${geometryType}' is not of type string`);\n // }\n this.geometryType = geometryType;\n }\n getLatitude(): string | null {\n return this.latitude;\n }\n\n setLatitude(latitude: string): void {\n // if (!(latitude instanceof string)) {\n // throw new Error(`Error: '${latitude}' is not of type string`);\n // }\n this.latitude = latitude;\n }\n getLocationName(): string | null {\n return this.locationName;\n }\n\n setLocationName(locationName: string): void {\n // if (!(locationName instanceof string)) {\n // throw new Error(`Error: '${locationName}' is not of type string`);\n // }\n this.locationName = locationName;\n }\n getLocationType(): string | null {\n return this.locationType;\n }\n\n setLocationType(locationType: string): void {\n // if (!(locationType instanceof string)) {\n // throw new Error(`Error: '${locationType}' is not of type string`);\n // }\n this.locationType = locationType;\n }\n getLongitude(): string | null {\n return this.longitude;\n }\n\n setLongitude(longitude: string): void {\n // if (!(longitude instanceof string)) {\n // throw new Error(`Error: '${longitude}' is not of type string`);\n // }\n this.longitude = longitude;\n }\n getNotes(): string | null {\n return this.notes;\n }\n\n setNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n getOcean(): string | null {\n return this.ocean;\n }\n\n setOcean(ocean: string): void {\n // if (!(ocean instanceof string)) {\n // throw new Error(`Error: '${ocean}' is not of type string`);\n // }\n this.ocean = ocean;\n }\n getSiteName(): string | null {\n return this.siteName;\n }\n\n setSiteName(siteName: string): void {\n // if (!(siteName instanceof string)) {\n // throw new Error(`Error: '${siteName}' is not of type string`);\n // }\n this.siteName = siteName;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { DataTable } from \"./datatable\";\nimport { Model } from \"./model\";\n\n\n\nexport class PaleoData {\n\n public measurementTables: DataTable[];\n public modeledBy: Model[];\n public name: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.measurementTables = [];\n this.modeledBy = [];\n this.name = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#PaleoData\";\n this._id = this._ns + \"/\" + uniqid(\"PaleoData\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): PaleoData {\n const thisObj = new PaleoData();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n thisObj.measurementTables = [];\n for (const value of (data.measurementTables || []) as any[]) {\n thisObj.measurementTables.push(DataTable.fromDictionary(value));\n }\n thisObj.modeledBy = [];\n for (const value of (data.modeledBy || []) as any[]) {\n thisObj.modeledBy.push(Model.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): PaleoData {\n const thisObj = new PaleoData();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasMeasurementTable\") {\n thisObj.measurementTables = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = DataTable.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.measurementTables.push(obj);\n }\n }\n \n else if (key === \"hasName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n \n else if (key === \"modeledBy\") {\n thisObj.modeledBy = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Model.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.modeledBy.push(obj);\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.measurementTables.length > 0) {\n data[this._id][\"hasMeasurementTable\"] = [];\n for (const valueObj of this.measurementTables) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasMeasurementTable\"].push(obj);\n }\n }\n if (this.modeledBy.length > 0) {\n data[this._id][\"modeledBy\"] = [];\n for (const valueObj of this.modeledBy) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"modeledBy\"].push(obj);\n }\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasName\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.measurementTables.length > 0) {\n data[\"measurementTable\"] = [];\n for (const valueObj of this.measurementTables) {\n const obj = valueObj.toJson()\n data[\"measurementTable\"].push(obj);\n }\n }\n if (this.modeledBy.length > 0) {\n data[\"model\"] = [];\n for (const valueObj of this.modeledBy) {\n const obj = valueObj.toJson()\n data[\"model\"].push(obj);\n }\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"paleoDataName\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): PaleoData {\n const thisObj = new PaleoData();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"measurementTable\") {\n let obj: any = null;\n thisObj.measurementTables = [];\n for (const value of pvalue as any[]) {\n obj = DataTable.fromJson(value)\n thisObj.measurementTables.push(obj);\n }\n continue;\n }\n if (key === \"model\") {\n let obj: any = null;\n thisObj.modeledBy = [];\n for (const value of pvalue as any[]) {\n obj = Model.fromJson(value)\n thisObj.modeledBy.push(obj);\n }\n continue;\n }\n if (key === \"paleoDataName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getMeasurementTables(): DataTable[] {\n return this.measurementTables;\n }\n\n setMeasurementTables(measurementTables: DataTable[]): void {\n // if (!Array.isArray(measurementTables)) {\n // throw new Error(\"Error: measurementTables is not an array\");\n // }\n // if (!measurementTables.every(x => x instanceof DataTable)) {\n // throw new Error(`Error: '${measurementTables}' is not of type DataTable`);\n // }\n this.measurementTables = measurementTables;\n }\n\n addMeasurementTable(measurementTables: DataTable): void {\n // if (!(measurementTables instanceof DataTable)) {\n // throw new Error(`Error: '${measurementTables}' is not of type DataTable`);\n // }\n this.measurementTables.push(measurementTables);\n }\n getModeledBy(): Model[] {\n return this.modeledBy;\n }\n\n setModeledBy(modeledBy: Model[]): void {\n // if (!Array.isArray(modeledBy)) {\n // throw new Error(\"Error: modeledBy is not an array\");\n // }\n // if (!modeledBy.every(x => x instanceof Model)) {\n // throw new Error(`Error: '${modeledBy}' is not of type Model`);\n // }\n this.modeledBy = modeledBy;\n }\n\n addModeledBy(modeledBy: Model): void {\n // if (!(modeledBy instanceof Model)) {\n // throw new Error(`Error: '${modeledBy}' is not of type Model`);\n // }\n this.modeledBy.push(modeledBy);\n }\n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { Person } from \"./person\";\n\n\n\nexport class Publication {\n\n public abstract: string | null;\n public authors: Person[];\n public citation: string | null;\n public citeKey: string | null;\n public dOI: string | null;\n public dataUrls: string[];\n public firstAuthor: Person | null;\n public institution: string | null;\n public issue: string | null;\n public journal: string | null;\n public pages: string | null;\n public publicationType: string | null;\n public publisher: string | null;\n public report: string | null;\n public title: string | null;\n public urls: string[];\n public volume: string | null;\n public year: number | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.abstract = null;\n this.authors = [];\n this.citation = null;\n this.citeKey = null;\n this.dOI = null;\n this.dataUrls = [];\n this.firstAuthor = null;\n this.institution = null;\n this.issue = null;\n this.journal = null;\n this.pages = null;\n this.publicationType = null;\n this.publisher = null;\n this.report = null;\n this.title = null;\n this.urls = [];\n this.volume = null;\n this.year = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Publication\";\n this._id = this._ns + \"/\" + uniqid(\"Publication\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Publication {\n const thisObj = new Publication();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.abstract !== null) {\n thisObj.abstract = data.abstract;\n }\n if (data.citation !== null) {\n thisObj.citation = data.citation;\n }\n if (data.citeKey !== null) {\n thisObj.citeKey = data.citeKey;\n }\n if (data.dOI !== null) {\n thisObj.dOI = data.dOI;\n }\n if (data.firstAuthor !== null) {\n thisObj.firstAuthor = Person.fromDictionary(data.firstAuthor);\n }\n if (data.institution !== null) {\n thisObj.institution = data.institution;\n }\n if (data.issue !== null) {\n thisObj.issue = data.issue;\n }\n if (data.journal !== null) {\n thisObj.journal = data.journal;\n }\n if (data.pages !== null) {\n thisObj.pages = data.pages;\n }\n if (data.publicationType !== null) {\n thisObj.publicationType = data.publicationType;\n }\n if (data.publisher !== null) {\n thisObj.publisher = data.publisher;\n }\n if (data.report !== null) {\n thisObj.report = data.report;\n }\n if (data.title !== null) {\n thisObj.title = data.title;\n }\n if (data.volume !== null) {\n thisObj.volume = data.volume;\n }\n if (data.year !== null) {\n thisObj.year = data.year;\n }\n thisObj.authors = [];\n for (const value of (data.authors || []) as any[]) {\n thisObj.authors.push(Person.fromDictionary(value));\n }\n thisObj.dataUrls = [];\n for (const value of (data.dataUrls || []) as any[]) {\n thisObj.dataUrls.push(value);\n }\n thisObj.urls = [];\n for (const value of (data.urls || []) as any[]) {\n thisObj.urls.push(value);\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Publication {\n const thisObj = new Publication();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasAbstract\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.abstract = obj;\n }\n }\n \n else if (key === \"hasAuthor\") {\n thisObj.authors = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Person.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.authors.push(obj);\n }\n }\n \n else if (key === \"hasCitation\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.citation = obj;\n }\n }\n \n else if (key === \"hasCiteKey\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.citeKey = obj;\n }\n }\n \n else if (key === \"hasDOI\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.dOI = obj;\n }\n }\n \n else if (key === \"hasDataUrl\") {\n thisObj.dataUrls = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.dataUrls.push(obj);\n }\n }\n \n else if (key === \"hasFirstAuthor\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Person.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.firstAuthor = obj;\n }\n }\n \n else if (key === \"hasInstitution\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.institution = obj;\n }\n }\n \n else if (key === \"hasIssue\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.issue = obj;\n }\n }\n \n else if (key === \"hasJournal\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.journal = obj;\n }\n }\n \n else if (key === \"hasPages\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.pages = obj;\n }\n }\n \n else if (key === \"hasPublisher\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.publisher = obj;\n }\n }\n \n else if (key === \"hasReport\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.report = obj;\n }\n }\n \n else if (key === \"hasTitle\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.title = obj;\n }\n }\n \n else if (key === \"hasType\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.publicationType = obj;\n }\n }\n \n else if (key === \"hasUrl\") {\n thisObj.urls = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.urls.push(obj);\n }\n }\n \n else if (key === \"hasVolume\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.volume = obj;\n }\n }\n \n else if (key === \"hasYear\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.year = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.abstract !== null) {\n const valueObj = this.abstract;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasAbstract\"] = [obj];\n }\n if (this.authors.length > 0) {\n data[this._id][\"hasAuthor\"] = [];\n for (const valueObj of this.authors) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasAuthor\"].push(obj);\n }\n }\n if (this.citation !== null) {\n const valueObj = this.citation;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCitation\"] = [obj];\n }\n if (this.citeKey !== null) {\n const valueObj = this.citeKey;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCiteKey\"] = [obj];\n }\n if (this.dOI !== null) {\n const valueObj = this.dOI;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDOI\"] = [obj];\n }\n if (this.dataUrls.length > 0) {\n data[this._id][\"hasDataUrl\"] = [];\n for (const valueObj of this.dataUrls) {\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDataUrl\"].push(obj);\n }\n }\n if (this.firstAuthor !== null) {\n const valueObj = this.firstAuthor;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasFirstAuthor\"] = [obj];\n }\n if (this.institution !== null) {\n const valueObj = this.institution;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasInstitution\"] = [obj];\n }\n if (this.issue !== null) {\n const valueObj = this.issue;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasIssue\"] = [obj];\n }\n if (this.journal !== null) {\n const valueObj = this.journal;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasJournal\"] = [obj];\n }\n if (this.pages !== null) {\n const valueObj = this.pages;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasPages\"] = [obj];\n }\n if (this.publicationType !== null) {\n const valueObj = this.publicationType;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasType\"] = [obj];\n }\n if (this.publisher !== null) {\n const valueObj = this.publisher;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasPublisher\"] = [obj];\n }\n if (this.report !== null) {\n const valueObj = this.report;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasReport\"] = [obj];\n }\n if (this.title !== null) {\n const valueObj = this.title;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasTitle\"] = [obj];\n }\n if (this.urls.length > 0) {\n data[this._id][\"hasUrl\"] = [];\n for (const valueObj of this.urls) {\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasUrl\"].push(obj);\n }\n }\n if (this.volume !== null) {\n const valueObj = this.volume;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVolume\"] = [obj];\n }\n if (this.year !== null) {\n const valueObj = this.year;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#integer\"\n }\n data[this._id][\"hasYear\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.abstract !== null) {\n const valueObj = this.abstract;\n const obj = valueObj\n data[\"abstract\"] = obj;\n }\n if (this.authors.length > 0) {\n data[\"author\"] = [];\n for (const valueObj of this.authors) {\n const obj = valueObj.toJson()\n data[\"author\"].push(obj);\n }\n }\n if (this.citation !== null) {\n const valueObj = this.citation;\n const obj = valueObj\n data[\"citation\"] = obj;\n }\n if (this.citeKey !== null) {\n const valueObj = this.citeKey;\n const obj = valueObj\n data[\"citeKey\"] = obj;\n }\n if (this.dOI !== null) {\n const valueObj = this.dOI;\n const obj = valueObj\n data[\"doi\"] = obj;\n }\n if (this.dataUrls.length > 0) {\n data[\"dataUrl\"] = [];\n for (const valueObj of this.dataUrls) {\n const obj = valueObj\n data[\"dataUrl\"].push(obj);\n }\n }\n if (this.firstAuthor !== null) {\n const valueObj = this.firstAuthor;\n const obj = valueObj.toJson()\n data[\"firstauthor\"] = obj;\n }\n if (this.institution !== null) {\n const valueObj = this.institution;\n const obj = valueObj\n data[\"institution\"] = obj;\n }\n if (this.issue !== null) {\n const valueObj = this.issue;\n const obj = valueObj\n data[\"issue\"] = obj;\n }\n if (this.journal !== null) {\n const valueObj = this.journal;\n const obj = valueObj\n data[\"journal\"] = obj;\n }\n if (this.pages !== null) {\n const valueObj = this.pages;\n const obj = valueObj\n data[\"pages\"] = obj;\n }\n if (this.publicationType !== null) {\n const valueObj = this.publicationType;\n const obj = valueObj\n data[\"type\"] = obj;\n }\n if (this.publisher !== null) {\n const valueObj = this.publisher;\n const obj = valueObj\n data[\"publisher\"] = obj;\n }\n if (this.report !== null) {\n const valueObj = this.report;\n const obj = valueObj\n data[\"report\"] = obj;\n }\n if (this.title !== null) {\n const valueObj = this.title;\n const obj = valueObj\n data[\"title\"] = obj;\n }\n if (this.urls.length > 0) {\n data[\"url\"] = [];\n for (const valueObj of this.urls) {\n const obj = valueObj\n data[\"url\"].push(obj);\n }\n }\n if (this.volume !== null) {\n const valueObj = this.volume;\n const obj = valueObj\n data[\"volume\"] = obj;\n }\n if (this.year !== null) {\n const valueObj = this.year;\n const obj = valueObj\n data[\"year\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Publication {\n const thisObj = new Publication();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"abstract\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.abstract = obj;\n continue;\n }\n if (key === \"author\") {\n let obj: any = null;\n thisObj.authors = [];\n for (const value of pvalue as any[]) {\n obj = Person.fromJson(value)\n thisObj.authors.push(obj);\n }\n continue;\n }\n if (key === \"citation\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.citation = obj;\n continue;\n }\n if (key === \"citeKey\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.citeKey = obj;\n continue;\n }\n if (key === \"dataUrl\") {\n let obj: any = null;\n thisObj.dataUrls = [];\n for (const value of pvalue as any[]) {\n obj = value\n thisObj.dataUrls.push(obj);\n }\n continue;\n }\n if (key === \"doi\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.dOI = obj;\n continue;\n }\n if (key === \"firstauthor\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = Person.fromJson(value)\n thisObj.firstAuthor = obj;\n continue;\n }\n if (key === \"institution\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.institution = obj;\n continue;\n }\n if (key === \"issue\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.issue = obj;\n continue;\n }\n if (key === \"journal\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.journal = obj;\n continue;\n }\n if (key === \"pages\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.pages = obj;\n continue;\n }\n if (key === \"publisher\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.publisher = obj;\n continue;\n }\n if (key === \"report\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.report = obj;\n continue;\n }\n if (key === \"title\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.title = obj;\n continue;\n }\n if (key === \"type\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.publicationType = obj;\n continue;\n }\n if (key === \"url\") {\n let obj: any = null;\n thisObj.urls = [];\n for (const value of pvalue as any[]) {\n obj = value\n thisObj.urls.push(obj);\n }\n continue;\n }\n if (key === \"volume\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.volume = obj;\n continue;\n }\n if (key === \"year\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.year = obj;\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getAbstract(): string | null {\n return this.abstract;\n }\n\n setAbstract(abstract: string): void {\n // if (!(abstract instanceof string)) {\n // throw new Error(`Error: '${abstract}' is not of type string`);\n // }\n this.abstract = abstract;\n }\n getAuthors(): Person[] {\n return this.authors;\n }\n\n setAuthors(authors: Person[]): void {\n // if (!Array.isArray(authors)) {\n // throw new Error(\"Error: authors is not an array\");\n // }\n // if (!authors.every(x => x instanceof Person)) {\n // throw new Error(`Error: '${authors}' is not of type Person`);\n // }\n this.authors = authors;\n }\n\n addAuthor(authors: Person): void {\n // if (!(authors instanceof Person)) {\n // throw new Error(`Error: '${authors}' is not of type Person`);\n // }\n this.authors.push(authors);\n }\n getCitation(): string | null {\n return this.citation;\n }\n\n setCitation(citation: string): void {\n // if (!(citation instanceof string)) {\n // throw new Error(`Error: '${citation}' is not of type string`);\n // }\n this.citation = citation;\n }\n getCiteKey(): string | null {\n return this.citeKey;\n }\n\n setCiteKey(citeKey: string): void {\n // if (!(citeKey instanceof string)) {\n // throw new Error(`Error: '${citeKey}' is not of type string`);\n // }\n this.citeKey = citeKey;\n }\n getDOI(): string | null {\n return this.dOI;\n }\n\n setDOI(dOI: string): void {\n // if (!(dOI instanceof string)) {\n // throw new Error(`Error: '${dOI}' is not of type string`);\n // }\n this.dOI = dOI;\n }\n getDataUrls(): string[] {\n return this.dataUrls;\n }\n\n setDataUrls(dataUrls: string[]): void {\n // if (!Array.isArray(dataUrls)) {\n // throw new Error(\"Error: dataUrls is not an array\");\n // }\n // if (!dataUrls.every(x => x instanceof string)) {\n // throw new Error(`Error: '${dataUrls}' is not of type string`);\n // }\n this.dataUrls = dataUrls;\n }\n\n addDataUrl(dataUrls: string): void {\n // if (!(dataUrls instanceof string)) {\n // throw new Error(`Error: '${dataUrls}' is not of type string`);\n // }\n this.dataUrls.push(dataUrls);\n }\n getFirstAuthor(): Person | null {\n return this.firstAuthor;\n }\n\n setFirstAuthor(firstAuthor: Person): void {\n // if (!(firstAuthor instanceof Person)) {\n // throw new Error(`Error: '${firstAuthor}' is not of type Person`);\n // }\n this.firstAuthor = firstAuthor;\n }\n getInstitution(): string | null {\n return this.institution;\n }\n\n setInstitution(institution: string): void {\n // if (!(institution instanceof string)) {\n // throw new Error(`Error: '${institution}' is not of type string`);\n // }\n this.institution = institution;\n }\n getIssue(): string | null {\n return this.issue;\n }\n\n setIssue(issue: string): void {\n // if (!(issue instanceof string)) {\n // throw new Error(`Error: '${issue}' is not of type string`);\n // }\n this.issue = issue;\n }\n getJournal(): string | null {\n return this.journal;\n }\n\n setJournal(journal: string): void {\n // if (!(journal instanceof string)) {\n // throw new Error(`Error: '${journal}' is not of type string`);\n // }\n this.journal = journal;\n }\n getPages(): string | null {\n return this.pages;\n }\n\n setPages(pages: string): void {\n // if (!(pages instanceof string)) {\n // throw new Error(`Error: '${pages}' is not of type string`);\n // }\n this.pages = pages;\n }\n getPublicationType(): string | null {\n return this.publicationType;\n }\n\n setPublicationType(publicationType: string): void {\n // if (!(publicationType instanceof string)) {\n // throw new Error(`Error: '${publicationType}' is not of type string`);\n // }\n this.publicationType = publicationType;\n }\n getPublisher(): string | null {\n return this.publisher;\n }\n\n setPublisher(publisher: string): void {\n // if (!(publisher instanceof string)) {\n // throw new Error(`Error: '${publisher}' is not of type string`);\n // }\n this.publisher = publisher;\n }\n getReport(): string | null {\n return this.report;\n }\n\n setReport(report: string): void {\n // if (!(report instanceof string)) {\n // throw new Error(`Error: '${report}' is not of type string`);\n // }\n this.report = report;\n }\n getTitle(): string | null {\n return this.title;\n }\n\n setTitle(title: string): void {\n // if (!(title instanceof string)) {\n // throw new Error(`Error: '${title}' is not of type string`);\n // }\n this.title = title;\n }\n getUrls(): string[] {\n return this.urls;\n }\n\n setUrls(urls: string[]): void {\n // if (!Array.isArray(urls)) {\n // throw new Error(\"Error: urls is not an array\");\n // }\n // if (!urls.every(x => x instanceof string)) {\n // throw new Error(`Error: '${urls}' is not of type string`);\n // }\n this.urls = urls;\n }\n\n addUrl(urls: string): void {\n // if (!(urls instanceof string)) {\n // throw new Error(`Error: '${urls}' is not of type string`);\n // }\n this.urls.push(urls);\n }\n getVolume(): string | null {\n return this.volume;\n }\n\n setVolume(volume: string): void {\n // if (!(volume instanceof string)) {\n // throw new Error(`Error: '${volume}' is not of type string`);\n // }\n this.volume = volume;\n }\n getYear(): number | null {\n return this.year;\n }\n\n setYear(year: number): void {\n // if (!(year instanceof number)) {\n // throw new Error(`Error: '${year}' is not of type number`);\n // }\n this.year = year;\n }\n}\n","\n// Auto-generated. Do not edit.\nimport { uniqid } from \"../utils/utils\";\nimport { parseVariableValues } from \"../utils/utils\";\nimport { ArchiveType } from \"./archivetype\";\nimport { ChangeLog } from \"./changelog\";\nimport { ChronData } from \"./chrondata\";\nimport { Funding } from \"./funding\";\nimport { Location } from \"./location\";\nimport { PaleoData } from \"./paleodata\";\nimport { Person } from \"./person\";\nimport { Publication } from \"./publication\";\n\n\n\nexport class Dataset {\n\n public archiveType: ArchiveType | null;\n public changeLogs: ChangeLog[];\n public chronData: ChronData[];\n public collectionName: string | null;\n public collectionYear: string | null;\n public compilationNest: string | null;\n public contributors: Person[];\n public creators: Person[];\n public dataSource: string | null;\n public datasetId: string | null;\n public fundings: Funding[];\n public investigators: Person[];\n public location: Location | null;\n public name: string | null;\n public notes: string | null;\n public originalDataUrl: string | null;\n public paleoData: PaleoData[];\n public publications: Publication[];\n public spreadsheetLink: string | null;\n public version: string | null;\n protected _id: string;\n protected _type: string;\n protected _misc: Record<string, any>;\n protected _ontns: string;\n protected _ns: string;\n\n constructor() {\n this.archiveType = null;\n this.changeLogs = [];\n this.chronData = [];\n this.collectionName = null;\n this.collectionYear = null;\n this.compilationNest = null;\n this.contributors = [];\n this.creators = [];\n this.dataSource = null;\n this.datasetId = null;\n this.fundings = [];\n this.investigators = [];\n this.location = null;\n this.name = null;\n this.notes = null;\n this.originalDataUrl = null;\n this.paleoData = [];\n this.publications = [];\n this.spreadsheetLink = null;\n this.version = null;\n this._misc = {};\n this._ontns = \"http://linked.earth/ontology#\";\n this._ns = \"http://linked.earth/lipd\";\n this._type = \"http://linked.earth/ontology#Dataset\";\n this._id = this._ns + \"/\" + uniqid(\"Dataset\");\n }\n\n public getId(): string {\n return this._id;\n }\n\n public getType(): string {\n return this._type;\n } \n\n public getMisc(): Record<string, any> {\n return this._misc;\n }\n \n public static fromDictionary(data: Record<string, any>): Dataset {\n const thisObj = new Dataset();\n thisObj._id = data._id;\n thisObj._type = data._type;\n thisObj._misc = data._misc;\n thisObj._ontns = data._ontns;\n thisObj._ns = data._ns;\n if (data.archiveType !== null) {\n thisObj.archiveType = new ArchiveType(data.archiveType.id, data.archiveType.label);\n }\n if (data.collectionName !== null) {\n thisObj.collectionName = data.collectionName;\n }\n if (data.collectionYear !== null) {\n thisObj.collectionYear = data.collectionYear;\n }\n if (data.compilationNest !== null) {\n thisObj.compilationNest = data.compilationNest;\n }\n if (data.dataSource !== null) {\n thisObj.dataSource = data.dataSource;\n }\n if (data.datasetId !== null) {\n thisObj.datasetId = data.datasetId;\n }\n if (data.location !== null) {\n thisObj.location = Location.fromDictionary(data.location);\n }\n if (data.name !== null) {\n thisObj.name = data.name;\n }\n if (data.notes !== null) {\n thisObj.notes = data.notes;\n }\n if (data.originalDataUrl !== null) {\n thisObj.originalDataUrl = data.originalDataUrl;\n }\n if (data.spreadsheetLink !== null) {\n thisObj.spreadsheetLink = data.spreadsheetLink;\n }\n if (data.version !== null) {\n thisObj.version = data.version;\n }\n thisObj.changeLogs = [];\n for (const value of (data.changeLogs || []) as any[]) {\n thisObj.changeLogs.push(ChangeLog.fromDictionary(value));\n }\n thisObj.chronData = [];\n for (const value of (data.chronData || []) as any[]) {\n thisObj.chronData.push(ChronData.fromDictionary(value));\n }\n thisObj.contributors = [];\n for (const value of (data.contributors || []) as any[]) {\n thisObj.contributors.push(Person.fromDictionary(value));\n }\n thisObj.creators = [];\n for (const value of (data.creators || []) as any[]) {\n thisObj.creators.push(Person.fromDictionary(value));\n }\n thisObj.fundings = [];\n for (const value of (data.fundings || []) as any[]) {\n thisObj.fundings.push(Funding.fromDictionary(value));\n }\n thisObj.investigators = [];\n for (const value of (data.investigators || []) as any[]) {\n thisObj.investigators.push(Person.fromDictionary(value));\n }\n thisObj.paleoData = [];\n for (const value of (data.paleoData || []) as any[]) {\n thisObj.paleoData.push(PaleoData.fromDictionary(value));\n }\n thisObj.publications = [];\n for (const value of (data.publications || []) as any[]) {\n thisObj.publications.push(Publication.fromDictionary(value));\n }\n return thisObj;\n }\n\n public static fromData(id: string, data: Record<string, any>): Dataset {\n const thisObj = new Dataset();\n thisObj._id = id;\n const mydata = data[id] as any;\n for (const [key, value] of Object.entries(mydata)) {\n if (key === \"type\") {\n for (const val of value as any[]) {\n thisObj._type = val[\"@id\"];\n }\n continue;\n }\n \n else if (key === \"hasArchiveType\") {\n for (const val of value as any[]) {\n let obj: any = null;\n obj = ArchiveType.fromSynonym(val[\"@id\"].replace(/^.*?#/, \"\"));\n thisObj.archiveType = obj;\n }\n }\n \n else if (key === \"hasChangeLog\") {\n thisObj.changeLogs = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = ChangeLog.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.changeLogs.push(obj);\n }\n }\n \n else if (key === \"hasChronData\") {\n thisObj.chronData = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = ChronData.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.chronData.push(obj);\n }\n }\n \n else if (key === \"hasCollectionName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.collectionName = obj;\n }\n }\n \n else if (key === \"hasCollectionYear\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.collectionYear = obj;\n }\n }\n \n else if (key === \"hasCompilationNest\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.compilationNest = obj;\n }\n }\n \n else if (key === \"hasContributor\") {\n thisObj.contributors = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Person.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.contributors.push(obj);\n }\n }\n \n else if (key === \"hasCreator\") {\n thisObj.creators = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Person.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.creators.push(obj);\n }\n }\n \n else if (key === \"hasDataSource\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.dataSource = obj;\n }\n }\n \n else if (key === \"hasDatasetId\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.datasetId = obj;\n }\n }\n \n else if (key === \"hasFunding\") {\n thisObj.fundings = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Funding.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.fundings.push(obj);\n }\n }\n \n else if (key === \"hasInvestigator\") {\n thisObj.investigators = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Person.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.investigators.push(obj);\n }\n }\n \n else if (key === \"hasLocation\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Location.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.location = obj;\n }\n }\n \n else if (key === \"hasName\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.name = obj;\n }\n }\n \n else if (key === \"hasNotes\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.notes = obj;\n }\n }\n \n else if (key === \"hasOriginalDataUrl\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.originalDataUrl = obj;\n }\n }\n \n else if (key === \"hasPaleoData\") {\n thisObj.paleoData = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = PaleoData.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.paleoData.push(obj);\n }\n }\n \n else if (key === \"hasPublication\") {\n thisObj.publications = [];\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@id\" in val) {\n obj = Publication.fromData(val[\"@id\"], data);\n } else {\n obj = val[\"@value\"];\n }\n thisObj.publications.push(obj);\n }\n }\n \n else if (key === \"hasSpreadsheetLink\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.spreadsheetLink = obj;\n }\n }\n \n else if (key === \"hasVersion\") {\n for (const val of value as any[]) {\n let obj: any = null;\n if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj.version = obj;\n }\n }\n else {\n // Store unknown properties in misc\n for (const val of value as any[]) {\n let obj: any;\n if (\"@id\" in val) {\n obj = data[val[\"@id\"]];\n } else if (\"@value\" in val) {\n obj = val[\"@value\"];\n }\n thisObj._misc[key] = obj;\n }\n }\n }\n return thisObj;\n }\n\n\n public toData(data: Record<string, any> = {}): Record<string, any> {\n data[this._id] = {};\n data[this._id][\"type\"] = [\n {\n \"@id\": this._type,\n \"@type\": \"uri\"\n }\n ]\n if (this.archiveType !== null) {\n const valueObj = this.archiveType;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasArchiveType\"] = [obj];\n }\n if (this.changeLogs.length > 0) {\n data[this._id][\"hasChangeLog\"] = [];\n for (const valueObj of this.changeLogs) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasChangeLog\"].push(obj);\n }\n }\n if (this.chronData.length > 0) {\n data[this._id][\"hasChronData\"] = [];\n for (const valueObj of this.chronData) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasChronData\"].push(obj);\n }\n }\n if (this.collectionName !== null) {\n const valueObj = this.collectionName;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCollectionName\"] = [obj];\n }\n if (this.collectionYear !== null) {\n const valueObj = this.collectionYear;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCollectionYear\"] = [obj];\n }\n if (this.compilationNest !== null) {\n const valueObj = this.compilationNest;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasCompilationNest\"] = [obj];\n }\n if (this.contributors.length > 0) {\n data[this._id][\"hasContributor\"] = [];\n for (const valueObj of this.contributors) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasContributor\"].push(obj);\n }\n }\n if (this.creators.length > 0) {\n data[this._id][\"hasCreator\"] = [];\n for (const valueObj of this.creators) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasCreator\"].push(obj);\n }\n }\n if (this.dataSource !== null) {\n const valueObj = this.dataSource;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDataSource\"] = [obj];\n }\n if (this.datasetId !== null) {\n const valueObj = this.datasetId;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasDatasetId\"] = [obj];\n }\n if (this.fundings.length > 0) {\n data[this._id][\"hasFunding\"] = [];\n for (const valueObj of this.fundings) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasFunding\"].push(obj);\n }\n }\n if (this.investigators.length > 0) {\n data[this._id][\"hasInvestigator\"] = [];\n for (const valueObj of this.investigators) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasInvestigator\"].push(obj);\n }\n }\n if (this.location !== null) {\n const valueObj = this.location;\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasLocation\"] = [obj];\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasName\"] = [obj];\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasNotes\"] = [obj];\n }\n if (this.originalDataUrl !== null) {\n const valueObj = this.originalDataUrl;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasOriginalDataUrl\"] = [obj];\n }\n if (this.paleoData.length > 0) {\n data[this._id][\"hasPaleoData\"] = [];\n for (const valueObj of this.paleoData) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasPaleoData\"].push(obj);\n }\n }\n if (this.publications.length > 0) {\n data[this._id][\"hasPublication\"] = [];\n for (const valueObj of this.publications) {\n let obj: any = null;\n if (typeof valueObj === \"string\") {\n obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n } else {\n obj = {\n \"@id\": valueObj.getId(),\n \"@type\": \"uri\"\n }\n data = valueObj.toData(data); \n }\n data[this._id][\"hasPublication\"].push(obj);\n }\n }\n if (this.spreadsheetLink !== null) {\n const valueObj = this.spreadsheetLink;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasSpreadsheetLink\"] = [obj];\n }\n if (this.version !== null) {\n const valueObj = this.version;\n const obj = {\n \"@value\": valueObj,\n \"@type\": \"literal\",\n \"@datatype\": \"http://www.w3.org/2001/XMLSchema#string\"\n }\n data[this._id][\"hasVersion\"] = [obj];\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[this._id][key] = [];\n let ptype: string | null = null;\n const tp = typeof value;\n if (tp === \"number\") {\n if (Number.isInteger(value)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#integer\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#float\";\n }\n } else if (tp === \"string\") {\n if (/\\d{4}-\\d{2}-\\d{2}( |T)\\d{2}:\\d{2}:\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#datetime\";\n } else if (/\\d{4}-\\d{2}-\\d{2}/.test(value as string)) {\n ptype = \"http://www.w3.org/2001/XMLSchema#date\";\n } else {\n ptype = \"http://www.w3.org/2001/XMLSchema#string\";\n }\n } else if (tp === \"boolean\") {\n ptype = \"http://www.w3.org/2001/XMLSchema#boolean\";\n }\n\n data[this._id][key].push({\n \"@value\": value,\n \"@type\": \"literal\",\n \"@datatype\": ptype\n });\n }\n return data;\n }\n\n public toJson(): Record<string, any> {\n const data: Record<string, any> = {\n \"@id\": this._id\n }\n if (this.archiveType !== null) {\n const valueObj = this.archiveType;\n const obj = valueObj.toJson()\n data[\"archiveType\"] = obj;\n }\n if (this.changeLogs.length > 0) {\n data[\"changelog\"] = [];\n for (const valueObj of this.changeLogs) {\n const obj = valueObj.toJson()\n data[\"changelog\"].push(obj);\n }\n }\n if (this.chronData.length > 0) {\n data[\"chronData\"] = [];\n for (const valueObj of this.chronData) {\n const obj = valueObj.toJson()\n data[\"chronData\"].push(obj);\n }\n }\n if (this.collectionName !== null) {\n const valueObj = this.collectionName;\n const obj = valueObj\n data[\"collectionName\"] = obj;\n }\n if (this.collectionYear !== null) {\n const valueObj = this.collectionYear;\n const obj = valueObj\n data[\"collectionYear\"] = obj;\n }\n if (this.compilationNest !== null) {\n const valueObj = this.compilationNest;\n const obj = valueObj\n data[\"compilation_nest\"] = obj;\n }\n if (this.contributors.length > 0) {\n data[\"dataContributor\"] = [];\n for (const valueObj of this.contributors) {\n const obj = valueObj.toJson()\n data[\"dataContributor\"].push(obj);\n }\n }\n if (this.creators.length > 0) {\n data[\"creator\"] = [];\n for (const valueObj of this.creators) {\n const obj = valueObj.toJson()\n data[\"creator\"].push(obj);\n }\n }\n if (this.dataSource !== null) {\n const valueObj = this.dataSource;\n const obj = valueObj\n data[\"dataSource\"] = obj;\n }\n if (this.datasetId !== null) {\n const valueObj = this.datasetId;\n const obj = valueObj\n data[\"datasetId\"] = obj;\n }\n if (this.fundings.length > 0) {\n data[\"funding\"] = [];\n for (const valueObj of this.fundings) {\n const obj = valueObj.toJson()\n data[\"funding\"].push(obj);\n }\n }\n if (this.investigators.length > 0) {\n data[\"investigator\"] = [];\n for (const valueObj of this.investigators) {\n const obj = valueObj.toJson()\n data[\"investigator\"].push(obj);\n }\n }\n if (this.location !== null) {\n const valueObj = this.location;\n const obj = valueObj.toJson()\n data[\"geo\"] = obj;\n }\n if (this.name !== null) {\n const valueObj = this.name;\n const obj = valueObj\n data[\"dataSetName\"] = obj;\n }\n if (this.notes !== null) {\n const valueObj = this.notes;\n const obj = valueObj\n data[\"notes\"] = obj;\n }\n if (this.originalDataUrl !== null) {\n const valueObj = this.originalDataUrl;\n const obj = valueObj\n data[\"originalDataURL\"] = obj;\n }\n if (this.paleoData.length > 0) {\n data[\"paleoData\"] = [];\n for (const valueObj of this.paleoData) {\n const obj = valueObj.toJson()\n data[\"paleoData\"].push(obj);\n }\n }\n if (this.publications.length > 0) {\n data[\"pub\"] = [];\n for (const valueObj of this.publications) {\n const obj = valueObj.toJson()\n data[\"pub\"].push(obj);\n }\n }\n if (this.spreadsheetLink !== null) {\n const valueObj = this.spreadsheetLink;\n const obj = valueObj\n data[\"googleSpreadSheetKey\"] = obj;\n }\n if (this.version !== null) {\n const valueObj = this.version;\n const obj = valueObj\n data[\"dataSetVersion\"] = obj;\n }\n // Add misc properties\n for (const [key, value] of Object.entries(this._misc)) {\n data[key] = value;\n }\n return data;\n }\n\n public static fromJson(data: Record<string, any>): Dataset {\n const thisObj = new Dataset();\n for (const [key, pvalue] of Object.entries(data)) {\n if (key === \"@id\") {\n thisObj._id = pvalue as string;\n continue;\n }\n if (key === \"archiveType\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = ArchiveType.fromSynonym(value.replace(/^.*?#/, \"\"))\n thisObj.archiveType = obj;\n continue;\n }\n if (key === \"changelog\") {\n let obj: any = null;\n thisObj.changeLogs = [];\n for (const value of pvalue as any[]) {\n obj = ChangeLog.fromJson(value)\n thisObj.changeLogs.push(obj);\n }\n continue;\n }\n if (key === \"chronData\") {\n let obj: any = null;\n thisObj.chronData = [];\n for (const value of pvalue as any[]) {\n obj = ChronData.fromJson(value)\n thisObj.chronData.push(obj);\n }\n continue;\n }\n if (key === \"collectionName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.collectionName = obj;\n continue;\n }\n if (key === \"collectionYear\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.collectionYear = obj;\n continue;\n }\n if (key === \"compilation_nest\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.compilationNest = obj;\n continue;\n }\n if (key === \"creator\") {\n let obj: any = null;\n thisObj.creators = [];\n for (const value of pvalue as any[]) {\n obj = Person.fromJson(value)\n thisObj.creators.push(obj);\n }\n continue;\n }\n if (key === \"dataContributor\") {\n let obj: any = null;\n thisObj.contributors = [];\n for (const value of pvalue as any[]) {\n obj = Person.fromJson(value)\n thisObj.contributors.push(obj);\n }\n continue;\n }\n if (key === \"dataSetName\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.name = obj;\n continue;\n }\n if (key === \"dataSetVersion\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.version = obj;\n continue;\n }\n if (key === \"dataSource\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.dataSource = obj;\n continue;\n }\n if (key === \"datasetId\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.datasetId = obj;\n continue;\n }\n if (key === \"funding\") {\n let obj: any = null;\n thisObj.fundings = [];\n for (const value of pvalue as any[]) {\n obj = Funding.fromJson(value)\n thisObj.fundings.push(obj);\n }\n continue;\n }\n if (key === \"geo\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = Location.fromJson(value)\n thisObj.location = obj;\n continue;\n }\n if (key === \"googleSpreadSheetKey\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.spreadsheetLink = obj;\n continue;\n }\n if (key === \"investigator\") {\n let obj: any = null;\n thisObj.investigators = [];\n for (const value of pvalue as any[]) {\n obj = Person.fromJson(value)\n thisObj.investigators.push(obj);\n }\n continue;\n }\n if (key === \"notes\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.notes = obj;\n continue;\n }\n if (key === \"originalDataURL\") {\n let obj: any = null;\n let value: any = pvalue;\n obj = value\n thisObj.originalDataUrl = obj;\n continue;\n }\n if (key === \"paleoData\") {\n let obj: any = null;\n thisObj.paleoData = [];\n for (const value of pvalue as any[]) {\n obj = PaleoData.fromJson(value)\n thisObj.paleoData.push(obj);\n }\n continue;\n }\n if (key === \"pub\") {\n let obj: any = null;\n thisObj.publications = [];\n for (const value of pvalue as any[]) {\n obj = Publication.fromJson(value)\n thisObj.publications.push(obj);\n }\n continue;\n }\n // Store unknown properties in misc\n thisObj._misc[key] = pvalue;\n }\n return thisObj;\n }\n\n public setNonStandardProperty(key: string, value: unknown): void {\n this._misc[key] = value;\n }\n \n public getNonStandardProperty(key: string): unknown {\n return this._misc[key];\n }\n \n public getAllNonStandardProperties(): Record<string, unknown> {\n return this._misc;\n }\n\n public addNonStandardProperty(key: string, value: unknown): void {\n if (!(key in this._misc)) {\n this._misc[key] = [];\n }\n (this._misc[key] as unknown[]).push(value);\n }\n \n getArchiveType(): ArchiveType | null {\n return this.archiveType;\n }\n\n setArchiveType(archiveType: ArchiveType): void {\n // if (!(archiveType instanceof ArchiveType)) {\n // throw new Error(`Error: '${archiveType}' is not of type ArchiveType\\nYou can create a new ArchiveType object from a string using the following syntax:\\n- Fetch existing ArchiveType by synonym: ArchiveType.fromSynonym(\"${archiveType}\")\\n- Create a new custom ArchiveType: new ArchiveType(\"${archiveType}\")`);\n // }\n this.archiveType = archiveType;\n }\n getChangeLogs(): ChangeLog[] {\n return this.changeLogs;\n }\n\n setChangeLogs(changeLogs: ChangeLog[]): void {\n // if (!Array.isArray(changeLogs)) {\n // throw new Error(\"Error: changeLogs is not an array\");\n // }\n // if (!changeLogs.every(x => x instanceof ChangeLog)) {\n // throw new Error(`Error: '${changeLogs}' is not of type ChangeLog`);\n // }\n this.changeLogs = changeLogs;\n }\n\n addChangeLog(changeLogs: ChangeLog): void {\n // if (!(changeLogs instanceof ChangeLog)) {\n // throw new Error(`Error: '${changeLogs}' is not of type ChangeLog`);\n // }\n this.changeLogs.push(changeLogs);\n }\n getChronData(): ChronData[] {\n return this.chronData;\n }\n\n setChronData(chronData: ChronData[]): void {\n // if (!Array.isArray(chronData)) {\n // throw new Error(\"Error: chronData is not an array\");\n // }\n // if (!chronData.every(x => x instanceof ChronData)) {\n // throw new Error(`Error: '${chronData}' is not of type ChronData`);\n // }\n this.chronData = chronData;\n }\n\n addChronData(chronData: ChronData): void {\n // if (!(chronData instanceof ChronData)) {\n // throw new Error(`Error: '${chronData}' is not of type ChronData`);\n // }\n this.chronData.push(chronData);\n }\n getCollectionName(): string | null {\n return this.collectionName;\n }\n\n setCollectionName(collectionName: string): void {\n // if (!(collectionName instanceof string)) {\n // throw new Error(`Error: '${collectionName}' is not of type string`);\n // }\n this.collectionName = collectionName;\n }\n getCollectionYear(): string | null {\n return this.collectionYear;\n }\n\n setCollectionYear(collectionYear: string): void {\n // if (!(collectionYear instanceof string)) {\n // throw new Error(`Error: '${collectionYear}' is not of type string`);\n // }\n this.collectionYear = collectionYear;\n }\n getCompilationNest(): string | null {\n return this.compilationNest;\n }\n\n setCompilationNest(compilationNest: string): void {\n // if (!(compilationNest instanceof string)) {\n // throw new Error(`Error: '${compilationNest}' is not of type string`);\n // }\n this.compilationNest = compilationNest;\n }\n getContributors(): Person[] {\n return this.contributors;\n }\n\n setContributors(contributors: Person[]): void {\n // if (!Array.isArray(contributors)) {\n // throw new Error(\"Error: contributors is not an array\");\n // }\n // if (!contributors.every(x => x instanceof Person)) {\n // throw new Error(`Error: '${contributors}' is not of type Person`);\n // }\n this.contributors = contributors;\n }\n\n addContributor(contributors: Person): void {\n // if (!(contributors instanceof Person)) {\n // throw new Error(`Error: '${contributors}' is not of type Person`);\n // }\n this.contributors.push(contributors);\n }\n getCreators(): Person[] {\n return this.creators;\n }\n\n setCreators(creators: Person[]): void {\n // if (!Array.isArray(creators)) {\n // throw new Error(\"Error: creators is not an array\");\n // }\n // if (!creators.every(x => x instanceof Person)) {\n // throw new Error(`Error: '${creators}' is not of type Person`);\n // }\n this.creators = creators;\n }\n\n addCreator(creators: Person): void {\n // if (!(creators instanceof Person)) {\n // throw new Error(`Error: '${creators}' is not of type Person`);\n // }\n this.creators.push(creators);\n }\n getDataSource(): string | null {\n return this.dataSource;\n }\n\n setDataSource(dataSource: string): void {\n // if (!(dataSource instanceof string)) {\n // throw new Error(`Error: '${dataSource}' is not of type string`);\n // }\n this.dataSource = dataSource;\n }\n getDatasetId(): string | null {\n return this.datasetId;\n }\n\n setDatasetId(datasetId: string): void {\n // if (!(datasetId instanceof string)) {\n // throw new Error(`Error: '${datasetId}' is not of type string`);\n // }\n this.datasetId = datasetId;\n }\n getFundings(): Funding[] {\n return this.fundings;\n }\n\n setFundings(fundings: Funding[]): void {\n // if (!Array.isArray(fundings)) {\n // throw new Error(\"Error: fundings is not an array\");\n // }\n // if (!fundings.every(x => x instanceof Funding)) {\n // throw new Error(`Error: '${fundings}' is not of type Funding`);\n // }\n this.fundings = fundings;\n }\n\n addFunding(fundings: Funding): void {\n // if (!(fundings instanceof Funding)) {\n // throw new Error(`Error: '${fundings}' is not of type Funding`);\n // }\n this.fundings.push(fundings);\n }\n getInvestigators(): Person[] {\n return this.investigators;\n }\n\n setInvestigators(investigators: Person[]): void {\n // if (!Array.isArray(investigators)) {\n // throw new Error(\"Error: investigators is not an array\");\n // }\n // if (!investigators.every(x => x instanceof Person)) {\n // throw new Error(`Error: '${investigators}' is not of type Person`);\n // }\n this.investigators = investigators;\n }\n\n addInvestigator(investigators: Person): void {\n // if (!(investigators instanceof Person)) {\n // throw new Error(`Error: '${investigators}' is not of type Person`);\n // }\n this.investigators.push(investigators);\n }\n getLocation(): Location | null {\n return this.location;\n }\n\n setLocation(location: Location): void {\n // if (!(location instanceof Location)) {\n // throw new Error(`Error: '${location}' is not of type Location`);\n // }\n this.location = location;\n }\n getName(): string | null {\n return this.name;\n }\n\n setName(name: string): void {\n // if (!(name instanceof string)) {\n // throw new Error(`Error: '${name}' is not of type string`);\n // }\n this.name = name;\n this._id = this._ns + '/' + name; // This is a hack to set the id of the dataset based on the name\n }\n getNotes(): string | null {\n return this.notes;\n }\n\n setNotes(notes: string): void {\n // if (!(notes instanceof string)) {\n // throw new Error(`Error: '${notes}' is not of type string`);\n // }\n this.notes = notes;\n }\n getOriginalDataUrl(): string | null {\n return this.originalDataUrl;\n }\n\n setOriginalDataUrl(originalDataUrl: string): void {\n // if (!(originalDataUrl instanceof string)) {\n // throw new Error(`Error: '${originalDataUrl}' is not of type string`);\n // }\n this.originalDataUrl = originalDataUrl;\n }\n getPaleoData(): PaleoData[] {\n return this.paleoData;\n }\n\n setPaleoData(paleoData: PaleoData[]): void {\n // if (!Array.isArray(paleoData)) {\n // throw new Error(\"Error: paleoData is not an array\");\n // }\n // if (!paleoData.every(x => x instanceof PaleoData)) {\n // throw new Error(`Error: '${paleoData}' is not of type PaleoData`);\n // }\n this.paleoData = paleoData;\n }\n\n addPaleoData(paleoData: PaleoData): void {\n // if (!(paleoData instanceof PaleoData)) {\n // throw new Error(`Error: '${paleoData}' is not of type PaleoData`);\n // }\n this.paleoData.push(paleoData);\n }\n getPublications(): Publication[] {\n return this.publications;\n }\n\n setPublications(publications: Publication[]): void {\n // if (!Array.isArray(publications)) {\n // throw new Error(\"Error: publications is not an array\");\n // }\n // if (!publications.every(x => x instanceof Publication)) {\n // throw new Error(`Error: '${publications}' is not of type Publication`);\n // }\n this.publications = publications;\n }\n\n addPublication(publications: Publication): void {\n // if (!(publications instanceof Publication)) {\n // throw new Error(`Error: '${publications}' is not of type Publication`);\n // }\n this.publications.push(publications);\n }\n getSpreadsheetLink(): string | null {\n return this.spreadsheetLink;\n }\n\n setSpreadsheetLink(spreadsheetLink: string): void {\n // if (!(spreadsheetLink instanceof string)) {\n // throw new Error(`Error: '${spreadsheetLink}' is not of type string`);\n // }\n this.spreadsheetLink = spreadsheetLink;\n }\n getVersion(): string | null {\n return this.version;\n }\n\n setVersion(version: string): void {\n // if (!(version instanceof string)) {\n // throw new Error(`Error: '${version}' is not of type string`);\n // }\n this.version = version;\n }\n}\n","/**\n * The RDFToJSON class helps in converting an RDF Graph to Plain JSON\n * It uses the SCHEMA dictionary (from globals/schema.ts) to do the conversion\n */\n\nimport { Store } from 'n3';\nimport { DataFactory, Quad, NamedNode, Literal } from 'n3';\nimport { Logger } from '../utils/logger';\n\nconst logger = Logger.getInstance();\nconst DF = DataFactory;\n\ninterface PropertyValue {\n '@type': 'uri' | 'literal';\n '@id'?: string;\n '@value'?: string;\n '@datatype'?: string;\n}\n\ninterface Facts {\n [key: string]: PropertyValue[];\n}\n\nexport class RDFToJSON {\n private store: Store;\n private id: string;\n private facts: { [key: string]: Facts } = {};\n\n /**\n * Constructor for RDFToJSON class\n * @param id The ID of the root node to start conversion from\n * @param store The RDF graph to convert\n */\n constructor(id: string, store: Store) {\n this.id = id;\n this.store = store;\n this._getIndexedFacts(id);\n logger.debug('RDFToJSON instance created with id: %s', id);\n }\n\n /**\n * Get property values from query results\n * @param qres Query results from RDF graph\n * @returns Object containing property values\n */\n private _getPropValuesFromQueryResultPO(quads: Quad[]): Facts {\n const facts: Facts = {};\n for (const quad of quads) {\n const pname = this._localName(quad.predicate as NamedNode);\n if (!facts[pname]) {\n facts[pname] = [];\n }\n \n const value: PropertyValue = {\n '@type': quad.object instanceof NamedNode ? 'uri' : 'literal'\n };\n\n if (quad.object instanceof NamedNode) {\n value['@id'] = quad.object.value;\n } else if (quad.object instanceof Literal) {\n value['@value'] = quad.object.value;\n if (quad.object.datatype) {\n value['@datatype'] = quad.object.datatype.value;\n }\n }\n \n facts[pname].push(value);\n }\n return facts;\n }\n\n /**\n * Get facts for a given ID from the RDF graph\n * @param id The ID to get facts for\n * @returns Object containing facts\n */\n private _getFacts(id: string): Facts {\n const subject = DF.namedNode(id);\n const quads = this.store.getQuads(subject, null, null, null);\n return this._getPropValuesFromQueryResultPO(quads);\n }\n\n /**\n * Get the local name from a URI\n * @param url The URI to get the local name from\n * @returns The local name\n */\n private _localName(url: NamedNode): string {\n const parts = url.value.split('#');\n return parts[parts.length - 1];\n }\n\n /**\n * Get indexed facts for a given ID and its related objects\n * Recursively retrieves facts for all related objects\n * @param id The ID to get indexed facts for\n */\n private _getIndexedFacts(id: string): void {\n // Skip if we've already processed this ID\n if (id in this.facts) {\n return;\n }\n\n // Get facts for this ID\n const facts = this._getFacts(id);\n this.facts[id] = facts;\n\n // Recursively process all URI objects except for type predicates\n for (const [pname, pfacts] of Object.entries(facts)) {\n for (const pfact of pfacts) {\n if (pfact[\"@type\"] === \"uri\" && pname !== \"type\") {\n this._getIndexedFacts(pfact[\"@id\"] as string);\n }\n }\n }\n }\n\n /**\n * Convert the RDF graph to JSON string\n * @returns JSON string representation of the RDF graph\n */\n public toJson(): string {\n return JSON.stringify(this.facts, null, 3);\n }\n} ","/**\n * The JSONToRDF class helps in converting JSON data to an RDF Graph.\n */\n\nimport { Store } from 'n3';\nimport { DataFactory, NamedNode, Literal } from 'n3';\nimport { Logger } from '../utils/logger';\nimport { ONTONS } from '../globals/urls';\n\nconst logger = Logger.getInstance();\nconst DF = DataFactory;\n\ninterface PropertyValue {\n '@type': 'uri' | 'literal';\n '@id'?: string;\n '@value'?: string;\n '@datatype'?: string;\n}\n\nexport class JSONToRDF {\n private store: Store;\n private graphurl: string;\n\n /**\n * Constructor for JSONToRDF class\n * @param store The RDF graph to add triples to\n * @param graphurl The URL of the graph\n */\n constructor(store: Store, graphurl: string) {\n this.store = store;\n this.graphurl = graphurl;\n logger.debug('JSONToRDF instance created with graphurl: %s', graphurl);\n }\n\n /**\n * Load a triple into the RDF graph\n * @param subject The subject of the triple\n * @param prop The predicate of the triple\n * @param value The object of the triple\n */\n private _loadTripleIntoGraph(subject: string, prop: string, value: PropertyValue[]): void {\n for (const val of value) {\n let valitem: NamedNode | Literal | null = null;\n\n if (val['@type'] === 'uri' && val['@id']) {\n valitem = DF.namedNode(val['@id']);\n } else if (val['@type'] === 'literal' && val['@value'] !== undefined) {\n const dtype = val['@datatype'];\n if (dtype) {\n // If the value is a string and no datatype is specified, use string\n const finalDtype = typeof val['@value'] === 'string' && !dtype ? \n 'http://www.w3.org/2001/XMLSchema#string' : dtype;\n valitem = DF.literal(val['@value'], DF.namedNode(finalDtype));\n } else {\n valitem = DF.literal(val['@value']);\n }\n }\n\n if (valitem) {\n const stmt = DF.quad(\n DF.namedNode(subject),\n DF.namedNode(prop),\n valitem,\n DF.namedNode(this.graphurl)\n );\n this.store.addQuad(stmt);\n }\n }\n }\n\n /**\n * Clear all triples from the current graph context\n */\n private _clearSubgraph(): void {\n const graphUri = DF.namedNode(this.graphurl);\n const quads = this.store.getQuads(null, null, null, graphUri);\n for (const quad of quads) {\n this.store.removeQuad(quad);\n }\n }\n\n /**\n * Load JSON data into the RDF graph\n * @param data The JSON data to load\n */\n public loadJson(data: Record<string, any>): void {\n // Clear the subgraph\n this._clearSubgraph();\n\n // Load data\n for (const [subject, predicates] of Object.entries(data)) {\n for (const [prop, value] of Object.entries(predicates)) {\n let propUri: string;\n \n if (prop === 'type') {\n propUri = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\n } else if (prop === 'label') {\n propUri = 'http://www.w3.org/2000/01/rdf-schema#label';\n } else {\n propUri = ONTONS + prop;\n }\n\n this._loadTripleIntoGraph(subject, propUri, value as PropertyValue[]);\n }\n }\n \n logger.debug('Loaded %d subjects into RDF graph', Object.keys(data).length);\n }\n\n public getGraphUrl(): string {\n return this.graphurl;\n }\n\n public getStore(): Store {\n return this.store;\n }\n} "],"mappings":"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","names":["Writer","fs","path","JSZip","LogLevel","fs","path","logger","crypto","logger","key","fs","path","AdmZip","Store","DataFactory","logger","DF","DataFactory","Store","AdmZip","logger","logger","DataFactory","NamedNode","Literal","logger","DF","DataFactory","NamedNode","Literal","DataFactory","logger","DF","DataFactory","uuidv4","pako","logger","tableCounter","Writer","JSZip","createHash"]}