Trying Odeuropa-Related Tools

Overview I had the opportunity to try tools related to Odeuropa, so this is a memo about that experience. What is Odeuropa? An explanation is available on the following page. https://odeuropa.eu/ Below is a machine-translated description. Odeuropa is an innovative EU-funded project that studies Europe’s “olfactory cultural heritage.” Project objectives: To investigate and document the role that smells have played in European culture from 1600 to 1920. Using cutting-edge AI technology, it extracts smell-related information from approximately 43,000 images and 167,000 historical texts (in English, Italian, French, Dutch, German, and Slovenian). ...

July 24, 2025 · 19 min · Nakamura

Added Route Registration Feature to "Rekichizu x Next.js"

Overview “Rekichizu x Next.js” is a web application built with Rekichizu and Next.js. I have added a route registration feature to this web application, which I will introduce here. Feature Introduction Access the top page and click the “Manage My Routes” button. You will be prompted to log in, so click the “Login” button in the upper right corner. After logging in, a list screen like the following will be displayed. ...

July 23, 2025 · 4 min · Nakamura

Trying DToC: Dynamic Table of Contexts

Overview I had an opportunity to try DToC: Dynamic Table of Contexts, so this is a memorandum. https://www.leaf-vre.org/docs/features/dtoc The machine-translated description is as follows: It brings innovation to electronic reading by combining the power of semantic markup with book navigation features. The traditional overview functions of printed books – the table of contents and keyword index – are dynamically integrated with full-text search and tag-based indexing features, creating a new reading experience. ...

July 16, 2025 · 5 min · Nakamura

Handling Insufficient Disk Space in Ontotext GraphDB Desktop Edition

Overview When using the desktop edition of Ontotext GraphDB, https://www.ontotext.com/products/graphdb/ I encountered a situation where data imports and other operations could not be performed due to insufficient disk space: File not loaded; Insufficient disk space to start a transaction for repository ‘xxx’ due to: The repository ‘abc’ is critically low on free disk space with 4.6% (xxx GB) free left This article introduces one temporary workaround for this issue. ...

July 16, 2025 · 2 min · Nakamura

Trying AllegroGraph

Overview I had the opportunity to try AllegroGraph, so this is a memo of my experience. https://allegrograph.com/ Usage There appear to be several setup methods, but I will try the following cloud version. https://allegrograph.cloud/ After setup, the following screen is displayed. After logging in, multiple repositories are displayed. Enabling Anonymous Access For example, the SPARQL endpoint for the “actors” repository is: https://ag1edt2www58hzzy.allegrograph.cloud/repositories/actors/sparql By default, Basic authentication is required. ...

July 16, 2025 · 11 min · Nakamura

Fixing the 'ref' Bug in DHConvalidator

This article was partially written by AI. Overview DHConvalidator is a tool for converting Digital Humanities (DH) conference abstracts into a consistent TEI (Text Encoding Initiative) text base. https://github.com/ADHO/dhconvalidator When using this tool, the following error occurred during the conversion process from Microsoft Word format (DOCX) to TEI XML format: E R R O R : n u . x o m . P a r s i n g E x c e p t i o n : c v c - c o m p l e x - t y p e . 2 . 4 . a : I n v a l i d c o n t e n t w a s f o u n d s t a r t i n g w i t h e l e m e n t ' r e f ' This article shares the cause and solution for this issue. ...

June 27, 2025 · 23 min · Nakamura

Building an MCP Server for Searching the Koui Genji Monogatari Text DB

Overview This is a memo on building an MCP server for searching the Koui Genji Monogatari Text DB. As an example, it can be used from Claude Desktop as follows: https://youtu.be/8s2R9V2hEvc?si=p9SW-IvhdNSzwTLN Background In the following article, I introduced the construction of an API server for searching the Koui Genji Monogatari Text DB. As an application of this, I built an MCP server to try interacting with AI agents. ...

June 26, 2025 · 3 min · Nakamura

Building an API Server for Searching the Koui Genji Monogatari Text DB

Overview I built an API server for searching the Koui Genji Monogatari (Collated Tale of Genji) Text DB, so here are my notes. https://genji-api.aws.ldas.jp/ Background The following page publishes the text data of “Koui Genji Monogatari” in a TEI/XML-compliant format. https://kouigenjimonogatari.github.io/ This text data is registered in Elasticsearch to create an API that enables searching by text segments. Usage The usage documentation page using OpenAPI and Swagger is accessible at the following URL: ...

June 25, 2025 · 25 min · Nakamura

Creating a Castle Generation Command as a Minecraft Mod [Fabric 1.21 + Claude]

Note: Most of this article was written by AI. Introduction For the purpose of learning Minecraft Mod development, I created a Mod that generates a castle with a single command. Development Environment The technology stack used: Minecraft: 1.21 Modding Framework: Fabric Mod Java: 21 Development Environment: Cursor (AI-integrated editor) AI Assistance: Claude 4 Sonnet Environment Setup Java 21 installation was needed, so I installed it with Homebrew: b r e w i n s t a l l o p e n j d k @ 2 1 Project initialization was done by cloning Fabric’s official template: ...

June 16, 2025 · 5 min · Nakamura

NFT Support for the Digital Cultural Heritage Management System (Prototype)

Notice: 2025-06-14 Development progress is summarized here. https://zenn.dev/nakamura196/books/41693d2d017082 Overview Starting with the following article, I have been prototyping a digital cultural heritage management system using blockchain. This time, I modified the system so that uploaded data is recognized as NFTs. This is a learning process, so there may be incomplete aspects, but I hope it serves as a helpful reference. Usage Page The file upload method remains the same as before. A link to the detail page was added to the list page displayed after upload. ...

June 12, 2025 · 11 min · Nakamura

Creating TEI/XML Files from IIIF Manifest Files Using NDL Kotenseki OCR-Lite

Overview This article introduces a Gradio app that creates TEI/XML files from IIIF manifest files using NDL Kotenseki OCR-Lite. It can be accessed at the following URL: https://nakamura196-ndlkotenocr-lite-iiif.hf.space/ Background This is a continuation of the following articles: Previously, two separate apps were needed, but with this update, the entire conversion process can be completed within a single Gradio app. Additionally, issues such as difficulty tracking progress when processing manifest files with many image pages, and the inability to copy processing results, have been fixed. ...

June 12, 2025 · 1 min · Nakamura

Prototyping a Digital Cultural Heritage Management System Using Blockchain and Pinata IPFS

Notice: 2025-06-14 The development progress is summarized at the following link. https://zenn.dev/nakamura196/books/41693d2d017082 Overview As part of learning blockchain technology, I created a prototype management system for digital cultural heritage. Since the purpose is learning blockchain, there are many missing features, but I plan to add and improve them in the future. https://digital-heritage-five.vercel.app/ Technologies Used The Ethereum Sepolia network is used. Since the purpose is blockchain learning and prototype development, a test network is used. Pinata is used as the hosting service for the distributed file storage IPFS. https://pinata.cloud/ ...

June 12, 2025 · 7 min · Nakamura

Part 2: Creating Annotated IIIF Manifest Files and TEI/XML Files Using NDL Classical Book OCR-Lite

Overview In the following article, I introduced how to create annotated IIIF manifest files and TEI/XML files using NDL Classical Book OCR-Lite. Since the explanation above was insufficient in many areas, I will re-introduce how to use it. Supplement Along with writing this article, the following improvements were made. Process 1: Creating IIIF Manifest Files Added support for IIIF Presentation API v3. Process 2: Creating TEI/XML Files Added a form that accepts string input, considering the connection with Process 1. Usage Process 1: Creating IIIF Manifest Files Access the following. ...

June 6, 2025 · 2 min · Nakamura

Describing Hierarchical Table of Contents with Omeka S IIIF Server Module

Overview This article introduces how to describe a hierarchical table of contents using the Omeka S IIIF Server module. Documentation The documentation is somewhat complex, but explanations are available at: https://github.com/Daniel-KM/Omeka-S-module-IiifServer?tab=readme-ov-file#input-format-of-the-property-for-structures-table-of-contents Simple Table of Contents The following example from “Toyo Bunko Media Repository” is used: https://app.toyobunko-lab.jp/s/main/document/9f9d95c2-d33d-7402-742b-47db12748688 Specify {Range ID},{Range name},{Canvas index} as follows: r r r r r r r r r r r 1 2 3 4 5 6 7 8 9 1 1 , , , , , , , , , 0 1 延 明 安 安 天 天 寛 寛 享 , , 享 和 永 永 明 明 政 政 和 文 文 、 , 一 二 一 二 一 二 , 化 化 寛 2 , , , , , , 2 一 、 延 5 5 7 1 1 1 2 5 , 文 、 5 9 1 4 7 1 5 2 政 宝 0 2 7 8 7 、 暦 9 二 , , 1 3 1 3 This results in the following table of contents display: ...

June 5, 2025 · 21 min · Nakamura

Registering Resources (Items and Images) in Omeka S Using an MCP Server

Overview As part of learning about MCP servers, I created an MCP server that registers resources (items and images) in Omeka S. https://github.com/nakamura196/omeka-s-mcp-sample Related Articles I referenced the following articles. https://zenn.dev/himara2/articles/14eb2260c4f0e4 https://zenn.dev/meson_tech_blog/articles/simple-mcp-server Setup I will leave the details of how to use the MCP server with Claude Desktop to other articles. Add configuration like the following. { } " } m c " } p o , S m " " ] " } e e c a , e r k o r " n " " " v a m g < v O O O e " m s a " M M M r : a " b : E E E s n : s K K K " { d o { A A A : " [ l _ _ _ : u A K K { t P E E " e I Y Y p _ _ _ _ y p U I C t a R D R h t L E E o h " N D n > : T E " / I N , o " T T m < Y I e O " A k m : L a e " _ k " : s a < _ O " m S M < c E O p U K M _ R A E s L _ K a > K A m / E _ p a Y K l p _ E e i I Y / " D _ s , E C e N R r T E v I D e T E r Y N / > T o " I m , A e L k > a " _ s e r v e r . p y " As a result, the tools are registered as shown below. ...

June 5, 2025 · 4 min · Nakamura

Applying Filters to created and changed Fields in Drupal's JSON:API

Overview This is a memo on how to apply filters to created and changed fields in Drupal’s JSON:API. Background The following was used as a reference. https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module/filtering For example, when trying to filter only items updated on or after June 2, the following query did not work correctly. ?filter[a-label][condition][path]=changed&filter[a-label][condition][operator]=%3E%3D&filter[a-label][condition][value]=2025-06-02 Correct Method The following article was helpful. https://www.reddit.com/r/drupal/comments/1bdvu61/json_api_drupal_filter_on_date/ Note that timestamp fields (like created or changed) currently must use a timestamp for filtering: ...

June 3, 2025 · 1 min · Nakamura

DTS Viewer Update: Pagination Support

Overview This is a note about adding pagination support to the DTS (Distributed Text Services) viewer. https://dts-viewer.vercel.app/ja/ Background When providing a large number of resources through DTS, it appears that the view property is used to present pagination information, as shown below. https://distributed-text-services.github.io/specifications/versions/unstable/#collection-endpoint { } " " " " " " " " " } " ] " } @ d @ @ c t t t d , m , v c t i t o o o i u e " i o s d y l t t t b m . e n V " p l a a l l " " ] b . w " " " " " " t e e e l l e i p t e . " @ @ f p n l e r : " c P C " n u i r " : i t i r e a x s t a h : C b t " d y r e x s t i " : i r i o l l { : { " p s v t t " o l o e l " r i e " : e t i " " : n e " n n d L e s " l [ " " o : : " t C " t r e " h : a " : : u " : t o : s e t : e n / s " " h r l " n t r [ g a " " " / / t " e l " : " r { " " p P / : a a t 1 s e / : e : : i a a p p p - _ c a 1 s / g p " i i s a d t p , 1 [ " d i i / / : l e i i 0 d " f t n a d d / p _ o / 0 e É r s a d p t t / h p n d 0 c " / t t i s s d a o " t 0 P o , c i s / / i " i , s , o l o o d c c s , l / i e " l n c t o o t u c l v l " o s l l r s o u N a e , l / l l i " l s a l c l c e e b , l " t u t e o c c u e , i e i c l t t t c o " o t l i i e t n n i e o o d i a : / o c n n - o l ? n t / / t n e " i / i ? ? e / L d ? o i i x { d e = i n d d t ? e t l d / = = - i s t e = ? l l s d r t l i e e e , C e t e d t t r p h s r t = t t v a a e t l r r i g r d s r e e e c e t e _ e t s s e , e d s t _ _ s n s P e _ r d d . a " o _ d e e e g v , i p e s _ _ i } l o _ _ p p t " " u i p d o o h , h s l o e i i u t " u i _ l l b t } s l p u u . p & u o s s i s p s i & & o : a & l p p / / g p u a a s / e a s g g p v = g & e e e i 1 e p = = c a 9 = a 2 5 i f " 1 g 0 0 f . , " e " 0 i o , = , " c r 1 a g 8 t / " i v , o i n a s f / / c 1 o 6 n 7 t 8 e 7 x 4 t 5 / 8 1 5 - " a ] l , p h a 1 . j s o n " , I updated the DTS Viewer to support the view property described above. ...

June 2, 2025 · 5 min · Nakamura

Using Pagination in IIIF Collections with IIIF Presentation API v2

Overview I had the opportunity to use pagination in IIIF collections with IIIF Presentation API v2, so this is a memo of the process. Background IIIF collections allow you to provide a list of multiple manifest files (and collections) as shown below. https://iiif.io/api/presentation/2.1/#collection { } " " " " " " " " ] @ @ @ l v d a m c i t a i e t a { } o d y b e s t n n " p e w c r i " " " t : e l i r i f @ @ l e " " n i b e i t a x " : : g p u s d y b t h H t t t " p e " t " " i i i s : e l : t s T n o o " " " p c o t n n : " : : " : : p " " " h h / C : : : [ t " " t / o L t s B t e l e " " " p c o p x l v t D P : : o : a e e o e r / M k / m c l p s o / a / p t " c v e n 1 i l i C , r i x i " i e o o i d a f i . n l p e m e f o " l t d p s . r , e i l t i g c o b e " o t n y . , i i o a i o o E r p i n f x g i f a / / / f C m i p c o o p i r o r l l i e l l e f s l E e / e e x c O b n c a t r o t t m i g o a i p o a k t o l n n 1 i n e " i / o / , z m n t O a a / o r t n 2 p g i i / " a o f c , n n e o i " s n z , t t a " e t , x i t o . n j " s , o n " , When the number of target manifest files becomes large, it becomes difficult to deliver them in a single IIIF collection. ...

June 2, 2025 · 9 min · Nakamura

How to Allow Non-Admin Users to Access Configuration Pages in Drupal

Parts of this article were generated by AI. Overview When creating configuration pages for custom modules in Drupal, you may want to allow non-admin users to access them. This article explains how to solve this issue, using the GitHub Webhook module as an example. The Problem Initially, the routing configuration was as follows: # g i g t p d r i h a e e t u t f _ _ q _ h b h a f t u p u _ : u o i i e b w l r t r r _ e t m l e m w b / s : e m i e h a : : e s b o d n s h o m \ ' t i o k i D G s o o . n r i : n k s / u t : . e c p H r t o a u ' o t n l b a u i f \ d t n i g W m i g g i e i n s / t b n g : g h h i . i u o s y t b o t m h _ k e l u w r b e S _ b e s w h t i e o t t b o i e h k n o \ g c o F s o k o ' n ' r f m i \ g S u e r t a t t i i n o g n s ' F o r m ' With this configuration, only administrators with the administer site configuration permission could access the page, and general users could not. ...

May 28, 2025 · 9 min · Nakamura

Creating Annotated IIIF Manifest Files and TEI/XML Files Using NDL Klasseki OCR-Lite

Notice I have created a more accessible article explaining the workflow introduced in this article. Please also refer to the following. Overview I would like to introduce a prototype tool for creating annotated IIIF manifest files and TEI/XML files using NDL Klasseki OCR-Lite. Creating Annotated IIIF Manifest Files First, I created a Gradio app that takes an IIIF manifest file as input and outputs an annotated IIIF manifest file using NDL Klasseki OCR-Lite. It is published using Hugging Face Spaces. ...

May 27, 2025 · 45 min · Nakamura