From 3e38c13c7eaa89ac6e0cb474b158eca9eb271a88 Mon Sep 17 00:00:00 2001
From: Anis Koubaa <mohamed.koubaa@kit.edu>
Date: Mon, 27 Jan 2025 16:32:00 +0100
Subject: [PATCH] create <oe_section>.py using datamodel-codegen from
 <oe_section>.json.

---
 .../latest/build_source/schemas/collection.py |  36 ++++
 .../latest/build_source/schemas/context.py    |  84 ++++++++
 .../latest/build_source/schemas/fields.py     | 185 ++++++++++++++++++
 .../latest/build_source/schemas/general.py    | 109 +++++++++++
 .../latest/build_source/schemas/licenses.py   |  47 +++++
 .../build_source/schemas/linked_data.py       |  30 +++
 .../latest/build_source/schemas/meta.py       |  50 +++++
 .../latest/build_source/schemas/provenance.py |  62 ++++++
 .../latest/build_source/schemas/review.py     |  32 +++
 .../latest/build_source/schemas/sources.py    |  93 +++++++++
 .../latest/build_source/schemas/spatial.py    | 100 ++++++++++
 .../latest/build_source/schemas/temporal.py   |  63 ++++++
 12 files changed, 891 insertions(+)
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/collection.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/context.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/fields.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/general.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/licenses.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/linked_data.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/meta.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/provenance.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/review.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/sources.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/spatial.py
 create mode 100644 services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/temporal.py

diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/collection.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/collection.py
new file mode 100644
index 0000000..f312160
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/collection.py
@@ -0,0 +1,36 @@
+# generated by datamodel-codegen:
+#   filename:  collection.json
+#   timestamp: 2025-01-27T15:24:04+00:00
+
+from __future__ import annotations
+
+from typing import Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class Model(BaseModel):
+    name: Optional[str] = Field(
+        ...,
+        description='A filename or database conform dataset name.',
+        examples=['oep_oemetadata'],
+        title='Dataset Name',
+    )
+    title: Optional[str] = Field(
+        None,
+        description='A human readable dataset name.',
+        examples=['OEP OEMetadata'],
+        title='Dataset Title',
+    )
+    description: Optional[str] = Field(
+        None,
+        description='A free text description of the dataset.',
+        examples=['A dataset for the OEMetadata examples.'],
+        title='Dataset Description',
+    )
+    id: Optional[AnyUrl] = Field(
+        None,
+        description='A unique identifier (UUID/DOI) for the dataset.',
+        examples=['https://databus.openenergyplatform.org/oeplatform/reference'],
+        title='Dataset Identifier',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/context.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/context.py
new file mode 100644
index 0000000..2644432
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/context.py
@@ -0,0 +1,84 @@
+# generated by datamodel-codegen:
+#   filename:  context.json
+#   timestamp: 2025-01-27T15:24:27+00:00
+
+from __future__ import annotations
+
+from typing import Optional
+
+from pydantic import AnyUrl, BaseModel, EmailStr, Field
+
+
+class Context(BaseModel):
+    title: Optional[str] = Field(
+        None,
+        description='A title of the associated project.',
+        examples=['NFDI4Energy'],
+        title='Context Title',
+    )
+    homepage: Optional[AnyUrl] = Field(
+        None,
+        description='A URL of the project.',
+        examples=['https://nfdi4energy.uol.de/'],
+        title='Homepage',
+    )
+    documentation: Optional[str] = Field(
+        None,
+        description='A URL of the project documentation.',
+        examples=['https://nfdi4energy.uol.de/sites/about_us/'],
+        title='Documentation',
+    )
+    sourceCode: Optional[str] = Field(
+        None,
+        description='A URL of the source code of the project.',
+        examples=['https://github.com/NFDI4Energy'],
+        title='Source Code',
+    )
+    publisher: Optional[str] = Field(
+        None,
+        description='The publishing agency of the data. This can be the OEP.',
+        examples=['Open Energy Platform (OEP)'],
+        title='Publisher',
+    )
+    publisherLogo: Optional[AnyUrl] = Field(
+        None,
+        description='A URL to the logo of the publishing agency of data.',
+        examples=[
+            'https://github.com/OpenEnergyPlatform/organisation/blob/production/logo/OpenEnergyFamily_Logo_OpenEnergyPlatform.svg'
+        ],
+        title='Publisher Logo',
+    )
+    contact: Optional[EmailStr] = Field(
+        None,
+        description='A reference to the creator or maintainer of the data set. This can be an email address or a GitHub handle.',
+        examples=['contact@example.com'],
+        title='E-Mail Contact',
+    )
+    fundingAgency: Optional[str] = Field(
+        None,
+        description='A name of the entity providing the funding. This can be a government agency or a company.',
+        examples=[' Deutsche Forschungsgemeinschaft (DFG)'],
+        title='Funding Agency',
+    )
+    fundingAgencyLogo: Optional[AnyUrl] = Field(
+        None,
+        description='A URL to the logo or image of the funding agency.',
+        examples=[
+            'https://upload.wikimedia.org/wikipedia/commons/8/86/DFG-logo-blau.svg'
+        ],
+        title='Funding Agency Logo',
+    )
+    grantNo: Optional[str] = Field(
+        None,
+        description='An identifying grant number. In case of a publicly funded project, this number is assigned by the funding agency.',
+        examples=['501865131'],
+        title='Grant Number',
+    )
+
+
+class Model(BaseModel):
+    context: Optional[Context] = Field(
+        None,
+        description='An Object that describes the general setting, environment or project leading to the creation or maintenance of this dataset. In science this can be the research project.',
+        title='Context',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/fields.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/fields.py
new file mode 100644
index 0000000..41e09d2
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/fields.py
@@ -0,0 +1,185 @@
+# generated by datamodel-codegen:
+#   filename:  fields.json
+#   timestamp: 2025-01-27T15:02:42+00:00
+
+from __future__ import annotations
+
+from typing import List, Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class IsAboutItem(BaseModel):
+    name: Optional[str] = Field(
+        None,
+        description='The class label of the ontology term.',
+        examples=['wind energy converting unit'],
+        title='Is About Name',
+    )
+    field_id: Optional[AnyUrl] = Field(
+        None,
+        alias='@id',
+        description='The path of the ontology term (IRI).',
+        examples=['https://openenergyplatform.org/ontology/oeo/OEO_00000044'],
+        title='Is About Identifier',
+    )
+
+
+class ValueReferenceItem(BaseModel):
+    value: Optional[str] = Field(
+        None,
+        description='The name of the value in the column.',
+        examples=['onshore'],
+        title='Value',
+    )
+    name: Optional[str] = Field(
+        None,
+        description='The class label of the ontology term in the column.',
+        examples=['onshore wind farm'],
+        title='Value Reference Name',
+    )
+    field_id: Optional[AnyUrl] = Field(
+        None,
+        alias='@id',
+        description='The path of the ontology term (IRI) in the column.',
+        examples=['https://openenergyplatform.org/ontology/oeo/OEO_00000311'],
+        title='Value Reference Identifier',
+    )
+
+
+class FieldModel(BaseModel):
+    name: Optional[str] = Field(
+        ...,
+        description='The name of the field. The name may only consist of lowercase alphanumeric characters or underscores. It must not begin with a number or an underscore.',
+        examples=['year'],
+        title='Column Name',
+    )
+    description: Optional[str] = Field(
+        None,
+        description='A text describing the field.',
+        examples=['Reference year for which the data was collected.'],
+        title='Description',
+    )
+    type: Optional[str] = Field(
+        ...,
+        description='The data type of the field. In case of a geom column in a database, '
+                    'also indicate the shape and CRS.',
+        examples=['geometry(Point, 4326)'],
+        title='Type',
+    )
+    nullable: Optional[bool] = Field(
+        ...,
+        description='A boolean key to specify that a column can be nullable. True is the default value.',
+        examples=[True],
+        title='Nullable',
+    )
+    unit: Optional[str] = Field(
+        None,
+        description="The unit of a field. If it does not apply, use 'null'. If the unit is given in a separate field, "
+                    "reference this field (e.g. 'unit'). Use a space between numbers and units (100 m).",
+        examples=['MW'],
+        title='Unit',
+    )
+    isAbout: Optional[List[IsAboutItem]] = Field(
+        None,
+        description='An array of objects that describes the field in ontology terms.',
+        title='isAbout',
+    )
+    valueReference: Optional[List[ValueReferenceItem]] = Field(
+        None,
+        description='An array of objects for an extended description of the values in the column in ontology terms.',
+        title='valueReference',
+    )
+
+
+class Reference(BaseModel):
+    resource: Optional[str] = Field(
+        ...,
+        description='The referenced foreign table.',
+        examples=['model_draft.oep_oemetadata_table_example_version'],
+        title='Foreign Resource',
+    )
+    fields: List[Optional[str]] = Field(
+        ..., description='The foreign resource column.', title='Field'
+    )
+
+
+class ForeignKey(BaseModel):
+    fields: List[Optional[str]] = Field(
+        ...,
+        description='An array of fields in the table that is constrained by the foreign key.',
+        title='Fields',
+    )
+    reference: Optional[Reference] = Field(
+        None, description='The reference to the foreign table.', title='Reference'
+    )
+
+
+class Schema(BaseModel):
+    fields: Optional[List[FieldModel]] = Field(
+        None,
+        description='An array of objects that describes a field (column) and its detailed information.',
+        title='Field',
+    )
+    primaryKey: List[Optional[str]] = Field(
+        ...,
+        description='An array of fields that uniquely identifies each row in the table.',
+        title='Primary key',
+    )
+    foreignKeys: Optional[List[ForeignKey]] = Field(
+        None, description='List of foreign keys.', title='Foreign Keys'
+    )
+
+
+class Dialect(BaseModel):
+    delimiter: Optional[str] = Field(
+        None,
+        description="The delimiter specifies the character sequence which should separate fields (columns). "
+                    "Common characters are ',' (comma), ';' (semicolon), '.' (point) and '\\t' (tab).",
+        examples=[';'],
+        title='Delimiter',
+    )
+    decimalSeparator: Optional[str] = Field(
+        None,
+        description="The symbol used to separate the integer part from the fractional part of a number written in "
+                    "decimal form. Depending on language and region this symbol can be '.' or ','.",
+        examples=['.'],
+        title='Decimal separator',
+    )
+
+
+class Model(BaseModel):
+    type: Optional[str] = Field(
+        None,
+        description="The 'table' type indicates that the resource is tabular "
+                    "as per 'Frictionless Tabular Data' definition.",
+        examples=['table'],
+        title='Type',
+    )
+    format: Optional[str] = Field(
+        None,
+        description="A file extension format. Possible options are 'csv', 'xlsx', 'json', 'PostgreSQL', "
+                    "'SQLite' and other standard file extensions.",
+        examples=['CSV'],
+        title='Format',
+    )
+    encoding: Optional[str] = Field(
+        None,
+        description="Specifies the character encoding of the resource's data file. The default is 'UTF-8'. "
+                    "The values should be one of the 'Preferred MIME Names'.",
+        examples=['UTF-8'],
+        title='Encoding',
+    )
+    schema_: Optional[Schema] = Field(
+        None,
+        alias='schema',
+        description='An object that describes the structure of a table. It contains all fields (columns of the table), '
+                    'the primary key and optional foreign keys.',
+        title='Schema',
+    )
+    dialect: Optional[Dialect] = Field(
+        None,
+        description="The Dialect defines a simple format for describing the various dialects of CSV files in"
+                    "a language-independent manner. In a database, the values in the fields are 'null'.",
+        title='Dialect',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/general.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/general.py
new file mode 100644
index 0000000..390b2e9
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/general.py
@@ -0,0 +1,109 @@
+# generated by datamodel-codegen:
+#   filename:  general.json
+#   timestamp: 2025-01-27T15:24:49+00:00
+
+from __future__ import annotations
+
+from datetime import date
+from typing import List, Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class SubjectItem(BaseModel):
+    name: Optional[str] = Field(
+        None,
+        description='A class label of the ontology term.',
+        examples=['energy'],
+        title='Subject Name',
+    )
+    field_id: Optional[AnyUrl] = Field(
+        None,
+        alias='@id',
+        description='A unique identifier (URI/IRI) of the ontology class.',
+        examples=['https://openenergyplatform.org/ontology/oeo/OEO_00000150'],
+        title='Subject Identifier',
+    )
+
+
+class EmbargoPeriod(BaseModel):
+    start: Optional[date] = Field(
+        None,
+        description='The start date of the embargo period. The date of the data (metadata) upload.',
+        examples=['2024-10-11'],
+        title='Embargo Period Start',
+    )
+    end: Optional[date] = Field(
+        None,
+        description='The end date of the embargo period. This is the intended publication date.',
+        examples=['2025-01-01'],
+        title='Embargo Period End (Publication Date)',
+    )
+    isActive: Optional[bool] = Field(
+        None,
+        description='A boolean key that indicates if the embargo period is currently active. Must be changed to False on the embargo period end date.',
+        examples=[True],
+        title='Embargo Period is Active ',
+    )
+
+
+class Model(BaseModel):
+    name: Optional[str] = Field(
+        ...,
+        description='A filename or database conform table name.',
+        examples=['oep_oemetadata_table_example'],
+        title='Name',
+    )
+    topics: Optional[List[Optional[str]]] = Field(
+        None,
+        description='An array of predefined topics that correspond to the database schemas of the OEP.',
+        title='Keywords',
+    )
+    title: Optional[str] = Field(
+        None,
+        description='A human readable table name.',
+        examples=['OEP OEMetadata Example Table'],
+        title='Title',
+    )
+    path: Optional[str] = Field(
+        None,
+        description='A unique identifier (URI/UUID/DOI) for the table or file.',
+        examples=[
+            'http://openenergyplatform.org/dataedit/view/model_draft/oep_oemetadata_table_example'
+        ],
+        title='Path',
+    )
+    description: Optional[str] = Field(
+        None,
+        description='A description of the table. It should be usable as summary information for the table that is described by the metadata.',
+        examples=[
+            'Example table used to illustrate the OEMetadata structure and meaning.'
+        ],
+        title='Description',
+    )
+    languages: Optional[List[Optional[str]]] = Field(
+        None,
+        description='An array of languages used within the described data structures (e.g. titles, descriptions) or metadata.',
+        title='Languages',
+    )
+    subject: Optional[List[SubjectItem]] = Field(
+        None,
+        description='An array of objects that references to the subjects of the resource in ontology terms.',
+        title='Subject',
+    )
+    keywords: Optional[List[Optional[str]]] = Field(
+        None,
+        description='An array of freely selectable keywords that help with searching and structuring.',
+        title='Keywords',
+    )
+    publicationDate: Optional[date] = Field(
+        None,
+        description='A date of publication of the data or metadata. The date format is ISO 8601 (YYYY-MM-DD).',
+        examples=['2024-10-15'],
+        title='Publication Date',
+    )
+    embargoPeriod: Optional[EmbargoPeriod] = Field(
+        None,
+        description='An object that describes the embargo period during which public access to the data is not allowed.',
+        title='Embargo Period',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/licenses.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/licenses.py
new file mode 100644
index 0000000..8fcc1b7
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/licenses.py
@@ -0,0 +1,47 @@
+# generated by datamodel-codegen:
+#   filename:  licenses.json
+#   timestamp: 2025-01-27T15:25:21+00:00
+
+from __future__ import annotations
+
+from typing import List, Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class License(BaseModel):
+    name: Optional[str] = Field(
+        None, description='The SPDX identifier.', example='ODbL-1.0', title='Name'
+    )
+    title: Optional[str] = Field(
+        None,
+        description='The official (human readable) title of the license.',
+        example='Open Data Commons Open Database License 1.0',
+        title='Title',
+    )
+    path: Optional[AnyUrl] = Field(
+        None,
+        description='A link or path to the license text.',
+        example='https://opendatacommons.org/licenses/odbl/1-0/index.html',
+        title='Path',
+    )
+    instruction: Optional[str] = Field(
+        None,
+        description='A short description of rights and obligations. The use of tl;drLegal is recommended.',
+        example='You are free to share and change, but you must attribute, and share derivations under the same license. See https://tldrlegal.com/license/odc-open-database-license-(odbl) for further information.',
+        title='Instruction',
+    )
+    attribution: Optional[str] = Field(
+        None,
+        description='A copyright holder of the data. Must be provided if attribution licenses are used.',
+        example='© Reiner Lemoine Institut',
+        title='Attribution',
+    )
+
+
+class Model(BaseModel):
+    licenses: Optional[List[License]] = Field(
+        None,
+        description='An array of objects of licenses under which the described data is provided.',
+        title='Licenses',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/linked_data.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/linked_data.py
new file mode 100644
index 0000000..35bed76
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/linked_data.py
@@ -0,0 +1,30 @@
+# generated by datamodel-codegen:
+#   filename:  linked_data.json
+#   timestamp: 2025-01-27T15:28:04+00:00
+
+from __future__ import annotations
+
+from typing import Optional
+
+from pydantic import BaseModel, Field
+
+
+class Model(BaseModel):
+    field_id: Optional[str] = Field(
+        None,
+        alias='@id',
+        description='A Uniform Resource Identifier (URI) that links the resource via the OpenEnergyDatabus (DBpedia Databus).',
+        examples=[
+            'https://databus.openenergyplatform.org/oeplatform/supply/wri_global_power_plant_database/2022-11-07'
+        ],
+        title='@Id',
+    )
+    field_context: Optional[str] = Field(
+        None,
+        alias='@context',
+        description='Explanation of metadata keys in ontology terms.',
+        examples=[
+            'https://raw.githubusercontent.com/OpenEnergyPlatform/oemetadata/production/metadata/latest/context.json'
+        ],
+        title='@context',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/meta.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/meta.py
new file mode 100644
index 0000000..f155f9b
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/meta.py
@@ -0,0 +1,50 @@
+# generated by datamodel-codegen:
+#   filename:  meta.json
+#   timestamp: 2025-01-27T15:28:23+00:00
+
+from __future__ import annotations
+
+from typing import Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class MetadataLicense(BaseModel):
+    name: Optional[str] = Field(
+        None,
+        description='The SPDX identifier.',
+        examples=['CC0-1.0'],
+        title='License Name',
+    )
+    title: Optional[str] = Field(
+        None,
+        description='The official (human readable) title of the license.',
+        examples=['Creative Commons Zero v1.0 Universal'],
+        title='License Title',
+    )
+    path: Optional[AnyUrl] = Field(
+        None,
+        description='A link or path to the license text.',
+        examples=['https://creativecommons.org/publicdomain/zero/1.0'],
+        title='License Path',
+    )
+
+
+class MetaMetadata(BaseModel):
+    metadataVersion: Optional[str] = Field(
+        None,
+        description='Type and version number of the metadata.',
+        examples=['OEMetadata-2.0.1'],
+        title='Metadata Version',
+    )
+    metadataLicense: Optional[MetadataLicense] = Field(
+        None, description='The license of the OEMetadata. ', title='Metadata License'
+    )
+
+
+class Model(BaseModel):
+    metaMetadata: Optional[MetaMetadata] = Field(
+        None,
+        description='An object that describes the metadata themselves, their format, version and license.',
+        title='Meta Metadata',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/provenance.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/provenance.py
new file mode 100644
index 0000000..a714d30
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/provenance.py
@@ -0,0 +1,62 @@
+# generated by datamodel-codegen:
+#   filename:  provenance.json
+#   timestamp: 2025-01-27T15:28:56+00:00
+
+from __future__ import annotations
+
+from datetime import date
+from typing import List, Optional
+
+from pydantic import BaseModel, Field
+
+
+class Contributor(BaseModel):
+    title: Optional[str] = Field(
+        None,
+        description='A full name of the contributor.',
+        examples=['Ludwig Hülk'],
+        title='Contributor Title',
+    )
+    path: Optional[str] = Field(
+        None,
+        description='A qualified link or path pointing to a relevant location online for the contributor. This can be the GitHub page or ORCID.',
+        examples=['https://github.com/Ludee'],
+        title='Path',
+    )
+    organization: Optional[str] = Field(
+        None,
+        description='A string describing the organization this contributor is affiliated to. This can be relevant for the copyright.',
+        examples=['Reiner Lemoine Institut'],
+        title='Organization',
+    )
+    roles: Optional[List[Optional[str]]] = Field(
+        None,
+        description='An array describing the roles of the contributor.',
+        title='Roles',
+    )
+    date: Optional[date] = Field(
+        None,
+        description='The date of the final contribution. Date Format is ISO 8601.',
+        examples=['2024-10-21'],
+        title='Date',
+    )
+    object: Optional[str] = Field(
+        None,
+        description='The object of the contribution. Which part of the package was supplied or changed.',
+        examples=['data and metadata'],
+        title='Object',
+    )
+    comment: Optional[str] = Field(
+        None,
+        description='A free-text commentary on what has been done.',
+        examples=['Add metadata example.'],
+        title='Comment',
+    )
+
+
+class Model(BaseModel):
+    contributors: Optional[List[Contributor]] = Field(
+        None,
+        description='An array of objects of contributors and contributions to the data or metadata.',
+        title='Contributors',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/review.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/review.py
new file mode 100644
index 0000000..634588d
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/review.py
@@ -0,0 +1,32 @@
+# generated by datamodel-codegen:
+#   filename:  review.json
+#   timestamp: 2025-01-27T15:29:23+00:00
+
+from __future__ import annotations
+
+from typing import Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class Review(BaseModel):
+    path: Optional[AnyUrl] = Field(
+        None,
+        description='A link or path to the documented open peer review.',
+        examples=['https://www.example.com'],
+        title='Path',
+    )
+    badge: Optional[str] = Field(
+        None,
+        description='A badge of either Iron, Bronze, Silver, Gold or Platinum is used to label the quality of the metadata.',
+        examples=['Platinum'],
+        title='Badge',
+    )
+
+
+class Model(BaseModel):
+    review: Optional[Review] = Field(
+        None,
+        description='The metadata on the OEP can go through an open peer review process. See the Academy course [Open Peer Review](https://openenergyplatform.github.io/academy/courses/09_peer_review/) for further information.',
+        title='Review',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/sources.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/sources.py
new file mode 100644
index 0000000..0a8e9f4
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/sources.py
@@ -0,0 +1,93 @@
+# generated by datamodel-codegen:
+#   filename:  sources.json
+#   timestamp: 2025-01-27T15:30:05+00:00
+
+from __future__ import annotations
+
+from typing import List, Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class SourceLicense(BaseModel):
+    name: Optional[str] = Field(
+        None, description='The SPDX identifier.', examples=['ODbL-1.0'], title='Name'
+    )
+    title: Optional[str] = Field(
+        None,
+        description='The official (human readable) title of the license.',
+        examples=['Open Data Commons Open Database License 1.0'],
+        title='Title',
+    )
+    path: Optional[AnyUrl] = Field(
+        None,
+        description='A link or path to the license text.',
+        examples=['https://opendatacommons.org/licenses/odbl/1-0/index.html'],
+        title='License Identifier',
+    )
+    instruction: Optional[str] = Field(
+        None,
+        description='A short description of rights and obligations. The use of tl;drLegal is recommended.',
+        examples=[
+            'You are free to share and change, but you must attribute, and share derivations under the same license. See https://tldrlegal.com/license/odc-open-database-license-odbl for further information.'
+        ],
+        title='Instruction',
+    )
+    attribution: Optional[str] = Field(
+        None,
+        description='A copyright owner of the source. Must be provided if attribution licenses are used.',
+        examples=['© Intergovernmental Panel on Climate Change 2023'],
+        title='Attribution',
+    )
+    copyrightStatement: Optional[str] = Field(
+        None,
+        description='A link or path that proves that the source or data has the appropriate license. This can be a page number or website imprint.',
+        examples=['https://www.ipcc.ch/copyright/'],
+        title='Copyright Statement',
+    )
+
+
+class Source(BaseModel):
+    title: Optional[str] = Field(
+        None,
+        description='A human readable title of the source, a document title or organisation name.',
+        examples=[
+            'IPCC Sixth Assessment Report (AR6) - Climate Change 2023 - Synthesis Report'
+        ],
+        title='Source Title',
+    )
+    authors: Optional[List[Optional[str]]] = Field(
+        None,
+        description='An array of the full names of the authors of the source material.',
+        title='Keywords',
+    )
+    description: Optional[str] = Field(
+        None,
+        description='A free text description of the source.',
+        examples=['A Report of the Intergovernmental Panel on Climate Change.'],
+        title='Source Description',
+    )
+    publicationYear: Optional[str] = Field(
+        None,
+        description='Indicates the year when the work was published.',
+        examples=['2023'],
+        title='Publication Year',
+    )
+    field_id: Optional[AnyUrl] = Field(
+        None,
+        alias='@id',
+        description='A URL to the original source.',
+        examples=[
+            'https://www.ipcc.ch/report/ar6/syr/downloads/report/IPCC_AR6_SYR_FullVolume.pdf'
+        ],
+        title='Source Identifier',
+    )
+    sourceLicenses: Optional[List[SourceLicense]] = Field(None, title='Licenses')
+
+
+class Model(BaseModel):
+    sources: Optional[List[Source]] = Field(
+        None,
+        description='An array of objects with the used and underlying sources of the data and metadata.',
+        title='Sources',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/spatial.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/spatial.py
new file mode 100644
index 0000000..38d2152
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/spatial.py
@@ -0,0 +1,100 @@
+# generated by datamodel-codegen:
+#   filename:  spatial.json
+#   timestamp: 2025-01-27T15:27:16+00:00
+
+from __future__ import annotations
+
+from typing import List, Optional
+
+from pydantic import AnyUrl, BaseModel, Field
+
+
+class Location(BaseModel):
+    address: Optional[str] = Field(
+        None,
+        description='An address of the location of the data. May be specified with street name, house number, zip code, and city name.',
+        examples=['Rudower Chaussee 12, 12489 Berlin'],
+        title='Address',
+    )
+    field_id: Optional[str] = Field(
+        None,
+        alias='@id',
+        description='A path or URI to a specific location. It can use Wikidata or OpenStreetMap.',
+        examples=['https://www.wikidata.org/wiki/Q77077223'],
+        title='Address Identifier',
+    )
+    latitude: Optional[str] = Field(
+        None,
+        description='The latitude (lat) information of the location. Specifies the north / south position of the geometry.',
+        examples=['52.432822'],
+        title='Latitude',
+    )
+    longitude: Optional[str] = Field(
+        None,
+        description='The longitude (lon) information of the location. Specifies the east / west position of the geometry.',
+        examples=['13.5351004'],
+        title='Longitude',
+    )
+
+
+class Extent(BaseModel):
+    name: Optional[str] = Field(
+        None,
+        description='The name of the region.',
+        examples=['Berlin'],
+        title='Extent Name',
+    )
+    field_id: Optional[AnyUrl] = Field(
+        None,
+        alias='@id',
+        description='A URI reference for the region.',
+        examples=['https://www.wikidata.org/wiki/Q64'],
+        title='Extent Identifier',
+    )
+    resolutionValue: Optional[str] = Field(
+        None,
+        description='The value of the resolution.',
+        examples=['100'],
+        title='Resolution Value',
+    )
+    resolutionUnit: Optional[str] = Field(
+        None,
+        description='The unit of the resolution.',
+        examples=['m'],
+        title='Resolution Unit',
+    )
+    boundingBox: Optional[List[float]] = Field(
+        None,
+        description='The covered area specified by the coordinates of a bounding box. The format is [minLon, minLat, maxLon, maxLat] or [W,S,E,N].',
+        examples=[13.08825, 52.33859, 13.76104, 52.6754],
+        max_items=4,
+        min_items=4,
+        title='Bounding Box',
+    )
+    crs: Optional[str] = Field(
+        None,
+        description='The Coordinate Reference System, specified as an EPSG code.',
+        examples=['EPSG:4326'],
+        title=' Coordinate Reference System (CRS)',
+    )
+
+
+class Spatial(BaseModel):
+    location: Optional[Location] = Field(
+        None,
+        description='An object that describes a covered area or region.',
+        title='Extent',
+    )
+    extent: Optional[Extent] = Field(
+        None,
+        description='An object that describes a covered area or region.',
+        title='Extent',
+    )
+
+
+class Model(BaseModel):
+    spatial: Optional[Spatial] = Field(
+        None,
+        description='An object that describes the spatial context of the data.',
+        title='Spatial',
+    )
diff --git a/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/temporal.py b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/temporal.py
new file mode 100644
index 0000000..451880c
--- /dev/null
+++ b/services/backend_regimo/components/oep_access/oemeta/latest/build_source/schemas/temporal.py
@@ -0,0 +1,63 @@
+# generated by datamodel-codegen:
+#   filename:  temporal.json
+#   timestamp: 2025-01-27T15:30:28+00:00
+
+from __future__ import annotations
+
+from datetime import date, datetime
+from typing import List, Optional
+
+from pydantic import BaseModel, Field
+
+
+class Timesery(BaseModel):
+    start: Optional[datetime] = Field(
+        None,
+        description='The start time of a time series.',
+        examples=['2020-01-01T00:00:00+00:00'],
+        title='Timeseries Start',
+    )
+    end: Optional[datetime] = Field(
+        None,
+        description='The temporal end point of a time series.',
+        examples=['2020-01-01T23:59:30+00:00'],
+        title='Timeseries End',
+    )
+    resolution: Optional[str] = Field(
+        None,
+        description='The time span between individual information points in a time series.',
+        examples=['30 s'],
+        title='Timeseries Resolution',
+    )
+    alignment: Optional[str] = Field(
+        None,
+        description='An indicator of whether timestamps in a time series are to the left, right or in the centre.',
+        examples=['left'],
+        title='Timeseries Alignment',
+    )
+    aggregationType: Optional[str] = Field(
+        None,
+        description='An indicator of whether the values are a sum, an average or a current value.',
+        examples=['current'],
+        title='Timeseries Aggregation Type',
+    )
+
+
+class Temporal(BaseModel):
+    referenceDate: Optional[date] = Field(
+        None,
+        description='A base year, month or day. The time for which the data is should be accurate. Date Format is ISO 8601.',
+        examples=['2020-01-01'],
+        title='Reference Date',
+    )
+    timeseries: Optional[List[Timesery]] = Field(
+        None, description='An array that describe the timeseries.', title='Timeseries'
+    )
+
+
+class Model(BaseModel):
+    temporal: Optional[Temporal] = Field(
+        None,
+        description='An object with the time period covered in the data. Temporal information should contain either a "referenceDate" or the keys that describe a time series, in rare cases both.',
+        title='Temporal',
+    )
-- 
GitLab