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 (?x parameter)
    • Source type filter (visual items E36_Visual_Item / linguistic objects E33_Linguistic_Object)
  • 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:

SW}EHLEERCE??#{}}Tee{mmRUDiieNIssl???I?SssaffsOsTiitrroNoIooiaauuNnnoggr{rCnmmccTooeeeeddwnn??::itteeseFFtccom31herrrui__cdmmrshgsrf::csaeom:PPeidnu:v16o_erPa67?nsrc6l5_soae7u_ro?ut_eieusrernfrmcdve?ceceeifforel?aerrs_l?srap_txmfsgoti?er_mrots.latealmlgont?eemteel.e?_sm?lnevif_tma?srlilfsaaosurigbrseaomeigneldo.mnine.t?rnse.t?ocfut.rr)acgem_einmta_gvealue

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

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=URI parameter
  • 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

#?#?#?essSmSmSmmimeceesootelroelssslsddillddnlkkkli::mlf:tSooooFFeashosssEn31:O:aSu:::m__hbolsorpbniahgajda_ucrrasaese:bsreeorsodnTcLemcfarid_eit1leeaLdoo:srm_laewnLoaeS?l(sbre1utms_SkerE1re?emsKol?v_cdtleoOsb?eSeilluS:?rnnm?mlrCpoate?se;LcVorarlsmIaeonedrlmenbccfeo_elte?aeLrwEllelsbpaCemlroutboriS;v;ulenCsoara;lcosulcrenirey;pcoc.)tene.p;t;;.#####ScGTLReeiaennmbfteeeerlrsaieotnnuefcrdoecresmtmaoetlislocnentsource

2. Relationship Between Sources and Text Fragments

#?#?sfSoTroueaurrsexgrercdcctmdccefhrefresemFn:ma:m:rtv:(l:PaaPpeai1gal6acbm6mu7irea5eee_nmlg_ncrt:eitr?eiE?nmffn3s?c:reg6osoEars_uor3gs,Vrup3m_icro_etlsecrLnoiuTeaittaiItnV?eltmegaer_lasulmaIegiuirte?sesye;ftsm;ri;iwacoo;g_nrmOkeb.snj,tece.ttc;.)####OCARrocentfEtue3aar3ile_nnLstcieentxgettuxoitsstfmirecal_glOmbeejnmeticstsionevent

3. Olfactory Experience

#?#?eqOxQulpuafeeealarcclicirrittemmtyon::arcPPtrye11idA44vfes01esxs__:piaailegssnarnssfbimiioeeeggrlnnnnmcteea"eddtpa_ilaa?oesetqnasctusirraagmilnn:bitmEut"e1ty@n3eet__.nAtto.tr?isbmuetlel_A;ssignment;

Main Vocabularies and Prefixes Used

PPPPPPPPPRRRRRRRRREEEEEEEEEFFFFFFFFFIIIIIIIIIXXXXXXXXXsrreoostocddcldkiwhffrf:omles:m:se:m::<:::<<h<<h<ht<<h<hthtthhthttttptttttptp:ttptp:p:pp:p::::sd/:wdawwweatwww/wwrtawwwsw.la.ww.c.wa.o..whw3nodww3e3.gde33.m.oeeu..oaornuroor.rg-rorrgogcopggr1rpa2g29ma.220/09..e000>09eu0020ru460go/002n0t71cot2i/2uco/mor2ralsewd-rbok#lfreugo>#-dnlys>sfta//c-/r>chs>yoey/rmnoeatl##af>>xa-cntso#r>y-objects/>

Main Vocabulary Descriptions:

PrefixPurpose
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

PPPSW}LORRREHIFEEELEMFFFFERISIIICE#?#?O}#{}}#O}TEXXXTeePPT{1m2mT3U4T2oesD.i.iI.N.I00dckIssO?#????I#??O?F:roSSsSsNsRffssOssSNsImsTmimiAmePrrooNPoooAoL<::IeoeoLelaaauuauuuLuThNlnlnlatggrr{trrrrEt<<Cll{lttmmcctccc{cRthhTooieeeeeeeeee(pttedodrornnrS:tt??m:b:dnntternerisT/ppseiFjFfcdcdmcR/::oms3e1sw1errf2rfahSd/uis_c_:i:cdms:msgeTa/rsihtgltrf::::emAtewcsoaeahVm:PlDPl:Rarweindgnbi:v1ai6aiT.lwo_eeesaPa6br7bomSoa.?nesnrlo6l5ee_epa(dnwsvoeauf7u_lcrltgSeg3o?eurt?rr_eiteieTue.usnraescarn?f?oRrnormtctdmege?csresn?(o-rceeiemffooeroas?pcgel(o?l(eerrufsulosar/_lf?nsl2nrapre_r)uo.m2tixm_tsgocrtcrue.0i?lelp_mreeoecru0tst.laatea_n_ecr4lmelbtonttc?t_eogeeretteieeii_n0l.le?_stmtmitc2?lcrevlilamou/f_o.nma?esegalrsrlnsilfsegorkaad)sur.i.egeogbiseao.)ynsmetign,/telio.m>cnone."ot?nnhrs).tte?ot#fu.p>rrsac:ge/m_/eidnmatat_gave.aoldueeuropa.eu/image/"))

Filtering Implementation

Filter by SKOS vocabulary (?x parameter):

#{}}F?U#FixNIlIALtsOlTekNsErooRs{(b:i?ybnxrcsol=pauedd<ceehirtf*ttihpe<e:dh/ts/ctpdopean:ctc/iae/f.pdiotaedtdeaaun.crdooodnpiecatue.srpeotudp/eaivs.tocesceuean/lbdvfuaolncatarsbyu/loalrfya/cotlofrayc-toobrjye-cotbsj/e4c0t5s>/)405>

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:

#?#?ssVoOoiurusrruclcaeielnrgridudtfife:s:mtttsyiypcpoeenol<b<yhjhtet(tctpptpa:s:i/n//teneirlrnlylgaasn(n,glgeieentnt-e-ccrc.rar)mrm.y.oorwrgog/r/ckcusur,rrreeentntct/./E)E3363__VLiisnugauli_sIttiecm_>Object>

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

  1. Search Feature Expansion
    • Full-text search
    • Faceted search
    • Advanced filters
  2. Visualization Enhancement
    • Network graphs
    • Timeline display
    • Geographic distribution maps
  3. 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.


This article was generated by Claude Code.