Skip to content
Snippets Groups Projects
Commit 3e38c13c authored by Mohamed Anis Koubaa's avatar Mohamed Anis Koubaa :speech_balloon:
Browse files

create <oe_section>.py using datamodel-codegen from <oe_section>.json.

parent 9d80698d
No related branches found
No related tags found
No related merge requests found
Showing
with 891 additions and 0 deletions
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
# 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',
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment