diff --git a/hdr_schemata/definitions/HDRUK/AccessService.py b/hdr_schemata/definitions/HDRUK/AccessService.py new file mode 100644 index 0000000..8807888 --- /dev/null +++ b/hdr_schemata/definitions/HDRUK/AccessService.py @@ -0,0 +1,8 @@ +from enum import Enum + + +class AccessService(Enum): + TRE_SDE = "TRE/SDE" + DIRECT_ACCESS = "Direct access" + OPEN_ACCESS = "Open access" + VARIED = "Varies based on project" diff --git a/hdr_schemata/definitions/HDRUK/__init__.py b/hdr_schemata/definitions/HDRUK/__init__.py index 34fed8d..3ffec8f 100644 --- a/hdr_schemata/definitions/HDRUK/__init__.py +++ b/hdr_schemata/definitions/HDRUK/__init__.py @@ -1,4 +1,5 @@ from .AbstractText import AbstractText +from .AccessService import AccessService from .AgeRange import AgeRange from .CommaSeparatedIntegers import CommaSeparatedIntegers from .CommaSeparatedValues import CommaSeparatedValues diff --git a/hdr_schemata/models/GWDM/v1_0/__init__.py b/hdr_schemata/models/GWDM/v1_0/__init__.py index 26758fc..946a55d 100644 --- a/hdr_schemata/models/GWDM/v1_0/__init__.py +++ b/hdr_schemata/models/GWDM/v1_0/__init__.py @@ -15,62 +15,61 @@ from .Linkage import Linkage from .Observations import Observation from .DataTable import DataTable + from .Usage import Usage +from .Access import Access + class Gwdm10(BaseModel): class Config: - extra = 'forbid' + extra = "forbid" required: Required = Field( - ..., - description='required metadata needed for the GWDM', - title='Required' + ..., description="required metadata needed for the GWDM", title="Required" ) summary: Summary = Field( ..., - description='Summary of metadata describing key pieces of information.', - title='Summary', + description="Summary of metadata describing key pieces of information.", + title="Summary", ) - + coverage: Optional[Coverage] = Field( None, - description='Spatial and Temporal coverage', - title='Coverage', + description="Spatial and Temporal coverage", + title="Coverage", ) provenance: Optional[Provenance] = Field( None, - description='Provenance information', - title='Provenance', + description="Provenance information", + title="Provenance", ) - + accessibility: Accessibility = Field( None, - description='Accessibility information.', - title='Accessibility', + description="Accessibility information.", + title="Accessibility", ) - + linkage: Optional[Linkage] = Field( None, - description='Linkage and enrichment.', - title='Linkage', + description="Linkage and enrichment.", + title="Linkage", ) - + observations: Optional[List[Observation]] = Field( None, - description='Obsservations', - title='Observations', + description="Obsservations", + title="Observations", ) structuralMetadata: Optional[List[DataTable]] = Field( None, - description='Descriptions of all tables and data elements that can be included in the dataset', - title='Structural Metadata', + description="Descriptions of all tables and data elements that can be included in the dataset", + title="Structural Metadata", ) - @classmethod - def save_schema(cls,location='./1.0/schema.json'): - with open(location,'w') as f: - json.dump(cls.model_json_schema(),f,indent=6) - + def save_schema(cls, location="./1.0/schema.json"): + with open(location, "w") as f: + json.dump(cls.model_json_schema(), f, indent=6) diff --git a/hdr_schemata/models/GWDM/v1_2/Access.py b/hdr_schemata/models/GWDM/v1_2/Access.py new file mode 100644 index 0000000..caf895f --- /dev/null +++ b/hdr_schemata/models/GWDM/v1_2/Access.py @@ -0,0 +1,15 @@ +from typing import Optional +from pydantic import Field +from hdr_schemata.definitions.HDRUK import CommaSeparatedValues + + +from hdr_schemata.models.GWDM.v1_1 import Access as BaseAccess + + +class Access(BaseAccess): + accessServiceCategory = Optional[CommaSeparatedValues] = Field( + None, + description="Where access to data come from: TRE/SED, direct access, open acccess, varies based on project.", + example="", + title="Access/governance requirementss", + ) diff --git a/hdr_schemata/models/GWDM/v1_2/Accessibility.py b/hdr_schemata/models/GWDM/v1_2/Accessibility.py new file mode 100644 index 0000000..5f1cdab --- /dev/null +++ b/hdr_schemata/models/GWDM/v1_2/Accessibility.py @@ -0,0 +1,13 @@ +from pydantic import Field +from hdr_schemata.definitions.HDRUK import * + +from hdr_schemata.models.GWDM.v1_1 import Accessibility as BaseAccessibility +from .Access import Access + + +class Accessibility(BaseAccessibility): + access: Access = Field( + ..., + description="This section includes information about data access", + title="Access", + ) diff --git a/hdr_schemata/models/GWDM/v1_2/__init__.py b/hdr_schemata/models/GWDM/v1_2/__init__.py index ac1113e..5165ce7 100644 --- a/hdr_schemata/models/GWDM/v1_2/__init__.py +++ b/hdr_schemata/models/GWDM/v1_2/__init__.py @@ -1,7 +1,9 @@ from hdr_schemata.models.GWDM import Gwdm11 - from hdr_schemata.models.GWDM.v1_1 import * + +from .Accessibility import Accessibility from .Linkage import Linkage + from typing import Optional, List from pydantic import Field @@ -12,3 +14,9 @@ class Gwdm12(Gwdm11): description="Linkage and enrichment.", title="Linkage", ) + + accessibility: Accessibility = Field( + None, + description="Accessibility information.", + title="Accessibility", + ) diff --git a/hdr_schemata/models/HDRUK/v2_2_1/Access.py b/hdr_schemata/models/HDRUK/v2_2_1/Access.py new file mode 100644 index 0000000..cc24212 --- /dev/null +++ b/hdr_schemata/models/HDRUK/v2_2_1/Access.py @@ -0,0 +1,14 @@ +from typing import Optional, List +from pydantic import Field +from hdr_schemata.definitions.HDRUK import AccessService + +from hdr_schemata.models.GWDM.v1_1 import Access as BaseAccess + + +class Access(BaseAccess): + accessServiceCategory = Optional[List[AccessService]] = Field( + None, + description="Where access to data come from: TRE/SED, direct access, open acccess, varies based on project.", + example="", + title="Access/governance requirementss", + ) diff --git a/hdr_schemata/models/HDRUK/v2_2_1/Accessibility.py b/hdr_schemata/models/HDRUK/v2_2_1/Accessibility.py new file mode 100644 index 0000000..0aa9497 --- /dev/null +++ b/hdr_schemata/models/HDRUK/v2_2_1/Accessibility.py @@ -0,0 +1,27 @@ +from typing import Optional +from pydantic import BaseModel, Field +from hdr_schemata.definitions.HDRUK import * + +from .Usage import Usage +from .Access import Access +from .FormatAndStandards import FormatAndStandards + +class Accessibility(BaseModel): + class Config: + extra = 'forbid' + + usage: Optional[Usage] = Field( + None, + description='This section includes information about how the data can be used and how it is currently being used', + title='Usage', + ) + access: Access = Field( + ..., + description='This section includes information about data access', + title='Access', + ) + formatAndStandards: Optional[FormatAndStandards] = Field( + None, + description='Section includes technical attributes for language vocabularies, sizes etc. and gives researchers facts about and processing the underlying data in the dataset.', + title='Format and Standards', + ) diff --git a/hdr_schemata/models/HDRUK/v2_2_1/__init__.py b/hdr_schemata/models/HDRUK/v2_2_1/__init__.py index aa05f30..0fa2541 100644 --- a/hdr_schemata/models/HDRUK/v2_2_1/__init__.py +++ b/hdr_schemata/models/HDRUK/v2_2_1/__init__.py @@ -4,6 +4,7 @@ from pydantic import Field from .EnrichmentAndLinkage import EnrichmentAndLinkage +from .Accessibility import Accessibility class Hdruk221(Hdruk220): @@ -14,6 +15,12 @@ class Hdruk221(Hdruk220): title="Enrichment and Linkage", ) + accessibility: Accessibility = Field( + ..., + description="Accessibility information allows researchers to understand access, usage, limitations, formats, standards and linkage or interoperability with toolsets.", + title="Accessibility", + ) + @classmethod def save_schema(cls, location="./2.2.1/schema.json"): with open(location, "w") as f: