UNPKG

lipdjs

Version:

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

1,063 lines (1,002 loc) 34.4 kB
// Auto-generated. Do not edit. import { uniqid } from "../utils/utils"; import { parseVariableValues } from "../utils/utils"; import { Person } from "./person"; export class Publication { public abstract: string | null; public authors: Person[]; public citation: string | null; public citeKey: string | null; public dOI: string | null; public dataUrls: string[]; public firstAuthor: Person | null; public institution: string | null; public issue: string | null; public journal: string | null; public pages: string | null; public publicationType: string | null; public publisher: string | null; public report: string | null; public title: string | null; public urls: string[]; public volume: string | null; public year: number | null; protected _id: string; protected _type: string; protected _misc: Record<string, any>; protected _ontns: string; protected _ns: string; constructor() { this.abstract = null; this.authors = []; this.citation = null; this.citeKey = null; this.dOI = null; this.dataUrls = []; this.firstAuthor = null; this.institution = null; this.issue = null; this.journal = null; this.pages = null; this.publicationType = null; this.publisher = null; this.report = null; this.title = null; this.urls = []; this.volume = null; this.year = null; this._misc = {}; this._ontns = "http://linked.earth/ontology#"; this._ns = "http://linked.earth/lipd"; this._type = "http://linked.earth/ontology#Publication"; this._id = this._ns + "/" + uniqid("Publication"); } public getId(): string { return this._id; } public getType(): string { return this._type; } public getMisc(): Record<string, any> { return this._misc; } public static fromDictionary(data: Record<string, any>): Publication { const thisObj = new Publication(); thisObj._id = data._id; thisObj._type = data._type; thisObj._misc = data._misc; thisObj._ontns = data._ontns; thisObj._ns = data._ns; if (data.abstract !== null) { thisObj.abstract = data.abstract; } if (data.citation !== null) { thisObj.citation = data.citation; } if (data.citeKey !== null) { thisObj.citeKey = data.citeKey; } if (data.dOI !== null) { thisObj.dOI = data.dOI; } if (data.firstAuthor !== null) { thisObj.firstAuthor = Person.fromDictionary(data.firstAuthor); } if (data.institution !== null) { thisObj.institution = data.institution; } if (data.issue !== null) { thisObj.issue = data.issue; } if (data.journal !== null) { thisObj.journal = data.journal; } if (data.pages !== null) { thisObj.pages = data.pages; } if (data.publicationType !== null) { thisObj.publicationType = data.publicationType; } if (data.publisher !== null) { thisObj.publisher = data.publisher; } if (data.report !== null) { thisObj.report = data.report; } if (data.title !== null) { thisObj.title = data.title; } if (data.volume !== null) { thisObj.volume = data.volume; } if (data.year !== null) { thisObj.year = data.year; } thisObj.authors = []; for (const value of (data.authors || []) as any[]) { thisObj.authors.push(Person.fromDictionary(value)); } thisObj.dataUrls = []; for (const value of (data.dataUrls || []) as any[]) { thisObj.dataUrls.push(value); } thisObj.urls = []; for (const value of (data.urls || []) as any[]) { thisObj.urls.push(value); } return thisObj; } public static fromData(id: string, data: Record<string, any>): Publication { const thisObj = new Publication(); thisObj._id = id; const mydata = data[id] as any; for (const [key, value] of Object.entries(mydata)) { if (key === "type") { for (const val of value as any[]) { thisObj._type = val["@id"]; } continue; } else if (key === "hasAbstract") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.abstract = obj; } } else if (key === "hasAuthor") { thisObj.authors = []; for (const val of value as any[]) { let obj: any = null; if ("@id" in val) { obj = Person.fromData(val["@id"], data); } else { obj = val["@value"]; } thisObj.authors.push(obj); } } else if (key === "hasCitation") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.citation = obj; } } else if (key === "hasCiteKey") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.citeKey = obj; } } else if (key === "hasDOI") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.dOI = obj; } } else if (key === "hasDataUrl") { thisObj.dataUrls = []; for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.dataUrls.push(obj); } } else if (key === "hasFirstAuthor") { for (const val of value as any[]) { let obj: any = null; if ("@id" in val) { obj = Person.fromData(val["@id"], data); } else { obj = val["@value"]; } thisObj.firstAuthor = obj; } } else if (key === "hasInstitution") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.institution = obj; } } else if (key === "hasIssue") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.issue = obj; } } else if (key === "hasJournal") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.journal = obj; } } else if (key === "hasPages") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.pages = obj; } } else if (key === "hasPublisher") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.publisher = obj; } } else if (key === "hasReport") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.report = obj; } } else if (key === "hasTitle") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.title = obj; } } else if (key === "hasType") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.publicationType = obj; } } else if (key === "hasUrl") { thisObj.urls = []; for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.urls.push(obj); } } else if (key === "hasVolume") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.volume = obj; } } else if (key === "hasYear") { for (const val of value as any[]) { let obj: any = null; if ("@value" in val) { obj = val["@value"]; } thisObj.year = obj; } } else { // Store unknown properties in misc for (const val of value as any[]) { let obj: any; if ("@id" in val) { obj = data[val["@id"]]; } else if ("@value" in val) { obj = val["@value"]; } thisObj._misc[key] = obj; } } } return thisObj; } public toData(data: Record<string, any> = {}): Record<string, any> { data[this._id] = {}; data[this._id]["type"] = [ { "@id": this._type, "@type": "uri" } ] if (this.abstract !== null) { const valueObj = this.abstract; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasAbstract"] = [obj]; } if (this.authors.length > 0) { data[this._id]["hasAuthor"] = []; for (const valueObj of this.authors) { let obj: any = null; if (typeof valueObj === "string") { obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } } else { obj = { "@id": valueObj.getId(), "@type": "uri" } data = valueObj.toData(data); } data[this._id]["hasAuthor"].push(obj); } } if (this.citation !== null) { const valueObj = this.citation; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasCitation"] = [obj]; } if (this.citeKey !== null) { const valueObj = this.citeKey; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasCiteKey"] = [obj]; } if (this.dOI !== null) { const valueObj = this.dOI; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasDOI"] = [obj]; } if (this.dataUrls.length > 0) { data[this._id]["hasDataUrl"] = []; for (const valueObj of this.dataUrls) { const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasDataUrl"].push(obj); } } if (this.firstAuthor !== null) { const valueObj = this.firstAuthor; let obj: any = null; if (typeof valueObj === "string") { obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } } else { obj = { "@id": valueObj.getId(), "@type": "uri" } data = valueObj.toData(data); } data[this._id]["hasFirstAuthor"] = [obj]; } if (this.institution !== null) { const valueObj = this.institution; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasInstitution"] = [obj]; } if (this.issue !== null) { const valueObj = this.issue; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasIssue"] = [obj]; } if (this.journal !== null) { const valueObj = this.journal; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasJournal"] = [obj]; } if (this.pages !== null) { const valueObj = this.pages; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasPages"] = [obj]; } if (this.publicationType !== null) { const valueObj = this.publicationType; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasType"] = [obj]; } if (this.publisher !== null) { const valueObj = this.publisher; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasPublisher"] = [obj]; } if (this.report !== null) { const valueObj = this.report; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasReport"] = [obj]; } if (this.title !== null) { const valueObj = this.title; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasTitle"] = [obj]; } if (this.urls.length > 0) { data[this._id]["hasUrl"] = []; for (const valueObj of this.urls) { const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasUrl"].push(obj); } } if (this.volume !== null) { const valueObj = this.volume; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#string" } data[this._id]["hasVolume"] = [obj]; } if (this.year !== null) { const valueObj = this.year; const obj = { "@value": valueObj, "@type": "literal", "@datatype": "http://www.w3.org/2001/XMLSchema#integer" } data[this._id]["hasYear"] = [obj]; } // Add misc properties for (const [key, value] of Object.entries(this._misc)) { data[this._id][key] = []; let ptype: string | null = null; const tp = typeof value; if (tp === "number") { if (Number.isInteger(value)) { ptype = "http://www.w3.org/2001/XMLSchema#integer"; } else { ptype = "http://www.w3.org/2001/XMLSchema#float"; } } else if (tp === "string") { if (/\d{4}-\d{2}-\d{2}( |T)\d{2}:\d{2}:\d{2}/.test(value as string)) { ptype = "http://www.w3.org/2001/XMLSchema#datetime"; } else if (/\d{4}-\d{2}-\d{2}/.test(value as string)) { ptype = "http://www.w3.org/2001/XMLSchema#date"; } else { ptype = "http://www.w3.org/2001/XMLSchema#string"; } } else if (tp === "boolean") { ptype = "http://www.w3.org/2001/XMLSchema#boolean"; } data[this._id][key].push({ "@value": value, "@type": "literal", "@datatype": ptype }); } return data; } public toJson(): Record<string, any> { const data: Record<string, any> = { "@id": this._id } if (this.abstract !== null) { const valueObj = this.abstract; const obj = valueObj data["abstract"] = obj; } if (this.authors.length > 0) { data["author"] = []; for (const valueObj of this.authors) { const obj = valueObj.toJson() data["author"].push(obj); } } if (this.citation !== null) { const valueObj = this.citation; const obj = valueObj data["citation"] = obj; } if (this.citeKey !== null) { const valueObj = this.citeKey; const obj = valueObj data["citeKey"] = obj; } if (this.dOI !== null) { const valueObj = this.dOI; const obj = valueObj data["doi"] = obj; } if (this.dataUrls.length > 0) { data["dataUrl"] = []; for (const valueObj of this.dataUrls) { const obj = valueObj data["dataUrl"].push(obj); } } if (this.firstAuthor !== null) { const valueObj = this.firstAuthor; const obj = valueObj.toJson() data["firstauthor"] = obj; } if (this.institution !== null) { const valueObj = this.institution; const obj = valueObj data["institution"] = obj; } if (this.issue !== null) { const valueObj = this.issue; const obj = valueObj data["issue"] = obj; } if (this.journal !== null) { const valueObj = this.journal; const obj = valueObj data["journal"] = obj; } if (this.pages !== null) { const valueObj = this.pages; const obj = valueObj data["pages"] = obj; } if (this.publicationType !== null) { const valueObj = this.publicationType; const obj = valueObj data["type"] = obj; } if (this.publisher !== null) { const valueObj = this.publisher; const obj = valueObj data["publisher"] = obj; } if (this.report !== null) { const valueObj = this.report; const obj = valueObj data["report"] = obj; } if (this.title !== null) { const valueObj = this.title; const obj = valueObj data["title"] = obj; } if (this.urls.length > 0) { data["url"] = []; for (const valueObj of this.urls) { const obj = valueObj data["url"].push(obj); } } if (this.volume !== null) { const valueObj = this.volume; const obj = valueObj data["volume"] = obj; } if (this.year !== null) { const valueObj = this.year; const obj = valueObj data["year"] = obj; } // Add misc properties for (const [key, value] of Object.entries(this._misc)) { data[key] = value; } return data; } public static fromJson(data: Record<string, any>): Publication { const thisObj = new Publication(); for (const [key, pvalue] of Object.entries(data)) { if (key === "@id") { thisObj._id = pvalue as string; continue; } if (key === "abstract") { let obj: any = null; let value: any = pvalue; obj = value thisObj.abstract = obj; continue; } if (key === "author") { let obj: any = null; thisObj.authors = []; for (const value of pvalue as any[]) { obj = Person.fromJson(value) thisObj.authors.push(obj); } continue; } if (key === "citation") { let obj: any = null; let value: any = pvalue; obj = value thisObj.citation = obj; continue; } if (key === "citeKey") { let obj: any = null; let value: any = pvalue; obj = value thisObj.citeKey = obj; continue; } if (key === "dataUrl") { let obj: any = null; thisObj.dataUrls = []; for (const value of pvalue as any[]) { obj = value thisObj.dataUrls.push(obj); } continue; } if (key === "doi") { let obj: any = null; let value: any = pvalue; obj = value thisObj.dOI = obj; continue; } if (key === "firstauthor") { let obj: any = null; let value: any = pvalue; obj = Person.fromJson(value) thisObj.firstAuthor = obj; continue; } if (key === "institution") { let obj: any = null; let value: any = pvalue; obj = value thisObj.institution = obj; continue; } if (key === "issue") { let obj: any = null; let value: any = pvalue; obj = value thisObj.issue = obj; continue; } if (key === "journal") { let obj: any = null; let value: any = pvalue; obj = value thisObj.journal = obj; continue; } if (key === "pages") { let obj: any = null; let value: any = pvalue; obj = value thisObj.pages = obj; continue; } if (key === "publisher") { let obj: any = null; let value: any = pvalue; obj = value thisObj.publisher = obj; continue; } if (key === "report") { let obj: any = null; let value: any = pvalue; obj = value thisObj.report = obj; continue; } if (key === "title") { let obj: any = null; let value: any = pvalue; obj = value thisObj.title = obj; continue; } if (key === "type") { let obj: any = null; let value: any = pvalue; obj = value thisObj.publicationType = obj; continue; } if (key === "url") { let obj: any = null; thisObj.urls = []; for (const value of pvalue as any[]) { obj = value thisObj.urls.push(obj); } continue; } if (key === "volume") { let obj: any = null; let value: any = pvalue; obj = value thisObj.volume = obj; continue; } if (key === "year") { let obj: any = null; let value: any = pvalue; obj = value thisObj.year = obj; continue; } // Store unknown properties in misc thisObj._misc[key] = pvalue; } return thisObj; } public setNonStandardProperty(key: string, value: unknown): void { this._misc[key] = value; } public getNonStandardProperty(key: string): unknown { return this._misc[key]; } public getAllNonStandardProperties(): Record<string, unknown> { return this._misc; } public addNonStandardProperty(key: string, value: unknown): void { if (!(key in this._misc)) { this._misc[key] = []; } (this._misc[key] as unknown[]).push(value); } getAbstract(): string | null { return this.abstract; } setAbstract(abstract: string): void { // if (!(abstract instanceof string)) { // throw new Error(`Error: '${abstract}' is not of type string`); // } this.abstract = abstract; } getAuthors(): Person[] { return this.authors; } setAuthors(authors: Person[]): void { // if (!Array.isArray(authors)) { // throw new Error("Error: authors is not an array"); // } // if (!authors.every(x => x instanceof Person)) { // throw new Error(`Error: '${authors}' is not of type Person`); // } this.authors = authors; } addAuthor(authors: Person): void { // if (!(authors instanceof Person)) { // throw new Error(`Error: '${authors}' is not of type Person`); // } this.authors.push(authors); } getCitation(): string | null { return this.citation; } setCitation(citation: string): void { // if (!(citation instanceof string)) { // throw new Error(`Error: '${citation}' is not of type string`); // } this.citation = citation; } getCiteKey(): string | null { return this.citeKey; } setCiteKey(citeKey: string): void { // if (!(citeKey instanceof string)) { // throw new Error(`Error: '${citeKey}' is not of type string`); // } this.citeKey = citeKey; } getDOI(): string | null { return this.dOI; } setDOI(dOI: string): void { // if (!(dOI instanceof string)) { // throw new Error(`Error: '${dOI}' is not of type string`); // } this.dOI = dOI; } getDataUrls(): string[] { return this.dataUrls; } setDataUrls(dataUrls: string[]): void { // if (!Array.isArray(dataUrls)) { // throw new Error("Error: dataUrls is not an array"); // } // if (!dataUrls.every(x => x instanceof string)) { // throw new Error(`Error: '${dataUrls}' is not of type string`); // } this.dataUrls = dataUrls; } addDataUrl(dataUrls: string): void { // if (!(dataUrls instanceof string)) { // throw new Error(`Error: '${dataUrls}' is not of type string`); // } this.dataUrls.push(dataUrls); } getFirstAuthor(): Person | null { return this.firstAuthor; } setFirstAuthor(firstAuthor: Person): void { // if (!(firstAuthor instanceof Person)) { // throw new Error(`Error: '${firstAuthor}' is not of type Person`); // } this.firstAuthor = firstAuthor; } getInstitution(): string | null { return this.institution; } setInstitution(institution: string): void { // if (!(institution instanceof string)) { // throw new Error(`Error: '${institution}' is not of type string`); // } this.institution = institution; } getIssue(): string | null { return this.issue; } setIssue(issue: string): void { // if (!(issue instanceof string)) { // throw new Error(`Error: '${issue}' is not of type string`); // } this.issue = issue; } getJournal(): string | null { return this.journal; } setJournal(journal: string): void { // if (!(journal instanceof string)) { // throw new Error(`Error: '${journal}' is not of type string`); // } this.journal = journal; } getPages(): string | null { return this.pages; } setPages(pages: string): void { // if (!(pages instanceof string)) { // throw new Error(`Error: '${pages}' is not of type string`); // } this.pages = pages; } getPublicationType(): string | null { return this.publicationType; } setPublicationType(publicationType: string): void { // if (!(publicationType instanceof string)) { // throw new Error(`Error: '${publicationType}' is not of type string`); // } this.publicationType = publicationType; } getPublisher(): string | null { return this.publisher; } setPublisher(publisher: string): void { // if (!(publisher instanceof string)) { // throw new Error(`Error: '${publisher}' is not of type string`); // } this.publisher = publisher; } getReport(): string | null { return this.report; } setReport(report: string): void { // if (!(report instanceof string)) { // throw new Error(`Error: '${report}' is not of type string`); // } this.report = report; } getTitle(): string | null { return this.title; } setTitle(title: string): void { // if (!(title instanceof string)) { // throw new Error(`Error: '${title}' is not of type string`); // } this.title = title; } getUrls(): string[] { return this.urls; } setUrls(urls: string[]): void { // if (!Array.isArray(urls)) { // throw new Error("Error: urls is not an array"); // } // if (!urls.every(x => x instanceof string)) { // throw new Error(`Error: '${urls}' is not of type string`); // } this.urls = urls; } addUrl(urls: string): void { // if (!(urls instanceof string)) { // throw new Error(`Error: '${urls}' is not of type string`); // } this.urls.push(urls); } getVolume(): string | null { return this.volume; } setVolume(volume: string): void { // if (!(volume instanceof string)) { // throw new Error(`Error: '${volume}' is not of type string`); // } this.volume = volume; } getYear(): number | null { return this.year; } setYear(year: number): void { // if (!(year instanceof number)) { // throw new Error(`Error: '${year}' is not of type number`); // } this.year = year; } }