概要

ro-crate-pyは、Research Object Crates (RO-Crate)を作成および利用するためのPythonライブラリです。

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.

ゴール

以下に示すようなページを作成することを目指します。

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

データセットのページ

特定のアイテムのページ

JSONデータ

以下のようなJSONデータを作成します。

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

アイテムのIDとしては、以下のOAI-PMHのレコードを使用します。

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

アイテムの作成者として、ダミーの値ですが、ORCIDのIDを指定します。

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

データの公開者としては、東京大学のResearch Organization Registry (ROR) を指定します。

https://ror.org/057zh3y96

ライブラリのインストール

bagitrocrateに必須ではありませんが、今回は最終出力をbagit形式にするために使用します。

ppiippiinnssttaallllrboacgriatte
fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

データ

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"

ROCrateインスタンスの作成

gen_preview=Trueとすることで、保存時にpreview.htmlを合わせて作成してくれます。

crate=ROCrate(gen_preview=True)

root_datasetのメタデータを作成する

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

アイテムの作成

今回は、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={

作成者の追加

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

アイテムの作成者として、Personを追加します。

item["author"]=person

公開組織の追加

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

0

出力

ここでは、出力先をdocs/crate/testとします。

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

1

write_zipを使用することで、圧縮ファイルを保存することもできます。

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

2

日本語対応

そのままでは、日本語がエスケープされてしまうので、ensure_asciiFalseにします。

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

3

bagitの作成

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

4

補足

preview.htmlの作成にあたっては、ROCrate(gen_preview=True)で作成することもできますが、以下のモジュールを使用することにより、冒頭で紹介したようなpreview.htmlを作成することができます。

fffiiiirrrmmmmoooppppmmmoooorrrrrrrttttooocccobsjrrrsahsaaaguotttitneeeti...lrmmooocddreeallt..epceoirnmstpoeonxrttiemnRptOoiCrtrtyatPieemrpsoorntContextEntity

5

まとめ

RO-Crateの利用にあたり、参考になりましたら幸いです。