From 611165d9163e6d6769d9f9fb28e188d4e578c91d Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Fri, 29 Oct 2021 12:32:23 +0300 Subject: [PATCH] Facets: add optional labelPattern config option --- src/server/sparql/FacetValues.js | 25 +++++++++++++++++++---- src/server/sparql/SparqlQueriesGeneral.js | 6 +----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/server/sparql/FacetValues.js b/src/server/sparql/FacetValues.js index f1596db5..1044df63 100644 --- a/src/server/sparql/FacetValues.js +++ b/src/server/sparql/FacetValues.js @@ -123,10 +123,27 @@ export const getFacet = async ({ q = q.replace(/<FACET_CLASS>/g, backendSearchConfig[facetClass].facetClass) q = q.replace('<UNKNOWN_SELECTED>', unknownSelected) q = q.replace('<MISSING_PREDICATE>', facetConfig.predicate) - const facetLabelPredicate = facetConfig.facetLabelPredicate - ? facetConfig.facetLabelPredicate - : 'skos:prefLabel' - q = q.replace('<FACET_LABEL_PREDICATE>', facetLabelPredicate) + if (has(facetConfig, 'labelPattern')) { + q = q.replace('<LABELS>', facetConfig.labelPattern) + } else { + const defaultLabelPattern = ` + OPTIONAL { + ?id <FACET_LABEL_PREDICATE> ?prefLabel_ + <FACET_LABEL_FILTER> + } + BIND(COALESCE(STR(?prefLabel_), STR(?id)) AS ?prefLabel) + ` + q = q.replace('<LABELS>', defaultLabelPattern) + const facetLabelPredicate = facetConfig.facetLabelPredicate + ? facetConfig.facetLabelPredicate + : 'skos:prefLabel' + q = q.replace('<FACET_LABEL_PREDICATE>', facetLabelPredicate) + q = q.replace(/<FACET_LABEL_FILTER>/g, + has(facetConfig, 'facetLabelFilter') + ? facetConfig.facetLabelFilter + : '' + ) + } if (facetConfig.type === 'timespan') { q = q.replace('<START_PROPERTY>', facetConfig.startProperty) q = q.replace('<END_PROPERTY>', facetConfig.endProperty) diff --git a/src/server/sparql/SparqlQueriesGeneral.js b/src/server/sparql/SparqlQueriesGeneral.js index 802349e6..c646c9fe 100644 --- a/src/server/sparql/SparqlQueriesGeneral.js +++ b/src/server/sparql/SparqlQueriesGeneral.js @@ -70,11 +70,7 @@ export const facetValuesQuery = ` } FILTER(BOUND(?id)) <FACET_VALUE_FILTER> - OPTIONAL { - ?id <FACET_LABEL_PREDICATE> ?prefLabel_ - <FACET_LABEL_FILTER> - } - BIND(COALESCE(STR(?prefLabel_), STR(?id)) AS ?prefLabel) + <LABELS> } UNION { -- GitLab