概要

Omeka SのOAI-PMH RepositoryモジュールでDeleteレコードを出力してみましたので、備忘録です。

背景

以下のモジュールを使用することにより、OAI-PMHのリポジトリ機能を構築することができます。

https://omeka.org/s/modules/OaiPmhRepository/

ただ、確認した限り、Deleteレコードを出力する機能はないようでした。

関連モジュール

Omekaの標準機能では、削除されたリソースを保存する機能はないかと思います。

一方、以下のモジュールは削除されたリソースを保持する機能を追加します。

https://github.com/biblibre/omeka-s-module-Necropolis

本モジュールを有効化することにより、以下のように、リソースがいつ誰によって削除されたかを記録できるようになりました。

OAI-PMH Repositoryモジュールへの応用

上記のモジュールで作成される削除されたリソースの情報が格納されるテーブルを使って、Deleteレコードの出力を試みます。

以下のファイルのlistResponse関数に追記します。

p{riva$$$$$$$i}taeiqqqefepntbbux@@ite-ep(fvvAim=>rr$$$$$i}}i}i}$$$$i}}ruaadtRsyssndefffqqprfenrraye$e=eeaexebbaoetcpMpil=ttmlop(l((--gw(lut\\taote$teeao$$s$$$$$$$>>is$$si}}$$f}i}}riODensecnq=istiseqeqfqquqqssnrtefvtofnomoraimteb=npepexbbrbbnbbeea=oheehre;necMgtR(w-=gadmMp{Io--t--tttwi{(lrieR(lktaeoe'>scRheo=t=m>>i>>MFocss$$s$bsa$$$$$$$e$$$$$$$s$$larnrrpoAeeerdse>>)aslasairo-vmemE-chhihdhvsrtttttvetvi\iayomrxo=Iseie$m$asne)nexru=>eeiel>heedeaeeuooooooeioesAng=serp:dopaMddne{dtdtRs=n=trtftedaaeatarmwkkkkkrfkrtpee=ikard$uoeeedtWP{WPetthbhhmo(ddndedbpse$eeeebebRi\r$tay(et=nrs=dllWPhahasRn(0ro(oec$eeteseEtncnnnnE(nEe\Ot$o_O)lheciieehaereruee$)o=d$dnuprrirtrli>uEEEEl$ElsAR=herrb;ei$cet$atterraralswpw=vtma-f-a-eo=rlllleclepdMinyojtssrRos)eeraememtua{E=e=eg=>i>m>mn(seeeemuemoa\$st-oee-eoereddem(e(eslPgr'r=niseapae$$ommmmermenpEt-i>tcd>tppyt{RR(e$t$t(tairL'b'tn$erppnTctreeeensenstnh>tc't'stoo_tee'teeee$(gnoiaa$-attp=ptouhnnnntonteetisyr);)eilseissnexrxrt$iarsp=pt>thA=ee-kri+tttt-rt-(riseMe;rniixnooerp(p(hcnt(tp=phdoitn$n>ess--->>$\t-raa{vgstpguuc(r'r'iuaosIeeiorst$dtdano-$=>>>a!=avMy>vntis_oosrrr'-f-usrtredn'nsc-rtChCpr>tsssp=peaMsiaec-rrs-ccoi>r>n-so)ledLd-uaO>ihhihpch$eeep$prnaecgQe>eye>eeptgolt>or;fnHiR>msAdbiisie+ritttte0tebanreeuLgs_gRRoetmti_r(:tesedeIousl-lneshAAAn)hn,gavLreoeo=meeelme'ell)$:iatcon$-ct-d>dd$a-itttdidegio-rctuetppiT(,('i;qOfdRoctdPue>(d(Ctt>stttC{sC$recc>ya(r$d(oosy'',sbAieeruEeMm(d$o$hhe_-rrrh-hmreagBt'cei'ss_pn$nt,IercdmllHe'oicdiiRl>iiii>ie$Lteuooenaoiireefe$L_r'o'eeenscdualseidbbbldlta$ootiratatte'crcuifEs;r;nmtttuemtd-ssouuudodapecrRl-iiioos,rornmaR'dtee-amnee(>utcttt(c(dina-ed>ptprroomotilR)s-nd>tetns$_mLueee$u$aAtt>pegmymyyu'p)pits_'>tEcunitthlpim(((tmttdiogorehMh--rOo;ol)eN{)c-nrstf-aeitme'''oeoaatres(tramr>>cmll);)Or>te'-i>masiineccknkPpy-ti'(eneecceeii;;_{eaia,>ecpdtottxouetertM>(to'padprr.kssRapttcrr)eLn,-pmrn-neeag'omOogioeera__Etpye'r)e;riT>ipsE>EfrneOremseasaae\rrCee)Ede;a)mo$crlolcliMatmykeirittsEeeOEnleat;iksraererexag(e(akt-iteeonssRld{elteteeett'mem,ne'k\_ao>toQQutooDeCmeeE)ntaie,eaearOaOr\rgeruuriuuSmhetEl)(,toLntn$gm\moSyemyeectrr_einele$eni(tetceeEeoe_t_rreyccMnltdem{v$EDss)E)urknkttnReyyT\eeAtd('meeflatt;l;rata'taexBByI..T((')enrretSres\i\)imppuuptddC$$h;ntbomeiimoAtE;neooiieeeeHvvet(,me'znerpyngsssllmll,eea(',n,egn,iMtspiedd='eerrd'd$t')tAai'at_ee)ttnbbeiam$($,($dnt)comrr:;eee)Erdteu't$'saay;ere((iddw;l'eetnro(crepg\_yd''t''e)nsateksuetteIi(inne,,Mm;ttdisetrs,ertd\aeemeeiaalunrsur'e'N'ccT''snfmt)m-iom$M)m,e,rry::stipa;p>nrpfa;:coopfua)e'Pteg)trn:'rfpperng;r,rix);ioacdoaoo'ote'eopomgleplll)mi(,$fni$n,eafosii'l'diTrrTrsaless)'Nexoaoo$'sui)__))ool,ktwku))ls;rr;)aeeisen;;t\ee;ritno)nt_Esse:e'n;'innooc'd,()latuuoE);)mirrr.n(-:etccdts>syees$itfp\''ntrooaN))mayirice;am-nmdecte>ga'rfcsg)t)oahpe(;plat$'ostcDtYleheeo-ieIlkmsidee-Rtgtndeei.e-\smvd>Toe"(iHun:)d:r"-(icc>):er.f)s:io;\:t$rZcedm'lrea)ailt)sae(;s.t')'eY;)d-)Em;n-tdi\tTyH@-:t>irg:aesnt\sIZld'a()t))e);;

OAI-PMH標準には合致していない実装方法ですが、setにo:deletedを指定すると、削除レコードを返却することができます。

例えば、以下です。xslへの対応などは今後の課題です。

https://omeka.aws.ldas.jp/oai?verb=ListRecords&metadataPrefix=oai_dc&set=o:deleted&from=2024-01-01

<<<??O/xxA<<<OmmIrrL/All-eei<LI-Psqsh/i-vsMpute<<hsPetHoeRaidetMrynseddaaRHslxstceetde>iemeorneecoslDvrtsronhnaedsit>r=estrstfad"e=eb>aims1t">=tep>.h2"ur>0tt0Ls>2"yt2i=o0pp4s"a2ee:-tdi4n=/1Re:-c"/0elo1otw-cem0dew1ote-ixw0rek1nt.Tdda0go0s".T=xp7">a0"se:w7Uln5ms:T"a0e.0Fr:tl6-hc5ad:8rh6da0"eiZas1fv<t.Zs=e/aj<t"srPp/a/.er:dnmose4adorpf1tadgi<elunx/solOs=itneAe"daesIDoem=//aanp"O2tit>ya.e_iei0>dfsP/ci"m""e?hr>Rxs>emeplton=ss"i:otx:osdriey=l/"eahtstestdep"t://fx/rswolwm/w=o."aw2i30-.2po4mr-hg0-/1r2-e00p01o1"s/>iXhtMtoLtrSpycs.h:xe/sm/lao?-mvie=nk3sa.t.4aa.nw9cs"e.?"l>dxassi.:jspc/hoeamia<L/orceaqtuieosnt=>"http://www.openarchives.org/OAI/2.0/http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">

resumptionTokenも動作することを確認しました。

まとめ

上記の実装を工夫することで、OAI-PMHの標準に合致するように削除レコードを出力できるかもしれません。

色々と検証できていない点がありますが、参考になりましたら幸いです。