From f24ff17e8c6850b0c7f73daaebc0de1ce64aed11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Such=C3=A1nek?= Date: Thu, 6 Feb 2025 13:04:45 +0100 Subject: [PATCH 1/7] Update dependencies --- docs/conf.py | 2 +- requirements.txt | 66 +++++++++++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b58427b..b0738bf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -62,7 +62,7 @@ 'sidebar-item-spacing-horizontal': '.75rem', }, 'sidebar_hide_name': True, - 'top_of_page_button': None, + 'top_of_page_buttons': [], } html_css_files = ['custom.css'] html_js_files = ['custom.js'] diff --git a/requirements.txt b/requirements.txt index 2a8c72f..0b56f96 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,43 +1,45 @@ -alabaster==0.7.16 -attrs==23.2.0 -Babel==2.14.0 -beautifulsoup4==4.12.3 -certifi==2024.2.2 -charset-normalizer==3.3.2 -deepmerge==1.1.1 -docutils==0.21.1 -furo==2024.1.29 -idna==3.7 +alabaster==1.0.0 +attrs==25.1.0 +babel==2.17.0 +beautifulsoup4==4.13.3 +certifi==2025.1.31 +charset-normalizer==3.4.1 +deepmerge==2.0 +docutils==0.21.2 +furo==2024.8.6 +idna==3.10 imagesize==1.4.1 -Jinja2==3.1.3 -jsonschema==4.21.1 -jsonschema-specifications==2023.12.1 +Jinja2==3.1.5 +jsonschema==4.23.0 +jsonschema-specifications==2024.10.1 latexcodec==3.0.0 -MarkupSafe==2.1.5 -mistune==2.0.5 -packaging==24.0 +MarkupSafe==3.0.2 +mistune==3.1.1 +packaging==24.2 picobox==4.0.0 pybtex==0.24.0 pybtex-docutils==1.0.3 -Pygments==2.17.2 -PyYAML==6.0.1 -referencing==0.34.0 -requests==2.31.0 -rpds-py==0.18.0 -six==1.16.0 +Pygments==2.19.1 +PyYAML==6.0.2 +referencing==0.36.2 +requests==2.32.3 +rpds-py==0.22.3 +setuptools==75.8.0 +six==1.17.0 snowballstemmer==2.2.0 -soupsieve==2.5 -Sphinx==7.3.7 +soupsieve==2.6 +Sphinx==8.1.3 sphinx-basic-ng==1.0.0b2 sphinx-copybutton==0.5.2 -sphinx_mdinclude==0.5.4 -sphinxcontrib-applehelp==1.0.8 -sphinxcontrib-bibtex==2.6.2 -sphinxcontrib-devhelp==1.0.6 -sphinxcontrib-htmlhelp==2.0.5 +sphinx_mdinclude==0.6.2 +sphinxcontrib-applehelp==2.0.0 +sphinxcontrib-bibtex==2.6.3 +sphinxcontrib-devhelp==2.0.0 +sphinxcontrib-htmlhelp==2.1.0 sphinxcontrib-httpdomain==1.8.1 sphinxcontrib-jsmath==1.0.1 sphinxcontrib-openapi==0.8.4 -sphinxcontrib-qthelp==1.0.7 -sphinxcontrib-serializinghtml==1.1.10 -urllib3==2.2.1 +sphinxcontrib-qthelp==2.0.0 +sphinxcontrib-serializinghtml==2.0.0 +typing_extensions==4.12.2 +urllib3==2.3.0 From 3e9613b209ee9c592e3a79ba651fe77516ca9c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Such=C3=A1nek?= Date: Thu, 6 Feb 2025 13:28:53 +0100 Subject: [PATCH 2/7] Fix code style --- .editorconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.editorconfig b/.editorconfig index 53a78eb..be794c1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,6 +12,7 @@ max_line_length = off indent_size = 4 [*.bat] +indent_style = tab end_of_line = crlf [*.{yaml,yml}] @@ -25,3 +26,6 @@ indent_size = 2 [*.js] indent_size = 2 + +[Makefile] +indent_style = tab From 1511223ed4bf6136c5460db17f1863408e6fa892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Such=C3=A1nek?= Date: Thu, 6 Feb 2025 13:29:10 +0100 Subject: [PATCH 3/7] Update structure --- docs/architecture/dmp_if.rst | 4 ++++ docs/architecture/fair_if.rst | 4 ++++ docs/architecture/intro.rst | 4 ++++ docs/architecture/skg_if.rst | 4 ++++ docs/commons/governance.rst | 4 ++++ docs/commons/intro.rst | 6 ++++++ docs/commons/resources.rst | 4 ++++ docs/index.rst | 19 +++++++++++++++++++ 8 files changed, 49 insertions(+) create mode 100644 docs/architecture/dmp_if.rst create mode 100644 docs/architecture/fair_if.rst create mode 100644 docs/architecture/intro.rst create mode 100644 docs/architecture/skg_if.rst create mode 100644 docs/commons/governance.rst create mode 100644 docs/commons/intro.rst create mode 100644 docs/commons/resources.rst diff --git a/docs/architecture/dmp_if.rst b/docs/architecture/dmp_if.rst new file mode 100644 index 0000000..e00f927 --- /dev/null +++ b/docs/architecture/dmp_if.rst @@ -0,0 +1,4 @@ +Architecture: DMP IF +==================== + +*To be specified* diff --git a/docs/architecture/fair_if.rst b/docs/architecture/fair_if.rst new file mode 100644 index 0000000..8c05806 --- /dev/null +++ b/docs/architecture/fair_if.rst @@ -0,0 +1,4 @@ +Architecture: FAIR IF +===================== + +*To be specified* diff --git a/docs/architecture/intro.rst b/docs/architecture/intro.rst new file mode 100644 index 0000000..23b0fd9 --- /dev/null +++ b/docs/architecture/intro.rst @@ -0,0 +1,4 @@ +Architecture: Introduction +========================== + +*To be specified* diff --git a/docs/architecture/skg_if.rst b/docs/architecture/skg_if.rst new file mode 100644 index 0000000..51bbf1e --- /dev/null +++ b/docs/architecture/skg_if.rst @@ -0,0 +1,4 @@ +Architecture: SKG IF +==================== + +*To be specified* diff --git a/docs/commons/governance.rst b/docs/commons/governance.rst new file mode 100644 index 0000000..e64d544 --- /dev/null +++ b/docs/commons/governance.rst @@ -0,0 +1,4 @@ +Commons: Governance +=================== + +*To be specified* diff --git a/docs/commons/intro.rst b/docs/commons/intro.rst new file mode 100644 index 0000000..91d02e3 --- /dev/null +++ b/docs/commons/intro.rst @@ -0,0 +1,6 @@ +Commons: Introduction +===================== + +.. page-authors:: Marek Suchánek + +*To be specified* diff --git a/docs/commons/resources.rst b/docs/commons/resources.rst new file mode 100644 index 0000000..4ed950a --- /dev/null +++ b/docs/commons/resources.rst @@ -0,0 +1,4 @@ +Commons: Resources +================== + +*To be specified* diff --git a/docs/index.rst b/docs/index.rst index 81fe531..92ff83e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,6 +13,25 @@ Documentation Structure *This documentation is currently under development...* +.. toctree:: + :maxdepth: 2 + :caption: Architecture + + Introduction + DMP IF + SKG IF + FAIR IF + + +.. toctree:: + :maxdepth: 2 + :caption: Commons + + Introduction + Governance + Resources + + .. toctree:: :maxdepth: 2 :caption: Other From f98e00adae8c2f6e101b592837d5ec3b154b55e3 Mon Sep 17 00:00:00 2001 From: TomMiksa Date: Thu, 6 Feb 2025 15:41:39 +0100 Subject: [PATCH 4/7] Architecture introduction and DMP-IF descriptions added (#2) * Update intro.rst Added section on architecture * Architecture diagam added * Update dmp_if.rst DMP-IF description added --- docs/architecture/OSTrails-architecture.png | Bin 0 -> 54766 bytes docs/architecture/dmp_if.rst | 29 +++++++++++++- docs/architecture/intro.rst | 42 +++++++++++++++++++- 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 docs/architecture/OSTrails-architecture.png diff --git a/docs/architecture/OSTrails-architecture.png b/docs/architecture/OSTrails-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6aa865ecd9d73e007a7437df500b311c8e2e0f GIT binary patch literal 54766 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 literal 0 HcmV?d00001 diff --git a/docs/architecture/dmp_if.rst b/docs/architecture/dmp_if.rst index e00f927..a61ca1b 100644 --- a/docs/architecture/dmp_if.rst +++ b/docs/architecture/dmp_if.rst @@ -1,4 +1,31 @@ Architecture: DMP IF ==================== -*To be specified* +An **interoperability framework** refers to a set of guidelines, standards, and protocols that ensure the ability of different systems, applications, or organizations to work together effectively, exchanging data and functions seamlessly despite differences in their underlying technologies. The framework typically addresses the technical, semantic, and organizational aspects needed to facilitate collaboration and integration between disparate systems. + +The **DMP-IF** consists of: + * RDA DMP **common standard** for machine-actionable DMPs (DCS), + * OSTrails **application profile** for maDMPs, + * maDMP Application Programming Interface (**API**). + +The DMP-IF follows this definition and is designed with DMP Platforms in mind but can be used by any service or tool that exchanges maDMPs. The IF does not prescribe internal organisation of services, e.g. their architecture or how they represent information internally. The IF focuses on how the information is exchanged with other services, i.e. defines concepts and models to represent the information, as well as actions that can be performed to get or modify information in a service implementing the DMP-IF. For example, listing all datasets described by a DMP, including their identifiers and licences, is performed in a unified way, independent of the underlying implementation. The DMP-IF addresses the technical and semantic layers only. + +The **common standard** is an RDA recommendation. It defines a minimum set of concepts used to model information in DMPs common for most use cases. The **application profile** builds on top of the common standard. It provides additional concepts and constraints necessary to support the interactions identified in the pathways and reference architecture. Thus, it provides more concepts and more constraints that reflect the needs of OSTrails as whole and eventually EOSC. While both focus on establishing a common language on how information contained in DMPs is expressed in a machine-actionable way, the API provides a set of methods that can be used to perform specific actions on DMPs. The structure of messages exchanged with the use of the API is based on the common language defined by the common standard and the application profile. + +The DMP-IF is **relevant to software engineers and service operators** who want to standardise how information on DMPs is exchanged. End-users, i.e. researchers, are not supposed to be aware of the DMP-IF. The DMP-IF facilitates the reuse and exchange of information so that typical RDM tasks can be automated, and DMPs are a place where all the information relevant to data management, e.g. type of data, storage location, access permissions, etc., are kept. DMP platforms should thus become a source of up-to-date information for other services that depend on them, e.g. researchers involved in a project described by a DMP should automatically get access to relevant equipment and repositories described by the DMP. As a result, creating the DMP should primarily benefit researchers by facilitating data management of their typical tasks and become less a one-time exercise to meet formal requirements. + +**Adopting the DMP-IF** can be performed gradually and tailored to the needs of the specific use case. Yet, full interoperability can only be achieved when the specific service implements the complete maDMP API. This is because the API reflects the community agreement on the common language used to describe the DMP contents and makes technical decisions that leave less room for interpretation, e.g. choice of communication protocol, such as HTTP, and ways to serialise the exchanged messages, for instance, using JSON. + +Ongoing and future work +****** +Together with the RDA DMP Common Standards WG we perform the maintenance of the recommendation. The RDA DMP Common Standards working group will be able to accept only minor and small changes to the recommendation. These will be mostly refinements bringing clarity or changes that are backward-compatible. As a result, we will have a stable and up-to-date set of concepts shared across the whole DMP community. Any major changes that could considerably influence the design of the recommendation need to be performed by a new working group – this is an RDA requirement. For this reason, OSTrails develops the OSTrails application profile to incorporate bigger changes that also cover the project-specific needs, which may not be shared across the whole RDA community. + +By defining one application profile, we want to mitigate a situation when every use case owner defines their own set of extensions. For example, we will define a set of concepts that support the requirements of most funders instead of having extensions per funder. This should prevent situations in which overlapping concepts are represented differently, and hence, the interoperability is lower. While the DCS is an official recommendation of RDA and must leave many decisions open, e.g., which type of controlled vocabulary to use for identifier types, the OSTrails application profile imposes additional constraints on the RDA recommendation that are relevant within the OSTrails and EOSC contexts. For example, the application profile may have stricter requirements regarding the use of persistent identifiers (rather than URLs) or may require the use of specific controlled vocabularies. + +The broader objectives of the maDMP API are as follows: + * Enable interoperability and interchangeability of DMP platforms: Ensure that any DMP tool can be utilised in diverse contexts without compatibility concerns. + * Reduce reliance on static text documents: Shift away from narrative DMP formats, such as PDFs, towards enhanced use of persistent identifiers where appropriate. + * Promote the reuse of information from DMPs: Facilitate the transfer of information from DMPs to inform and drive actions within other RDM systems. + * Enhance the quality and timeliness of DMPs: Improve accuracy by sourcing data directly from systems where RDM activities are conducted. + +This approach aims to establish a robust framework for seamless integration and automation in the RDM ecosystem, significantly advancing the utility and efficiency of DMPs. The maDMP API does not replace existing APIs offered by DMP Platforms. There are still operations that are specific to each platform. The maDMP API standardises typical interactions with maDMPs in a similar fashion as the DCS, which represents consensus on most common DMP elements in most settings, but not all of them. diff --git a/docs/architecture/intro.rst b/docs/architecture/intro.rst index 23b0fd9..40297da 100644 --- a/docs/architecture/intro.rst +++ b/docs/architecture/intro.rst @@ -1,4 +1,42 @@ -Architecture: Introduction +Architecture ========================== -*To be specified* +The OSTrails reference architecture provides guidance on realising interactions between key components identified in the OSTrails pathways: Data Management Plans (DMPs), Scientific Knowledge Graphs (SKGs), and FAIR Assessment. It clarifies which interactions are standardised within the Interoperability Frameworks and which are relevant to the project without prescribing specific implementation methods. For example, while the reference architecture specifies when the DMP API (part of the DMP Interoperability Framework) must be used, it leaves the method of accessing information from data repositories flexible. + +A key objective of this architecture is to prevent vendor lock-in, ensuring tools and services can be used interchangeably in typical scenarios outlined by the pathways. For instance, any SKG conforming to the SKG-IF can seamlessly integrate with DMP tools to provide additional insights into reused datasets. This architecture emphasises harmonising the modelling and exchange of information across research data management services while allowing diverse implementation choices tailored to specific use cases. + +The architecture also supports both current well-known and potential future patterns of interactions between components, fostering innovative use cases that enhance automation and machine-actionability of digital object information exchange. For example, while it is yet uncommon for data repositories to update DMPs, the architecture anticipates and accommodates such potential pathways. + +.. image:: OSTrails-architecture.png + +We use colour coding in the diagram: + * Orange represents the components and communications that are subject to standardisation within the DMP-IF. + * Blue represents the components and communications that are subject to standardisation within the SKG-IF. + * Green represents the components and communications that are subject to standardisation within the FAIR-IF. + * Gray represents the components and communications that are relevant for delivering the pathways identified by the project but are not subject to any of the interoperability frameworks, e.g. standards may already be in place, under development by other projects, or simply be based on custom interfaces provided by specific services. + +The reference architecture consists of the following conceptual components: + * DMP Platform – Platform, tool, or service (software system) for planning data management, producing data management plans (DMPs), including machine-actionable data management plans (maDMPs). + * SKG - For the purposes of the OSTrails project, an SKG is defined as any database/repository with information pertaining to research products, processes and actors & agents which can present a graph-type view of this information via a suitable API. + * FAIR Assessment Tool – Software that applies a set of FAIR Tests to the metadata/data of a digital object (such as datasets), presents the output as a FAIR Test Result Set, and provides assistance on how to interpret and improve the results. FAIR Assessment tools may also include additional functionalities such as searching for and/or authoring Metrics and searching for and/or authoring Benchmarks. + * DMP Evaluation Service - A service that takes a DMP as input and gives as a result measurements indicating if the DMP meets given compliance requirements. These requirements depend on the evaluation scenario but in general consist of measurements for subsets of information contained in a DMP. Such measurements can be the FAIRness of digital objects included in the DMP, compliance of the DMP with the RDA maDMP standard, or automated measurements of funder requirements such as the existence of relevant information and their allowed values. To provide these measurements, the DMP Evaluator coordinates the inclusion of the results of other evaluators and resolves information contained in a DMP through SKGs and other sources. + * Data Repository – any service that stores and provides access to data. Usually, it provides a means for persistent identification and ensures that data is accompanied by metadata. Examples include zenodo.org, institutional repositories, etc. + * Other SKG – same definition as for the SKG. This element is introduced in the reference architecture to indicate that the SKG-IF can be used for communication between different SKGs. + +The reference architecture says that a *DMP Platform* must provide a DMP API that can be used by other services. SKGs and data repositories use this API to interact with the DMP Platform. The specific operations of the API will be described elsewhere. For the time being, one can imagine that a data repository can use the DMP API to e.g. add information about a specific licence assigned to a dataset described by the DMP. + +The *SKGs* must provide an SKG API so that other SKGs can interact with them. DMP Platforms use SKG API to access information in SKGs, e.g. to search for datasets, or to fetch information using identifiers. DMP Evaluation Service and FAIR assessment tools use the SKG API to get additional information needed during assessment. Data repositories also use this API. + +*FAIR Assessment Tools* have APIs that are only partially defined by the OSTrails reference architecture; that is, while the input required by a FAIR assessment tool cannot be predicted, the output structures from all FAIR assessment tools (namely, the “FAIR Test Result Set” data structure) have been specified by the FAIR Reference Architecture (Deliverable D1.2). Further discussion regarding this appears in the chapter 5 of this document. DMP Platforms, DMP Evaluation Services, and SKGs can thus expect a standardised response when interacting with FAIR assessment tools that comply with the FAIR-IF. + +The *DMP Evaluation Service* provides an interface that the DMP Platform uses to interact with it, i.e. send maDMPs for evaluation and fetch the results. This interface will be designed as part of the DMP Evaluation Service and described in a separate deliverable. Yet, it will be specific to this service and does not belong to any of the interoperability frameworks, i.e. in case other similar services exist, they can define their own interfaces. + +In a similar way, *Data Repositories* may have custom APIs that are used by FAIR Assessment tools or DMP Platforms. OSTrails does not attempt to standardise this communication because it is already a subject of the work by the EOSC Future project on standardising access to content via PID. + +Additional information +******************* +Check our deliverables for more information: + * Reichmann, S., Rey Mazón, M., Hasani-Mavriqi, I., Thaci, L., & Eckhard, D. (2024). **D1.1: Plan-Track-Assess Pathways**. Zenodo. https://doi.org/10.5281/zenodo.13145788 + * Miksa, T., Wilkinson, M., Manghi, P., & Suchánek, M. (2025). **D1.4 OSTrails Interoperability Reference Architecture V1**. Zenodo. https://doi.org/10.5281/zenodo.14795000 + * Suchánek, M., Martínková, J., Shepherdson, J., Miksa, T., Jirka, J., Knaisl, V., Moilanen, K., Sansone, S.-A., & Stavropoulos, T. (2025). **D2.5 OSTrails Commons Specifications**. Zenodo. https://doi.org/10.5281/zenodo.14795060 + From 052efc2a8aea8dc12ac36c2cf9feab0124ec7ad7 Mon Sep 17 00:00:00 2001 From: Daniel Garijo Date: Thu, 6 Feb 2025 18:30:31 +0100 Subject: [PATCH 5/7] added FAIR-IF resources --- docs/architecture/fair_if.rst | 66 ++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/docs/architecture/fair_if.rst b/docs/architecture/fair_if.rst index 8c05806..d36a20b 100644 --- a/docs/architecture/fair_if.rst +++ b/docs/architecture/fair_if.rst @@ -1,4 +1,68 @@ Architecture: FAIR IF ===================== -*To be specified* + +FAIR Test Results specification and SHACL shapes: +****** +FTR is the first OWL implementation of the FAIR Reference model described in Deliverables D1.2 and D.1.4. The reference model extends W3C standards such as [DCAT](https://www.w3.org/TR/vocab-dcat-3/), [DQV](https://www.w3.org/TR/vocab-dqv/) and [PROV](https://www.w3.org/TR/prov-o/) to describe test results, test definitions, metrics, benchmarks and their interpretation to generate a FAIR assessment score. + +The code release includes the vocabularies, definitions, specifications in machine-readable format and a set of SHACL validation rules to ensure tests and metrics are defined according to the specification. + +- Persistent identifier: https://w3id.org/ftr/1.0.0 +- Code Repository: https://github.com/OSTrails/FAIR_assessment_output_specification/ +- Version: 1.0.0 +- Release (in GitHub): https://github.com/OSTrails/FAIR_assessment_output_specification/releases/tag/v1.0.0 + + +FAIR Champion +****** +FAIR Champion is a general-purpose FAIR assessment tool intended to be used by all communities and for all digital objects. In this release, FAIR Champion is aware of the 22 FAIR Tests (below), but any test, from any provider, can be registered so long as the test generates a metadata descriptor compliant with the FAIR Reference Model defined by OSTrails. The OpenAPI interface descriptor for this release is only partially complete; the Champion has a variety of functions related to new test registration and benchmark registration that are currently pending decisions by the OSTrails project. + +- Persistent identifier: https://tools.ostrails.eu/champion/sets/ +- Code repository: https://github.com/OSTrails/FAIR-Champion +- Version: Release v1 +- Release: https://github.com/OSTrails/FAIR-Champion/releases/tag/1.0.0 + + +FAIR Champion Tests +****** +A set of 22 tests for FAIRness. These are generic tests for all four FAIR facets – F, A, I, R – and do not represent any specific community or digital object. All tests require the GUID of the digital object’s metadata as input. Output follows the FAIR Test Results schema (https://w3id.org/ftr/1.0.0) + +- Persistent identifier: https://tests.ostrails.eu/tests +- Code repository: https://github.com/OSTrails/FAIR-Core-Tests +- Version: Release v1 +- Release: https://github.com/OSTrails/FAIR-Core-Tests/releases/tag/1.0.0 + + +FOOPS! Test and metric catalogue +****** +The Ontology Pitfall Scanner for FAIR is a FAIR assessment tool for vocabularies and ontologies. In this release, FOOPS! has been adapted to comply with the FTR specification. A catalog of test descriptions has been made available in https://w3id.org/foops/catalogue. The release contains the source code of the tools, as well as the machine-readable and human-readable documentation of all tests, metrics and benchmarks associated with the tool. + +- Persistent identifier: https://w3id.org/foops/catalogue +- Zenodo link (latest release): https://doi.org/10.5281/zenodo.14767999 +- Code repository: https://github.com/oeg-upm/fair_ontologies +- Version: 0.2.0 +- Release: https://github.com/oeg-upm/fair_ontologies/releases/tag/v0.2.0 + + +FAIR Data Point: +****** +The FAIR Data Point software is maintained by a third party (the “FAIRDataTeam”). In OSTrails we utilize the FAIR Data Point (FDP) in its configuration as an “index”, using the 16.x releases of the software suite in DockerHub. FDP Index is the first implementation of a test registry and will include many of the descriptions from the FAIR Champion and FOOPS! + +- Identifier: https://tools.ostrails.eu/fdp-index/ +- Code repository: https://github.com/FAIRDataTeam +- Version: Docker Image version 16.x +- Release: N/A + + +FAIR Data Point Index Proxy: +****** +An early prototype of a “proxy” service that allows native DCAT records to be registered in a FAIR Data Point Index. + +- Identifier: https://tools.ostrails.eu/fdp-index-proxy +- Zenodo link (latest release) +- Code repository: https://github.com/OSTrails/FDP-Index-Proxy +- Version: Release v1.0.0 +- Release: https://github.com/OSTrails/FDP-Index-Proxy/releases/tag/v1.0.0 + + \ No newline at end of file From c1c8866ff0047e08357dc8ed67103492976001d4 Mon Sep 17 00:00:00 2001 From: Daniel Garijo Date: Fri, 7 Feb 2025 14:20:36 +0100 Subject: [PATCH 6/7] edits to the right page --- docs/commons/resources.rst | 67 +++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/docs/commons/resources.rst b/docs/commons/resources.rst index 4ed950a..c105011 100644 --- a/docs/commons/resources.rst +++ b/docs/commons/resources.rst @@ -1,4 +1,69 @@ Commons: Resources ================== -*To be specified* +.. page-authors:: Daniel Garijo + +The following resources are part of the FAIR-IF commons: + +FAIR Test Results specification and SHACL shapes: +****** +[FTR](https://w3id.org/ftr/) is the first OWL implementation of the FAIR Reference model described in Deliverables D1.2 and D.1.4. The reference model extends W3C standards such as [DCAT](https://www.w3.org/TR/vocab-dcat-3/), [DQV](https://www.w3.org/TR/vocab-dqv/) and [PROV](https://www.w3.org/TR/prov-o/) to describe test results, test definitions, metrics, benchmarks and their interpretation to generate a FAIR assessment score. + +The code release includes the vocabularies, definitions, specifications in machine-readable format and a set of SHACL validation rules to ensure tests and metrics are defined according to the specification. + +- Persistent identifier: https://w3id.org/ftr/1.0.0 +- Code Repository: https://github.com/OSTrails/FAIR_assessment_output_specification/ +- Version: 1.0.0 +- Release (in GitHub): https://github.com/OSTrails/FAIR_assessment_output_specification/releases/tag/v1.0.0 + + +FAIR Champion +****** +FAIR Champion is a general-purpose FAIR assessment tool intended to be used by all communities and for all digital objects. In this release, FAIR Champion is aware of the 22 FAIR Tests (below), but any test, from any provider, can be registered so long as the test generates a metadata descriptor compliant with the FAIR Reference Model defined by OSTrails. The OpenAPI interface descriptor for this release is only partially complete; the Champion has a variety of functions related to new test registration and benchmark registration that are currently pending decisions by the OSTrails project. + +- Persistent identifier: https://tools.ostrails.eu/champion/sets/ +- Code repository: https://github.com/OSTrails/FAIR-Champion +- Version: Release v1 +- Release: https://github.com/OSTrails/FAIR-Champion/releases/tag/1.0.0 + + +FAIR Champion Tests +****** +A set of 22 tests for FAIRness. These are generic tests for all four FAIR facets – F, A, I, R – and do not represent any specific community or digital object. All tests require the GUID of the digital object’s metadata as input. Output follows the FAIR Test Results schema (https://w3id.org/ftr/1.0.0) + +- Persistent identifier: https://tests.ostrails.eu/tests +- Code repository: https://github.com/OSTrails/FAIR-Core-Tests +- Version: Release v1 +- Release: https://github.com/OSTrails/FAIR-Core-Tests/releases/tag/1.0.0 + + +FOOPS! Test and metric catalogue +****** +The Ontology Pitfall Scanner for FAIR is a FAIR assessment tool for vocabularies and ontologies. In this release, FOOPS! has been adapted to comply with the FTR specification. A catalog of test descriptions has been made available in https://w3id.org/foops/catalogue. The release contains the source code of the tools, as well as the machine-readable and human-readable documentation of all tests, metrics and benchmarks associated with the tool. + +- Persistent identifier: https://w3id.org/foops/catalogue +- Zenodo link (latest release): https://doi.org/10.5281/zenodo.14767999 +- Code repository: https://github.com/oeg-upm/fair_ontologies +- Version: 0.2.0 +- Release: https://github.com/oeg-upm/fair_ontologies/releases/tag/v0.2.0 + + +FAIR Data Point: +****** +The FAIR Data Point software is maintained by a third party (the “FAIRDataTeam”). In OSTrails we utilize the FAIR Data Point (FDP) in its configuration as an “index”, using the 16.x releases of the software suite in DockerHub. FDP Index is the first implementation of a test registry and will include many of the descriptions from the FAIR Champion and FOOPS! + +- Identifier: https://tools.ostrails.eu/fdp-index/ +- Code repository: https://github.com/FAIRDataTeam +- Version: Docker Image version 16.x +- Release: N/A + + +FAIR Data Point Index Proxy: +****** +An early prototype of a “proxy” service that allows native DCAT records to be registered in a FAIR Data Point Index. + +- Identifier: https://tools.ostrails.eu/fdp-index-proxy +- Zenodo link (latest release) +- Code repository: https://github.com/OSTrails/FDP-Index-Proxy +- Version: Release v1.0.0 +- Release: https://github.com/OSTrails/FDP-Index-Proxy/releases/tag/v1.0.0 From ff95c2ad84df14b491d64657ad8c847323e9e4dd Mon Sep 17 00:00:00 2001 From: Daniel Garijo Date: Fri, 7 Feb 2025 14:22:18 +0100 Subject: [PATCH 7/7] edits to the right page --- docs/architecture/fair_if.rst | 64 +---------------------------------- 1 file changed, 1 insertion(+), 63 deletions(-) diff --git a/docs/architecture/fair_if.rst b/docs/architecture/fair_if.rst index d36a20b..c5e82bd 100644 --- a/docs/architecture/fair_if.rst +++ b/docs/architecture/fair_if.rst @@ -1,68 +1,6 @@ Architecture: FAIR IF ===================== - -FAIR Test Results specification and SHACL shapes: -****** -FTR is the first OWL implementation of the FAIR Reference model described in Deliverables D1.2 and D.1.4. The reference model extends W3C standards such as [DCAT](https://www.w3.org/TR/vocab-dcat-3/), [DQV](https://www.w3.org/TR/vocab-dqv/) and [PROV](https://www.w3.org/TR/prov-o/) to describe test results, test definitions, metrics, benchmarks and their interpretation to generate a FAIR assessment score. - -The code release includes the vocabularies, definitions, specifications in machine-readable format and a set of SHACL validation rules to ensure tests and metrics are defined according to the specification. - -- Persistent identifier: https://w3id.org/ftr/1.0.0 -- Code Repository: https://github.com/OSTrails/FAIR_assessment_output_specification/ -- Version: 1.0.0 -- Release (in GitHub): https://github.com/OSTrails/FAIR_assessment_output_specification/releases/tag/v1.0.0 - - -FAIR Champion -****** -FAIR Champion is a general-purpose FAIR assessment tool intended to be used by all communities and for all digital objects. In this release, FAIR Champion is aware of the 22 FAIR Tests (below), but any test, from any provider, can be registered so long as the test generates a metadata descriptor compliant with the FAIR Reference Model defined by OSTrails. The OpenAPI interface descriptor for this release is only partially complete; the Champion has a variety of functions related to new test registration and benchmark registration that are currently pending decisions by the OSTrails project. - -- Persistent identifier: https://tools.ostrails.eu/champion/sets/ -- Code repository: https://github.com/OSTrails/FAIR-Champion -- Version: Release v1 -- Release: https://github.com/OSTrails/FAIR-Champion/releases/tag/1.0.0 - - -FAIR Champion Tests -****** -A set of 22 tests for FAIRness. These are generic tests for all four FAIR facets – F, A, I, R – and do not represent any specific community or digital object. All tests require the GUID of the digital object’s metadata as input. Output follows the FAIR Test Results schema (https://w3id.org/ftr/1.0.0) - -- Persistent identifier: https://tests.ostrails.eu/tests -- Code repository: https://github.com/OSTrails/FAIR-Core-Tests -- Version: Release v1 -- Release: https://github.com/OSTrails/FAIR-Core-Tests/releases/tag/1.0.0 - - -FOOPS! Test and metric catalogue -****** -The Ontology Pitfall Scanner for FAIR is a FAIR assessment tool for vocabularies and ontologies. In this release, FOOPS! has been adapted to comply with the FTR specification. A catalog of test descriptions has been made available in https://w3id.org/foops/catalogue. The release contains the source code of the tools, as well as the machine-readable and human-readable documentation of all tests, metrics and benchmarks associated with the tool. - -- Persistent identifier: https://w3id.org/foops/catalogue -- Zenodo link (latest release): https://doi.org/10.5281/zenodo.14767999 -- Code repository: https://github.com/oeg-upm/fair_ontologies -- Version: 0.2.0 -- Release: https://github.com/oeg-upm/fair_ontologies/releases/tag/v0.2.0 - - -FAIR Data Point: -****** -The FAIR Data Point software is maintained by a third party (the “FAIRDataTeam”). In OSTrails we utilize the FAIR Data Point (FDP) in its configuration as an “index”, using the 16.x releases of the software suite in DockerHub. FDP Index is the first implementation of a test registry and will include many of the descriptions from the FAIR Champion and FOOPS! - -- Identifier: https://tools.ostrails.eu/fdp-index/ -- Code repository: https://github.com/FAIRDataTeam -- Version: Docker Image version 16.x -- Release: N/A - - -FAIR Data Point Index Proxy: -****** -An early prototype of a “proxy” service that allows native DCAT records to be registered in a FAIR Data Point Index. - -- Identifier: https://tools.ostrails.eu/fdp-index-proxy -- Zenodo link (latest release) -- Code repository: https://github.com/OSTrails/FDP-Index-Proxy -- Version: Release v1.0.0 -- Release: https://github.com/OSTrails/FDP-Index-Proxy/releases/tag/v1.0.0 +*To be specified* \ No newline at end of file