Overview

ro-crate-py is a Python library for creating and consuming Research Object Crates (RO-Crate).

https://doi.org/10.5281/zenodo.3956493

ro-crate-py is a Python library to create and consume Research Object Crates. It currently supports the RO-Crate 1.1 specification.

Goal

The goal is to create a page like the one shown below.

https://nakamura196.github.io/rocrate_demo/crate/test/data/ro-crate-preview.html

Dataset Page

Specific Item Page

JSON Data

Create JSON data like the following.

https://nakamura196.github.io/rocrate_demo/crate/test/data/ro-crate-metadata.json

The item IDs are based on the following OAI-PMH record.

https://da.dl.itc.u-tokyo.ac.jp/portal/oai?verb=GetRecord&metadataPrefix=dcndl_simple&identifier=oai:da.dl.itc.u-tokyo.ac.jp:fbd0479b-dbb4-4eaa-95b8-f27e1c423e4b

As the item creator, a dummy ORCID ID is specified.

https://orcid.org/0000-0001-8245-7925

As the data publisher, the University of Tokyo’s Research Organization Registry (ROR) is specified.

https://ror.org/057zh3y96

Installing Libraries

bagit is not required by rocrate, but it is used here to output the final result in bagit format.

ppiippiinnssttaallllrboacgriatte
fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

Data

dddiiiippooaaatttteerrttteeeerrggaaammmmss__sss____ooineeeindlnndatttdaei__m___mscin=endl=ecedaaeirnm"=msc"=is=ehecehpet"rnt"t"=tT=isti=hphpepot"se"tsn"tS:i=:hpa/Uo/=tst/nn"/"t:rihd"prov=taOsuret.A:o.r"pdI/rNossl-/cari:.Pwikgt/iMwda/y/tHw.m0"wc.ou5o(w.Olrr7fwupigaz.-eb/"hTltn.03oiou0ykbkA-09y.yrt06ouoco-""-.hk0)taiy0ocvo0k.e.1yjsa-opc8./I.2apnj4coip5.rt/-jtij7paaa9/lt/2j/il5aovi"/aebliri?Pabvrrreoyartrbcy=co/GonceltotenRfnteotecrsno/trMasder/&tcamahredictavhateidasva-etHtsaao-Prptrv/oeerpfse/iturxise=neudg"scen""dl_simple&"identifier=oai:da.dl.itc.u-tokyo.ac.jp:fbd0479b-dbb4-4eaa-95b8-f27e1c423e4b"

Creating an ROCrate Instance

By setting gen_preview=True, a preview.html file is also generated when saving.

crate=ROCrate(gen_preview=True)

Creating root_dataset Metadata

rrrrooooooootttt____ddddaaaattttaaaasssseeeetttt[[[="""ndlcaeirmscaecet"rne]is.per=t"oi]odotan=_t"da]dasate=tatas_dsenaetattma_esleitc_ednessecription

Creating Items

This time, we add remote entities.

https://github.com/ResearchObject/ro-crate-py?tab=readme-ov-file#adding-remote-entities

i}t)em"""=ndlaeicmscrecea"rnt:isepe.it"ati:deodmni__"tfn:eiamlmi_eetl(,eiimct_eednmes_seicdr,ipptrioopne,rties={

Adding a Creator

pcerrasto"enn.aa=mdedP"(e:presproesnro(snco)rna_tnea,mep}e)rson_id,properties={

Add the Person as the item creator.

item["author"]=person

Adding a Publishing Organization

classddeeOffrgs_v}ra_ueaenipmltinepuzirt=""rat(y@@nt_O({iti_rsdyvo(ge"pansal:el(enf"Cli)s:ofz:en,al'ttfOeci.rxroigtandaEt,,nneit,szieatiltydfi)e)o:n.nt_'i_fiineirt=_N_o(ncer,atper,opiedretniteisf=iNeorn,e)p:roperties)
ocrrgat="en.Oaarmdgeda"(n:oirzogar)tgi_onna(mcer}a)te,org_id,properties={
fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

Output

Here, the output directory is set to docs/crate/test.

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

You can also save a compressed file using write_zip.

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

Japanese Language Support

By default, Japanese characters are escaped, so set ensure_ascii to False.

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

Creating bagit

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

Supplement

For creating preview.html, you can use ROCrate(gen_preview=True), but by using the following module, you can create a preview.html like the one introduced at the beginning of this article.

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

Summary

I hope this is helpful for using RO-Crate.