diff --git a/src/server/sparql/FacetConfigsMMM.js b/src/server/sparql/FacetConfigsMMM.js index 7af2493727c34c5dab1a36c24d7cb92a06973938..50097f03157888c0d3ee7da0a8a0340b4d9df3e7 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 841d3b68ec13a7a20116fca3e437dce215abf97e..386ce1f1df82f09ee50bffef822787ed851edbcb 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 d7501a3cdfd80d13a1e217c7a6e6383284bcfedc..ecf1b4b68d8f1f7cdb951dc80a484bb74e33f517 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 abac4493161539bfb3d20966106bedc90aa712cf..6cf94eead693d1a720465fd6224c87b2a7c089aa 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