RO-Crate Profile Crate Creator
Polyglot library for creation of RO-Crate Profile Crates according to the official documentation, and based on the examples of profile run crate and workflow crate.
| Version | Downloads |
|---|---|
Install
.NET
#r "nuget: ROCratePCC"
<PackageReference Include="ROCratePCC" Version="1.1.0" />
JavaScript
npm i @nfdi4plants/rocratepcc
Python
pip install rocratepcc
Documentation
Python
from rocratepcc import *
# List all types which are used in this profile
types = [
UsedType(iri = "https://schema.org/CreativeWork", name = "CreativeWork"),
UsedType(iri = "http://www.w3.org/ns/dx/prof/Profile", name = "Profile"),
]
# List all authors of this profile
authors = [
Author(orcid = "0000-0002-5526-71389", name = "Florian Wetzels"),
Author(orcid = "0000-0003-1945-6342", name = "Heinrich Lukas Weil"),
]
# Version of the profile (semver if possible)
version = "1.0.0-draft.2"
# Identifier of the root data entity of the profile, if url not applicable then use "./"
id = f"https://github.com/nfdi4plants/isa-ro-crate-profile/tree/{version}/profile"
# Name of the profile
name = "ISA RO-Crate Profile"
# Description of the profile
description = "An RO-Crate profile for representing ISA data in Research Object Crates (RO-Crates). This profile defines how to represent ISA Investigation, Study, and Assay data using RO-Crate metadata."
# License by which the profile is published
license = License(iri = "https://mit-license.org/", name = "MIT License")
# List of the textual resources we use as specifications for this profile
specifications = [
TextualResource(
name = "ISA RO-Crate Profile description",
file_path = "isa_ro_crate.md",
encoding_format = "text/markdown",
root_data_entity_id = id
)
]
# List of all the resource descriptors. Here, only the specification is given. Other possible types
resourceDescriptors = [
Specification(specifications)
# Example()
# Guidance()
# Constraint()
]
# The root data entity of the profile
rootEntity = RootDataEntity(
id = id,
name = name,
description = description,
license = license,
used_types = types,
resource_descriptors = resourceDescriptors,
authors = authors
)
# Profile entity
profile = Profile(
rootEntity,
license = license
)
# Convert the profile to a JSON-LD string
string = profile.ToROCrateJsonString(spaces = 2)
# Write the string to a file "ro-crate-metadata.json"
with open("ro-crate-metadata.json", "w", encoding="utf-8") as f:
f.write(string)
resulting in the following ro-crate-metadata.json:
{
"@context": "https://w3id.org/ro/crate/1.2-DRAFT/context",
"@graph": [
{
"@id": "https://mit-license.org/",
"@type": "CreativeWork",
"name": "MIT License"
},
{
"@id": "https://orcid.org/0000-0002-5526-71389",
"@type": "Person",
"name": "Florian Wetzels"
},
{
"@id": "https://orcid.org/0000-0003-1945-6342",
"@type": "Person",
"name": "Heinrich Lukas Weil"
},
{
"@id": "isa_ro_crate.md",
"@type": "File",
"name": "ISA RO-Crate Profile description",
"encodingFormat": "text/markdown",
"about": {
"@id": "https://github.com/nfdi4plants/isa-ro-crate-profile/tree/1.0.0-draft.2/profile"
}
},
{
"@id": "https://schema.org/CreativeWork",
"@type": "DefinedTerm",
"name": "CreativeWork"
},
{
"@id": "http://www.w3.org/ns/dx/prof/Profile",
"@type": "DefinedTerm",
"name": "Profile"
},
{
"@id": "#hasSpecification",
"@type": "ResourceDescriptor",
"hasRole": {
"@id": "http://www.w3.org/ns/dx/prof/role/specification"
},
"hasArtifact": {
"@id": "isa_ro_crate.md"
}
},
{
"@id": "https://github.com/nfdi4plants/isa-ro-crate-profile/tree/1.0.0-draft.2/profile",
"@type": [
"Dataset",
"Profile"
],
"license": {
"@id": "https://mit-license.org/"
},
"name": "ISA RO-Crate Profile",
"description": "An RO-Crate profile for representing ISA data in Research Object Crates (RO-Crates). This profile defines how to represent ISA Investigation, Study, and Assay data using RO-Crate metadata.",
"author": [
{
"@id": "https://orcid.org/0000-0002-5526-71389"
},
{
"@id": "https://orcid.org/0000-0003-1945-6342"
}
],
"hasPart": [
{
"@id": "isa_ro_crate.md"
},
{
"@id": "https://schema.org/CreativeWork"
},
{
"@id": "http://www.w3.org/ns/dx/prof/Profile"
}
],
"hasResource": {
"@id": "#hasSpecification"
}
},
{
"@id": "ro-crate-metadata.json",
"@type": "CreativeWork",
"about": {
"@id": "https://github.com/nfdi4plants/isa-ro-crate-profile/tree/1.0.0-draft.2/profile"
},
"license": {
"@id": "https://mit-license.org/"
},
"conformsTo": "https://w3id.org/ro/crate/1.2"
}
]
}
FSharp
open ROCratePCC
let types : ResizeArray<UsedType> = ResizeArray [
UsedType(iri = "https://schema.org/CreativeWork", name = "CreativeWork");
UsedType(iri = "http://www.w3.org/ns/dx/prof/Profile", name = "Profile");
]
let authors : ResizeArray<Author> = ResizeArray [
Author(orcid = "0000-0002-5526-71389", name = "Florian Wetzels");
Author(orcid = "0000-0003-1945-6342", name = "Heinrich Lukas Weil");
]
let version = "1.0.0-draft.2"
let id = $"https://github.com/nfdi4plants/isa-ro-crate-profile/tree/{version}/profile"
let name = "ISA RO-Crate Profile"
let description = "An RO-Crate profile for representing ISA data in Research Object Crates (RO-Crates). This profile defines how to represent ISA Investigation, Study, and Assay data using RO-Crate metadata."
let license = License(iri = "https://mit-license.org/", name = "MIT License")
let specifications = ResizeArray[
TextualResource(
name = "ISA RO-Crate Profile description",
filePath = "isa_ro_crate.md",
encodingFormat = "text/markdown",
rootDataEntityId = id
)
]
let resourceDescriptors = ResizeArray [
Specification(specifications) :> ResourceDescriptor
]
let rootEntity =
RootDataEntity(
id = id,
name = name,
description = description,
license = license,
usedTypes = types,
resourceDescriptors = resourceDescriptors,
authors = ResizeArray authors
)
let profile =
Profile(
rootEntity,
license = license
)
let string = profile.ToROCrateJsonString(spaces = 2)
System.IO.File.WriteAllText("profile/ro-crate-metadata.json", string)
Development
Requirements
- nodejs and npm
- verify with
node --version(Tested with v18.16.1) - verify with
npm --version(Tested with v9.2.0)
- verify with
- .NET SDK
- verify with
dotnet --version(Tested with 7.0.306)
- verify with
- Python
- verify with
py --version(Tested with 3.12.2, known to work only for >=3.11)
- verify with
Local Setup
On windows you can use the setup.cmd to run the following steps automatically!
-
Setup dotnet tools
dotnet tool restore -
Install NPM dependencies
npm install -
Setup python environment
py -m venv .venv -
Install uv and dependencies
.\.venv\Scripts\python.exe -m pip install -U pip setuptools.\.venv\Scripts\python.exe -m pip install uv.\.venv\Scripts\python.exe -m uv pip install -r pyproject.toml --group dev
Verify correct setup with ./build.cmd runtests ✨
Metadata
Release files for rocratepcc 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rocratepcc-0.1.1.tar.gz | 565.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rocratepcc-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / rocratepcc-0.1.1.tar.gz
| Download URL | rocratepcc-0.1.1.tar.gz |
|---|---|
| Size | 565.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8799711e91e00ad965a8373ed3d708a7db8a7714abcbe6ee4771e7979f654fe5
|
|
BLAKE2b-256 checksum How to use checksums |
27c7f3b1245db0036e092bc32e9ce52a1c56035e590f03719e890e8683eaea54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.2
|
Release files / rocratepcc-0.1.1-py3-none-any.whl
| Download URL | rocratepcc-0.1.1-py3-none-any.whl |
|---|---|
| Size | 862.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
db974e51c0017515267d4576ea6570f9f9428a56bbd116e3b33565d53f20fe20
|
|
BLAKE2b-256 checksum How to use checksums |
5b0dec5f9c6efe3c4f548bb556abb544bd16259177f8c3cc85fc86a69c796456
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.2
|