{"id":677,"date":"2023-03-20T13:11:45","date_gmt":"2023-03-20T13:11:45","guid":{"rendered":"https:\/\/grupo.us.es\/idea\/?page_id=677"},"modified":"2024-10-24T10:15:20","modified_gmt":"2024-10-24T10:15:20","slug":"fabiola","status":"publish","type":"page","link":"http:\/\/grupo.us.es\/idea\/fabiola\/","title":{"rendered":"FABIOLA"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-logo.png\" alt=\"\" class=\"wp-image-83\" width=\"628\" height=\"299\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-logo.png 560w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-logo-300x143.png 300w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Description<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">FABIOLA enables Constraint Optimisation Problems (COPs) in large datasets by using Big Data techonologies in a user-friendly way. It enables to (1) create COP models; (2) integrate different data sources; (3) map dataset attributes to COP-model variables; (4) solve the COPs in a distributed way, and (5) perform advanced queries on the results.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The FABIOLA Big Data layer is based on Apache Spark. The most recent version relies on the COP solver <a href=\"https:\/\/choco-solver.org\/\">choco-solver<\/a>. The user interface&nbsp;is composed of a REST API implemented in NodeJS, and a front-end based on AngularJS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The architecture fullfils the principles of low coupling and high cohesion. The communication among the different modules which compose this architecture is performed through REST APIs. In this way, all components are highly independent, and modifying or scaling any of them causes a low impact on the others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The deployment of the Big Data layer is performed in a <a href=\"https:\/\/dcos.io\/\">DC\/OS<\/a> cluster. It provides&nbsp;a highly elastic environment, since extending or reducing&nbsp;the amount of availables nodes is a very easy and transparent process. On the other hand, the backend and backend were deployed&nbsp;with Docker images.<\/p>\n\n\n\n<div style=\"height:29px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"959\" height=\"577\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-architecture.png\" alt=\"\" class=\"wp-image-81\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-architecture.png 959w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-architecture-300x181.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-architecture-768x462.png 768w\" sizes=\"auto, (max-width: 959px) 100vw, 959px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"379\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-deployment-1024x379.png\" alt=\"\" class=\"wp-image-82\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-deployment-1024x379.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-deployment-300x111.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-deployment-768x285.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/fabiola-deployment.png 1209w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:43px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">A&nbsp;quick tour<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next, a quick tour on the features of this tool is presented.<\/p>\n\n\n\n<div style=\"height:17px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/01_LIST_DATASETS-1024x607.png\" alt=\"\" class=\"wp-image-7\" width=\"840\" height=\"497\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/01_LIST_DATASETS-1024x607.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/01_LIST_DATASETS-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/01_LIST_DATASETS.png 1180w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption class=\"wp-element-caption\">This is the view where users can see their datasets.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/02_SHOW_DATASET-1024x600.png\" alt=\"\" class=\"wp-image-8\" width=\"840\" height=\"492\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/02_SHOW_DATASET-1024x600.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/02_SHOW_DATASET-300x176.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/02_SHOW_DATASET-768x450.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/02_SHOW_DATASET.png 1187w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption class=\"wp-element-caption\">By clicking the <em>show<\/em> button on a dataset,&nbsp;the user will get a detailed view on the features of the dataset. Note the <em>validate<\/em> button. By clicking that, the system will query such dataset and check if it correct. If so, the status will be&nbsp;<em>validated.<\/em><\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"602\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/03_SHOW_DATASET_ERROR_MSG-1024x602.png\" alt=\"\" class=\"wp-image-9\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/03_SHOW_DATASET_ERROR_MSG-1024x602.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/03_SHOW_DATASET_ERROR_MSG-300x176.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/03_SHOW_DATASET_ERROR_MSG-768x452.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/03_SHOW_DATASET_ERROR_MSG.png 1187w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Creating a dataset is very simple. Users might import their datasets from their own data sources. FABIOLA can read from several storage&nbsp;systems&nbsp;such as HDFS and MongoDB.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/06_CREATE_DATASET_LOCAL-1024x607.png\" alt=\"\" class=\"wp-image-12\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/06_CREATE_DATASET_LOCAL-1024x607.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/06_CREATE_DATASET_LOCAL-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/06_CREATE_DATASET_LOCAL-768x455.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/06_CREATE_DATASET_LOCAL.png 1176w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Users also might upload a dataset from their own computer.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Creating COP Models<\/strong><\/p>\n\n\n\n<div style=\"height:13px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"602\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/07_LIST_COP_MODELS-1024x602.png\" alt=\"\" class=\"wp-image-13\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/07_LIST_COP_MODELS-1024x602.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/07_LIST_COP_MODELS-300x176.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/07_LIST_COP_MODELS-768x451.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/07_LIST_COP_MODELS.png 1181w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">In this view, the user can get a list of all the COP models defined by them.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/09_CREATE_COP_MODEL-1024x607.png\" alt=\"\" class=\"wp-image-15\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/09_CREATE_COP_MODEL-1024x607.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/09_CREATE_COP_MODEL-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/09_CREATE_COP_MODEL-768x455.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/09_CREATE_COP_MODEL.png 1179w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">This is an example of a COP model. These&nbsp;are defined in Scala by using the library choco-solver.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Managing instances<\/strong><\/p>\n\n\n\n<div style=\"height:13px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/10_LIST_INSTANCES-1024x607.png\" alt=\"\" class=\"wp-image-16\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/10_LIST_INSTANCES-1024x607.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/10_LIST_INSTANCES-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/10_LIST_INSTANCES-768x456.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/10_LIST_INSTANCES.png 1185w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">In this view, all instances are listed. An instance represents an execution, and is related to a dataset and a COP model.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"606\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/12_SHOW_NOT_STARTED_INSTANCE-1024x606.png\" alt=\"\" class=\"wp-image-18\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/12_SHOW_NOT_STARTED_INSTANCE-1024x606.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/12_SHOW_NOT_STARTED_INSTANCE-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/12_SHOW_NOT_STARTED_INSTANCE-768x455.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/12_SHOW_NOT_STARTED_INSTANCE.png 1187w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">This is a detailed view of an instance that has not been executed yet.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"606\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/11_SHOW_INSTANCE-1024x606.png\" alt=\"\" class=\"wp-image-17\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/11_SHOW_INSTANCE-1024x606.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/11_SHOW_INSTANCE-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/11_SHOW_INSTANCE-768x454.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/11_SHOW_INSTANCE.png 1188w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">This is a detailed view of an instance that has been executed. By clicking the <em>results<\/em> button, the user can access to the querying tool of FABIOLA.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"603\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/13_CREATE_INSTANCE_SELECT_COP_MODEL-1024x603.png\" alt=\"\" class=\"wp-image-19\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/13_CREATE_INSTANCE_SELECT_COP_MODEL-1024x603.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/13_CREATE_INSTANCE_SELECT_COP_MODEL-300x177.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/13_CREATE_INSTANCE_SELECT_COP_MODEL-768x452.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/13_CREATE_INSTANCE_SELECT_COP_MODEL.png 1180w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">This is the creation process of a new instance. First, the COP model must be selected.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"602\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/14_CREATE_INSTANCE_SELECT_DATASET-1024x602.png\" alt=\"\" class=\"wp-image-20\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/14_CREATE_INSTANCE_SELECT_DATASET-1024x602.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/14_CREATE_INSTANCE_SELECT_DATASET-300x176.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/14_CREATE_INSTANCE_SELECT_DATASET-768x452.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/14_CREATE_INSTANCE_SELECT_DATASET.png 1187w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">The next step is to select the dataset to be employed in this instance.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"606\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/16_CREATE_INSTANCE_PREVIEW_DATASET_SCHEMA-1024x606.png\" alt=\"\" class=\"wp-image-22\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/16_CREATE_INSTANCE_PREVIEW_DATASET_SCHEMA-1024x606.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/16_CREATE_INSTANCE_PREVIEW_DATASET_SCHEMA-300x178.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/16_CREATE_INSTANCE_PREVIEW_DATASET_SCHEMA-768x455.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/16_CREATE_INSTANCE_PREVIEW_DATASET_SCHEMA.png 1196w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">There is a preview view for each dataset. Here, users can get details about its schema.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/17_CREATE_INSTANCE_DATA_MAPPING-1024x604.png\" alt=\"\" class=\"wp-image-23\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/17_CREATE_INSTANCE_DATA_MAPPING-1024x604.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/17_CREATE_INSTANCE_DATA_MAPPING-300x177.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/17_CREATE_INSTANCE_DATA_MAPPING-768x453.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/17_CREATE_INSTANCE_DATA_MAPPING.png 1189w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Once the COP model and dataset have been selected, the user must map the dataset attributes to the COP variables. As explained in [1], there are three types of variables: IN, OTHER, and OUT. FABIOLA enables to perform this napping in a drag-and-drop basis.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"527\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/18_CREATE_INSTANCE_SYSTEM_CONFIGURATION-1024x527.png\" alt=\"\" class=\"wp-image-24\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/18_CREATE_INSTANCE_SYSTEM_CONFIGURATION-1024x527.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/18_CREATE_INSTANCE_SYSTEM_CONFIGURATION-300x154.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/18_CREATE_INSTANCE_SYSTEM_CONFIGURATION-768x395.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/18_CREATE_INSTANCE_SYSTEM_CONFIGURATION.png 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">The last step before creating the instance, is to select the desired configuration parameters for the cluster.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Querying results<\/strong><\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"515\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/19_RESULTS_VIEW_TABLE_SELECT_COLUMNS-1024x515.png\" alt=\"\" class=\"wp-image-25\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/19_RESULTS_VIEW_TABLE_SELECT_COLUMNS-1024x515.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/19_RESULTS_VIEW_TABLE_SELECT_COLUMNS-300x151.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/19_RESULTS_VIEW_TABLE_SELECT_COLUMNS-768x386.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/19_RESULTS_VIEW_TABLE_SELECT_COLUMNS.png 1183w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">This is an example of the querying tool of FABIOLA. In this view, user can select the fields to query. Output fields are those generated by the COP and defined by the user during the data mapping process.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"535\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/20_RESULTS_VIEW_TABLE_QUERY-1024x535.png\" alt=\"\" class=\"wp-image-28\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/20_RESULTS_VIEW_TABLE_QUERY-1024x535.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/20_RESULTS_VIEW_TABLE_QUERY-300x157.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/20_RESULTS_VIEW_TABLE_QUERY-768x401.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/20_RESULTS_VIEW_TABLE_QUERY.png 1191w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Example of a tabular view.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"531\" src=\"https:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/Screenshot-from-2018-05-30-16-36-26-1024x531.png\" alt=\"\" class=\"wp-image-168\" srcset=\"http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/Screenshot-from-2018-05-30-16-36-26-1024x531.png 1024w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/Screenshot-from-2018-05-30-16-36-26-300x156.png 300w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/Screenshot-from-2018-05-30-16-36-26-768x398.png 768w, http:\/\/grupo.us.es\/idea\/wp-content\/uploads\/2023\/03\/Screenshot-from-2018-05-30-16-36-26.png 1113w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">FABIOLA also supports aggregation operators.&nbsp;User can choose data attributes and operators, and depict the aggregated data in tables or maps.<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Results<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The proposal was tested in an industrial scenario. Several&nbsp;Spanish electricity companies wanted to get the optimal power which each of their customers might contract in order to minimise their consumption. Our study&nbsp;[1] demonstrated that distributed COPs&nbsp;dastrically improved the&nbsp;global execution time. Including more worker nodes&nbsp; might improve the performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[1] Valencia-Parra, \u00c1., Varela-Vaca, \u00c1. J., Parody, L., &amp; G\u00f3mez-L\u00f3pez, M. T. (2020). Unleashing Constraint Optimisation Problem Solving in Big Data Environments. Journal of Computational Science, 45, 101180. https:\/\/doi.org\/10.1016\/j.jocs.2020.101180<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Source code<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>FABIOLA Backend: <a href=\"https:\/\/github.com\/IDEA-Research-Group\/fabiola-spark-jobs\">GitHub<\/a> repository.<\/li>\n\n\n\n<li>FABIOLA User Interface:&nbsp;<a href=\"https:\/\/github.com\/IDEA-Research-Group\/fabiola-gui-core\">GitHub <\/a>repository<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Description FABIOLA enables Constraint Optimisation Problems (COPs) in large datasets by using Big Data techonologies in a user-friendly way. It enables to (1) create COP models; (2) integrate different data sources; (3) map dataset attributes to COP-model variables; (4) solve the COPs in a distributed way, and (5) perform advanced queries on the results. The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-677","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/pages\/677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/comments?post=677"}],"version-history":[{"count":7,"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/pages\/677\/revisions"}],"predecessor-version":[{"id":693,"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/pages\/677\/revisions\/693"}],"wp:attachment":[{"href":"http:\/\/grupo.us.es\/idea\/wp-json\/wp\/v2\/media?parent=677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}