Skip to content
Snippets Groups Projects
Commit bccde5c2 authored by simon.mellerin's avatar simon.mellerin
Browse files

sparql - add formatDate helper

parent 3888421c
Branches
No related tags found
1 merge request!45#24 #25 - Dataset multistep - step 3 - first work
Pipeline #10467 failed
import type { Credentials, OcCatalog, OcDataset, OcPerson } from "@/declarations"
import { escapeString, executeSparqlInsert, stringifyLocalizedProperty } from "./sparql"
import { escapeString, executeSparqlInsert, formatDate, formatLocalizedProperty } from "./sparql"
export async function insertDataset(
dataset: OcDataset,
......@@ -20,11 +20,11 @@ export async function insertDataset(
<${dataset["@id"]}> a dcat:Dataset;
dct:type <${dataset.type?.["@id"]}>;
dct:identifier "${dataset.identifier}";
dct:title ${stringifyLocalizedProperty(dataset.title)};
dct:title ${formatLocalizedProperty(dataset.title)};
dcat:theme ${theme};
dct:description ${stringifyLocalizedProperty(dataset.description)};
dct:description ${formatLocalizedProperty(dataset.description)};
dct:publisher <${dataset.publisher?.['@id']}>;
dct:issued "${dataset.issued?.toISOString()}"^^xsd:dateTime;
dct:issued ${formatDate(dataset.issued)};
dct:creator ${creator};
dcat:contactPoint <${dataset.contactPoint?.['@id']}>;
dct:accrualPeriodicity <${dataset.accrualPeriodicity?.['@id']}>;
......@@ -32,7 +32,7 @@ export async function insertDataset(
prov:qualifiedAttribution [
a prov:Attribution;
prov:agent <${profile['@id']}>;
prov:generatedAtTime "${new Date().toISOString()}"^^xsd:dateTime;
prov:generatedAtTime ${formatDate(new Date())};
dcat:hadRole <https://www.irit.fr/opencommon/terms/dataStewardRole>
]`
if (dataset.keyword) {
......@@ -46,14 +46,14 @@ export async function insertDataset(
}
if (dataset.modified) {
insertQuery += `;
dct:modified "${dataset.modified.toISOString()}"^^xsd:dateTime`
dct:modified ${formatDate(dataset.modified)}`
}
if (dataset.temporal) {
insertQuery += `;
dct:temporal[
a dct:PeriodOfTime;
dcat:startDate "${dataset.temporal[0].toISOString()}"^^xsd:dateTime;
dcat:endDate "${dataset.temporal[1].toISOString()}"^^xsd:dateTime
dcat:startDate ${formatDate(dataset.temporal[0])};
dcat:endDate ${formatDate(dataset.temporal[1])};
]`
}
if (dataset.spatial) {
......
import type { Credentials, OcDataset, OcDistribution, OcPerson } from "@/declarations"
import { escapeString, executeSparqlInsert, stringifyLocalizedProperty } from "./sparql"
import { escapeString, executeSparqlInsert, formatLocalizedProperty, formatDate } from "./sparql"
export async function insertDistribution(
distribution: Partial<OcDistribution>,
......@@ -17,19 +17,19 @@ export async function insertDistribution(
<${dataset["@id"]}> a dcat:Distribution;
dct:type <${distribution.type?.["@id"]}>;
dct:identifier "${distribution.identifier}";
dct:title ${stringifyLocalizedProperty(distribution.title)};
dct:description ${stringifyLocalizedProperty(distribution.description)};
dct:title ${formatLocalizedProperty(distribution.title)};
dct:description ${formatLocalizedProperty(distribution.description)};
prov:qualifiedAttribution [
a prov:Attribution;
prov:agent <${profile['@id']}>;
prov:generatedAtTime "${new Date().toISOString()}"^^xsd:dateTime;
prov:generatedAtTime ${formatDate(new Date())};
dcat:hadRole <https://www.irit.fr/opencommon/terms/dataStewardRole>
]`
if (distribution.issued) {
insertQuery += `;
dct:issued "${distribution.issued?.toISOString()}"^^xsd:dateTime`
dct:issued ${formatDate(distribution.issued)}`
}
if (distribution.license) {
insertQuery += `;
......
......@@ -127,7 +127,15 @@ export function escapeString(value?: string) {
return value?.replace(/[\""]/g, '\\"').replace(/\n/g, "\\n")
}
export function stringifyLocalizedProperty(value: LocalizedProperty): string | undefined {
export function formatDate(value: Date | undefined): string | undefined {
if (value === undefined) {
return value
}
return `"${value.toISOString()}"^^xsd:dateTime`
}
export function formatLocalizedProperty(value: LocalizedProperty): string | undefined {
if (typeof value === 'string') {
return `"${escapeString(value)}"`
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment