Install library if not present¶
pip install rohub pillow
Requirement already satisfied: rohub in /opt/conda/lib/python3.12/site-packages (1.2.0)
Requirement already satisfied: pillow in /opt/conda/lib/python3.12/site-packages (11.3.0)
Requirement already satisfied: requests in /opt/conda/lib/python3.12/site-packages (from rohub) (2.32.3)
Requirement already satisfied: pandas in /opt/conda/lib/python3.12/site-packages (from rohub) (2.2.3)
Requirement already satisfied: numpy>=1.26.0 in /opt/conda/lib/python3.12/site-packages (from pandas->rohub) (2.2.4)
Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.12/site-packages (from pandas->rohub) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.12/site-packages (from pandas->rohub) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /opt/conda/lib/python3.12/site-packages (from pandas->rohub) (2025.2)
Requirement already satisfied: charset_normalizer<4,>=2 in /opt/conda/lib/python3.12/site-packages (from requests->rohub) (3.4.1)
Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.12/site-packages (from requests->rohub) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/conda/lib/python3.12/site-packages (from requests->rohub) (2.4.0)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.12/site-packages (from requests->rohub) (2025.1.31)
Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas->rohub) (1.17.0)
Note: you may need to restart the kernel to use updated packages.
Import library¶
from pathlib import Path
import json
import rohub
Authenticate¶
- you need to create ~/.config/rohub_credentials.json in your HOME directory with:
{
"rohub": {
"username": "your_rohub_username",
"password": "your_rohub_password"
}
}
- your_rohub_username: contains your rohub username
- your_rohub_password: add your password in this file
cred_path = Path.home() / ".config" / "rohub_credentials.json"
try:
with cred_path.open("r", encoding="utf-8") as f:
data = json.load(f)
rohub_user = data["rohub"]["username"]
rohub_pwd = data["rohub"]["password"]
except FileNotFoundError:
raise SystemExit(f"Credentials file not found: {cred_path}")
except KeyError:
raise SystemExit("Expected keys not found in credentials file.")
except json.JSONDecodeError:
raise SystemExit("Credentials file is not valid JSON.")
rohub.login(username=rohub_user, password=rohub_pwd)
Logged successfully as annef@simula.no.
RO methods¶
Whenever we create a new Research Object (RO), we need to choose a research area from the list of available research areas and select a type of Research Object, depending on what we will add in it. In this notebook, we will create an Executable Research Object in Environmental research. Then we will add this jupyter notebook in our executable RO to faciliate the reuse of our work. Before doing so, let’s list the available research areas and the different types of Research Objects.
rohub.list_valid_research_areas()
['Acoustics',
'Aerodynamics',
'Agronomy',
'Analytical chemistry',
'Applied sciences',
'Astronautics',
'Astronomy',
'Atom',
'Biochemistry',
'Biology',
'Biometrics',
'Botany',
'Cartography',
'Chemistry',
'Climatology',
'Cosmology',
'Cultural geography',
'Cybernetics',
'Cytology',
'Earth observation',
'Earth sciences',
'Ecology',
'Economic geography',
'Electrochemistry',
'Electronics',
'Electrotechnology',
'Embryo and foetus',
'Environmental research',
'Fundamental particle',
'Genetics',
'Geochemistry',
'Geographical information system',
'Geography',
'Geology',
'Geomorphology',
'Geophysics',
'Hazard science',
'Histology',
'Historical geography',
'Human geography',
'Hydrogeology',
'Hydrology',
'Industrial chemistry',
'Information science',
'Ionising radiation',
'Laser physics',
'Life sciences',
'Mathematics',
'Medical science',
'Meteorology',
'Metrology',
'Microorganism',
'Mineralogy',
'Neurobiology',
'Nuclear physics',
'Oceanography',
'Optics',
'Parasitology',
'Petrology',
'Pharmacology',
'Pharmacy',
'Photochemistry',
'Photographic industry',
'Physical sciences',
'Plasma physics',
'Political geography',
'Radiobiology',
'Regional geography',
'Sedimentology',
'Seismology',
'Social sciences',
'Soil analysis',
'Soil chemistry',
'Soil science',
'Soil type',
'Space science',
'Spectrometry',
'Stem cell',
'Thermodynamics',
'Volcanology',
'Zoology']
rohub.list_valid_ros_types()
['Basic Research Object',
'Bibliography-centric Research Object',
'Data-centric Research Object',
'Executable Research Object',
'Process-centric Research Object',
'Service-centric Research Object',
'Software-centric Research Object',
'Workflow-centric Research Object']
Create new RO¶
ro_title="FAIR2Adapt RO-Crate with Jupyter Notebook"
ro_research_areas=["Environmental research"]
ro_description="This Research Object demonstrate how to create a new RO in ROHub from Python"
ro_ros_type="Executable Research Object"
ro = rohub.ros_create(title=ro_title, research_areas=ro_research_areas, description=ro_description, ros_type=ro_ros_type, use_template=True)
Research Object was successfully created with id = f0097019-4d02-4c5d-9556-6c564813b6ab
#ro_id = "b3aa0332-2954-486b-b95f-33d84af14232"
#ro = rohub.ros_load(identifier=ro_id)
When successfuly created rohub.ros_create
method returns the id of your newly created RO.
Research Object was successfully created with id = XXXXX
You can use this RO id to access and share your RO:
https://w3id.org/ro-id/XXXXX
You can also see the newly created RO in your list of ROs. Go to https://

Check basic metadata¶
Let’s check the metadata online (similar to what we see on the ROHub web interface).
ro.show_metadata()
{'identifier': 'f0097019-4d02-4c5d-9556-6c564813b6ab',
'shared_link': 'https://w3id.org/ro-id/f0097019-4d02-4c5d-9556-6c564813b6ab',
'title': 'FAIR2Adapt RO-Crate with Jupyter Notebook',
'description': 'This Research Object demonstrate how to create a new RO in ROHub from Python',
'parent_ro': None,
'status': 'LIVE',
'access_mode': 'PUBLIC',
'type': 'Executable Research Object',
'template': 'Executable Research Object folders structure',
'created': '2025-10-07T20:15:03.373973Z',
'creator': 'annef@simula.no',
'modified': '2025-10-07T20:15:03.626264Z',
'modificator': 'annef@simula.no',
'importer': None,
'research_areas': ['Environmental research'],
'owner': 'annef@simula.no',
'editors': [],
'readers': [],
'rating': '0.00',
'number_of_ratings': 0,
'number_of_likes': 0,
'number_of_dislikes': 0,
'completeness': 0.0,
'size': 0,
'creation_mode': 'MANUAL',
'doi': None,
'resource_storage': 'DEFAULT',
'api_link': 'https://api.rohub.org/api/ros/f0097019-4d02-4c5d-9556-6c564813b6ab/'}
Add/modify basic metadata¶
Let’s change the description of the Research Object and add another editor to give write access to your RO. We want the description to contain information on the FAIR2Adapt Case Study we are working on.
ro.description="This Research Object is an example for FAIR2Adapt Case Study 2"
#ro.editors = "annef@simula.no torill.hamre@nersc.no"
ro.update()
{'identifier': 'f0097019-4d02-4c5d-9556-6c564813b6ab',
'shared_link': 'https://w3id.org/ro-id/f0097019-4d02-4c5d-9556-6c564813b6ab',
'title': 'FAIR2Adapt RO-Crate with Jupyter Notebook',
'description': 'This Research Object is an example for FAIR2Adapt Case Study 2',
'parent_ro': None,
'status': 'LIVE',
'access_mode': 'PUBLIC',
'type': 'Executable Research Object',
'template': 'Executable Research Object folders structure',
'created': '2025-10-07T20:15:03.373973Z',
'creator': 'annef@simula.no',
'modified': '2025-10-07T20:15:06.306481Z',
'modificator': 'annef@simula.no',
'importer': None,
'research_areas': ['Environmental research'],
'owner': 'annef@simula.no',
'editors': [],
'readers': [],
'rating': '0.00',
'number_of_ratings': 0,
'number_of_likes': 0,
'number_of_dislikes': 0,
'completeness': 0.0,
'size': 0,
'creation_mode': 'MANUAL',
'doi': None,
'resource_storage': 'DEFAULT',
'api_link': 'https://api.rohub.org/api/ros/f0097019-4d02-4c5d-9556-6c564813b6ab/'}
List RO Folders¶
myfolders = ro.list_folders()
myfolders
Aggregate resource (internal)¶
Let’s first create a simple image that we will add in our RO. Feel free to take another image that illustrates your case study.
from PIL import Image, ImageDraw
# Create a blank image
img = Image.new("RGB", (200, 200), color="white")
# Create a drawing object
draw = ImageDraw.Draw(img)
# Draw a red rectangle
draw.rectangle([50, 50, 150, 150], fill="red")
# Draw a blue ellipse
draw.ellipse([70, 70, 130, 130], fill="blue")
# Save
img.save("my_drawing.png")
resi_res_type="Sketch"
resi_file_path="my_drawing.png"
resi_title="Image to illustrate my case study"
resi_folder="input"
my_res_int0=ro.add_internal_resource(res_type=resi_res_type,file_path=resi_file_path, title=resi_title, folder=resi_folder)
Resource was successfully created with id = 7d1181ea-49eb-4b62-9162-a0baa355e5fe
Aggregate resouce (external)¶
- Add an external image (not as a sketch but as an Image)
- Add a Jupyter Notebook
rese_res_type="Image"
rese_file_url="https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/static/flood_in_saarland_with_jqgis.png"
rese_title="flood in saarland with JupyterGIS"
rese_description="Example for FAIR2Adapt training on RO-Crate and ROHub"
ro.add_external_resource(res_type=rese_res_type, input_url=rese_file_url, title=rese_title, description= rese_description, folder="output")
Resource was successfully created with id = b62d02e1-a334-48c0-b80d-4da8f301465b
Resource(identifier=b62d02e1-a334-48c0-b80d-4da8f301465b, post_request=False)
Let’s add the corresponding Jupyter Notebook
rese_res_type="Jupyter Notebook"
rese_file_url="https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/notebooks/Flood_protection_line_Saarland.ipynb"
rese_title="Flood analysis with JupterGIS"
rese_description="Visualizing Generalized Flood Areas for HQ100 Event and relate to an existing flooding event."
my_res_ext0=ro.add_external_resource(res_type=rese_res_type, input_url=rese_file_url, title=rese_title, description=rese_description, folder="tool")
Resource was successfully created with id = 9d63f7b6-d82c-415d-a94c-a8662a3ef8c5
List RO resources¶
ro.list_resources()
Add geolocation¶
- You can add a geojson ld file or directly its content here
ro.add_geolocation(body_specification_json="/home/jovyan/ROHub-API/files/EuropeBOX.geojson")
ro.add_geolocation(body_specification_json="/home/jovyan/ROHub-API/files/fra.geo-ld.json")
ro.add_geolocation(body_specification_json="/home/jovyan/ROHub-API/files/geojson-test-simple_mp.json")
- In the example below, we direcly add the content (one single location)
geojson_bbox = {
"@context": {
"geojson": "https://purl.org/geojson/vocab#"
},
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[
[6.31, 49.1], # SW corner
[6.31, 49.64], # NW corner
[7.41, 49.64], # NE corner
[7.41, 49.1], # SE corner
[6.31, 49.1] # Close polygon back to SW
]]
}
}
ro.add_geolocation(body_specification_json=geojson_bbox)
{'identifier': '3f694d29-e24a-4309-aa39-b5be63fca039',
'shared_link': 'https://w3id.org/ro-id/f0097019-4d02-4c5d-9556-6c564813b6ab/annotations/3f694d29-e24a-4309-aa39-b5be63fca039',
'name': 'annotations/3f694d29-e24a-4309-aa39-b5be63fca039',
'filename': '.ro/annotations/3f694d29-e24a-4309-aa39-b5be63fca039.ttl',
'relation': False,
'read_only': False,
'target': 'f0097019-4d02-4c5d-9556-6c564813b6ab',
'ro': 'f0097019-4d02-4c5d-9556-6c564813b6ab',
'resources': [],
'created': '2025-10-07T20:15:24.726539+0000',
'creator': 'annef@simula.no',
'modificator': None,
'modified': '2025-10-07T20:15:24.726387+0000',
'is_dmp': True,
'api_link': 'https://api.rohub.org/api/annotations/3f694d29-e24a-4309-aa39-b5be63fca039/'}
Export to RO-crate¶
#ro.export_to_rocrate(filename="my-ro-crate")
ro.export_to_rocrate(filename="my-ro-crate", use_format="zip")
File was successfully downloaded.
Add authors/contributors/publishers/copyrightHolders¶
List users¶
usernames = rohub.users_find(search="Ines")
usernames
agents = [usernames.iloc[0][["orcid_identifier"]].to_dict()]
print(agents)
[{'orcid_identifier': '0000-0002-2104-3187'}]
Add authors/contributors¶
#ro.set_authors(agents=agents)
#ro.set_authors(agents=["dontdoit@lochness.uk"])
#ro.set_contributors(agents=[{"user_id":"rapnonexist_3@hotmail.com",
# "display_name": "Pepito Bato",
# "email":"example3@hotmail.com",
# "orcid_id":"0000-0002-8316-3192",
# "affiliation": "PCSS"}])
List organizations¶
organizations=rohub.organizations_find(search="poznan")
organizations
Add publisher/copyright holder¶
ro.set_publishers(agents=[organizations.loc[0,"organization_id"]])
Agent: https://w3id.org/ro-id/organizations/openaire:pending_org_::e54c9ed8a323c5b26dcc8358a0fbf345 recognized in the system.
[{'identifier': 'c86c4fae-1560-4575-b9f3-026d2a4aa1be',
'username': 'https://w3id.org/ro-id/organizations/openaire:pending_org_::e54c9ed8a323c5b26dcc8358a0fbf345',
'name': 'https://w3id.org/ro-id/organizations/openaire:pending_org_::e54c9ed8a323c5b26dcc8358a0fbf345',
'type': 'Organization',
'order': 0,
'display_name': 'Instytut Chemii Bioorganicznej PAN, Poznanskie Centrum Superkomputerowo-Sieciowe PSNC'}]
ro.set_copyright_holders(agents=[{"org_id":"https://neic.no/",
"display_name": "Nordic e-Infrastructure Collaboration",
"agent_type": "organization",
"ror_identifier":"04jcwf484",
"organization_url": "https://neic.no/"}])
Agent: {'org_id': 'https://neic.no/', 'display_name': 'Nordic e-Infrastructure Collaboration', 'agent_type': 'organization', 'ror_identifier': '04jcwf484', 'organization_url': 'https://neic.no/'} recognized in the system.
[{'identifier': 'fbd9bdcf-4a1d-4ae8-9a90-6b9ec5a3b8b2',
'username': 'https://ror.org/04jcwf484',
'name': 'https://ror.org/04jcwf484',
'type': 'Organization',
'order': 0,
'display_name': 'Nordic e-Infrastructure Collaboration'}]
Add RO license¶
list available pre-defined licenses¶
rohub.list_available_licenses()
['0bsd',
'BSD 3-Clause',
'BSD-3-Clause',
'CEECIND 2021',
'NLOD 2.0',
'aal',
'abstyles',
'acme-cc',
'acme-cc-by',
'adobe-2006',
'adobe-glyph',
'adsl',
'afl-1.1',
'afl-1.2',
'afl-2.0',
'afl-2.1',
'afl-3.0',
'afmparse',
'against-drm',
'agpl-1.0-only',
'agpl-1.0-or-later',
'agpl-3.0-only',
'agpl-3.0-or-later',
'aladdin',
'amdplpa',
'aml',
'ampas',
'antlr-pd',
'antlr-pd-fallback',
'apache-1.0',
'apache-1.1',
'apache-2.0',
'apafml',
'apl-1.0',
'apsl-1.0',
'apsl-1.1',
'apsl-1.2',
'apsl-2.0',
'artistic-1.0',
'artistic-1.0-cl8',
'artistic-1.0-perl',
'artistic-2.0',
'bahyph',
'barr',
'beerware',
'bittorrent-1.0',
'bittorrent-1.1',
'blessing',
'blueoak-1.0.0',
'borceux',
'bsd-1-clause',
'bsd-2-clause',
'bsd-2-clause-patent',
'bsd-2-clause-views',
'bsd-3-clause',
'bsd-3-clause-attribution',
'bsd-3-clause-clear',
'bsd-3-clause-lbnl',
'bsd-3-clause-no-nuclear-license',
'bsd-3-clause-no-nuclear-license-2014',
'bsd-3-clause-no-nuclear-warranty',
'bsd-3-clause-open-mpi',
'bsd-4-clause',
'bsd-4-clause-uc',
'bsd-protection',
'bsd-source-code',
'bsl-1.0',
'busl-1.1',
'bzip2-1.0.5',
'bzip2-1.0.6',
'cal-1.0',
'cal-1.0-combined-work-exception',
'caldera',
'catosl-1.1',
'cc-by-1.0',
'cc-by-2.0',
'cc-by-2.5',
'cc-by-3.0',
'cc-by-3.0-at',
'cc-by-3.0-us',
'cc-by-4.0',
'cc-by-nc-1.0',
'cc-by-nc-2.0',
'cc-by-nc-2.5',
'cc-by-nc-3.0',
'cc-by-nc-4.0',
'cc-by-nc-nd-1.0',
'cc-by-nc-nd-2.0',
'cc-by-nc-nd-2.5',
'cc-by-nc-nd-3.0',
'cc-by-nc-nd-3.0-igo',
'cc-by-nc-nd-4.0',
'cc-by-nc-sa-1.0',
'cc-by-nc-sa-2.0',
'cc-by-nc-sa-2.5',
'cc-by-nc-sa-3.0',
'cc-by-nc-sa-4.0',
'cc-by-nd-1.0',
'cc-by-nd-2.0',
'cc-by-nd-2.5',
'cc-by-nd-3.0',
'cc-by-nd-4.0',
'cc-by-sa-1.0',
'cc-by-sa-2.0',
'cc-by-sa-2.0-uk',
'cc-by-sa-2.5',
'cc-by-sa-3.0',
'cc-by-sa-3.0-at',
'cc-by-sa-4.0',
'cc-pddc',
'cc0-1.0',
'cddl-1.0',
'cddl-1.1',
'cdla-permissive-1.0',
'cdla-sharing-1.0',
'cecill-1.0',
'cecill-1.1',
'cecill-2.0',
'cecill-2.1',
'cecill-b',
'cecill-c',
'cern-ohl-1.1',
'cern-ohl-1.2',
'cern-ohl-p-2.0',
'cern-ohl-s-2.0',
'cern-ohl-w-2.0',
'clartistic',
'cnri-jython',
'cnri-python',
'cnri-python-gpl-compatible',
'condor-1.1',
'copyleft-next-0.3.0',
'copyleft-next-0.3.1',
'cpal-1.0',
'cpl-1.0',
'cpol-1.02',
'crossword',
'crystalstacker',
'cua-opl-1.0',
'cube',
'curl',
'd-fsl-1.0',
'diffmark',
'dli-model-use',
'doc',
'dotseqn',
'dsdp',
'dsl',
'dvipdfm',
'ecl-1.0',
'ecl-2.0',
'efl-1.0',
'efl-2.0',
'egenix',
'entessa',
'epics',
'epl-1.0',
'epl-2.0',
'erlpl-1.1',
'etalab-2.0',
'eudatagrid',
'eupl-1.0',
'eupl-1.1',
'eupl-1.2',
'eurofound',
'eurosym',
'fair',
'frameworx-1.0',
'freeimage',
'fsfap',
'fsful',
'fsfullr',
'ftl',
'geo-no-fee-unrestricted',
'geogratis',
'gfdl-1.1-invariants-only',
'gfdl-1.1-invariants-or-later',
'gfdl-1.1-no-invariants-only',
'gfdl-1.1-no-invariants-or-later',
'gfdl-1.1-only',
'gfdl-1.1-or-later',
'gfdl-1.2-invariants-only',
'gfdl-1.2-invariants-or-later',
'gfdl-1.2-no-invariants-only',
'gfdl-1.2-no-invariants-or-later',
'gfdl-1.2-only',
'gfdl-1.2-or-later',
'gfdl-1.3-invariants-only',
'gfdl-1.3-invariants-or-later',
'gfdl-1.3-no-invariants-only',
'gfdl-1.3-no-invariants-or-later',
'gfdl-1.3-only',
'gfdl-1.3-or-later',
'giftware',
'gl2ps',
'glide',
'glulxe',
'glwtpl',
'gnuplot',
'gpl-1.0-only',
'gpl-1.0-or-later',
'gpl-2.0-only',
'gpl-2.0-or-later',
'gpl-3.0-only',
'gpl-3.0-or-later',
'gsoap-1.3b',
'haskellreport',
'hesa-withrights',
'hippocratic-2.1',
'hpnd',
'hpnd-sell-variant',
'htmltidy',
'https://www.youtube.com/static?template=terms',
'ibm-pibs',
'icu',
'ijg',
'imagemagick',
'imatix',
'imlib2',
'info-zip',
'intel',
'intel-acpi',
'interbase-1.0',
'ipa',
'ipl-1.0',
'isc',
'jabber-osl',
'jasper-2.0',
'jpnic',
'json',
'lal-1.2',
'lal-1.3',
'latex2e',
'leptonica',
'lgpl-2.0-only',
'lgpl-2.0-or-later',
'lgpl-2.1-only',
'lgpl-2.1-or-later',
'lgpl-3.0-only',
'lgpl-3.0-or-later',
'lgpllr',
'libpng',
'libpng-2.0',
'libselinux-1.0',
'libtiff',
'liliq-p-1.1',
'liliq-r-1.1',
'liliq-rplus-1.1',
'linux-openib',
'localauth-withrights',
'lpl-1.0',
'lpl-1.02',
'lppl-1.0',
'lppl-1.1',
'lppl-1.2',
'lppl-1.3a',
'lppl-1.3c',
'lucent-plan9',
'makeindex',
'met-office-cp',
'miros',
'mit',
'mit-0',
'mit-advertising',
'mit-cmu',
'mit-enna',
'mit-feh',
'mit-open-group',
'mitnfa',
'mitre',
'motosoto',
'mpich2',
'mpl-1.0',
'mpl-1.1',
'mpl-2.0',
'mpl-2.0-no-copyleft-exception',
'ms-pl',
'ms-rl',
'mtll',
'mulanpsl-1.0',
'mulanpsl-2.0',
'multics',
'mup',
'my-example-license1',
'nasa-1.3',
'naumen',
'nbpl-1.0',
'ncgl-uk-2.0',
'ncsa',
'net-snmp',
'netcdf',
'newsletr',
'ngpl',
'nist-pd',
'nist-pd-fallback',
'nlod-1.0',
'nlpl',
'nokia',
'nosl',
'notspecified',
'noweb',
'npl-1.0',
'npl-1.1',
'nposl-3.0',
'nrl',
'ntp',
'ntp-0',
'o-uda-1.0',
'occt-pl',
'oclc-2.0',
'odbl-1.0',
'odc-by-1.0',
'ofl-1.0',
'ofl-1.0-no-rfn',
'ofl-1.0-rfn',
'ofl-1.1',
'ofl-1.1-no-rfn',
'ofl-1.1-rfn',
'ogc-1.0',
'ogl-canada-2.0',
'ogl-uk-1.0',
'ogl-uk-2.0',
'ogl-uk-3.0',
'ogtsl',
'oldap-1.1',
'oldap-1.2',
'oldap-1.3',
'oldap-1.4',
'oldap-2.0',
'oldap-2.0.1',
'oldap-2.1',
'oldap-2.2',
'oldap-2.2.1',
'oldap-2.2.2',
'oldap-2.3',
'oldap-2.4',
'oldap-2.5',
'oldap-2.6',
'oldap-2.7',
'oldap-2.8',
'oml',
'openssl',
'opl-1.0',
'oset-pl-2.1',
'osl-1.0',
'osl-1.1',
'osl-2.0',
'osl-2.1',
'osl-3.0',
'other-at',
'other-closed',
'other-nc',
'other-open',
'other-pd',
'parity-6.0.0',
'parity-7.0.0',
'pddl-1.0',
'php-3.0',
'php-3.01',
'plexus',
'polyform-noncommercial-1.0.0',
'polyform-small-business-1.0.0',
'postgresql',
'psf-2.0',
'psfrag',
'psutils',
'python-2.0',
'qhull',
'qpl-1.0',
'qtpl',
'rdisc',
'rhecos-1.1',
'rpl-1.1',
'rpl-1.5',
'rpsl-1.0',
'rsa-md',
'rscpl',
'ruby',
'sax-pd',
'saxpath',
'scea',
'sendmail',
'sendmail-8.23',
'sgi-b-1.0',
'sgi-b-1.1',
'sgi-b-2.0',
'shl-0.5',
'shl-0.51',
'simpl-2.0',
'sissl',
'sissl-1.2',
'sleepycat',
'smlnj',
'smppl',
'snia',
'spencer-86',
'spencer-94',
'spencer-99',
'spl-1.0',
'ssh-openssh',
'ssh-short',
'sspl-1.0',
'sugarcrm-1.1.3',
'swl',
'tapr-ohl-1.0',
'tcl',
'tcp-wrappers',
'tmate',
'torque-1.1',
'tosl',
'tu-berlin-1.0',
'tu-berlin-2.0',
'ucl-1.0',
'ukclickusepsi',
'ukcrown',
'ukcrown-withrights',
'ukpsi',
'unicode-dfs-2015',
'unicode-dfs-2016',
'unicode-tou',
'unlicense',
'upl-1.0',
'user-jsim',
'vim',
'vostrom',
'vsl-1.0',
'w3c',
'w3c-19980720',
'w3c-20150513',
'watcom-1.0',
'wsuipa',
'wtfpl',
'wxwindows',
'x11',
'xerox',
'xfree86-1.1',
'xinetd',
'xnet',
'xpp',
'xskat',
'ypl-1.0',
'ypl-1.1',
'zed',
'zend-2.0',
'zenodo-freetoread-1.0',
'zimbra-1.3',
'zimbra-1.4',
'zlib',
'zlib-acknowledgement',
'zpl-1.1',
'zpl-2.0',
'zpl-2.1']
rohub.list_valid_license_status()
['active', 'retired']
rohub.list_custom_licenses()
[{'identifier': 'acme-cc',
'title': 'ACME Inc. Commercial License',
'description': None,
'status': 'active',
'url': 'http://www.acme.org/licence-commercial',
'created': '2021-12-09T13:54:10.927006Z',
'updated': None,
'creator': 'rpalma@man.poznan.pl',
'api_link': 'https://api.rohub.org/api/custom-licenses/acme-cc/'},
{'identifier': 'acme-cc-by',
'title': 'ACME Inc. Commercial License Attribution',
'description': None,
'status': 'active',
'url': 'http://www.acme.org/licence-commercial-attribution',
'created': '2022-02-17T20:23:57.673731Z',
'updated': None,
'creator': 'rpalma@man.poznan.pl',
'api_link': 'https://api.rohub.org/api/custom-licenses/acme-cc-by/'},
{'identifier': 'BSD 3-Clause',
'title': 'Berkeley Source Distribution 3-Clause "New" or "Revised" License',
'description': 'Note: This license has also been called the “New BSD License” or “Modified BSD License”. See also the 2-clause BSD License.',
'status': 'active',
'url': 'https://opensource.org/license/bsd-3-clause/',
'created': '2023-03-18T16:10:57.990937Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': 'https://api.rohub.org/api/custom-licenses/BSD%203-Clause/'},
{'identifier': 'BSD-3-Clause',
'title': 'BSD 3-Clause "New" or "Revised" License',
'description': 'This license has also been called the “New BSD License” or “Modified BSD License”.',
'status': 'active',
'url': 'https://opensource.org/license/bsd-3-clause/',
'created': '2023-03-18T19:33:25.739188Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': 'https://api.rohub.org/api/custom-licenses/BSD-3-Clause/'},
{'identifier': 'CEECIND 2021',
'title': 'Individual CEEC',
'description': None,
'status': 'active',
'url': 'https://www.fct.pt/index.phtml.en',
'created': '2022-12-01T23:39:15.467361Z',
'updated': None,
'creator': 'bioluis@ciimar.up.pt',
'api_link': 'https://api.rohub.org/api/custom-licenses/CEECIND%202021/'},
{'identifier': 'https://www.youtube.com/static?template=terms',
'title': 'Standard Youtube License',
'description': None,
'status': 'active',
'url': 'https://www.youtube.com/static?template=terms',
'created': '2025-02-17T19:27:39.810277Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': None},
{'identifier': 'my-example-license1',
'title': 'My example license',
'description': 'this is an example license',
'status': 'active',
'url': 'http://myexample.org/license',
'created': '2021-11-08T16:18:29.048012Z',
'updated': None,
'creator': 'rpalma@man.poznan.pl',
'api_link': 'https://api.rohub.org/api/custom-licenses/my-example-license1/'},
{'identifier': 'NLOD 2.0',
'title': 'Norwegian license for public data (NLOD) 2.0',
'description': 'This license is about the right to use information. It is not about access to information or delivery conditions.',
'status': 'active',
'url': 'https://data.norge.no/nlod/no/2.0',
'created': '2023-03-18T16:08:32.896129Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': None}]
Add RO Funding information¶
list predefined funders¶
rohub.zenodo_list_funders(query="European")
set funding¶
grant_id="101188256"
grant_Name="FAIR2Adapt"
grant_title="FAIR to Adapt to Climate Change"
funder_name="European Commission"
funder_doi="10.3030/101188256"
ro.add_funding(grant_identifier=grant_id, grant_name=grant_Name, funder_name=funder_name,
grant_title=grant_title, funder_doi=funder_doi)
'47f03df0-9812-4c43-a645-88282136805f'
RO Evolution¶
Create simple snapshot/archive¶
- Uncomment the lines below if you really want to create a snapshot.
- We usually recommend to create snapshot of real scientific work, corresponding for instance at a milestone in your work.
# snapshot_id=ro.snapshot()
# snapshot_id
Create snapshot/archive, optionally assign DOI + publish it in Zenodo¶
snapshot_title="Case Study RO - published v1"
# Uncomment the line below to publish in zenodo and get a DOI
# snapshot_id_pub=ro.snapshot(title=snapshot_title, create_doi=True, publication_services=["Zenodo"])
#snapshot_id_pub
Load published snapshot/archive and list zenodo id/doi¶
#snapshot_id_pub = '57cf76e1-2179-4650-b48b-b5990dca86c1'
#published_ro = rohub.ros_load(identifier=snapshot_id_pub)
#published_ro.list_publications()
Fork existing RO to reuse it for my own purposes¶
#fork_id=ro.fork(title="Forked RO")
#forked_ro = rohub.ros_load(identifier=fork_id)
#forked_ro.show_metadata()
#%time fork_id=ro.fork()
Resource methods¶
Load resource¶
results=ro.list_resources()
results
my_res1=rohub.resource_load(identifier=results.loc[1,"identifier"])
Resource was successfully loaded with id = b62d02e1-a334-48c0-b80d-4da8f301465b
show basic metadata¶
my_res1.show_metadata()
{'identifier': 'b62d02e1-a334-48c0-b80d-4da8f301465b',
'type': 'Image',
'source': 'external',
'title': 'flood in saarland with JupyterGIS',
'description': 'Example for FAIR2Adapt training on RO-Crate and ROHub',
'url': 'https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/static/flood_in_saarland_with_jqgis.png',
'folder': 'output',
'path': 'https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/static/flood_in_saarland_with_jqgis.png',
'size': None,
'creator': 'annef@simula.no',
'created_on': '2025-10-07T20:15:19.532310+0000',
'modified_on': '2025-10-07T20:15:20.177021+0000',
'download_url': 'https://api.rohub.org/api/resources/b62d02e1-a334-48c0-b80d-4da8f301465b/download/'}
Add/modify metadata¶
my_res1.title="Image - updated"
my_res1.description="This resource has this description"
my_res1.update_metadata()
{'title': 'Image - updated',
'folder': '2aaa0b43-d099-4fe1-b5cc-1e1e042bd692',
'description': 'This resource has this description',
'type': 'Image'}
Modify content (internal resource)¶
import urllib.request
url = "https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/static/logo.png"
urllib.request.urlretrieve(url, "fair2adapt-logo.png")
print("Downloaded to logo.png")
resi_file_path="fair2adapt-logo.png"
my_res1.update_content(file_path=resi_file_path)
Downloaded to logo.png
{'identifier': 'b62d02e1-a334-48c0-b80d-4da8f301465b',
'shared_link': 'https://w3id.org/ro-id/f0097019-4d02-4c5d-9556-6c564813b6ab/resources/b62d02e1-a334-48c0-b80d-4da8f301465b',
'title': 'Image - updated',
'folder': '2aaa0b43-d099-4fe1-b5cc-1e1e042bd692',
'ros': ['f0097019-4d02-4c5d-9556-6c564813b6ab'],
'description': 'This resource has this description',
'url': 'https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/static/flood_in_saarland_with_jqgis.png',
'name': 'Image - updated',
'filename': 'fair2adapt-logo.png',
'path': 'https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/static/flood_in_saarland_with_jqgis.png',
'size': None,
'download_url': 'https://api.rohub.org/api/resources/b62d02e1-a334-48c0-b80d-4da8f301465b/download/',
'open_url': None,
'type': 'Image',
'order': 58499,
'created_on': '2025-10-07T20:15:19.532310+0000',
'created_by': 'annef@simula.no',
'modified_on': '2025-10-07T20:16:30.448420+0000',
'modified_by': 'annef@simula.no',
'created': '2025-10-07T20:15:19.532310+0000',
'creator': 'annef@simula.no',
'authors_credits': ['annef@simula.no'],
'contributors_credits': [],
'doi': None,
'license': None,
'has_dependency_file': False,
'api_link': 'https://api.rohub.org/api/resources/b62d02e1-a334-48c0-b80d-4da8f301465b/'}
Modify content (external resource)¶
my_res1_ext=rohub.resource_load(identifier=results.loc[0,"identifier"])
rese_file_url="https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/notebooks/Hamburg_urban_data_portal_WFS.ipynb"
my_res1_ext.update_content(input_url=rese_file_url)
Resource was successfully loaded with id = 9d63f7b6-d82c-415d-a94c-a8662a3ef8c5
{'identifier': '9d63f7b6-d82c-415d-a94c-a8662a3ef8c5',
'shared_link': 'https://w3id.org/ro-id/f0097019-4d02-4c5d-9556-6c564813b6ab/resources/9d63f7b6-d82c-415d-a94c-a8662a3ef8c5',
'title': 'Flood analysis with JupterGIS',
'folder': '652272b0-f148-400d-acd2-7bdc23e000c6',
'ros': ['f0097019-4d02-4c5d-9556-6c564813b6ab'],
'description': 'Visualizing Generalized Flood Areas for HQ100 Event and relate to an existing flooding event.',
'url': 'https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/notebooks/Hamburg_urban_data_portal_WFS.ipynb',
'name': 'Flood analysis with JupterGIS',
'filename': None,
'path': 'https://raw.githubusercontent.com/FAIR2Adapt/saarland-flooding/refs/heads/main/notebooks/Hamburg_urban_data_portal_WFS.ipynb',
'size': None,
'download_url': 'https://api.rohub.org/api/resources/9d63f7b6-d82c-415d-a94c-a8662a3ef8c5/download/',
'open_url': 'https://api.rohub.org/api/resources/9d63f7b6-d82c-415d-a94c-a8662a3ef8c5/open/',
'type': 'Jupyter Notebook',
'order': 58500,
'created_on': '2025-10-07T20:15:21.355059+0000',
'created_by': 'annef@simula.no',
'modified_on': '2025-10-07T20:16:31.985463+0000',
'modified_by': 'annef@simula.no',
'created': '2025-10-07T20:15:21.355059+0000',
'creator': 'annef@simula.no',
'authors_credits': ['annef@simula.no'],
'contributors_credits': [],
'doi': None,
'license': None,
'has_dependency_file': False,
'api_link': 'https://api.rohub.org/api/resources/9d63f7b6-d82c-415d-a94c-a8662a3ef8c5/'}
Retrieve resource¶
file=my_res1.download(resource_filename="resource.png")
File was successfully downloaded.
from IPython.display import Image
Image(filename=file)

Assign DOI¶
- uncomment if you want to assign a DOI. Please, bear in mind that DOI should only be assigned for “real” scientific work!
# my_res1_ext.assign_doi()
Utils¶
remove RO¶
#forked_ro.delete()
#ro_id_to_delete="55a0fbe5-fde3-40cb-9ea0-1eacd3cda8d1"
#rohub.ros_delete(identifier=ro_id_to_delete)
show user id¶
rohub.show_user_id()
'62277187-0f2e-4320-a6b0-7fe467f1b1c1'
show possible values for RO types, Resources types, templates, etc.¶
rohub.list_valid_research_areas()
['Acoustics',
'Aerodynamics',
'Agronomy',
'Analytical chemistry',
'Applied sciences',
'Astronautics',
'Astronomy',
'Atom',
'Biochemistry',
'Biology',
'Biometrics',
'Botany',
'Cartography',
'Chemistry',
'Climatology',
'Cosmology',
'Cultural geography',
'Cybernetics',
'Cytology',
'Earth observation',
'Earth sciences',
'Ecology',
'Economic geography',
'Electrochemistry',
'Electronics',
'Electrotechnology',
'Embryo and foetus',
'Environmental research',
'Fundamental particle',
'Genetics',
'Geochemistry',
'Geographical information system',
'Geography',
'Geology',
'Geomorphology',
'Geophysics',
'Hazard science',
'Histology',
'Historical geography',
'Human geography',
'Hydrogeology',
'Hydrology',
'Industrial chemistry',
'Information science',
'Ionising radiation',
'Laser physics',
'Life sciences',
'Mathematics',
'Medical science',
'Meteorology',
'Metrology',
'Microorganism',
'Mineralogy',
'Neurobiology',
'Nuclear physics',
'Oceanography',
'Optics',
'Parasitology',
'Petrology',
'Pharmacology',
'Pharmacy',
'Photochemistry',
'Photographic industry',
'Physical sciences',
'Plasma physics',
'Political geography',
'Radiobiology',
'Regional geography',
'Sedimentology',
'Seismology',
'Social sciences',
'Soil analysis',
'Soil chemistry',
'Soil science',
'Soil type',
'Space science',
'Spectrometry',
'Stem cell',
'Thermodynamics',
'Volcanology',
'Zoology']
rohub.list_valid_ros_types()
['Basic Research Object',
'Bibliography-centric Research Object',
'Data-centric Research Object',
'Executable Research Object',
'Process-centric Research Object',
'Service-centric Research Object',
'Software-centric Research Object',
'Workflow-centric Research Object']
rohub.list_valid_publication_services()
['B2SHARE', 'ZENODO']
rohub.list_valid_resource_types()
['Annotation Collection',
'Audio',
'Beanshell Script',
'Bibliographic Resource',
'Book',
'Book section',
'Command Line Tool',
'Computational workflow',
'Conclusion',
'Conference paper',
'Course',
'Creative work',
'Data Cube Collection',
'Data Cube Product',
'Data management plan',
'Dataset',
'Diagram',
'Document',
'Drawing',
'Example Run',
'Figure',
'File',
'How to',
'Hypothesis',
'Image',
'Journal article',
'Jupyter Notebook',
'Lesson',
'Meeting Minutes',
'Other',
'Paper',
'Patent',
'Photo',
'Physical object',
'Plot',
'Poster',
'Preprint',
'Presentation',
'Process',
'Process Run',
'Project deliverable',
'Project milestone',
'Proposal',
'Prospective Run',
'Publication',
'Python Script',
'R Script',
'Report',
'Research Object',
'Research Question',
'REST Service',
'Result',
'Result Generation Run',
'Script',
'Sketch',
'SOAP Service',
'Software',
'Software documentation',
'Software source code',
'Taxonomic treatment',
'Technical note',
'Thesis',
'Video',
'Web Service',
'Workflow',
'Workflow Definition',
'Workflow Run',
'Working paper']
rohub.list_valid_creation_modes()
['crate', 'legacy']
rohub.list_valid_access_modes()
['PUBLIC', 'PRIVATE', 'OPEN']
rohub.list_custom_licenses()
[{'identifier': 'acme-cc',
'title': 'ACME Inc. Commercial License',
'description': None,
'status': 'active',
'url': 'http://www.acme.org/licence-commercial',
'created': '2021-12-09T13:54:10.927006Z',
'updated': None,
'creator': 'rpalma@man.poznan.pl',
'api_link': 'https://api.rohub.org/api/custom-licenses/acme-cc/'},
{'identifier': 'acme-cc-by',
'title': 'ACME Inc. Commercial License Attribution',
'description': None,
'status': 'active',
'url': 'http://www.acme.org/licence-commercial-attribution',
'created': '2022-02-17T20:23:57.673731Z',
'updated': None,
'creator': 'rpalma@man.poznan.pl',
'api_link': 'https://api.rohub.org/api/custom-licenses/acme-cc-by/'},
{'identifier': 'BSD 3-Clause',
'title': 'Berkeley Source Distribution 3-Clause "New" or "Revised" License',
'description': 'Note: This license has also been called the “New BSD License” or “Modified BSD License”. See also the 2-clause BSD License.',
'status': 'active',
'url': 'https://opensource.org/license/bsd-3-clause/',
'created': '2023-03-18T16:10:57.990937Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': 'https://api.rohub.org/api/custom-licenses/BSD%203-Clause/'},
{'identifier': 'BSD-3-Clause',
'title': 'BSD 3-Clause "New" or "Revised" License',
'description': 'This license has also been called the “New BSD License” or “Modified BSD License”.',
'status': 'active',
'url': 'https://opensource.org/license/bsd-3-clause/',
'created': '2023-03-18T19:33:25.739188Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': 'https://api.rohub.org/api/custom-licenses/BSD-3-Clause/'},
{'identifier': 'CEECIND 2021',
'title': 'Individual CEEC',
'description': None,
'status': 'active',
'url': 'https://www.fct.pt/index.phtml.en',
'created': '2022-12-01T23:39:15.467361Z',
'updated': None,
'creator': 'bioluis@ciimar.up.pt',
'api_link': 'https://api.rohub.org/api/custom-licenses/CEECIND%202021/'},
{'identifier': 'https://www.youtube.com/static?template=terms',
'title': 'Standard Youtube License',
'description': None,
'status': 'active',
'url': 'https://www.youtube.com/static?template=terms',
'created': '2025-02-17T19:27:39.810277Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': None},
{'identifier': 'my-example-license1',
'title': 'My example license',
'description': 'this is an example license',
'status': 'active',
'url': 'http://myexample.org/license',
'created': '2021-11-08T16:18:29.048012Z',
'updated': None,
'creator': 'rpalma@man.poznan.pl',
'api_link': 'https://api.rohub.org/api/custom-licenses/my-example-license1/'},
{'identifier': 'NLOD 2.0',
'title': 'Norwegian license for public data (NLOD) 2.0',
'description': 'This license is about the right to use information. It is not about access to information or delivery conditions.',
'status': 'active',
'url': 'https://data.norge.no/nlod/no/2.0',
'created': '2023-03-18T16:08:32.896129Z',
'updated': None,
'creator': 'annef@simula.no',
'api_link': None}]
rohub.list_available_licenses()
['0bsd',
'BSD 3-Clause',
'BSD-3-Clause',
'CEECIND 2021',
'NLOD 2.0',
'aal',
'abstyles',
'acme-cc',
'acme-cc-by',
'adobe-2006',
'adobe-glyph',
'adsl',
'afl-1.1',
'afl-1.2',
'afl-2.0',
'afl-2.1',
'afl-3.0',
'afmparse',
'against-drm',
'agpl-1.0-only',
'agpl-1.0-or-later',
'agpl-3.0-only',
'agpl-3.0-or-later',
'aladdin',
'amdplpa',
'aml',
'ampas',
'antlr-pd',
'antlr-pd-fallback',
'apache-1.0',
'apache-1.1',
'apache-2.0',
'apafml',
'apl-1.0',
'apsl-1.0',
'apsl-1.1',
'apsl-1.2',
'apsl-2.0',
'artistic-1.0',
'artistic-1.0-cl8',
'artistic-1.0-perl',
'artistic-2.0',
'bahyph',
'barr',
'beerware',
'bittorrent-1.0',
'bittorrent-1.1',
'blessing',
'blueoak-1.0.0',
'borceux',
'bsd-1-clause',
'bsd-2-clause',
'bsd-2-clause-patent',
'bsd-2-clause-views',
'bsd-3-clause',
'bsd-3-clause-attribution',
'bsd-3-clause-clear',
'bsd-3-clause-lbnl',
'bsd-3-clause-no-nuclear-license',
'bsd-3-clause-no-nuclear-license-2014',
'bsd-3-clause-no-nuclear-warranty',
'bsd-3-clause-open-mpi',
'bsd-4-clause',
'bsd-4-clause-uc',
'bsd-protection',
'bsd-source-code',
'bsl-1.0',
'busl-1.1',
'bzip2-1.0.5',
'bzip2-1.0.6',
'cal-1.0',
'cal-1.0-combined-work-exception',
'caldera',
'catosl-1.1',
'cc-by-1.0',
'cc-by-2.0',
'cc-by-2.5',
'cc-by-3.0',
'cc-by-3.0-at',
'cc-by-3.0-us',
'cc-by-4.0',
'cc-by-nc-1.0',
'cc-by-nc-2.0',
'cc-by-nc-2.5',
'cc-by-nc-3.0',
'cc-by-nc-4.0',
'cc-by-nc-nd-1.0',
'cc-by-nc-nd-2.0',
'cc-by-nc-nd-2.5',
'cc-by-nc-nd-3.0',
'cc-by-nc-nd-3.0-igo',
'cc-by-nc-nd-4.0',
'cc-by-nc-sa-1.0',
'cc-by-nc-sa-2.0',
'cc-by-nc-sa-2.5',
'cc-by-nc-sa-3.0',
'cc-by-nc-sa-4.0',
'cc-by-nd-1.0',
'cc-by-nd-2.0',
'cc-by-nd-2.5',
'cc-by-nd-3.0',
'cc-by-nd-4.0',
'cc-by-sa-1.0',
'cc-by-sa-2.0',
'cc-by-sa-2.0-uk',
'cc-by-sa-2.5',
'cc-by-sa-3.0',
'cc-by-sa-3.0-at',
'cc-by-sa-4.0',
'cc-pddc',
'cc0-1.0',
'cddl-1.0',
'cddl-1.1',
'cdla-permissive-1.0',
'cdla-sharing-1.0',
'cecill-1.0',
'cecill-1.1',
'cecill-2.0',
'cecill-2.1',
'cecill-b',
'cecill-c',
'cern-ohl-1.1',
'cern-ohl-1.2',
'cern-ohl-p-2.0',
'cern-ohl-s-2.0',
'cern-ohl-w-2.0',
'clartistic',
'cnri-jython',
'cnri-python',
'cnri-python-gpl-compatible',
'condor-1.1',
'copyleft-next-0.3.0',
'copyleft-next-0.3.1',
'cpal-1.0',
'cpl-1.0',
'cpol-1.02',
'crossword',
'crystalstacker',
'cua-opl-1.0',
'cube',
'curl',
'd-fsl-1.0',
'diffmark',
'dli-model-use',
'doc',
'dotseqn',
'dsdp',
'dsl',
'dvipdfm',
'ecl-1.0',
'ecl-2.0',
'efl-1.0',
'efl-2.0',
'egenix',
'entessa',
'epics',
'epl-1.0',
'epl-2.0',
'erlpl-1.1',
'etalab-2.0',
'eudatagrid',
'eupl-1.0',
'eupl-1.1',
'eupl-1.2',
'eurofound',
'eurosym',
'fair',
'frameworx-1.0',
'freeimage',
'fsfap',
'fsful',
'fsfullr',
'ftl',
'geo-no-fee-unrestricted',
'geogratis',
'gfdl-1.1-invariants-only',
'gfdl-1.1-invariants-or-later',
'gfdl-1.1-no-invariants-only',
'gfdl-1.1-no-invariants-or-later',
'gfdl-1.1-only',
'gfdl-1.1-or-later',
'gfdl-1.2-invariants-only',
'gfdl-1.2-invariants-or-later',
'gfdl-1.2-no-invariants-only',
'gfdl-1.2-no-invariants-or-later',
'gfdl-1.2-only',
'gfdl-1.2-or-later',
'gfdl-1.3-invariants-only',
'gfdl-1.3-invariants-or-later',
'gfdl-1.3-no-invariants-only',
'gfdl-1.3-no-invariants-or-later',
'gfdl-1.3-only',
'gfdl-1.3-or-later',
'giftware',
'gl2ps',
'glide',
'glulxe',
'glwtpl',
'gnuplot',
'gpl-1.0-only',
'gpl-1.0-or-later',
'gpl-2.0-only',
'gpl-2.0-or-later',
'gpl-3.0-only',
'gpl-3.0-or-later',
'gsoap-1.3b',
'haskellreport',
'hesa-withrights',
'hippocratic-2.1',
'hpnd',
'hpnd-sell-variant',
'htmltidy',
'https://www.youtube.com/static?template=terms',
'ibm-pibs',
'icu',
'ijg',
'imagemagick',
'imatix',
'imlib2',
'info-zip',
'intel',
'intel-acpi',
'interbase-1.0',
'ipa',
'ipl-1.0',
'isc',
'jabber-osl',
'jasper-2.0',
'jpnic',
'json',
'lal-1.2',
'lal-1.3',
'latex2e',
'leptonica',
'lgpl-2.0-only',
'lgpl-2.0-or-later',
'lgpl-2.1-only',
'lgpl-2.1-or-later',
'lgpl-3.0-only',
'lgpl-3.0-or-later',
'lgpllr',
'libpng',
'libpng-2.0',
'libselinux-1.0',
'libtiff',
'liliq-p-1.1',
'liliq-r-1.1',
'liliq-rplus-1.1',
'linux-openib',
'localauth-withrights',
'lpl-1.0',
'lpl-1.02',
'lppl-1.0',
'lppl-1.1',
'lppl-1.2',
'lppl-1.3a',
'lppl-1.3c',
'lucent-plan9',
'makeindex',
'met-office-cp',
'miros',
'mit',
'mit-0',
'mit-advertising',
'mit-cmu',
'mit-enna',
'mit-feh',
'mit-open-group',
'mitnfa',
'mitre',
'motosoto',
'mpich2',
'mpl-1.0',
'mpl-1.1',
'mpl-2.0',
'mpl-2.0-no-copyleft-exception',
'ms-pl',
'ms-rl',
'mtll',
'mulanpsl-1.0',
'mulanpsl-2.0',
'multics',
'mup',
'my-example-license1',
'nasa-1.3',
'naumen',
'nbpl-1.0',
'ncgl-uk-2.0',
'ncsa',
'net-snmp',
'netcdf',
'newsletr',
'ngpl',
'nist-pd',
'nist-pd-fallback',
'nlod-1.0',
'nlpl',
'nokia',
'nosl',
'notspecified',
'noweb',
'npl-1.0',
'npl-1.1',
'nposl-3.0',
'nrl',
'ntp',
'ntp-0',
'o-uda-1.0',
'occt-pl',
'oclc-2.0',
'odbl-1.0',
'odc-by-1.0',
'ofl-1.0',
'ofl-1.0-no-rfn',
'ofl-1.0-rfn',
'ofl-1.1',
'ofl-1.1-no-rfn',
'ofl-1.1-rfn',
'ogc-1.0',
'ogl-canada-2.0',
'ogl-uk-1.0',
'ogl-uk-2.0',
'ogl-uk-3.0',
'ogtsl',
'oldap-1.1',
'oldap-1.2',
'oldap-1.3',
'oldap-1.4',
'oldap-2.0',
'oldap-2.0.1',
'oldap-2.1',
'oldap-2.2',
'oldap-2.2.1',
'oldap-2.2.2',
'oldap-2.3',
'oldap-2.4',
'oldap-2.5',
'oldap-2.6',
'oldap-2.7',
'oldap-2.8',
'oml',
'openssl',
'opl-1.0',
'oset-pl-2.1',
'osl-1.0',
'osl-1.1',
'osl-2.0',
'osl-2.1',
'osl-3.0',
'other-at',
'other-closed',
'other-nc',
'other-open',
'other-pd',
'parity-6.0.0',
'parity-7.0.0',
'pddl-1.0',
'php-3.0',
'php-3.01',
'plexus',
'polyform-noncommercial-1.0.0',
'polyform-small-business-1.0.0',
'postgresql',
'psf-2.0',
'psfrag',
'psutils',
'python-2.0',
'qhull',
'qpl-1.0',
'qtpl',
'rdisc',
'rhecos-1.1',
'rpl-1.1',
'rpl-1.5',
'rpsl-1.0',
'rsa-md',
'rscpl',
'ruby',
'sax-pd',
'saxpath',
'scea',
'sendmail',
'sendmail-8.23',
'sgi-b-1.0',
'sgi-b-1.1',
'sgi-b-2.0',
'shl-0.5',
'shl-0.51',
'simpl-2.0',
'sissl',
'sissl-1.2',
'sleepycat',
'smlnj',
'smppl',
'snia',
'spencer-86',
'spencer-94',
'spencer-99',
'spl-1.0',
'ssh-openssh',
'ssh-short',
'sspl-1.0',
'sugarcrm-1.1.3',
'swl',
'tapr-ohl-1.0',
'tcl',
'tcp-wrappers',
'tmate',
'torque-1.1',
'tosl',
'tu-berlin-1.0',
'tu-berlin-2.0',
'ucl-1.0',
'ukclickusepsi',
'ukcrown',
'ukcrown-withrights',
'ukpsi',
'unicode-dfs-2015',
'unicode-dfs-2016',
'unicode-tou',
'unlicense',
'upl-1.0',
'user-jsim',
'vim',
'vostrom',
'vsl-1.0',
'w3c',
'w3c-19980720',
'w3c-20150513',
'watcom-1.0',
'wsuipa',
'wtfpl',
'wxwindows',
'x11',
'xerox',
'xfree86-1.1',
'xinetd',
'xnet',
'xpp',
'xskat',
'ypl-1.0',
'ypl-1.1',
'zed',
'zend-2.0',
'zenodo-freetoread-1.0',
'zimbra-1.3',
'zimbra-1.4',
'zlib',
'zlib-acknowledgement',
'zpl-1.1',
'zpl-2.0',
'zpl-2.1']
rohub.show_valid_type_matching_for_ros()
{'Basic Research Object': None,
'Bibliography-centric Research Object': ['Bibliography Centric Research Object folders structure'],
'Data-centric Research Object': ['Data Centric Research Object folders structure'],
'Executable Research Object': ['Executable Research Object folders structure'],
'Process-centric Research Object': None,
'Service-centric Research Object': None,
'Software-centric Research Object': None,
'Workflow-centric Research Object': ['Workflow Centric Research Object folders structure']}
load full metadata¶
ro.load_full_metadata()
ro.show_full_metadata()
rohub library version¶
rohub.version()
'You are currently using package v1.2.0.'
Set evolution setting¶
#default 30
rohub.set_retries(50)
number of retries is now changed to 50.
# default 2
rohub.set_sleep_time(5)
sleep_time is now changed to 5.
my_ros = rohub.list_my_ros()
my_ros