Prechádzať zdrojové kódy

Improve datasets filter for georeports

jmacura 3 rokov pred
rodič
commit
827d596564
1 zmenil súbory, kde vykonal 20 pridanie a 2 odobranie
  1. 20 2
      nuts-data.js

+ 20 - 2
nuts-data.js

@@ -81,22 +81,40 @@ module.exports.loadOntology = async function(filePath) {
 }
 
 module.exports.parseDatasetsMetadata = function(ontology) {
+    let factorId; //used twice so store it in a variable
     return ontology
+        //Only datasets ...
         .filter((entity) => entity['@type'] ? entity['@type'].includes('http://www.semanticweb.org/attractiveness/Dataset') : null)
+        //only with coverage of Europe ...
         .filter(
             (entity) => entity['http://www.semanticweb.org/attractiveness/hasCoverage']
                 .some((coverage) => coverage['@id'] == 'http://www.semanticweb.org/attractiveness/Europe')
         )
+        //only with a level of detail equal to NUTS3 regions ...
         .filter(
             (entity) => entity['http://www.semanticweb.org/attractiveness/hasLoD']
                 .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) => {
             return {
-                name: entity['@id'].split('/').splice(-1).pop(),
+                name: entity['@id'].split('/').slice(-1).pop(),
                 //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'] : '',
-                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() : ''
             }
         })
 }