Introduction# This article describes the development of a metadata management system for research data that integrates GakuNin RDM (Research Data Management) with the Dydra RDF database. This system can handle file management for research projects and the registration and search of Dublin Core metadata in an integrated manner.
System Overview# Architecture# ┌ │ │ └ ┌ │ │ │ └ ─ ─ ─ G ─ ─ ─ ─ a ─ ─ ─ ─ k R A ─ ─ N ( ─ ┌ │ ▼ u D P ─ ─ e A ─ ─ ─ N M I ─ ─ x p ─ ─ ─ i ─ ─ t p ─ ─ ─ n ─ ─ . ─ ─ ┐ │ │ │ ┘ ─ j R ┬ │ ┴ ─ s o ─ ─ ┌ │ │ │ └ ─ u ─ ─ ─ ─ ─ 1 t ─ ─ ─ D ─ ─ 4 e ─ ─ ▼ y R ─ ─ r ─ ┐ │ ─ d D D ─ ─ ) ─ ─ r F B ─ ─ ─ ─ a ─ ─ ─ ─ ─ ┐ │ │ ┘ ─ ─ ┐ │ │ │ ┘
Main Technology Stack:
Next.js 14 (App Router) NextAuth.js (OAuth 2.0 authentication) Dydra (RDF database) GakuNin RDM API SPARQL (query language) 1. Integration with GakuNin RDM# 1.1 OAuth 2.0 Authentication Implementation# GakuNin RDM supports OAuth 2.0 authentication. I implemented this using NextAuth.js.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 1.2 Automatic Token Refresh# To maintain long-running sessions, I implemented automatic access token refresh functionality.
a } s y i } i } r n f f e c t t t c c i } t O ( o o o T ( o o f u j n a k k k o t n n c r } r w c e e e k o s s ( o e ; n t i c n n n e k t t s n t a r e ( n o . . . n e h G s u c e x t { i u a r e n c s o e t r . c f p o t n c e x e . u h u t n t e r i k t i t c f p x e r o l r o s e r e o a ) e r i p x r u d n e { k s s e n k l s e r i p e l R e f e T h s ; e { s s e r i n d e w r n o T A n l T h s a r t R f e , k o t , o o T A t e T e r a s e k : g k o t i s i f e c h n e a i e k o A m r s c e : n M c n n e = n t e e h e d : a c n ) s s T r t o = a c = h & s o e r h u = c h { & k f e . n a c e M = t e r f f t c a o c a t o n e r l , c c u k t c o k s s e o o c n h u k e h s o u u o t ( . r e n = e h r s n u . r f r n d e ( e t n e e l e . u a T d D r . t x f o n r s w o T a a . p r o t e i a k o t } c r i e r T f n i e k e ) c e r s ( i r g t n e . e f e h D m e s n n { s r s a e s r r . s o s e _ 5 t h e e a . w _ s a e > T f f c r ( t h t m . = o r r c e ) o _ ; i n k e e e f k t n o t e s s s r / e o u w o n h h s e n k t ( k ) A _ s 1 ; e e ) e t c t h 0 n s n { o c o _ 0 ; / . k e k t 0 b e e s e o ) e 1 x n s n k f 0 p T , e + o 0 i o n r 0 r k r e ) e e ? e ; s n ? f e A ( r x t t t e p o o s i - k k h r e e e y 3 n n d ) 0 . . T 0 r r o ; e e k f f e r r n e e s s s . h h e T T x o o p k k i e e r n n e ) , s ; _ i n , 1.3 Retrieving Projects and Files# Projects and files are retrieved through the GakuNin RDM API.
c ) c ) o ; o ; n " { } n ` { } R s h R s h e t t h } e t t h } t t e , t t e , r r p a A r f p a A i e s d u i i s d u e s : e t e l : e t v p r h v e / r h i / s o i s / s o n n a : r n R a : r g s p i g e p i e i { z s i { z p . a f p . a r = r t i o r t o d i l n d i j a m o e s m o e w . n s e . n c a n : n : t i i i = i t i ` n i ` l . B a . B i f a e s w a e s e c a t a c a t t . r o i . r c j e r t j e h p r a p r ( / g f / v $ e e v $ 2 { t 2 { / s c / s u e h n e s s ( o s e s d s r i e i s o s o / n / n m . $ . e a { a / c p c n c r c o e o e d s j s e s e s s T c T / o t o ? k I k f e d e i n } n l } / } t ` f ` e , i , r l [ e c s a / t $ e { g p o r r o y v ] i = d p e r r o } j / e ` c , t " , 2. Utilizing the Dydra RDF Database# 2.1 Managing Private Data# Dydra is originally a public RDF database, but by using API tokens, it is possible to manage private data.
Setting Environment Variables:
D D D Y Y Y D D D R R R A A A _ _ _ A R A C E P C P I O O _ U S T N I O T T K = O E y R N o Y = u = y r y o - o u a u r c r - c - s o r e u e c n p r t o e s t i - t t o o r k y e n
Querying with API Token:
c ) o ; n ` { } s h t t m h } b } t e e , o ) r p t a ' ' d q , e s h d A A y u s : o e c u : e p d r c t r / : s e h n y n d : p o e : s y ' t r w e d P { ' i s r O : z U p = a S a R a . T ' t L r a c ' a i S q w o , p o e l a m p n a Q i / l ' r u t $ i : c e { c h r f a a ` P y e c t B a , t c i e r c o o a a h u n r m ( n / e s t s r ( } p { / a $ $ r { { q p r l r e - o p r c o e e s s s i u s t l . o t e r s n y + v } j . / s D s o Y p n D a ' R r , A q _ l A ` P , I _ T O K E N } ` , 2.2 Data Separation Using Named Graphs# By using Named Graphs, data is logically separated per project.
Named Graph Design:
By using the resource URIs obtained from the GakuNin RDM API directly as Named Graph URIs, the correspondence between data provenance and graphs is made clear.
I n t e g r a t e d G r a p h : h t t p s : / / a p i . r d m . n i i . a c . j p / v 2 / n o d e s / { p r o j e c t I d } /
By integrating all data related to a project (metadata, SKOS subjects, profiles) into a single Named Graph, the following benefits are achieved:
Simple queries : No need to combine multiple graphs with UNIONEfficient search : Easy cross-search of metadata and SKOS subjectsData consistency : All data managed within the same graphInteroperability with external systems : Direct correspondence between RDM resource URIs and RDF graphsSimplified management : Reduced operational burden through unified graph URIsFor example, when dc:subject in metadata references a SKOS concept, it can be directly JOINed within the same graph to retrieve subject labels:
S F W } E R H L O E ? ? E M R f s C E i u T < l b h { e j ? t e f t d d c i p c c t l s : : e : t s s / i u k ? / t b o t a l j s i p e e : t i c p l . ? t r e r t e d i ? f ? m t s L s . l u a u n e b b b i j e j i ; e l e . c c a t ? t c s L . . u a j b b p j e / e l v c 2 t / L n a o b d e e l s / . { p r o j e c t I d } / >
Specifying Named Graph during metadata registration:
c c ` o o ; n n P P I } s s R R N t t E E S G } F F E R g i I I R A < r n X X T P $ a s H { d d d d p e d d D r c c c c h r c c A < e : : : : U t : t T $ s t c d s r Q e A { o i r e u i u < r g u t e s b e h m { r r l a c j = r t s a c e t r e y t : p e o i c ` p h U " r p t h = : < U r $ t t / h r i { " i < t ` / t i } m $ o $ p p t } > e { n { s u p > t m m : r : a a e " e / l { d t $ t / . d a a { a a p c t d m d p r u t a a e a i g r e . t t t . / l r t a a a r d . m i . d . d c s t c a s m r : l r t u . e g B e e a b n l / i } a . j i e d b " t d e i m c l o e c . e / i ; r s t a n t o } c } c t e g " r > . s r r i j / m a ; p p 1 s p t / . / h i v 1 > i o 2 / c n / > R } n e " o s d o ; e u s r / c $ e { p ; r o j e c t I d } / ` ; Project-level search:
c c ` o o ; n n P P S F W } s s R R E R H t t E E L O E ? O F F F E M R r P I g s I I C E e d d T L r e X X T < s c c I T a a $ { o : : O E p r d d ? { u t c N R h c c c r g r i r A ( U h : t e r c t e L C r Q e s a e l a O i u < r o p e t { N e h m u h a o T = r t s r U ? r ? A y t : c r d t r I ` p e i c i ? e N h = : < } t t c s S t / h ? > e l r o ( t ` / t t r e e u L p p t i m a r C s u p t s ; t c A : r : l : o e S / l e B r E / . i d ( a p ? b . c ? p r u c l : t i g r r i d i . / l e o e t r d . a g s l d c t r c e m r o a r ) . e g r p i , n l / h p i e d ? i t L i m c d c i C . e / e R o A a n t s e n S c t e c s E . s r r o ? ( j / m i u d " p 1 s p r e $ / . / t c s { v 1 > i e c k 2 / o r e / > n ; i y n p w o t o d i r e o d s n } / " $ } ) { ) p ) r o j e c t I d } / ` ; All 15 Dublin Core elements are fully supported.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , Registration API Implementation:
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 3.2 Advanced Search Functionality# A keyword search across multiple Dublin Core fields is implemented.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 4. SKOS Subject Hierarchy Management# 4.1 SKOS Concept Schema Implementation# SKOS (Simple Knowledge Organization System) was adopted for managing the hierarchical structure of subjects.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , SPARQL query for SKOS registration:
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 4.2 Retrieving Hierarchical Structure and Utilizing Subject Labels# Thanks to the integrated graph, metadata and subject relationships can be easily queried:
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 5. Project RDF Export Feature# 5.1 Retrieving Project-Wide RDF Data# Thanks to the integrated graph, all data (metadata, SKOS subjects, profiles) can be exported with a single CONSTRUCT query.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 6. UI Component Design# A form component that allows editing of all 15 Dublin Core elements is implemented.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 6.2 Search Interface# Both keyword search and field-specific search are supported.
e } x ; p p ] s o r , r r o { } c t v , / i i n t c c a } t u a c d d a y l l u , o s p o e : m p i i t u p } k e p n r e e e e h r a , e r / s s " : : n n o l r s r n i a t : g t t r : a c e : n p a " " I S i m o s f i a [ k G o d e z " s p p " o / u u a a : c a h : e o h : a t n k u r t t : n t u h i u t p e i t { s t " t O n N h r t o p " e p h h p " i " o : n s o _ s t / t , n , c : : s t : t [ i e p / f y / p . o R s r { / . p / s . n D s o a f e a : . s M . c c u : c / n : " e e c l c e , n s o l " a x N v s u _ c u p t e . . n r o n i a x G e t e d t . u t A n s a e s r t A K v . d " . d h u U . r , r m ] t N G d o d . / h I A m s m n a O N K . f . i u p _ U n . n i t t C N i f i . h i L I i u i a O o I N . l . c p n E _ a l a . t s N C c _ c j i T L . w . p o = _ I j r j / n I E p i p s { D N / t / 2 . , T o e o / t _ a " a u s S u , u s E t t e C h h r R 2 2 s E / / / T a t m , u o e t k / h e " o n , r " i , z e " , 7.1 Authentication and Access Control# Session validation at all API endpoints Automatic access token refresh Project-level data separation using Named Graphs Server-side rendering with Next.js App Router SPARQL query optimization (use of OPTIONAL clauses) Preemptive token refresh (5 minutes before expiry) 8. Deployment and Infrastructure# 8.1 Deploying to Vercel# a } s y i } i } r n f f e c t t t c c i } t O ( o o o T ( o o f u j n a k k k o t n n c r } r w c e e e k o s s ( o e ; n t i c n n n e k t t s n t a r e ( n o . . . n e h G s u c e x t { i u a r e n c s o e t r . c f p o t n c e x e . u h u t n t e r i k t i t c f p x e r o l r o s e r e o a ) e r i p x r u d n e { k s s e n k l s e r i p e l R e f e T h s ; e { s s e r i n d e w r n o T A n l T h s a r t R f e , k o t , o o T A t e T e r a s e k : g k o t i s i f e c h n e a i e k o A m r s c e : n M c n n e = n t e e h e d : a c n ) s s T r t o = a c = h & s o e r h u = c h { & k f e . n a c e M = t e r f f t c a o c a t o n e r l , c c u k t c o k s s e o o c n h u k e h s o u u o t ( . r e n = e h r s n u . r f r n d e ( e t n e e l e . u a T d D r . t x f o n r s w o T a a . p r o t e i a k o t } c r i e r T f n i e k e ) c e r s ( i r g t n e . e f e h D m e s n n { s r s a e s r r . s o s e _ 5 t h e e a . w _ s a e > T f f c r ( t h t m . = o r r c e ) o _ ; i n k e e e f k t n o t e s s s r / e o u w o n h h s e n k t ( k ) A _ s 1 ; e e ) e t c t h 0 n s n { o c o _ 0 ; / . k e k t 0 b e e s e o ) e 1 x n s n k f 0 p T , e + o 0 i o n r 0 r k r e ) e e ? e ; s n ? f e A ( r x t t t e p o o s i - k k h r e e e y 3 n n d ) 0 . . T 0 r r o ; e e k f f e r r n e e s s s . h h e T T x o o p k k i e e r n n e ) , s ; _ i n , 8.2 GakuNin RDM OAuth Configuration# Redirect URI registration:
a } s y i } i } r n f f e c t t t c c i } t O ( o o o T ( o o f u j n a k k k o t n n c r } r w c e e e k o s s ( o e ; n t i c n n n e k t t s n t a r e ( n o . . . n e h G s u c e x t { i u a r e n c s o e t r . c f p o t n c e x e . u h u t n t e r i k t i t c f p x e r o l r o s e r e o a ) e r i p x r u d n e { k s s e n k l s e r i p e l R e f e T h s ; e { s s e r i n d e w r n o T A n l T h s a r t R f e , k o t , o o T A t e T e r a s e k : g k o t i s i f e c h n e a i e k o A m r s c e : n M c n n e = n t e e h e d : a c n ) s s T r t o = a c = h & s o e r h u = c h { & k f e . n a c e M = t e r f f t c a o c a t o n e r l , c c u k t c o k s s e o o c n h u k e h s o u u o t ( . r e n = e h r s n u . r f r n d e ( e t n e e l e . u a T d D r . t x f o n r s w o T a a . p r o t e i a k o t } c r i e r T f n i e k e ) c e r s ( i r g t n e . e f e h D m e s n n { s r s a e s r r . s o s e _ 5 t h e e a . w _ s a e > T f f c r ( t h t m . = o r r c e ) o _ ; i n k e e e f k t n o t e s s s r / e o u w o n h h s e n k t ( k ) A _ s 1 ; e e ) e t c t h 0 n s n { o c o _ 0 ; / . k e k t 0 b e e s e o ) e 1 x n s n k f 0 p T , e + o 0 i o n r 0 r k r e ) e e ? e ; s n ? f e A ( r x t t t e p o o s i - k k h r e e e y 3 n n d ) 0 . . T 0 r r o ; e e k f f e r r n e e s s s . h h e T T x o o p k k i e e r n n e ) , s ; _ i n , Summary# This system addressed the following technical challenges:
OAuth 2.0 authentication implementation - Secure integration with GakuNin RDMAutomatic token refresh - Maintaining long-running sessionsData separation using Named Graphs - Project-level managementPrivate RDF data management - Access control via API tokensFull Dublin Core support - Standard metadata schema implementationSKOS subject hierarchy management - Structured subject classificationSPARQL search - Flexible metadata searchThis system contributes to the promotion of open science as a practical solution for research data management.
References# Source Code# The complete source code is published in the following repository:
https://github.com/nakamura196/next-dydra