diff --git a/src/components/descriptors/OcDescriptorDataset/OcDescriptorDataset.vue b/src/components/descriptors/OcDescriptorDataset/OcDescriptorDataset.vue index a0d91b5de519e4e14db3a7914f0b1c650b370cda..02446d523cc47f02a6197f93dcbf5a8e74175e18 100644 --- a/src/components/descriptors/OcDescriptorDataset/OcDescriptorDataset.vue +++ b/src/components/descriptors/OcDescriptorDataset/OcDescriptorDataset.vue @@ -42,14 +42,14 @@ </div> </AccordionContent> </AccordionPanel> - <AccordionPanel value="1"> + <AccordionPanel value="1" v-if="props.dataset.provenance?.length > 0"> <AccordionHeader> <h2 class="text-xl font-medium mb-2 text-black"> {{ t('descriptors.dataset.quality.title') }} </h2> </AccordionHeader> <AccordionContent> - <div v-if="props.dataset.provenance" class="mb-4"> + <div class="mb-4"> <h3>{{ t('descriptors.dataset.quality.provenance') }}</h3> <div class="mb-4 border bg-white rounded-md p-2" @@ -59,18 +59,6 @@ {{ translateValue(provenance.label) }} </div> </div> - <div v-if="props.dataset.input" class="mb-4"> - <h3>{{ t('descriptors.dataset.quality.input') }}</h3> - <div v-for="input in props.dataset.input" :key="input['@id']"> - {{ input.label }} - </div> - </div> - <div v-if="props.dataset.other" class="mb-4"> - <h3>{{ t('descriptors.dataset.quality.other') }}</h3> - <div v-for="other in props.dataset.other" :key="other['@id']"> - {{ other.label }} - </div> - </div> </AccordionContent> </AccordionPanel> <AccordionPanel value="2"> @@ -100,31 +88,36 @@ {{ globalTranslateValue(datasetMetadata.publisher.label) }} </td> <td class="py-2 px-1"> - <a :href="dataset.publisher?.mbox" target="_blank"> - <i class="fa-regular fa-envelope mr-1"></i> + <template v-if="dataset.publisher?.mbox"> + <a :href="dataset.publisher?.mbox as string" target="_blank"> + <i class="fa-regular fa-envelope mr-1"></i> + {{ translateValue(dataset.publisher?.name) }} + </a> + </template> + <template v-else> {{ translateValue(dataset.publisher?.name) }} - </a> + </template> </td> </tr> - <tr class="border"> + <tr class="border" v-if="dataset.issued"> <td class="font-medium py-2 px-1 border-r flex w-[16rem] items-center"> <OcFairBadge size="small" :badges="datasetMetadata.issued.fair" :popover="true" /> {{ globalTranslateValue(datasetMetadata.issued.label) }} </td> <td class="py-2 px-1"> - {{ dataset.issued?.toLocaleDateString(locale) }} + {{ dataset.issued?.toLocaleDateString?.(locale) }} </td> </tr> - <tr class="border"> + <tr class="border" v-if="dataset.modified"> <td class="font-medium py-2 px-1 border-r flex w-[16rem] items-center"> <OcFairBadge size="small" :badges="datasetMetadata.modified.fair" :popover="true" /> {{ globalTranslateValue(datasetMetadata.modified.label) }} </td> <td class="py-2 px-1"> - {{ dataset.modified?.toLocaleDateString(locale) }} + {{ dataset.modified?.toLocaleDateString?.(locale) }} </td> </tr> - <tr class="border"> + <tr class="border" v-if="dataset.conformsTo"> <td class="font-medium py-2 px-1 border-r flex w-[16rem] items-center"> <OcFairBadge size="small" @@ -134,19 +127,19 @@ {{ globalTranslateValue(datasetMetadata.conformsTo.label) }} </td> <td class="py-2 px-1"> - {{ dataset.conformsTo }} + {{ translateValue(dataset.conformsTo?.prefLabel) }} </td> </tr> - <tr class="border"> + <tr class="border" v-if="dataset.license"> <td class="font-medium py-2 px-1 border-r flex w-[16rem] items-center"> <OcFairBadge size="small" :badges="datasetMetadata.license.fair" :popover="true" /> {{ globalTranslateValue(datasetMetadata.license.label) }} </td> <td class="py-2 px-1"> - {{ dataset.license }} + {{ translateValue(dataset.license?.prefLabel) }} </td> </tr> - <tr class="border"> + <tr class="border" v-if="dataset.landingPage"> <td class="font-medium py-2 px-1 border-r flex w-[16rem] items-center"> <OcFairBadge size="small" @@ -159,15 +152,6 @@ {{ dataset.landingPage }} </td> </tr> - <tr class="border"> - <td class="font-medium py-2 px-1 border-r flex w-[16rem] items-center"> - <OcFairBadge size="small" :badges="datasetMetadata.isPartOf.fair" :popover="true" /> - {{ globalTranslateValue(datasetMetadata.isPartOf.label) }} - </td> - <td class="py-2 px-1"> - {{ dataset.isPartOf }} - </td> - </tr> </tbody> </table> </AccordionContent> diff --git a/src/sparql/datasets.ts b/src/sparql/datasets.ts index cf925b690745d19bb396394648f66e308e4d6e13..5ef73ee16a7fedabe96185cdaac3979c2d46e58c 100644 --- a/src/sparql/datasets.ts +++ b/src/sparql/datasets.ts @@ -7,7 +7,8 @@ import type { OcOrganization, OcDatasetSummary, OcAdmsIdentifier, - OcGeometry + OcGeometry, + OcProvenance } from '@/declarations' import { defaultLocalizedPropFormatter, @@ -261,6 +262,32 @@ export async function getDataset(identifier: string, auth?: Credentials): Promis } ) + /** + * Provenance + */ + const datasetProvenancePromise = executeSparqlConstruct<OcProvenance>( + ` + CONSTRUCT { + ?provenance ?p ?o. + } + WHERE { + <${datasetUri}> dct:provenance ?provenance. + OPTIONAL { + ?provenance ?p ?o. + } + } + `, + { + auth, + context: { + label: { + '@id': 'http://www.w3.org/2000/01/rdf-schema#label', + '@container': '@language' + } + } + } + ) + /** * Creators */ @@ -637,7 +664,8 @@ export async function getDataset(identifier: string, auth?: Credentials): Promis datasetAccrualPeriodicityPromise, // 11 datasetLicensePromise, // 12 datasetConformsToPromise, // 13 - datasetSpatialGeometryPromise // 14 + datasetSpatialGeometryPromise, // 14 + datasetProvenancePromise // 15 ]) dataset.temporal = datasetResponse[0].map<[Date, Date]>((temporal) => [ @@ -657,6 +685,7 @@ export async function getDataset(identifier: string, auth?: Credentials): Promis dataset.accrualPeriodicity = datasetResponse[11][0] dataset.license = datasetResponse[12][0] dataset.conformsTo = datasetResponse[13][0] + dataset.provenance = datasetResponse[15] // Format Dates // dataset.issued = dataset.issued ? new Date(Date.parse(dataset.issued)) : dataset.issued