5 |
2BFAIR
6 |
2BFAIR FAIRness Evaluation Report
7 |
8 |
9 |
Overall Result
10 |
11 | This part shows the FAIRness, a percentage grade indicating how close a
12 | digital object is to fully abiding by the FAIR Principles, of your data.
13 |
14 |
15 |
Result by metric
16 |
17 | This part shows the results divided by the metrics of each dimension and how
18 | much was achieved in each one.
19 |
20 |
25 |
Detailed results
26 |
27 | This part is divided into principles. Each principle is divided by metrics.
28 | Each metric is divided into tests. In each test, it explains the test
29 | result, the score obtained, the maturity of each metric, a recommendation
30 | and what the person loses if they do not pass this test.
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/tobefair-frontend/projects/to-be-fair/src/lib/to-be-fair.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | import { ResultComponent } from './result/result.component';
4 | import { GlossaryComponent } from './glossary/glossary.component';
5 | import { ExplorerComponent } from './explorer/explorer.component';
6 | import { DetailsComponent } from './details/details.component';
7 | import { ToolGlossaryComponent } from './tool-glossary/tool-glossary.component';
8 | import { ResultReportComponent } from './result-report/result-report.component';
9 |
10 | export const routes: Routes = [
11 | {
12 | path: 'result',
13 | component: ResultComponent,
14 | title: 'Evaluation Result',
15 | },
16 | {
17 | path: 'explorer',
18 | component: ExplorerComponent,
19 | title: 'Explore Results',
20 | },
21 | {
22 | path: 'details',
23 | component: DetailsComponent,
24 | title: 'Detail Results',
25 | },
26 | {
27 | path: 'glossary',
28 | component: GlossaryComponent,
29 | title: 'Glossary',
30 | },
31 | {
32 | path: 'tool-glossary',
33 | component: ToolGlossaryComponent,
34 | title: 'Tool Glossary',
35 | },
36 | {
37 | path: 'result-report',
38 | component: ResultReportComponent,
39 | title: 'Full Report',
40 | },
41 | // {
42 | // path: '**', component: PageNotFoundComponent, // TODO: Wildcard route for a 404 page
43 | // },
44 | ];
45 |
--------------------------------------------------------------------------------
/tobefair_backend/repository/metadata_offering_method_repository.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2025 IBM Corp.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | from tobefair_backend.constants import METADATA_OFFERING_METHOD_PATH
5 | from tobefair_backend.repository.json_dictionary_repository import (
6 | JsonDictionaryRepository,
7 | )
8 | from tobefair_framework.model.metadata.metadata_offering_method import (
9 | MetadataOfferingMethod,
10 | )
11 |
12 |
13 | class MetadataOfferingMethodRepository(
14 | JsonDictionaryRepository[MetadataOfferingMethod]
15 | ):
16 |
17 | @classmethod
18 | def file_path(cls) -> str:
19 | return METADATA_OFFERING_METHOD_PATH
20 |
21 | @classmethod
22 | def dictionary_to_model(cls, dictionary: dict) -> MetadataOfferingMethod | None:
23 | try:
24 | return MetadataOfferingMethod.model_validate(dictionary)
25 | except Exception:
26 | return None
27 |
28 | @classmethod
29 | def get_metadata_metadata_offering_method(
30 | cls, acronym: str
31 | ) -> MetadataOfferingMethod | None:
32 |
33 | matching_offering_method: MetadataOfferingMethod | None = None
34 | [
35 | (matching_offering_method := offering_method)
36 | for offering_method in cls.all()
37 | if offering_method.acronym.upper() == acronym.upper()
38 | ]
39 | return matching_offering_method
40 |
--------------------------------------------------------------------------------
/tobefair_backend/model/resources/typed_link.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2025 IBM Corp.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | from typing import ClassVar, List
5 |
6 | from pydantic import BaseModel, PrivateAttr
7 |
8 | from tobefair_backend.model.resources.data_size import DataSize, DataType
9 |
10 |
11 | class TypedLink(BaseModel):
12 | href: str
13 | rel: str | None = None
14 | type: DataType | None = None
15 | profile: str | None = None
16 | content_size: DataSize | None = None
17 | measured_variable: List[str] | str | None = None
18 |
19 | _accepted_rel_types: ClassVar[List[str]] = PrivateAttr(
20 | [
21 | "meta",
22 | "alternate meta",
23 | "metadata",
24 | "collection",
25 | "author",
26 | "describes",
27 | "item",
28 | "type",
29 | "search",
30 | "alternate",
31 | "describedby",
32 | "cite-as",
33 | "linkset",
34 | "license",
35 | ]
36 | )
37 |
38 | def __eq__(self, value: object) -> bool:
39 | if isinstance(value, TypedLink):
40 | return self.href == value.href
41 | return False
42 |
43 | def __hash__(self) -> int:
44 | return hash(self.href)
45 |
46 | @classmethod
47 | def rel_type_is_accepted(cls, typed_link: "TypedLink"):
48 | return typed_link.rel in cls._accepted_rel_types
49 |
--------------------------------------------------------------------------------
/tobefair-frontend/projects/to-be-fair/src/lib/evaluate/evaluate.component.html:
--------------------------------------------------------------------------------
1 |