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