From d19e4d4098becb45dd530093517066e0bac91873 Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Thu, 7 Mar 2019 11:14:42 +0200 Subject: [PATCH] Clean up place hierarchy --- src/client/reducers/manuscriptsFacets.js | 2 +- src/server/index.js | 2 +- src/server/sparql/FacetConfigs.js | 8 ++- .../sparql/{Facets.js => FacetValues.js} | 10 ++-- src/server/sparql/Mappers.js | 60 +------------------ src/server/sparql/SparqlQueriesGeneral.js | 3 +- src/server/sparql/SparqlQueriesPlaces.js | 1 + 7 files changed, 16 insertions(+), 70 deletions(-) rename src/server/sparql/{Facets.js => FacetValues.js} (90%) diff --git a/src/client/reducers/manuscriptsFacets.js b/src/client/reducers/manuscriptsFacets.js index a2fc63cc..6691df7a 100644 --- a/src/client/reducers/manuscriptsFacets.js +++ b/src/client/reducers/manuscriptsFacets.js @@ -121,7 +121,7 @@ const manuscriptsFacets = (state = INITIAL_STATE, action) => { ...state.facets[action.id], distinctValueCount: action.distinctValueCount, values: action.values, - flatValues: action.flatValues || [], + // flatValues: action.flatValues || [], sortBy: action.sortBy, sortDirection: action.sortDirection, isFetching: false diff --git a/src/server/index.js b/src/server/index.js index 474d3f09..ceb0ec2b 100644 --- a/src/server/index.js +++ b/src/server/index.js @@ -2,7 +2,7 @@ import express from 'express'; import path from 'path'; import bodyParser from 'body-parser'; import { getPaginatedResults, getAllResults, getByURI } from './sparql/FacetResults'; -import { getFacet } from './sparql/Facets'; +import { getFacet } from './sparql/FacetValues'; const DEFAULT_PORT = 3001; const app = express(); const apiPath = '/api'; diff --git a/src/server/sparql/FacetConfigs.js b/src/server/sparql/FacetConfigs.js index e4445aa6..3d07ee50 100644 --- a/src/server/sparql/FacetConfigs.js +++ b/src/server/sparql/FacetConfigs.js @@ -4,8 +4,8 @@ export const facetConfigs = { productionPlace: { id: 'productionPlace', facetValueFilter: ` - ?id dct:source <http://vocab.getty.edu/tgn/> . - FILTER(?id != <http://ldf.fi/mmm/places/tgn_7031096>) + ?id dct:source <http://vocab.getty.edu/tgn/> . + FILTER(?id != <http://ldf.fi/mmm/places/tgn_7031096>) `, label: 'Production place', labelPath: '^crm:P108_has_produced/crm:P7_took_place_at/skos:prefLabel', @@ -78,7 +78,9 @@ export const facetConfigs = { }, area: { id: 'area', - facetValueFilter: '', + facetValueFilter: ` + FILTER(?id != <http://ldf.fi/mmm/place/tgn_7026519>) + `, label: 'Area', labelPath: 'gvp:broaderPreferred/skos:prefLabel', predicate: 'gvp:broaderPreferred', diff --git a/src/server/sparql/Facets.js b/src/server/sparql/FacetValues.js similarity index 90% rename from src/server/sparql/Facets.js rename to src/server/sparql/FacetValues.js index bb33ef72..3832feb6 100644 --- a/src/server/sparql/Facets.js +++ b/src/server/sparql/FacetValues.js @@ -42,10 +42,8 @@ export const getFacet = (resultClass, facetID, sortBy, sortDirection, filters) = OPTIONAL { ?id dct:source ?source } OPTIONAL { ?id gvp:broaderPreferred ?parent_ - FILTER(?parent_ != <http://ldf.fi/mmm/places/tgn_7026519>) } BIND(COALESCE(?parent_, '0') as ?parent) - #FILTER(?id != <http://ldf.fi/mmm/places/tgn_7026519>) } `; } @@ -56,9 +54,9 @@ export const getFacet = (resultClass, facetID, sortBy, sortDirection, filters) = q = q.replace('<FACET_VALUE_FILTER>', facetConfig.facetValueFilter); q = q.replace('<PARENTS>', parentBlock); q = q.replace('<ORDER_BY>', `ORDER BY ${sortDirection}(?${sortBy})` ); - // if (facetID == 'area') { - // //console.log(filters) - // console.log(prefixes + q) - // } + if (facetID == 'area') { + //console.log(filters) + console.log(prefixes + q) + } return sparqlSearchEngine.doSearch(prefixes + q, endpoint, mapper); }; diff --git a/src/server/sparql/Mappers.js b/src/server/sparql/Mappers.js index 2d1a11cf..b944a7c7 100644 --- a/src/server/sparql/Mappers.js +++ b/src/server/sparql/Mappers.js @@ -37,78 +37,22 @@ export const mapFacet = sparqlBindings => { export const mapHierarchicalFacet = sparqlBindings => { const results = makeObjectList(sparqlBindings); - const flatResults = results; - // results.push({ - // id: 'http://ldf.fi/mmm/places/sdbm_not_linked', - // prefLabel: 'SDBM places not linked to TGN', - // selected: 'false', - // source: 'http://ldf.fi/mmm/schema/SDBM', - // instanceCount: '0', - // parent: '0' - // }); - // results.push({ - // id: 'http://ldf.fi/mmm/places/bodley_not_linked', - // prefLabel: 'Bodley places not linked to TGN', - // selected: 'false', - // source: 'http://ldf.fi/mmm/schema/Bodley', - // instanceCount: '0', - // parent: '0' - // }); - // results.push({ - // id: 'http://ldf.fi/mmm/places/bibale_not_linked', - // prefLabel: 'Bibale places not linked to TGN', - // selected: 'false', - // source: 'http://ldf.fi/mmm/schema/Bibale', - // instanceCount: '0', - // parent: '0' - // }); + //const flatResults = results; let treeData = getTreeFromFlatData({ flatData: results, getKey: node => node.id, // resolve a node's key getParentKey: node => node.parent, // resolve node's parent's key - // getParentKey: getParentKey, // resolve node's parent's key rootKey: '0', // The value of the parent key when there is no parent (i.e., at root level) }); treeData = recursiveSort(treeData); treeData.forEach(node => sumUp(node)); return { distinctValueCount: results.length, - flatValues: flatResults, + //flatValues: flatResults, values: treeData }; }; -// const rootLevel = new Set([ -// 'http://ldf.fi/mmm/places/tgn_7029392', -// 'http://ldf.fi/mmm/places/sdbm_not_linked', -// 'http://ldf.fi/mmm/places/bodley_not_linked', -// 'http://ldf.fi/mmm/places/bibale_not_linked' -// ]); -// -// const getParentKey = node => { -// let parent = ''; -// if (node.parent === '0' && !rootLevel.has(node.id)) { -// if (Array.isArray(node.source)) { -// if (node.source.indexOf('http://ldf.fi/mmm/schema/SDBM') != -1) { -// parent = 'http://ldf.fi/mmm/places/sdbm_not_linked'; -// } else if (node.source.indexOf('http://ldf.fi/mmm/schema/Bodley') != -1) { -// parent = 'http://ldf.fi/mmm/places/bodley_not_linked'; -// } else if (node.source.indexOf('http://ldf.fi/mmm/schema/Bibale') != -1) { -// parent = 'http://ldf.fi/mmm/places/bibale_not_linked'; -// } -// } else if (node.source === 'http://ldf.fi/mmm/schema/SDBM') { -// parent = 'http://ldf.fi/mmm/places/sdbm_not_linked'; -// } else if (node.source === 'http://ldf.fi/mmm/schema/Bodley') { -// parent = 'http://ldf.fi/mmm/places/bodley_not_linked'; -// } else if (node.source === 'http://ldf.fi/mmm/schema/Bibale') { -// parent = 'http://ldf.fi/mmm/places/bibale_not_linked'; -// } -// } else { -// parent = node.parent; -// } -// return parent; -// }; - const comparator = (a, b) => { if (Array.isArray(a.prefLabel)) { a.prefLabel = a.prefLabel[0]; diff --git a/src/server/sparql/SparqlQueriesGeneral.js b/src/server/sparql/SparqlQueriesGeneral.js index f9e1183a..630494bb 100644 --- a/src/server/sparql/SparqlQueriesGeneral.js +++ b/src/server/sparql/SparqlQueriesGeneral.js @@ -34,7 +34,6 @@ export const facetValuesQuery = ` ?instance a <RDF_TYPE> . <FILTER> ?instance <PREDICATE> ?id . - <FACET_VALUE_FILTER> <SELECTED_VALUES> BIND(COALESCE(?selected_, false) as ?selected) OPTIONAL { ?id dct:source ?source . } @@ -46,6 +45,7 @@ export const facetValuesQuery = ` GROUP BY ?id ?selected ?source ?lat ?long ?parent } FILTER(BOUND(?id)) + <FACET_VALUE_FILTER> OPTIONAL { ?id skos:prefLabel ?prefLabel_ } BIND(COALESCE(STR(?prefLabel_), STR(?id)) AS ?prefLabel) } @@ -64,6 +64,7 @@ export const facetValuesQuery = ` BIND("Unknown" AS ?prefLabel) BIND('0' as ?parent) } + } <ORDER_BY> `; diff --git a/src/server/sparql/SparqlQueriesPlaces.js b/src/server/sparql/SparqlQueriesPlaces.js index 7e85715f..f1e82bf9 100644 --- a/src/server/sparql/SparqlQueriesPlaces.js +++ b/src/server/sparql/SparqlQueriesPlaces.js @@ -42,6 +42,7 @@ export const allPlacesQuery = ` OPTIONAL { ?id skos:altLabel ?altLabel } OPTIONAL { ?id mmm-schema:data_provider_url ?dataProviderUrl } OPTIONAL { ?id owl:sameAs ?placeAuthorityURI } + FILTER(?id != <http://ldf.fi/mmm/places/tgn_7031096>) } `; -- GitLab