|
@@ -81,22 +81,40 @@ module.exports.loadOntology = async function(filePath) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
module.exports.parseDatasetsMetadata = function(ontology) {
|
|
module.exports.parseDatasetsMetadata = function(ontology) {
|
|
|
|
|
+ let factorId; //used twice so store it in a variable
|
|
|
return ontology
|
|
return ontology
|
|
|
|
|
+ //Only datasets ...
|
|
|
.filter((entity) => entity['@type'] ? entity['@type'].includes('http://www.semanticweb.org/attractiveness/Dataset') : null)
|
|
.filter((entity) => entity['@type'] ? entity['@type'].includes('http://www.semanticweb.org/attractiveness/Dataset') : null)
|
|
|
|
|
+ //only with coverage of Europe ...
|
|
|
.filter(
|
|
.filter(
|
|
|
(entity) => entity['http://www.semanticweb.org/attractiveness/hasCoverage']
|
|
(entity) => entity['http://www.semanticweb.org/attractiveness/hasCoverage']
|
|
|
.some((coverage) => coverage['@id'] == 'http://www.semanticweb.org/attractiveness/Europe')
|
|
.some((coverage) => coverage['@id'] == 'http://www.semanticweb.org/attractiveness/Europe')
|
|
|
)
|
|
)
|
|
|
|
|
+ //only with a level of detail equal to NUTS3 regions ...
|
|
|
.filter(
|
|
.filter(
|
|
|
(entity) => entity['http://www.semanticweb.org/attractiveness/hasLoD']
|
|
(entity) => entity['http://www.semanticweb.org/attractiveness/hasLoD']
|
|
|
.some((lod) => lod['@id'] == 'http://www.semanticweb.org/attractiveness/NUTS3')
|
|
.some((lod) => lod['@id'] == 'http://www.semanticweb.org/attractiveness/NUTS3')
|
|
|
)
|
|
)
|
|
|
|
|
+ //and only part of a factor, which belongs to the Polirural schema
|
|
|
|
|
+ .filter(
|
|
|
|
|
+ (entity) => {
|
|
|
|
|
+ const entityDatasetGroups = entity['http://www.semanticweb.org/attractiveness/isDatasetOf'] || []
|
|
|
|
|
+ for (const group of entityDatasetGroups) {
|
|
|
|
|
+ const groupEntity = ontology.find((entity) => entity['@id'] == group['@id'])
|
|
|
|
|
+ if (groupEntity['http://www.semanticweb.org/attractiveness/isPartOf'].some((schema) => schema['@id'] == 'http://www.semanticweb.org/attractiveness/Polirural')) {
|
|
|
|
|
+ factorId = groupEntity['@id']
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
.map((entity) => {
|
|
.map((entity) => {
|
|
|
return {
|
|
return {
|
|
|
- name: entity['@id'].split('/').splice(-1).pop(),
|
|
|
|
|
|
|
+ name: entity['@id'].split('/').slice(-1).pop(),
|
|
|
//FIXME: instead of [0] search for "@language"="en"
|
|
//FIXME: instead of [0] search for "@language"="en"
|
|
|
description: entity['http://www.semanticweb.org/attractiveness#description'] ? entity['http://www.semanticweb.org/attractiveness#description'][0]['@value'] : '',
|
|
description: entity['http://www.semanticweb.org/attractiveness#description'] ? entity['http://www.semanticweb.org/attractiveness#description'][0]['@value'] : '',
|
|
|
- factor: entity['http://www.semanticweb.org/attractiveness/isDatasetOf'] ? entity['http://www.semanticweb.org/attractiveness/isDatasetOf'][0]['@id'].split('/').splice(-1).pop() : ''
|
|
|
|
|
|
|
+ factor: factorId ? factorId.split('/').slice(-1).pop() : ''
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|