概要

TEI/XMLから検索システムを構築する際のDTS(Distributed Text Services)のdts:wrapperタグの応用例に関するメモです。

DTS(Distributed Text Services)は以下です。

Cayless, H., Clérice, T., Jonathan, R., Scott, I., & Almas, B. Distributed Text Services Specifications (Version 1-alpha) [Computer software]. https://github.com/distributed-text-services/specifications`

参考

DTSの構築例として、以下なども参考になりましたら幸いです。

以下の「デジタル延喜式」を例とします。

https://khirin-t.rekihaku.ac.jp/engishiki/

本システムでは、TEIを用いて作成したXMLデータから、検索時の単位となる部分を抽出し、それをJSON形式のデータに変換した上で検索を行っています。JSONデータの例は以下です。JSON:APIに準拠した記述を採用しています。

http://khirin-t.rekihaku.ac.jp/engishiki/jsonapi/item/39100101.json

{}"}"}j,dsaotn""}a"""}avm"tiapee:ydtirtp"t"sa"}{e:r""]"]"]""]"""":i"l"ilj,s,v,uc,mmtxo:i:"bayhopaaehm{nn3uboildtnmul"{k"}"9te""k"""ae"ibm":ssi1el:3i3:3tgfeb:"et0s"9"99eo"ern":le0":[-:-["drs"a"1f"m1:11"yt:i<.{"h"0"-[:""l?0:r,1{0::""x"e"0"h:m,{f,1"2["tl"10ht":2tphv5tste"-p:trh0s/pst"3:sit-k:p1/hn:5ki/=/1"hrk\/",iih"j,rni1si-r.onai0n-.n\aar-"p.eairk.e.eirnokhecriakoghkid/auhifk.anouakgr.cu=ma..\acja"t.pcU/j/.T1pijF./ip-0ii/8/ifi\"i/i"f2i?//f>reen2nkg/<iieThsnEahgIkiiuksx/ihmH%il-2kn7Fis4H%=3-2\-7F"74Hh43-t--7t374p943:/--/m37/a94wn/-wip3wfa9.eg%tse2et5Fi.00-j60cs90.o"0on,2r".g,t/infs//f1u.l0l\/"2>0\0n,/0</ddtesf:awurlatp.pjeprg"x,mlns:dts=\"https://w3id.org/api/dts#\">\n<divtype=\"original\"><pana=\"\"corresp=\"#page5069\"xml:id=\"o-item39100101\">\n\n<orgNamesameAs=\"#\"></orgName>\n\n<orgNamesameAs=\"#\"></orgName>\n\n<orgNamesameAs=\"#\"></orgName>\n\n<orgNamesameAs=\"#\"></orgName>\n\n<orgNamesameAs=\"#\"></orgName>\n簿\n<orgNamesameAs=\"#\"></orgName>\n\n<orgNamesameAs=\"#\"></orgName>\n</p></div><divtype=\"japanese\"><notetype=\"summary\">\n\n/note><pana=\"\"corresp=\"engishiki_v39.xml#item39100101engishiki_v39_en.xml#item39100101\"xml:id=\"ja-item39100101\">\n\n<ruby>\n<rb>\n\n/rb>\n<rtplace=\"right\">\n\n/rt>\n</ruby>\n\n<ruby>\n<rb>\n\n/rb>\n<rtplace=\"right\">\n\n/rt>\n</ruby>\n\n<ruby>\n<rb>\n\n/rb>\n<rtplace=\"right\">\n\n/rt>\n</ruby>\n\n<ruby>\n<rb>\n\n/rb>\n<rt>\n\n/rt>\n</ruby>\n\n</p></div><divtype=\"english\"><notetype=\"summary\">\nAgeofRoyalRecipientsforSeasonalClothing\n/note><pana=\"\"corresp=\"engishiki_v39.xml#item39100101engishiki_v39_ja.xml#item39100101\"xml:id=\"en-item39100101\">\nEveryyearif\n<segxml:id=\"footnote3910010101\">\na\nprinceorprincess\n/seg>\nreaches\n<segxml:id=\"footnote3910010102\">\ntwelveyearsold\n/seg>\n,theCapitalOfficeshouldreportthat\ninformationvia\n<segxml:id=\"footnote3910010103\">\naparallelmemorandum\n\n<segrend=\"italic\">\ni\n/seg>\n\n</seg>\ntotheMinistryoftheRoyal\nHouseholdinthetwelfthmonth.ThentheMinistryshouldsendthe\nmemorandumtotheRoyalFamilyRegisterOfficetocheckthelistagainst\ntheirexistingroster.Afterfinishingalloftheseprocedures,the\nRoyalFamilyRegisterOfficeshouldreturnthememorandumtothe\nMinistry.Theprinceorprincessinquestionwillreceiveseasonal\nclothingaftertheCouncilofState'sorderisissuedinthefollowing\nNewYear.\n</p></div>\n/dts:wrapper>\n</TEI>"

検索結果は以下のように表示されます。校訂文(@type=“original”)、現代語訳(@type=“japanese”)、および英訳(@type=“english”)を表示しています。

検索結果で表示するテキストはJSONのxmlデータから作成しており、このデータにDTS(Distributed Text Services)のdts:wrapperを使用しています。

用途

DTSのdts:wrapperは以下に記載されています。

https://distributed-text-services.github.io/specifications/versions/unstable/#query-parameters-2

以下のようなイメージで使用しています。

TEI/XMLファイルから、検索結果の表示に必要な部分のみを抽出し、dts:wrapperで囲んでいます。

このような部分TEI/XMLを作成することにより、例えばstandOffタグで記述したlistPersonタグの内容を検索結果に反映させるなど、必要なデータを柔軟に設定することができます。

まとめ

TEI/XMLから検索システムを構築する際のDTS(Distributed Text Services)のdts:wrapperタグの応用例について紹介しました。

間違った使い方をしている部分もあるかもしれませんが、参考になりましたら幸いです。