Three Pitfalls When Adapting a SPARQL Client to Apache Jena Fuseki

I adapted the SPARQL Explorer “Snorql,” originally built for Virtuoso / Dydra, to work with Apache Jena Fuseki. While SPARQL is a W3C standard, the behavioral differences between endpoint implementations can be surprisingly large. Here I document the three issues I encountered during Fuseki adaptation and their solutions. Development Environment I started Fuseki with Docker and tested locally. # s e o d r f l f o v u u u c i s i c p e m s k c e m o o n o e e e e k a n r - v - - l - s k r s i g t t i u : i - : : e a s " r A F m f - c : i : 3 o D U e u d o n 0 n M S s s a m s e 3 m I E : e t p t r 0 e N K k a o a _ : n _ I i : s i n 3 t P _ - e n a 0 : A D d . / m 3 S A a y j e 0 S T t m e : " W A a l n O S : a f R E / - u D T f f s = _ u u e a 1 s s k d = e e i m t k k i e i i n s t d # c o u c L r - k o l H - e a d r d - ' a X C t c t o a o e P n - m s O t b p t S e i o T n n s d t a e a ' - r t h T y u a t y p t p @ p e t - : : e d / s / t t l e d o x a c t t a / a l t . h u t o r t s t l t l : e 3 ' 0 3 0 / t e s t / d a t a ' 1. DESCRIBE Response Format Differs Symptom When sending a DESCRIBE query to Fuseki, results were not displayed on screen. The console showed JSON parse errors. ...

February 8, 2026 · 16 min · Nakamura

Snorql -- Published a Browser UI for Easily Exploring Multiple SPARQL Endpoints

Snorql — A Browser-Based UI for Exploring Multiple SPARQL Endpoints https://nakamura196.github.io/snorql/ Introduction Have you ever wanted a quick, easy way to try out SPARQL endpoints? SPARQL is the standard query language for searching Linked Open Data (LOD), but each endpoint often has a different UI — or none at all. To solve this, I published Snorql, a tool that lets you switch between multiple endpoints from a single, unified UI. ...

February 8, 2026 · 8 min · Nakamura

Dydra JSON-LD Serialization Behavior and Workaround

Overview Dydra is an excellent cloud-based RDF triple store, but in some cases its JSON-LD serialization may produce output that differs from expectations. This blog post explains the observed behavior and the workaround we implemented. Observed Behavior Expected Output In the JSON-LD specification, URI references are commonly output in object form as follows: { } " " " } " } @ @ p , p i t r " r " d y o @ o @ " p v i v i : e : d : d " w " w " " : a : a : h s s t [ A " G " t " t h e h p p t t n t s r r t e t : i p r p b s a s / : u : t : e E t / e / x n e / d / a t d s B s m i T e y e p t o p " p l y " o : o e " : l l . ] i { i c , { a a o . . m e e / t t i h h t e e e r r m s s / c c 1 a a " n n , . . i i o o / / a t d x d / r 0 e x s a s b / c 0 d x . 1 . 2 . 3 " 4 . . . " Output Observed in Dydra In Dydra’s JSON-LD endpoint, some URI references were observed to be output as plain strings: ...

December 29, 2025 · 15 min · Nakamura

Odeuropa Visualization: A Platform for Visualizing Scent Data Using SKOS Vocabularies and SPARQL

Introduction Odeuropa is a project that studies the history of scents in Europe, collecting and analyzing representations of scents depicted in paintings, literature, and other historical sources. This article introduces the implementation of a web application for visualizing scent data based on SKOS (Simple Knowledge Organization System) vocabulary systems, utilizing Odeuropa’s SPARQL endpoint. https://odeuropa-seven.vercel.app/ja/ Project Overview Technology Stack Frontend: Next.js 15 (App Router) UI: Material-UI v5 Internationalization: next-intl Data Retrieval: SPARQL queries (Odeuropa SPARQL endpoint) Language: TypeScript Hosting: Static Site Generation (SSG) Main Features 1. Scent Search (/odeuropa-sources) The core feature of the application, allowing users to search and browse smell perception events collected by the Odeuropa project. ...

October 24, 2025 · 18 min · Nakamura

Distinguishing Between RDFS and SHACL: Understanding the Relationship Between range and propertyShape

Introduction When working with data in RDF (Resource Description Framework), two mechanisms come up: “RDFS (RDF Schema)” and “SHACL (Shapes Constraint Language)”. Both can define constraints on properties and classes, but their purposes and behavior are completely different. This article answers the following questions that are particularly prone to confusion: What is the difference between rdfs:domain / rdfs:range and SHACL’s sh:class / sh:datatype? Is it acceptable to set SHACL constraints that differ from the RDFS range? Is it problematic if the range is a class (foaf:Person) but SHACL specifies a datatype (xsd:string)? 1. The Fundamental Difference Between RDFS and SHACL RDFS: For Inference RDFS is a declaration that states “if this property is used, the following knowledge can be derived”. ...

October 15, 2025 · 22 min · Nakamura

Developing an RDF Metadata Management System Integrating GakuNin RDM and Dydra

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: ...

October 14, 2025 · 46 min · Nakamura

Investigating the Vocabulary Hierarchy of Odeuropa Explorer

Introduction Odeuropa Explorer is a fascinating project that digitizes Europe’s olfactory heritage. Funded by the EU’s Horizon 2020 research program, it provides a platform for cross-searching and exploring historical smell experiences. This project classifies smell-related information into three main categories: Smell sources: Objects and substances that emit odors Fragrant Spaces: Places and spaces associated with smells Gestures and Allegories: Gestures and allegorical expressions related to smell This article reports the results of investigating the hierarchical structure of these vocabularies using SKOS (Simple Knowledge Organization System) format data published in the Odeuropa vocabularies repository. ...

October 13, 2025 · 39 min · Nakamura

Guide to Registering RDF Data to Dydra via API

Introduction Dydra is a cloud-based RDF database service that provides a SPARQL endpoint and REST API. This article explains how to programmatically register RDF data using the Dydra API. Prerequisites Dydra account API key Node.js environment (v16 or higher recommended, when using Node.js) Note: The code examples in this article use the following as samples: Account name: your-account Repository name: your-repository API key: your_api_key_here When actually using these, replace them with your own Dydra account information. ...

October 10, 2025 · 13 min · Nakamura

Odeuropa: The World of Linked Data for Extracting Scents from Historical Documents

Introduction Odeuropa is a unique project that extracts descriptions of “scent” from European historical documents and structures them as Linked Data. In this article, we explore the actual data through the SPARQL endpoint, revealing its structure and design philosophy. What is Odeuropa? Project name: Odeuropa (Odeurs d’Europe = European scents) Database URL: https://data.odeuropa.eu/ SPARQL endpoint: https://data.odeuropa.eu/repositories/odeuropa Web interface: https://explorer.odeuropa.eu/ Overall Data Model Odeuropa uses an extended ontology specialized for scent, based on CIDOC-CRM (Conceptual Reference Model for Cultural Heritage). ...

October 4, 2025 · 17 min · Nakamura

How to Register the PROV-O Ontology in Omeka S

Introduction When building digital archives with Omeka S, using standard vocabularies for metadata description improves data interoperability. This article explains the steps to register PROV-O (PROV Ontology), developed by W3C, in Omeka S. PROV-O is an ontology for describing provenance information about data and digital objects, allowing structured recording of “who,” “when,” and “how” data was created or modified. Prerequisites Omeka S (version 3.0 or later) installed Logged in with administrator privileges Internet connection environment (required for importing from external URLs) Registration Steps 1. Accessing the Vocabulary Management Screen Log in to the Omeka S admin panel Click “Vocabularies” from the left menu Click the “Import new vocabulary” button in the upper right 2. Entering Basic Information Enter the vocabulary basic information as follows: ...

August 27, 2025 · 5 min · Nakamura

Trying Text Annotation with Recogito

Overview I had the opportunity to try text annotation using Recogito, so this is a personal note for future reference. Recogito is available at the following link. https://recogito.pelagios.org/ It is described as follows. Semantic Annotation without the pointy brackets. Recogito is an annotation tool for texts and images - not just for Digital Humanities scholars. Sample Data We will use the following resource published by the National Diet Library as an example. ...

July 24, 2025 · 8 min · Nakamura

Trying grlc (git repository linked data API constructor)

Overview The GitHub repository for grlc is as follows. https://github.com/CLARIAH/grlc It is described as follows. grlc, the git repository linked data API constructor, automatically builds Web APIs using shared SPARQL queries. I tried out this tool, so here are my notes. The API endpoint created targeting the Japan Search SPARQL Endpoint is as follows. https://grlc.io/api-git/nakamura196/grlc-jps Background While researching Odeuropa, I found this tool mentioned on the following page. https://odeuropa.eu/nosebooks/ ...

July 24, 2025 · 3 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

Using the "Tale of Genji in Textbooks LOD"

Overview This is a memo about trying out the “Tale of Genji in Textbooks LOD” (Kyokasho no Naka no Genji Monogatari LOD). https://linkdata.org/work/rdf1s10294i It is described as follows. The “Tale of Genji in Textbooks LOD” is an LOD conversion of data on The Tale of Genji published in post-war authorized textbooks for the classical literature section of high schools. I would like to thank all those involved in creating and publishing the “Tale of Genji in Textbooks LOD”. ...

December 15, 2024 · 8 min · Nakamura

Trying Out Peripleo

概要 I looked into how to use “Peripleo,” so here are my notes. “Peripleo” is described as follows. Peripleo is a browser-based tool for the mapping of things related to place. https://github.com/britishlibrary/peripleo This time, I will introduce how to use it in combination with “Rekichizu” (historical maps) introduced in the following article. Output You can try it at the following URL. https://nakamura196.github.io/peripleo/ The repository is as follows. ...

December 13, 2024 · 11 min · Nakamura

Differences Between ShExC and ShExJ

Overview This is a ChatGPT-generated answer about the differences between ShExC (ShEx Compact Syntax) and ShExJ (ShEx JSON Syntax). There may be some inaccuracies, but I hope it serves as a useful reference. Answer ShExC (ShEx Compact Syntax) and ShExJ (ShEx JSON Syntax) are both representation formats for ShEx (Shape Expressions) schemas, but they differ in notation format and use cases. The differences are explained below. 1. Notation Format ShExC (ShEx Compact Syntax): ...

October 25, 2024 · 4 min · Nakamura

Differences Between ShEx and SHACL

Overview This is a ChatGPT-generated answer about the differences between ShEx (Shape Expressions) Schema and SHACL (Shapes Constraint Language). There may be some inaccuracies, but I hope it serves as a useful reference. Answer ShEx (Shape Expressions) Schema and SHACL (Shapes Constraint Language) are both languages for defining validation and constraints on RDF data. While they share the same purpose, they differ in syntax and approach. The differences are explained below. ...

October 25, 2024 · 4 min · Nakamura

Trying Out rico-converter

Overview I had the opportunity to try rico-converter, so here are my notes. https://github.com/ArchivesNationalesFR/rico-converter It is described as follows. A tool to convert EAC-CPF and EAD 2002 XML files to RDF datasets conforming to Records in Contexts Ontology (RiC-O) Converting Explanation is available at the following link. https://archivesnationalesfr.github.io/rico-converter/en/GettingStarted.html First, download the latest zip file from the following and extract it. https://github.com/ArchivesNationalesFR/rico-converter/releases/latest There are sample data in input-eac and input-ead, so we will convert these to RDF. ...

October 5, 2024 · 14 min · Nakamura

Registering RDF Data to Dydra Using Python

Overview I created a library for registering RDF data to Dydra using Python. https://github.com/nakamura196/dydra-py It includes some incomplete implementations, but we hope it proves useful in some situations. Implementation Details The import is performed in the following file. https://github.com/nakamura196/dydra-py/blob/main/dydra_py/api.py#L55 It uses the SPARQL INSERT DATA operation as follows. d e f i " I A " h } f p f m " m r " e i r o p " p g " a l i r o o s d e n r r : f f g e " " s t f # g g n i e i r i e t t i o r r A C ( i r r t f l f e f l _ s l r a s u o = " l R a a _ s s s b e m p t n N e D p p d g e v p r e y R _ a h = h t s u F h h a r q I { } " : q I G } } " e p o e p : p _ D p t _ o e e m i フ . t a u N n } " u N R } } " r r n s r r f F a u { r n l b n ァ = p a p e S t " e S A " b i s p i i i t ( r i t f e イ a h r E _ r E P o n e o n n l d h s i z - . r t ル r r = _ y R d y R H { s t n t t e a t a T _ q の d s u T a T n e ( = s ( ( ( t ( r ( t y c o d 読 f e g r = t = < t : q e " f s a s ) s i p h f m み l ( r i D a D { _ u r . D " e t : t o e u ( 込 i f a f A } f A g d e e s a E l f r r n " n c f み b i p i " T " T r a r q t t r f r ) T , " : k h i . l h s " A " A a t y u a a r , o : h : _ u l G e . " " p a ) e t o m e o " r n e r , s N { { h } s u s r f T p f a d k s a e o { { _ t s u : i a h f t " p f s ) p f r n u s _ c l e o i B p _ : : h o i e r . c c { e f r o e l f ( r a : i p o e r _ i p m n a i i " ) m l } o d s e p l a a a r c l , a i > s e s s a e t t l e a e t z t f p t h ) r t ( l = e { ( = u o h i o : i f e f ( { s = l n , n t f { o i n o f e l s t o U s n l ( r o l 2 y e f o t R e / e f m r f 0 . o t h I l s _ i a m . 0 i s r t h e f p p l t a e : n t m h e o . a a e ) t n s a a e R f a r t s = d e t t R D p q h ) ' p r u , D D F t i l , ) # n o t s y F h _ - t i e _ g d f e k u f フ ' n d c r r f i e p o ォ ) t . o a a i l g y d r ー , " d p l e r } a m マ ) e h s e a " t a ッ d } _ t ( p , e t ト a u o t e h " = は t { r r o . f フ a r i e g w o ァ = e = . i . h r イ q s N m , e m ル u p o p r a に e o n o ' e t 応 r n e r x ) じ y s , t m d て , e . l a 変 . v ' t 更 h t e , a e e r a x b ' w d t o n i e } s t l r " e ' l s ) = ) = F . b h a e e l a s i d e n e ) s r : e s r ) t e d . D e f a u l t s t o N o n e . Key Design Decision One notable design decision was handling large RDF files. When uploading large RDF files all at once, there were cases where the process would stop midway. ...

July 26, 2024 · 9 min · Nakamura