Giter Club home page Giter Club logo

oedatamodel's People

Contributors

areleu avatar jh-rli avatar ludee avatar srhbrnds avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

oedatamodel's Issues

Normalize data table of normalization format

I suggest normalizing data table further into additional tables region, energy_vector and technology.
With following relations and columns:

  • region:
    m:n relation to data table via data_region table
    columns: id, name
  • energy_vector:
    2x 1:n relation to data table columns input_energy_vector_id and output_energy_vector_id
    columns: id, name
  • technology:
    1:n relation to data table column technology_id
    columns: id, technology, technology_type, parameter_name

This would lead to improved DB structure and smaller table data.
The user would not "feel" new structure, as the concrete format can be used as interface.
Additionally, checking for already existing data entries should be faster, improving uploading of new data via new relation format (m:n).
On the other hand, normalization format becomes a bit more unwieldy.

Collect requirements to improve OEDatamodel

In this issue requirements and ideas for improvement of the OEDatamodel are collected and discussed. The improvements should focus on the SEDOS project but are not limited to this context. We already have collected a few requirements within the course of project internal discussions:

  • enable versioning
  • enable bandwidths of values in scalar and timeseires (discussed in #52)
  • annotate reference dataset via ontology (OEO)
  • enable N:N relation between scenario table and scalar and timeseries tables (discussed in #46)

No column "id" in tables of oedatamodel

Just wanted to post data into our oeddatamodel but upload fails with following response:
reason": "column \"id\" does not exist"

From https://oep-data-interface.readthedocs.io/en/latest/api/how_to.html#create-table it states, that tables have to have a primary key called "id". Thus, we have to change "scenario_id" in table "oed_scenario" to "id" (and all other tables). Unfortunately, there is no error message when creating the table without column "id" - maybe there should be one?!

Update usage documentation and examples

As we see some usability issues while testing the oedatamodel_api within the open modex project, we would like to collect the feedback here and update the documentation and examples accordingly.

Support reuse of data in multiple scenarios

At the moment, data is always assigned to one scenario (1:n). To make it possible to reuse data in different scenarios, an m:n relationship for data and sceanrio tables should be built into the oedata model.

A solution for the normalization variation of the oedata model is to insert a new table between the data and scenario table that has 2 columns (scenario_id and data_id).
For the concreate variation of the oedatamodel it is more difficult to find a solution that also keeps the usability. Here the data tables are split into 2 tables to make it easier for the user to fill them out, so 2 new tables would have to be inserted between the data tables and the scenario table.
Another solution would be to make the concrete variation explicit only for data belonging to a single scenario.

It would be useful to find a solution for the concrete variation as well, lets discuss it here.

Create json schemas describing both data models

Overview

Hello, I have been working on integrating this data model without friction into frictionless. This requires effort in different repositories Here are the pull requests and issues:

Frictionless:
frictionlessdata/frictionless-py#1229
frictionlessdata/frictionless-py#1228

oemetadata:

OpenEnergyPlatform/oemetadata#91

If these changes take place then validating the models will work directly with frictionless. I think the next step is being able to validate the structure of the tables themselves, to do this we would need descriptors in json format.

Task

Write a data descriptors for the data model. These would comprise of the json schema representation of the packages:

I can contribute to this next month but if someone starts this that would be great.

Providing an OEP data-model template

[Top-Level Issue]
First draft of what needs to be done:

  • Develop a data model template for scenario data (example)
  • Establish a general naming convention for variable names
  • Documentation
  • Create a template SQL table
  • ....

[Sub-Level Issues] Can be created and must be referenced here.

Decide on data type for tags: hstore, json, jsonb

Setup CI

Add a travis.yml to setup a CI-Pipeline.

  • The Pipeline must include some validation/test of the OEDataModel. See #17

Enable bandwidths for scalars and timeseries

A new OEDatamodel version shall be developed, which allows bandwidths for scalars and timeseries per scenario.
IMO this needs three implementation changes:

  1. value in scalars must be changed to hold bandwidths (allowing fixed, discrete and continuous values)
  2. multiple timeseries regarding same region/tech/etc. are allowed, but must be distinguishable by user
  3. a concrete instance of the scenario using fixed values and fixed timeseries from scenario with bandwiths must be build

Possible implementations can be discussed here.

Add CI to repository

Add a travis.yml to setup a CI-Pipeline.

  • The Pipeline must include some validation/test of the OEDataModel. See #17

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.