From 020a52ef31bd37f0cfdc7604835a4382b6144e05 Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Fri, 22 Oct 2021 18:46:12 +0300 Subject: [PATCH] Add initial config for choropleth map --- .../perspectives/sampo/Perspective1.js | 22 +++++++++++++++++++ src/server/sparql/Mappers.js | 9 ++++---- .../sparql/sampo/BackendSearchConfig.js | 18 ++++++++++++++- .../sampo/perspective_configs/WarsaConfig.js | 9 ++++++++ .../SparqlQueriesPerspective1.js | 13 +++++++++++ .../sparql_queries/SparqlQueriesPrefixes.js | 1 + 6 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/server/sparql/sampo/perspective_configs/WarsaConfig.js diff --git a/src/client/components/perspectives/sampo/Perspective1.js b/src/client/components/perspectives/sampo/Perspective1.js index 049b844b..f5ad37b6 100644 --- a/src/client/components/perspectives/sampo/Perspective1.js +++ b/src/client/components/perspectives/sampo/Perspective1.js @@ -204,6 +204,28 @@ const Perspective1 = props => { layoutConfig={props.layoutConfig} />} /> + <Route + path={`${rootUrl}/${perspective.id}/faceted-search/choropleth_map`} + render={() => + <Deck + center={props.perspectiveState.maps.placesMsMigrations.center} + zoom={props.perspectiveState.maps.placesMsMigrations.zoom} + results={props.perspectiveState.results} + facetUpdateID={props.facetState.facetUpdateID} + instanceAnalysisData={props.perspectiveState.instanceAnalysisData} + instanceAnalysisDataUpdateID={props.perspectiveState.instanceAnalysisDataUpdateID} + resultClass='choropleth' + facetClass='perspective1' + fetchResults={props.fetchResults} + fetchInstanceAnalysis={props.fetchInstanceAnalysis} + fetching={props.perspectiveState.fetching} + fetchingInstanceAnalysisData={props.perspectiveState.fetchingInstanceAnalysisData} + layerType='arcLayer' + mapBoxAccessToken={MAPBOX_ACCESS_TOKEN} + mapBoxStyle={MAPBOX_STYLE} + layoutConfig={props.layoutConfig} + />} + /> <Route path={`${rootUrl}/${perspective.id}/faceted-search/production_dates`} render={() => diff --git a/src/server/sparql/Mappers.js b/src/server/sparql/Mappers.js index fa85bf42..ca8acdb5 100644 --- a/src/server/sparql/Mappers.js +++ b/src/server/sparql/Mappers.js @@ -171,13 +171,14 @@ export const mapPieChart = sparqlBindings => { export const linearScale = ({ data, config }) => { const { variable, minAllowed, maxAllowed } = config const length = data.length - const min = data[length - 1][variable] - const max = data[0][variable] + const min = Number(data[length - 1][variable]) + const max = Number(data[0][variable]) data.forEach(item => { if (item[variable]) { - const unscaledNum = item[variable] + const unscaledNum = Number(item[variable]) // https://stackoverflow.com/a/31687097 - item[`${variable}Scaled`] = (maxAllowed - minAllowed) * (unscaledNum - min) / (max - min) + minAllowed + const scaled = (maxAllowed - minAllowed) * (unscaledNum - min) / (max - min) + minAllowed + item[`${variable}Scaled`] = scaled.toFixed(2) } }) return data diff --git a/src/server/sparql/sampo/BackendSearchConfig.js b/src/server/sparql/sampo/BackendSearchConfig.js index b06f3827..749d7a24 100644 --- a/src/server/sparql/sampo/BackendSearchConfig.js +++ b/src/server/sparql/sampo/BackendSearchConfig.js @@ -5,6 +5,7 @@ import { findsConfig } from './perspective_configs/FindsConfig' import { actorsConfig } from './perspective_configs/EmloActorsConfig' import { hellerauConfig } from './perspective_configs/HellerauConfig' import { speechesConfig } from './perspective_configs/SemparlSpeechesConfig' +import { warsaConfig } from './perspective_configs/WarsaConfig' import { productionPlacesQuery, lastKnownLocationsQuery, @@ -19,7 +20,8 @@ import { manuscriptInstancePageNetworkLinksQuery, manuscriptFacetResultsNetworkLinksQuery, manuscriptNetworkNodesQuery, - knowledgeGraphMetadataQuery + knowledgeGraphMetadataQuery, + choroplethQuery } from './sparql_queries/SparqlQueriesPerspective1' import { workProperties @@ -75,6 +77,7 @@ export const backendSearchConfig = { emloActors: actorsConfig, hellerau: hellerauConfig, semparlSpeeches: speechesConfig, + warsa: warsaConfig, manuscripts: { perspectiveID: 'perspective1', // get rest of the config from 'perspective1' instance: { @@ -166,6 +169,19 @@ export const backendSearchConfig = { } } }, + choropleth: { + perspectiveID: 'warsa', + q: choroplethQuery, + resultMapper: makeObjectList, + postprocess: { + func: linearScale, + config: { + variable: 'instanceCount', + minAllowed: 0, + maxAllowed: 1 + } + } + }, placesMsMigrationsDialog: { perspectiveID: 'perspective1', q: migrationsDialogQuery, diff --git a/src/server/sparql/sampo/perspective_configs/WarsaConfig.js b/src/server/sparql/sampo/perspective_configs/WarsaConfig.js new file mode 100644 index 00000000..18de616e --- /dev/null +++ b/src/server/sparql/sampo/perspective_configs/WarsaConfig.js @@ -0,0 +1,9 @@ +import { prefixes } from '../sparql_queries/SparqlQueriesPrefixes' + +export const warsaConfig = { + endpoint: { + url: 'http://ldf.fi/warsa/sparql', + prefixes, + useAuth: false + } +} diff --git a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js index eaf66a7a..213da13a 100644 --- a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js +++ b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js @@ -596,3 +596,16 @@ export const knowledgeGraphMetadataQuery = ` dct:modified ?databaseDump__modified . } ` + +export const choroplethQuery = ` + SELECT ?id ?prefLabel ?polygon (count(?death) as ?instanceCount) + WHERE { + ?id a <http://www.yso.fi/onto/suo/kunta> ; + skos:prefLabel ?prefLabel . + # sch:polygon ?polygon + ?death crm-org:P7_took_place_at ?id . + } + GROUP BY ?id ?prefLabel ?polygon + ORDER BY desc(?instanceCount) + LIMIT 10 +` diff --git a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js index e3692a82..0f9cab5e 100644 --- a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js +++ b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js @@ -3,6 +3,7 @@ export const prefixes = ` PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX crm: <http://erlangen-crm.org/current/> + PREFIX crm-org: <http://www.cidoc-crm.org/cidoc-crm/> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX text: <http://jena.apache.org/text#> -- GitLab