From 65f401495fea1bb2c40b271c8447ea5dc2b4a492 Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Fri, 6 Sep 2019 12:09:10 +0300 Subject: [PATCH] Add parent property to facet config --- src/server/sparql/FacetConfigsMMM.js | 5 +++++ src/server/sparql/FacetValues.js | 6 ++++++ src/server/sparql/Mappers.js | 2 +- src/server/sparql/SparqlQueriesGeneral.js | 7 +++---- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/server/sparql/FacetConfigsMMM.js b/src/server/sparql/FacetConfigsMMM.js index 7af24937..50097f03 100644 --- a/src/server/sparql/FacetConfigsMMM.js +++ b/src/server/sparql/FacetConfigsMMM.js @@ -74,6 +74,7 @@ export const facetConfigs = { label: 'Production place', labelPath: '^crm:P108_has_produced/crm:P7_took_place_at/skos:prefLabel', predicate: '^crm:P108_has_produced/crm:P7_took_place_at', + parentProperty: 'gvp:broaderPreferred', parentPredicate: '^crm:P108_has_produced/crm:P7_took_place_at/gvp:broaderPreferred+', type: 'hierarchical', }, @@ -102,6 +103,7 @@ export const facetConfigs = { label: 'Transfer of custody place', labelPath: '^crm:P30_transferred_custody_of/crm:P7_took_place_at/skos:prefLabel', predicate: '^crm:P30_transferred_custody_of/crm:P7_took_place_at', + parentProperty: 'gvp:broaderPreferred', parentPredicate: '^crm:P30_transferred_custody_of/crm:P7_took_place_at/gvp:broaderPreferred+', type: 'hierarchical', }, @@ -315,6 +317,7 @@ export const facetConfigs = { label: 'Place', labelPath: 'crm:P7_took_place_at/skos:prefLabel', predicate: 'crm:P7_took_place_at', + parentProperty: 'gvp:broaderPreferred', parentPredicate: 'crm:P7_took_place_at/gvp:broaderPreferred+', type: 'hierarchical', }, @@ -383,6 +386,7 @@ export const facetConfigs = { `, labelPath: '^crm:P11_had_participant/crm:P7_took_place_at/skos:prefLabel', predicate: '^crm:P11_had_participant/crm:P7_took_place_at', + parentProperty: 'gvp:broaderPreferred', parentPredicate: '^crm:P11_had_participant/crm:P7_took_place_at/gvp:broaderPreferred+', type: 'hierarchical', }, @@ -421,6 +425,7 @@ export const facetConfigs = { label: 'Area', labelPath: 'gvp:broaderPreferred/skos:prefLabel', predicate: 'gvp:broaderPreferred', + parentProperty: 'gvp:broaderPreferred', parentPredicate: 'gvp:broaderPreferred+', type: 'hierarchical', }, diff --git a/src/server/sparql/FacetValues.js b/src/server/sparql/FacetValues.js index 841d3b68..386ce1f1 100644 --- a/src/server/sparql/FacetValues.js +++ b/src/server/sparql/FacetValues.js @@ -58,6 +58,7 @@ export const getFacet = async ({ let selectedNoHitsBlock = '# no filters from other facets'; let filterBlock = '# no filters'; let parentBlock = '# no parents'; + let parentsForFacetValues = '# no parents for facet values'; if (constraints !== null) { filterBlock = generateConstraintsBlock({ facetClass: facetClass, @@ -91,6 +92,10 @@ export const getFacet = async ({ constraints, parentPredicate }); + parentsForFacetValues = ` + OPTIONAL { ?id ${facetConfig.parentProperty} ?parent_ } + BIND(COALESCE(?parent_, '0') as ?parent) + `; } q = q.replace('<SELECTED_VALUES>', selectedBlock); q = q.replace('<SELECTED_VALUES_NO_HITS>', selectedNoHitsBlock); @@ -101,6 +106,7 @@ export const getFacet = async ({ : '' ); q = q.replace('<PARENTS>', parentBlock); + q = q.replace('<PARENTS_FOR_FACET_VALUES>', parentsForFacetValues); if (facetConfig.type === 'list') { q = q.replace('<ORDER_BY>', `ORDER BY ${sortDirection}(?${sortBy})` ); } else { diff --git a/src/server/sparql/Mappers.js b/src/server/sparql/Mappers.js index d7501a3c..ecf1b4b6 100644 --- a/src/server/sparql/Mappers.js +++ b/src/server/sparql/Mappers.js @@ -56,7 +56,7 @@ const mapFacetValues = sparqlBindings => { id: b.id.value, prefLabel: b.prefLabel.value, selected: b.selected.value, - parent: b.parent.value, + parent: b.parent ? b.parent.value : null, instanceCount: b.instanceCount.value }; } catch(err) { diff --git a/src/server/sparql/SparqlQueriesGeneral.js b/src/server/sparql/SparqlQueriesGeneral.js index abac4493..6cf94eea 100644 --- a/src/server/sparql/SparqlQueriesGeneral.js +++ b/src/server/sparql/SparqlQueriesGeneral.js @@ -1,5 +1,5 @@ -export const endpoint = 'http://ldf.fi/mmm-cidoc/sparql'; -// export const endpoint = 'http://localhost:3050/ds/sparql'; +//export const endpoint = 'http://ldf.fi/mmm-cidoc/sparql'; +export const endpoint = 'http://localhost:3050/ds/sparql'; export const instanceQuery = ` SELECT * { @@ -79,12 +79,11 @@ export const facetValuesQuery = ` } FILTER(BOUND(?id)) <FACET_VALUE_FILTER> - OPTIONAL { ?id gvp:broaderPreferred ?parent_ } OPTIONAL { ?id skos:prefLabel|rdfs:label ?prefLabel_ <FACET_LABEL_FILTER> } - BIND(COALESCE(?parent_, '0') as ?parent) + <PARENTS_FOR_FACET_VALUES> BIND(COALESCE(STR(?prefLabel_), STR(?id)) AS ?prefLabel) } UNION -- GitLab