MotusArtium is a GraphQL-first art history observatory built on top of Wikidata and the Multilingual programming language.
It combines a browser shell, a Multilingual runtime, and dedicated Wikidata query documents to let users explore:
- art movements
- artists
- artworks
- museums and galleries
- depicted subjects
- Graph-first exploration with a central constellation view.
- Search-based entry through Wikidata REST search, followed by GraphQL-driven expansion.
- Dedicated entity loading for movements, artists, artworks, museums, and subjects.
- Query-aware UI with visible active document, variables, response shape, and status.
- Footer context for selected entity, exploration trail, temporal rail, and live query preview.
- URL deep-linking such as
?entity=Q40415&type=movementand?entity=Q160112&type=museum. - Multilingual-oriented shell and runtime integration built around the French-first Multilingual language source.
The app is intentionally GraphQL-first.
- Query documents live in
graphql/. - The main data path uses Wikidata's
wbgraphqlendpoint. - REST is used only where it is the better tool:
- free-text search via
wbsearchentities - entity claim lookup for search-result type disambiguation via
wbgetentities
- free-text search via
That means GraphQL remains the core retrieval model for expansion, relationships, and UI state, while REST supports discovery and classification around the edges.
src/principal.multi: Multilingual application entrypointsrc/ui/etat.multi: reactive state and loading logic in Multilingualapp.js: browser-side shell adapter, live GraphQL instrumentation, graph state, and loadersbootstrap.js: startup, URL bootstrapping, REST search wiring, and detail-panel fallback logicindex.html: static shell layoutstyles.css: shell stylinggraphql/: dedicated Wikidata query documents
Current query documents include:
movement_details.graphqlartists_by_movement.graphqlartist_details.graphqlartist_influences.graphqlartworks_by_artist.graphqlartwork_details.graphqlartworks_by_museum.graphqlartworks_by_subject.graphqlmovements_catalog.graphqlmovement_diffusion.graphqlmovement_evolution.graphqlentity_label.graphqlcountries_coordinates.graphql
Requirements:
- Python 3.12+
- a local checkout of the Multilingual toolchain
Build:
git clone https://github.com/multilingualprogramming/multilingual
cd multilingual
pip install -e ".[wasm]"
https://github.com/multilingualprogramming/MotusArtium
cd MotusArtium
python -m multilingualprogramming build-ui-bundle src/principal.multi --lang fr --out-dir _build
copy _build\\bundle.js bundle.js
python -m http.server 8000Then open http://localhost:8000.
src/: Multilingual source treegraphql/: shipped GraphQL documentsindex.html: HTML shellstyles.css: shell stylesapp.js: shell runtime adapterbootstrap.js: startup and search integrationbundle.js: generated browser bundle
docs/README.md: documentation indexdocs/architecture.md: current architecture and runtime responsibilitiesdocs/data-sources.md: GraphQL-first and REST-supporting data modeldocs/multilingual.md: Multilingual language and project usageARCHITECTURE.md: earlier architecture plan and broader project notesGETTING_STARTED.md: quick project bootstrap notes