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.
Key Features:
- Data retrieval through complex SPARQL queries
- Joins smell emission events, smell objects, sources (paintings, literary works, etc.), and text fragments
- Utilizes CRM-based ontology (
ecrm:P67_refers_to,od:F1_generated, etc.)
- Multi-axis filtering
- Filter by scent source using SKOS vocabulary (
?xparameter) - Source type filter (visual items
E36_Visual_Item/ linguistic objectsE33_Linguistic_Object)
- Filter by scent source using SKOS vocabulary (
- Rich information display
- Scent labels, source information (title, image, URI)
- Text fragment citations
- Olfactory Experience qualitative information
- Pagination - Efficient display of 20 items at a time
SPARQL Query Example:
2. Scent Detail Page (/odeuropa-sources/item)
A page displaying detailed information about individual scents.
Displayed Information:
- Basic information
- Scent URI, label
- Links to Wikidata (
owl:sameAs) - Smell source
- Related sources
- List display of multiple sources (paintings, literary works, etc.)
- Image, title, and URI of each source
- Text fragment citations
- Olfactory experience details
- Metadata
- Time information (
time:hasTime) - Author, creation date, language
- Time information (
3. Concept List (/concepts)
Displays SKOS Top Concepts in a list, providing an overview of the entire scent vocabulary system.
Key Features:
- Displays only SKOS Top Concepts (
skos:topConceptOf) - Metadata display including images, alternative labels, and Wikidata links
- Display of child concept counts
- Navigation button to hierarchy tree
- Alphabetical sorting
4. Hierarchy Tree (/hierarchy)
Allows interactive exploration of the hierarchical structure of scent sources.
Key Features:
- Dynamic visualization of hierarchical structure
- Efficient data retrieval through lazy loading
- Flexible root specification via
?top=URIparameter - Color coding by level
- Links from each node to scent search
5. Collections (/collections)
Displays SKOS Collections, allowing browsing of thematically grouped scent sources.
Key Features:
- List display of SKOS Collections
- Display of member counts
- Collection member search
Odeuropa Data Structure and SPARQL
Data Model Overview
The Odeuropa project uses its own ontology (Odeuropa Data Model) that extends CIDOC-CRM (Conceptual Reference Model). The main entities and relationships are as follows:
1. Scent Event Model
2. Relationship Between Sources and Text Fragments
3. Olfactory Experience
Main Vocabularies and Prefixes Used
Main Vocabulary Descriptions:
| Prefix | Purpose |
|---|---|
od: | Odeuropa proprietary ontology (smell emission, smell generation, etc.) |
ecrm: | CIDOC-CRM (cultural heritage metadata standard) |
skos: | SKOS (knowledge organization system, classification of scent sources) |
schem: | Schema.org (basic metadata such as images, authors, dates) |
time: | OWL-Time (time information) |
owl: | OWL (identity links to Wikidata, etc.) |
SPARQL Query Implementation
1. Scent Search Query Implementation
The scent search feature executes complex queries spanning multiple entities.
Basic Query Structure
Filtering Implementation
Filter by SKOS vocabulary (?x parameter):
skos:broader* is a property path that recursively traverses hierarchical relationships. This allows searching for descendant concepts like “bread” and “meat” when specifying “Food”.
Filter by source type:
Performance Considerations
The initial implementation used GROUP_CONCAT to aggregate data, but performance issues caused timeouts. Currently, simple queries are used, and data is processed on the client side.
Future Prospects
- Search Feature Expansion
- Full-text search
- Faceted search
- Advanced filters
- Visualization Enhancement
- Network graphs
- Timeline display
- Geographic distribution maps
- Data Enrichment
- Integration with other SPARQL endpoints
- Utilizing Linked Open Data
- User-generated content
Summary
In this project, by leveraging SKOS vocabularies and SPARQL, we effectively visualized scent data with complex hierarchical structures. By adopting Semantic Web standard technologies:
- Data interoperability is improved
- A highly extensible architecture is achieved
- Multilingual support is facilitated
We aim to continue improving usability and enriching data to build a platform that contributes to research on the history of scents.
Links
This article was generated by Claude Code.