UNPKG

lipdjs

Version:

A JavaScript library for reading and writing LiPD (Linked Paleo Data) files

1 lines 1.66 MB
{"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"]}