Skip to content

crs4/rocrate-validator

Repository files navigation

rocrate-validator

Testing Pipeline Status Release Pipeline Status PyPI - Version License

A Python package to validate RO-Crates.

Note: this software is still work in progress. Feel free to try it out, report positive and negative feedback. Do send a note (e.g., by opening an Issue) before starting to develop patches you would like to contribute. The implementation of validation code for additional RO-Crate profiles would be particularly welcome.

Installation

You can install the package using pip or poetry. The following instructions assume you have Python 3.8 or later installed.

It’s recommended to create a virtual environment before installing the package to avoid dependency conflicts. You can create one using the following command:

python3 -m venv .venv

Then, activate the virtual environment:

  • On Unix or macOS:
source .venv/bin/activate
  • On Windows (Command Prompt):
.venv\Scripts\activate
  • On Windows (PowerShell):
.venv\Scripts\Activate.ps1

1. Using pip (from PyPI)

You can install the package using pip:

pip install roc-validator

2. Using poetry (from source)

Clone the repository:

git clone https://github.com/kikkomep/rocrate-validator.git

Navigate to the project directory:

cd rocrate-validator

Ensure you have Poetry installed. If not, follow the instructions here. Then, install the package using poetry:

poetry install

CLI-based Validation

After installation, use the rocrate-validator command to validate RO-Crates. You can run this in a virtual activated environment (if created in the optional step above) or without a virtual environment if none was created.

1. Using the installed package

Run the validator using the following command:

rocrate-validator validate <path_to_rocrate>

where <path_to_rocrate> is the path to the RO-Crate you want to validate.

Type rocrate-validator --help for more information.

2. Using poetry

Run the validator using the following command:

poetry run rocrate-validator validate <path_to_rocrate>

where <path_to_rocrate> is the path to the RO-Crate you want to validate.

Type rocrate-validator --help for more information.

Programmatic Validation

You can also integrate the package programmatically in your Python code. Here's an example:

# Import the `services` and `models` module from the rocrate_validator package
from rocrate_validator import services, models

# Create an instance of `ValidationSettings` class to configure the validation
settings = services.ValidationSettings(
    # Set the path to the RO-Crate root directory
    rocrate_uri='/path/to/ro-crate',
    # Set the identifier of the RO-Crate profile to use for validation. 
    # If not set, the system will attempt to automatically determine the appropriate validation profile.
    profile_identifier='ro-crate-1.1',
    # Set the requirement level for the validation
    requirement_severity=models.Severity.REQUIRED,
)

# Call the validation service with the settings
result = services.validate(settings)

# Check if the validation was successful
if not result.has_issues():
    print("RO-Crate is valid!")
else:
    print("RO-Crate is invalid!")
    # Explore the issues
    for issue in result.get_issues():
        # Every issue object has a reference to the check that failed, the severity of the issue, and a message describing the issue.
        print(f"Detected issue of severity {issue.severity.name} with check \"{issue.check.identifier}\": {issue.message}")

... that leads to the following output:

RO-Crate is invalid!
Detected issue of severity REQUIRED with check "ro-crate-1.1:root_entity_exists: The RO-Crate must contain a root entity.

Running the tests

To run the tests, use the following command:

poetry run pytest

License

This project is licensed under the terms of the Apache License 2.0. See the LICENSE file for details.

Acknowledgements

This work has been partially funded by the following sources:

  • the BY-COVID project (HORIZON Europe grant agreement number 101046203);
  • the LIFEMap project, funded by the Italian Ministry of Health (Piano Operative Salute, Trajectory 3).

Co-funded by the EU