TEI/XMLから検索システムを構築する際のDTS(Distributed Text Services)のdts:wrapperの応用例

概要 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 , d s a o t n " " } a " " " } a v m " t i a p e e : y d t i r t p " t " s a " } { e : r " " ] " ] " ] " " ] " " " " : i " l " i l j , s , v , u c , m m t x o : i : " b a y h o p a a e h m { n n 3 u b o i l d t n m u l " { k " } " 9 t e " " k " " " a e " i b m " : s s i 1 e l : 3 i 3 : 3 t g 式 f e b : " e t 0 s " 9 " 9 9 e o " e r n " : l e 0 " : [ - : - [ " d r s " a " 1 f " m 1 : 1 1 " y t : i < . { " h " 0 " - [ : " " l ? 0 : r , 1 { 正 0 正 : : " " x " e " 親 0 親 " h : m , { f , 1 " 2 [ " t l " 1 0 h t " : 諸 2 t p h v 諸 王 5 t s t e " 王 年 - p : t r h 年 満 0 s / p s t 満 " 3 : s i t 条 - k : p 1 / h n : 項 5 k i / = / 1 " h r k \ / " , i i h " j , r n i 1 s i - r . o n a i 0 n - . n \ a a r - " p . e a i r k . e . e i r n o k h e c r i a k o g h k i d / a u h i f k . a n o u a k g r . c u = m a . . \ a c j a " t . p c U / j / . T 1 p i j F . / i p - 0 i i / 8 / i f i \ " i / i " f 2 i ? / / f > r e e n 2 n k g / < i i e T h s n E a h g I k i i u k s x / i h m H % i l - 2 k n 7 F i s 4 H % = 3 - 2 \ - 7 F " 7 4 H h 4 3 - t - - 7 t 3 7 4 p 9 4 3 : / - - / m 3 7 / a 9 4 w n / - w i p 3 w f a 9 . e g % t s e 2 e t 5 F i . 0 0 - j 6 0 c s 9 0 . o " 0 o n , 2 r " . g , t / i n f s / / f 1 u . l 0 l \ / " 2 > 0 \ 0 n , / 0 < / d d t e s f : a w u r l a t p . p j e p r g " x , m l n s : d t s = \ " h t t p s : / / w 3 i d . o r g / a p i / d t s # \ " > \ n < d i v t y p e = \ " o r i g i n a l \ " > < p a n a = \ " 項 \ " c o r r e s p = \ " # p a g e 5 0 6 9 \ " x m l : i d = \ " o - i t e m 3 9 1 0 0 1 0 1 \ " > \ n 凡 諸 王 年 満 十 二 、 毎 年 十 二 月 、 \ n < o r g N a m e s a m e A s = \ " # 京 職 \ " > 京 職 < / o r g N a m e > \ n 移 \ n < o r g N a m e s a m e A s = \ " # 宮 内 省 \ " > 宮 内 省 < / o r g N a m e > \ n 、 \ n < o r g N a m e s a m e A s = \ " # 宮 内 省 \ " > 省 < / o r g N a m e > \ n 以 \ n < o r g N a m e s a m e A s = \ " # 京 職 \ " > 京 職 < / o r g N a m e > \ n 移 、 即 付 \ n < o r g N a m e s a m e A s = \ " # 正 親 司 \ " > 司 < / o r g N a m e > \ n 令 勘 会 名 簿 、 訖 更 送 \ n < o r g N a m e s a m e A s = \ " # 宮 内 省 \ " > 省 < / o r g N a m e > \ n 、 明 年 正 月 待 \ n < o r g N a m e s a m e A s = \ " # 太 政 官 \ " > 官 < / o r g N a m e > \ n 符 到 、 始 預 賜 時 服 之 例 、 < / p > < / d i v > < d i v t y p e = \ " j a p a n e s e \ " > < n o t e t y p e = \ " s u m m a r y \ " > \ n 衣 替 え 手 当 て の 受 給 年 齢 に 達 す る 皇 族 へ の 支 給 開 始 手 続 き に 関 す る 規 定 \ n / n o t e > < p a n a = \ " 項 \ " c o r r e s p = \ " e n g i s h i k i _ v 3 9 . x m l # i t e m 3 9 1 0 0 1 0 1 e n g i s h i k i _ v 3 9 _ e n . x m l # i t e m 3 9 1 0 0 1 0 1 \ " x m l : i d = \ " j a - i t e m 3 9 1 0 0 1 0 1 \ " > \ n 皇 族 の 年 齢 が 数 え で 十 二 歳 に 達 し た ら 、 十 二 月 に \ n < r u b y > \ n < r b > \ n 京 職 \ n / r b > \ n < r t p l a c e = \ " r i g h t \ " > \ n き ょ う し き \ n / r t > \ n < / r u b y > \ n が \ n < r u b y > \ n < r b > \ n 宮 内 省 \ n / r b > \ n < r t p l a c e = \ " r i g h t \ " > \ n く な い し ょ う \ n / r t > \ n < / r u b y > \ n に 通 知 し 、 宮 内 省 は 京 職 の 通 知 書 類 を \ n < r u b y > \ n < r b > \ n 正 親 司 \ n / r b > \ n < r t p l a c e = \ " r i g h t \ " > \ n せ い し ん し \ n / r t > \ n < / r u b y > \ n に 下 し て 正 親 司 が 保 管 す る 皇 族 の 台 帳 と 照 合 さ せ よ 。 正 親 司 は こ の 作 業 が 終 わ っ た ら 通 知 書 類 を 宮 内 省 に 送 れ 。 翌 年 正 月 に \ n < r u b y > \ n < r b > \ n 太 政 官 \ n / r b > \ n < r t > \ n だ い じ ょ う か ん \ n / r t > \ n < / r u b y > \ n の 通 達 を 受 領 し て か ら 、 衣 替 え 手 当 て の 支 給 を 開 始 せ よ 。 \ n < / p > < / d i v > < d i v t y p e = \ " e n g l i s h \ " > < n o t e t y p e = \ " s u m m a r y \ " > \ n A g e o f R o y a l R e c i p i e n t s f o r S e a s o n a l C l o t h i n g \ n / n o t e > < p a n a = \ " 項 \ " c o r r e s p = \ " e n g i s h i k i _ v 3 9 . x m l # i t e m 3 9 1 0 0 1 0 1 e n g i s h i k i _ v 3 9 _ j a . x m l # i t e m 3 9 1 0 0 1 0 1 \ " x m l : i d = \ " e n - i t e m 3 9 1 0 0 1 0 1 \ " > \ n E v e r y y e a r i f \ n < s e g x m l : i d = \ " f o o t n o t e 3 9 1 0 0 1 0 1 0 1 \ " > \ n a \ n p r i n c e o r p r i n c e s s \ n / s e g > \ n r e a c h e s \ n < s e g x m l : i d = \ " f o o t n o t e 3 9 1 0 0 1 0 1 0 2 \ " > \ n t w e l v e y e a r s o l d \ n / s e g > \ n , t h e C a p i t a l O f f i c e s h o u l d r e p o r t t h a t \ n i n f o r m a t i o n v i a \ n < s e g x m l : i d = \ " f o o t n o t e 3 9 1 0 0 1 0 1 0 3 \ " > \ n a p a r a l l e l m e m o r a n d u m \ n \ n < s e g r e n d = \ " i t a l i c \ " > \ n i \ n / s e g > \ n \ n < / s e g > \ n t o t h e M i n i s t r y o f t h e R o y a l \ n H o u s e h o l d i n t h e t w e l f t h m o n t h . T h e n t h e M i n i s t r y s h o u l d s e n d t h e \ n m e m o r a n d u m t o t h e R o y a l F a m i l y R e g i s t e r O f f i c e t o c h e c k t h e l i s t a g a i n s t \ n t h e i r e x i s t i n g r o s t e r . A f t e r f i n i s h i n g a l l o f t h e s e p r o c e d u r e s , t h e \ n R o y a l F a m i l y R e g i s t e r O f f i c e s h o u l d r e t u r n t h e m e m o r a n d u m t o t h e \ n M i n i s t r y . T h e p r i n c e o r p r i n c e s s i n q u e s t i o n w i l l r e c e i v e s e a s o n a l \ n c l o t h i n g a f t e r t h e C o u n c i l o f S t a t e ' s o r d e r i s i s s u e d i n t h e f o l l o w i n g \ n N e w Y e a r . \ n < / p > < / d i v > \ n / d t s : w r a p p e r > \ n < / T E I > " 検索結果は以下のように表示されます。校訂文(@type=“original”)、現代語訳(@type=“japanese”)、および英訳(@type=“english”)を表示しています。 ...

2025年3月15日 · 13 分 · Nakamura

GakuNin RDM APIをつかってみる

概要 GakuNin RDMでは、以下でAPIが公開されています。このAPIの使用例について備忘録です。 https://api.rdm.nii.ac.jp/v2/ 参考 GakuNin RDMはOSF(Open Science Framework)をベースに構築されており、APIに関するドキュメントは以下で確認することができます。OpenAPIに準拠しています。 https://developer.osf.io/ PATの取得 PAT(パーソナルアクセストークン)を取得します。 ログイン後、以下のURLから作成することができます。 https://rdm.nii.ac.jp/settings/tokens/ 利用 以下のようなスクリプトにより、プログラムからもアクセスすることができます。 a c c e s s _ t o k e n = x x x i i f l l a # u # # r r m m r o o c r e e p p o a a c ア l フ w s s o o m d d e ッ ァ i p p r r _ _ s プ = イ t o u h } o t t d d d s ロ ル h n r e n o o o _ ー f を s l a s r o t t t t ド ' 開 o e , d e e s e e e o U h き p e ' . q n n n k R t 、 e = r A j u v v v e L t P n s u s e ( ( n に p U ( r = t o s i v " ク s T f e { h n t m e . = エ : リ i q o ( s p r / リ / ク l u r ) o b e o パ / エ e e i r o n s ラ a ス _ s z t s v . メ p ト p t a e " e ー i で a s t l = ) n タ . ア t . i o T v を r ッ h g o a r i 追 d プ , e n d u r 加 m ロ t ' _ e o . ー ' ( : d ) n n ド r o . i b f t g i ' ' e e . ) B n t a e v ( c a a " . s r a j e c p f r c / i e v l { s 2 e a s / : c _ n c t o e o d s k e s e s _ n / t " ' o ) k e n } ' 参考までに、Authorizationヘッダーが未指定の場合、以下の結果が返却されました。 ...

2024年10月26日 · 3 分 · Nakamura

Node.jsを使って、JSON:APIに準拠しているかを検証する

概要 JSON:APIに準拠しているかを検証するにあたり、以下のリポジトリを使用してみましたので、備忘録です。 https://github.com/elliotttf/jsonapi-validator 本記事執筆時点において、7年前から更新がされていないようなので、最新のスキーマ等には非対応かもしれませんが、簡単な検証は行うことができました。 使い方 上記のライブラリを試すにあたり、以下のリポジトリを用意しました。 https://github.com/nakamura196/jsonapi-validator-demo インストール nvmの利用を前提していますが、必須ではありません。 g c n n p i d v v n t m m p j m c s i u l o s i o n 2 e n a 2 e p 2 i 2 h - t v t a p l s i : d / a / t g o i r t - h d u e b m . o c o m / n a k a m u r a 1 9 6 / j s o n a p i - v a l i d a t o r - d e m o 試す OKの例 { } " } " ] j , d s a o t n " " } a { } a v m " p e e : i r t " s a " } [ " " " } : i " l t i a o : i y d t { n n p " t " { k " } e : r " : s s " i t " e : " b i " : l 1 u t 1 f " " 0 t l . { " h r _ e e 0 : r e A s " " e c 0 " : , { f o 0 : " r 2 " : d 4 { サ " 8 ン " , 5 プ h 3 ル t " " t , p : / / j s o n a p i . o r g / f o r m a t / 1 . 0 / " 0 / 1 n _ o v d a e l _ i m d o . d j u s l o e n s / i j s s o v n a a l p i i d - v J a S l O i N d a A t P o I r . b i n / j s o n a p i - v a l i d a t o r . j s - f / 0 1 _ v a l i d . j s o n NGな例:不要なプロパティあり aaaという不要なプロパティがあります。 ...

2024年7月18日 · 11 分 · Nakamura

DrupalのJSON:APIの使用方法(includeと多言語対応)

概要 DrupalのJSON:APIの使用方法に関する備忘録です。今回は、タクソノミーなどに対するincludeと多言語処理について記載します。 データ 以下のように、positionフィールドにタクソノミー「助教」を付与しています。 /node/5 また、コンテンツの多言語化を有効にしており、以下のように、タイトルとpositionの英語も表示されます。 /en/node/5 JSON:API 上記のコンテンツをコンテンツタイプ「faculty」に作成したので、以下のURLから、データの一覧を取得できます。 /jsonapi/node/faculty/ 以下は、linksフィールドを除く結果を表示しています。field_positionにタクソノミーのIDが含まれていますが、当該タクソノミーのラベル等はふくまれていません。 { } " } " ] j , d s " " } a { } o v m t n e e " } a " " " } " } a r t l " t i a , r p s a i " } : y d t " " " " " " " " " " " " " " " " } " e " } " } " } " } i i " n s p " t d d l r r s t c c p s d r c c p , b l n , r , u , f " o : k e " [ e : r r r a e e t i r h r t e e o o a " " " o a o " } e " } i " } i " } : n s l h " i u u n v v a t e a o i f v n n t a p l d t d d v d d d e d " { " f r : " b p p g i i t l a n m c a i t t h l i a y i e a " " " } i a " " " } " a " " " } l a " " " } { : : " e 5 u a a c s s u e t g o k u s e e " i d n " o _ t t i m s t t i m : t t i m d t t i m : f " 8 t l l o i i s " e e t y l i n n : a " g : n t a y d e " i a y d e " a y d e " _ a y d e " " { " n 6 e _ _ d o o " : d d e " t o t t s : c s y " p " t d o " p " t d { " p " t d p " p " t d 1 { : o e s i i e n n : " " " : _ n _ _ { " o n h p : e : a r n : e : a r : e : a r o : e : a r . d f " n n " _ _ " : : : l _ t t : n d u i e " " u _ " " u " " u s " " u 0 " e 1 : t t : t l t 中 f a t r r u e l p " { : " : p u { : " : p { : " : p i { : " : p " h - d e e i o r 村 " " t a n r a a n l " l s : 8 a i 0 a 0 a t 6 a , t - 9 { r r " m g u 覚 2 2 r l g a n n u l : " " 4 { l d " b { l " b { l i " c { l t f - n n j e " e " 0 0 u s c n s s l , : { n 1 _ " u 0 _ u 0 _ o t e _ p a b a a a s : , , 2 2 e e o s l l l " o 9 i : s 0 i s 0 i n a 4 i : c 6 l l " t 3 3 , , d l a a , j { d 6 n e 1 n e 1 n " x 5 n / u 8 _ _ , a n - - e a t t a e 2 t { r e t r e t : o 8 t / l 0 _ _ m u 0 0 " t i i " _ f e - 4 e - 4 e n e e j t - n v p l 6 6 : i o o t 7 r - d r - d r { o 8 r s y 4 i i " l - - o n n y - n u - n u - n m - n o " 1 d d : , 0 0 t n _ _ p 9 a s e a s e a y 6 a n , f " " 8 8 r _ s o e 1 l e d l e d l _ d l a 9 : : " T T u a o u - c _ r 2 _ r 2 _ t 7 _ p - 2 0 0 e f u t - 8 _ " 9 _ " 9 _ e 9 _ i b 5 1 0 0 1 , f r d n - t , - t , - t r - t . 5 , 3 2 : : e c a o 4 a 4 a 4 a m 4 a o 4 , 3 4 0 c e t d 7 r a r a r - e r r b - 4 1 t " e e a g 5 g 5 g - d g g - 0 : : e : d _ 1 e 3 e 3 e p 1 e / 7 6 1 2 d " t - t - t - t o - t f e - 5 6 " " : y b _ 9 _ 9 _ s 9 _ o b 0 + + : u p 3 i 6 i 6 i i 6 i r c 8 0 0 n f e 3 d 0 d 0 d t 5 d m d T 0 0 n d a " 5 " d " d " i 3 " a c 0 : : u " l , - : - : - : o - : t 9 1 0 0 l , s e 9 9 n 5 / d : 0 0 l e a " c 1 c 1 " e 5 1 1 0 " " , , 4 f d d , c . 5 1 , , 9 a c c 1 0 4 : 4 c c c 7 / f 4 e u 3 3 8 " " 3 f l d d 5 , + e t 3 3 6 0 4 y a a 8 0 6 " d d b : 7 7 7 7 0 c 0 0 a 0 " " " " " , , , , , includeを使う クエリに、?include=field_positionを追加します。結果、以下のように、includedフィールドが追加され、タクソノミータームのnameフィールドの値も得ることができました。 ...

2023年6月9日 · 21 分 · Nakamura

Drupal Key authを用いたコンテンツの登録と多言語対応

概要 以下の記事で、Basic認証を使ったPythonによるコンテンツ登録を行いました。 今回は、以下の記事を参考に、API Key Authenticationを試しました。 https://designkojo.com/post-drupal-using-jsonapi-vuejs-front-end API Key Authentication 以下のモジュールを使用しました。 https://www.drupal.org/project/key_auth ユーザの編集画面に「Key authentication」というタブが表示され、APIキーを生成できました。 APIキーを使用する場合には、以下のようなプログラムで実行することができました。 i e k h } p } r r m n e e a . p d y a y = j o p d l s r o = e ' ' " o " } r o t i r A C a a d e n n ' s c o p d a q ( r t { c n i t u ) e A = e t - = a " " } e q = P p e k " t a s u I { t n e { : y t t e ' キ ' t y p t s s h ー : - " { e r " " } . t t } T : " i t b p s t ' ' y : b i o o p a p k u t d s : p e e " t l y " " t / p ' y n e e " v f ( / l : o s " : a o e { i d " : l r n i c ' e : { u m d p a a - " e a p ア t p - { W " t o ド i p a h : " i レ o l r a : n ス n i t t " t / c i ' B " , o v a c s e p r n t l l h d i e u w a e ド . o " p a i a メ a n , t n d イ p / f e _ e ン i v r r t r 名 + n o . e s } j d m x = / s . M t h j o a P y " e s n p y a o ' i t f d n , + h r e a j o i r p s n e s i o " n , / n , d n ' s j o , . s d " o e , n / = a p r a t y i l c o l a e d ' ) 多言語対応における注意点 注意点として、翻訳データの作成はできないようでした。 ...

2023年6月9日 · 4 分 · Nakamura