Content Representation¶
Turning archival items into machine-usable content: structured, connected through a Knowledge Graph, and embedded so the engine can reason about meaning, not just text.
A memorial archive holds rich human artifacts: diaries, testimonies, photographs, artworks, maps, audio and video. To software they start as opaque material with only basic metadata and few links between them. This area builds three complementary views so the engine can find content by knowledge and by resonance, and explain why:
- Structure: title, text, media, place, time. The plain facts.
- Knowledge: items connected through people, places, and events, using a shared ontology and the WO2 and VHA controlled vocabularies.
- Meaning: a numeric fingerprint of what an item is about, so items on the same theme sit close together even when their words differ.
HNP corpora and the Knowledge Graph¶
The starting point is the raw corpus of Heritage related to Nazi Persecution (HNP): unprocessed material gathered from many memorials and partners. It is historically valuable but fragmented, each item arriving with only basic metadata and few explicit links to the people, places, and events it touches. The data spans modalities:
- Text: digitised diaries, testimonies, archival records.
- Images: photographs, artwork, historical maps.
- Audio and video: interviews and survivor testimonies.
The Knowledge Graph is the structured layer built on top. It reads each item and connects it into a network of entities (people, places, events, organisations, objects) joined by meaningful relationships, for example "Person was deported to Camp" or "Event occurred at Location". This turns isolated artifacts into an integrated resource where the engine can travel from a diary to the place it describes to other testimonies of the same event.
flowchart LR
text["Text source"] --> ner["NER<br/>detect mentions"]
ner --> el["Entity Linking<br/>resolve to URI"]
el --> voc["Controlled vocabularies<br/>WO2 NIOD ยท VHA"]
voc --> kg[("Knowledge Graph")]
classDef st fill:#EFEAE0,stroke:#A8895B,color:#423D34;
class kg st;
Populating the graph relies on NLP pipelines plus manual curation:
- NER detects mentions of persons, places, organisations, events, and temporal expressions.
- Entity Linking resolves each mention to a unique authoritative identifier (URI).
- Controlled vocabularies supply the stable identifiers, synonyms, multilingual labels, and hierarchy: the NIOD WO2 Thesaurus gives archival precision (camps, ghettos, organisations, events), and the VHA vocabulary adds experiential categories such as "Deportation/Transport" or "Life in Ghettos". Example: a diary mentioning "Westerbork" is recognised as a location and linked to the WO2 URI for the Westerbork transit camp.
The KG uses two groups of ontology classes (full spec: MEMORISE Ontology):
| Group | Classes |
|---|---|
| Historical (past realities) | Person (life events), Event (time, persons, places), Location (camps, ghettos, cities, geo-coordinates), Physical Object (artefacts, photos, maps) |
| Historiographic (how history is recorded) | Document (diaries, letters, testimonies, records), Media Item, Archive / Collection |
The engine consumes the KG as the symbolic grounding signal in hybrid scoring, connecting related people, places, and events across sources.
What you will find here¶
-
The
facet:labeltags that describe content and visitors, and how raw tags are classified. -
The semantic space where proximity means similar meaning, and the Qdrant store that holds embeddings and metadata together for fast, filtered, geospatial retrieval.
-
The curated source of truth and how items are pulled into the pipeline.
API for this area
Content is written into the store by the content-engine service. See the interactive
Content Manager API (POST /ingest, POST /sync/omeka).

The MEMORISE ontology: historical classes (Person, Place, Event, Object) and historiographic classes (Document, Media Item, Archive) that connect fragmented sources into one graph.