{"id":"linked-art/LinkedArtAppFeatures","relativePath":"linked-art/LinkedArtAppFeatures.md","title":"🏛️ Art Explorer: Linked Art Application & Ecosystem","markdown":"# 🏛️ Art Explorer: Linked Art Application & Ecosystem\n\n**Comprehensive Technical Features & Architectural Design Plan**\n\n**Project Overview:** A full-stack, microservice-driven Linked Open Data (LOD) ecosystem designed to bridge the gap between rigorous digital humanities research, museum data infrastructure, and undergraduate art history pedagogy. Built strictly on **CIDOC-CRM** and **Linked Art JSON-LD** standards, this platform solves industry-wide challenges regarding legacy data mapping, uncertainty modeling, and semantic web accessibility.\n\n---\n\n## ⚙️ 1. Core Architecture & Technology Stack\n\nThe system utilizes a decoupled, API-first architecture combining microservices for heavy data processing with micro-frontends for modular user interfaces.\n\n- **Backend / Data Layer (The Engine):**\n    \n    - **Primary Language:** Python (FastAPI) & Node.js.\n        \n    - **Graph Database:** Neo4j or Stardog (native RDF/Graph storage) + PostgreSQL (JSONB) for application state.\n        \n    - **LOD Libraries:** Crom (Python) for Linked Art instantiation, PyLD for JSON-LD framing/compaction.\n        \n    - **ETL Orchestration:** Apache Airflow or Dagster for tracking data lineage and provenance.\n        \n- **Frontend / UI Layer (The Interface):**\n    \n    - **Framework:** Next.js 15+ (React) with TypeScript (SSR/SSG for SEO and performance).\n        \n    - **Styling:** Tailwind CSS / Chakra UI.\n        \n    - **Visualization:** D3.js, Visx, and Cytoscape.js (for force-directed graphs).\n        \n    - **Mapping:** ReactFlow (for visual ETL mapping) and Leaflet/Mapbox (for geospatial).\n        \n- **Infrastructure & CI/CD:**\n    \n    - Docker containerization for isolated microservices.\n        \n    - GitHub Actions with automated **SHACL validation** scripts to ensure data integrity.\n        \n\n---\n\n## 🧩 2. The 4 Core Modular Tools (Micro-Frontends)\n\nTo solve the \"skills gap\" in the GLAM sector, the application provides a suite of low-code/no-code tools for curators and researchers.\n\n### 🛠️ Tool 1: Visual ETL Mapper (CSV-to-Linked-Art)\n\n- **Purpose:** Allows non-technical staff to map messy legacy CSVs to complex CIDOC-CRM event graphs.\n    \n- **Features:** Node-link drag-and-drop canvas (ReactFlow). Users drag a \"Donor Name\" column and connect it to the transferred_title_from node in an Acquisition event.\n    \n- **Reconciliation:** Built-in API calls to Getty AAT, ULAN, and Wikidata to reconcile string data into URIs before export.\n    \n\n### 📝 Tool 2: Linked Art Form Builder (Middle-Tier Editor)\n\n- **Purpose:** A \"Goldilocks\" data entry form that looks simple but outputs strict JSON-LD.\n    \n- **Features:** Vocabulary-driven input (auto-fetches Getty URIs). Uses pattern-based generation (e.g., user types \"Artist\", backend builds the produced_by → carried_out_by → Person graph).\n    \n- **Validation:** Real-time domain-specific feedback (e.g., warns if an object's creation date predates the artist's birth).\n    \n\n### 🕸️ Tool 3: Dynamic Graph Explorer (Interactive Debugger)\n\n- **Purpose:** A progressive-disclosure visualization tool for debugging dense Linked Art graphs.\n    \n- **Features:** Force-directed layouts (Cytoscape.js). Drill-down expandability to prevent node-clutter. Contextual JSON inspector side-panel for developers.\n    \n\n### 🧱 Tool 4: Reusable UI Component Library\n\n- **Purpose:** Abstracting repetitive JSON-LD traversal logic into plug-and-play React components.\n    \n- **Components:** <LinkedArtAttribution /> (parses artist/technique), <IIIFCanvasViewer /> (auto-mounts OpenSeadragon via digitally_shown_by), <ProvenanceStepper /> (renders custody timelines).\n    \n\n---\n\n## 🧠 3. Data Modeling & Semantic Patterns\n\nThe application strictly adheres to Linked Art patterns while addressing edge cases like uncertainty and contested histories.\n\n- **Activity/Event Pattern:** Direct relationships are avoided. Artworks are connected to Artists via a \"Creation Activity,\" allowing the attachment of Time, Place, and Technique to the event itself.\n    \n- **Uncertainty & Contested Attributions:** Robust modeling for \"probably by X, possibly by Y.\" Utilizes the AttributeAssignment class to expand upon previous or contested attributions without breaking the primary graph.\n    \n- **TimeSpan Pattern:** Implements begin_of_the_begin and end_of_the_end ISO 8601 timestamps alongside human-readable strings to handle approximate historical dates.\n    \n- **Statement Pattern:** Uses LinguisticObject to capture nuanced curatorial notes and complex provenance narratives that cannot be fully structured into triples.\n    \n\n---\n\n## 📊 4. Advanced Visualization & Discovery Suite\n\nTransforming complex Linked Art datasets into readable, interactive visual formats for analysis and presentation.\n\n- **Interactive Provenance Timelines:** Visualizing ownership chains chronologically. Includes visual indicators (shaded ranges/gradient bars) for timeline uncertainty.\n    \n- **Geospatial Time-Sliders:** Maps tracking object movement across cities, exhibitions, and collections, animated over time.\n    \n- **Faceted Browsing:** Search powered by Getty AAT classifications (medium, time period, style) with auto-suggest powered by alternate names and identifiers.\n    \n- **Complexity Toggling (Art Tracks Model):** UI gracefully handles complexity. Shows basic info by default, with a \"See full scholarly details\" toggle for researchers.\n    \n\n---\n\n## 🎓 5. Pedagogy, Storytelling & Accessibility\n\nEngineered to lower the barrier to entry for undergraduate students and the public.\n\n- **Narrative Storytelling:** Integration with frameworks like StoryMapJS to build multimedia narratives from Linked Art data.\n    \n- **Pedagogical Scaffolding:** Pre-built modules (e.g., \"The Provenance of a Renaissance Painting\") to introduce students to linked data concepts.\n    \n- **Export & Citation:** One-click exports to CSV (for Gephi network analysis), JSON-LD, and Zotero integration for seamless citation management.\n    \n- **Multilingual & Inclusive Access:** Leverages the _label property and multiple Name objects for screen-reader compatibility and multilingual support.\n    \n\n---\n\n## 🚀 6. Phased Development Roadmap\n\n### **Phase 0: Foundation & Standards (Weeks 1-2)**\n\n- Define strict Linked Art JSON-LD patterns (Creation, Acquisition, Exhibition).\n    \n- Set up Docker infrastructure, Neo4j graph database, and API Gateway.\n    \n- Establish GitHub Actions for automated SHACL validation.\n    \n\n### **Phase 1: Core Data Engines & APIs (Weeks 3-5)**\n\n- Build the **Validation & Production Microservice** (Python/FastAPI + Crom).\n    \n- Build the **Authority Reconciliation Microservice** (Getty/Wikidata API wrappers).\n    \n- Develop the core ETL Transformation scripts for legacy data ingestion.\n    \n\n### **Phase 2: Micro-Frontends & Tooling (Weeks 6-9)**\n\n- Develop the **Shared UI Component Library** (<LinkedDate />, <IIIFViewer />).\n    \n- Build the **Visual ETL Mapper** (ReactFlow drag-and-drop interface).\n    \n- Build the **Linked Art Form Builder** and **Dynamic Graph Explorer**.\n    \n\n### **Phase 3: Assembly, UI & Pedagogy (Weeks 10-12)**\n\n- Develop the Next.js **Dashboard Shell** (Single Page Application).\n    \n- Integrate the micro-frontends into the shell via Module Federation.\n    \n- Build the public-facing discovery UI (Search, Timelines, Maps).\n    \n- Implement Zotero exports, StoryMap integrations, and \"Student Mode\" toggles.","sections":[{"level":2,"heading":"⚙️ 1. Core Architecture & Technology Stack","anchor":"1-core-architecture-technology-stack"},{"level":2,"heading":"🧩 2. The 4 Core Modular Tools (Micro-Frontends)","anchor":"2-the-4-core-modular-tools-micro-frontends"},{"level":3,"heading":"🛠️ Tool 1: Visual ETL Mapper (CSV-to-Linked-Art)","anchor":"tool-1-visual-etl-mapper-csv-to-linked-art"},{"level":3,"heading":"📝 Tool 2: Linked Art Form Builder (Middle-Tier Editor)","anchor":"tool-2-linked-art-form-builder-middle-tier-editor"},{"level":3,"heading":"🕸️ Tool 3: Dynamic Graph Explorer (Interactive Debugger)","anchor":"tool-3-dynamic-graph-explorer-interactive-debugger"},{"level":3,"heading":"🧱 Tool 4: Reusable UI Component Library","anchor":"tool-4-reusable-ui-component-library"},{"level":2,"heading":"🧠 3. Data Modeling & Semantic Patterns","anchor":"3-data-modeling-semantic-patterns"},{"level":2,"heading":"📊 4. Advanced Visualization & Discovery Suite","anchor":"4-advanced-visualization-discovery-suite"},{"level":2,"heading":"🎓 5. Pedagogy, Storytelling & Accessibility","anchor":"5-pedagogy-storytelling-accessibility"},{"level":2,"heading":"🚀 6. Phased Development Roadmap","anchor":"6-phased-development-roadmap"},{"level":3,"heading":"**Phase 0: Foundation & Standards (Weeks 1-2)**","anchor":"phase-0-foundation-standards-weeks-1-2"},{"level":3,"heading":"**Phase 1: Core Data Engines & APIs (Weeks 3-5)**","anchor":"phase-1-core-data-engines-apis-weeks-3-5"},{"level":3,"heading":"**Phase 2: Micro-Frontends & Tooling (Weeks 6-9)**","anchor":"phase-2-micro-frontends-tooling-weeks-6-9"},{"level":3,"heading":"**Phase 3: Assembly, UI & Pedagogy (Weeks 10-12)**","anchor":"phase-3-assembly-ui-pedagogy-weeks-10-12"}],"html":"<h1 id=\"art-explorer-linked-art-application-ecosystem\">🏛️ Art Explorer: Linked Art Application &amp; Ecosystem</h1>\n<p><strong>Comprehensive Technical Features &amp; Architectural Design Plan</strong></p>\n<p><strong>Project Overview:</strong> A full-stack, microservice-driven Linked Open Data (LOD) ecosystem designed to bridge the gap between rigorous digital humanities research, museum data infrastructure, and undergraduate art history pedagogy. Built strictly on <strong>CIDOC-CRM</strong> and <strong>Linked Art JSON-LD</strong> standards, this platform solves industry-wide challenges regarding legacy data mapping, uncertainty modeling, and semantic web accessibility.</p>\n<p>---</p>\n<h2 id=\"1-core-architecture-technology-stack\">⚙️ 1. Core Architecture &amp; Technology Stack</h2>\n<p>The system utilizes a decoupled, API-first architecture combining microservices for heavy data processing with micro-frontends for modular user interfaces.</p>\n<ul><li><strong>Backend / Data Layer (The Engine):</strong></li></ul>\n<ul><li><strong>Primary Language:</strong> Python (FastAPI) &amp; Node.js.</li></ul>\n<ul><li><strong>Graph Database:</strong> Neo4j or Stardog (native RDF/Graph storage) + PostgreSQL (JSONB) for application state.</li></ul>\n<ul><li><strong>LOD Libraries:</strong> Crom (Python) for Linked Art instantiation, PyLD for JSON-LD framing/compaction.</li></ul>\n<ul><li><strong>ETL Orchestration:</strong> Apache Airflow or Dagster for tracking data lineage and provenance.</li></ul>\n<ul><li><strong>Frontend / UI Layer (The Interface):</strong></li></ul>\n<ul><li><strong>Framework:</strong> Next.js 15+ (React) with TypeScript (SSR/SSG for SEO and performance).</li></ul>\n<ul><li><strong>Styling:</strong> Tailwind CSS / Chakra UI.</li></ul>\n<ul><li><strong>Visualization:</strong> D3.js, Visx, and Cytoscape.js (for force-directed graphs).</li></ul>\n<ul><li><strong>Mapping:</strong> ReactFlow (for visual ETL mapping) and Leaflet/Mapbox (for geospatial).</li></ul>\n<ul><li><strong>Infrastructure &amp; CI/CD:</strong></li></ul>\n<ul><li>Docker containerization for isolated microservices.</li></ul>\n<ul><li>GitHub Actions with automated <strong>SHACL validation</strong> scripts to ensure data integrity.</li></ul>\n<p>---</p>\n<h2 id=\"2-the-4-core-modular-tools-micro-frontends\">🧩 2. The 4 Core Modular Tools (Micro-Frontends)</h2>\n<p>To solve the &quot;skills gap&quot; in the GLAM sector, the application provides a suite of low-code/no-code tools for curators and researchers.</p>\n<h3 id=\"tool-1-visual-etl-mapper-csv-to-linked-art\">🛠️ Tool 1: Visual ETL Mapper (CSV-to-Linked-Art)</h3>\n<ul><li><strong>Purpose:</strong> Allows non-technical staff to map messy legacy CSVs to complex CIDOC-CRM event graphs.</li></ul>\n<ul><li><strong>Features:</strong> Node-link drag-and-drop canvas (ReactFlow). Users drag a &quot;Donor Name&quot; column and connect it to the transferred_title_from node in an Acquisition event.</li></ul>\n<ul><li><strong>Reconciliation:</strong> Built-in API calls to Getty AAT, ULAN, and Wikidata to reconcile string data into URIs before export.</li></ul>\n<h3 id=\"tool-2-linked-art-form-builder-middle-tier-editor\">📝 Tool 2: Linked Art Form Builder (Middle-Tier Editor)</h3>\n<ul><li><strong>Purpose:</strong> A &quot;Goldilocks&quot; data entry form that looks simple but outputs strict JSON-LD.</li></ul>\n<ul><li><strong>Features:</strong> Vocabulary-driven input (auto-fetches Getty URIs). Uses pattern-based generation (e.g., user types &quot;Artist&quot;, backend builds the produced_by → carried_out_by → Person graph).</li></ul>\n<ul><li><strong>Validation:</strong> Real-time domain-specific feedback (e.g., warns if an object&#39;s creation date predates the artist&#39;s birth).</li></ul>\n<h3 id=\"tool-3-dynamic-graph-explorer-interactive-debugger\">🕸️ Tool 3: Dynamic Graph Explorer (Interactive Debugger)</h3>\n<ul><li><strong>Purpose:</strong> A progressive-disclosure visualization tool for debugging dense Linked Art graphs.</li></ul>\n<ul><li><strong>Features:</strong> Force-directed layouts (Cytoscape.js). Drill-down expandability to prevent node-clutter. Contextual JSON inspector side-panel for developers.</li></ul>\n<h3 id=\"tool-4-reusable-ui-component-library\">🧱 Tool 4: Reusable UI Component Library</h3>\n<ul><li><strong>Purpose:</strong> Abstracting repetitive JSON-LD traversal logic into plug-and-play React components.</li></ul>\n<ul><li><strong>Components:</strong> &lt;LinkedArtAttribution /&gt; (parses artist/technique), &lt;IIIFCanvasViewer /&gt; (auto-mounts OpenSeadragon via digitally_shown_by), &lt;ProvenanceStepper /&gt; (renders custody timelines).</li></ul>\n<p>---</p>\n<h2 id=\"3-data-modeling-semantic-patterns\">🧠 3. Data Modeling &amp; Semantic Patterns</h2>\n<p>The application strictly adheres to Linked Art patterns while addressing edge cases like uncertainty and contested histories.</p>\n<ul><li><strong>Activity/Event Pattern:</strong> Direct relationships are avoided. Artworks are connected to Artists via a &quot;Creation Activity,&quot; allowing the attachment of Time, Place, and Technique to the event itself.</li></ul>\n<ul><li><strong>Uncertainty &amp; Contested Attributions:</strong> Robust modeling for &quot;probably by X, possibly by Y.&quot; Utilizes the AttributeAssignment class to expand upon previous or contested attributions without breaking the primary graph.</li></ul>\n<ul><li><strong>TimeSpan Pattern:</strong> Implements begin_of_the_begin and end_of_the_end ISO 8601 timestamps alongside human-readable strings to handle approximate historical dates.</li></ul>\n<ul><li><strong>Statement Pattern:</strong> Uses LinguisticObject to capture nuanced curatorial notes and complex provenance narratives that cannot be fully structured into triples.</li></ul>\n<p>---</p>\n<h2 id=\"4-advanced-visualization-discovery-suite\">📊 4. Advanced Visualization &amp; Discovery Suite</h2>\n<p>Transforming complex Linked Art datasets into readable, interactive visual formats for analysis and presentation.</p>\n<ul><li><strong>Interactive Provenance Timelines:</strong> Visualizing ownership chains chronologically. Includes visual indicators (shaded ranges/gradient bars) for timeline uncertainty.</li></ul>\n<ul><li><strong>Geospatial Time-Sliders:</strong> Maps tracking object movement across cities, exhibitions, and collections, animated over time.</li></ul>\n<ul><li><strong>Faceted Browsing:</strong> Search powered by Getty AAT classifications (medium, time period, style) with auto-suggest powered by alternate names and identifiers.</li></ul>\n<ul><li><strong>Complexity Toggling (Art Tracks Model):</strong> UI gracefully handles complexity. Shows basic info by default, with a &quot;See full scholarly details&quot; toggle for researchers.</li></ul>\n<p>---</p>\n<h2 id=\"5-pedagogy-storytelling-accessibility\">🎓 5. Pedagogy, Storytelling &amp; Accessibility</h2>\n<p>Engineered to lower the barrier to entry for undergraduate students and the public.</p>\n<ul><li><strong>Narrative Storytelling:</strong> Integration with frameworks like StoryMapJS to build multimedia narratives from Linked Art data.</li></ul>\n<ul><li><strong>Pedagogical Scaffolding:</strong> Pre-built modules (e.g., &quot;The Provenance of a Renaissance Painting&quot;) to introduce students to linked data concepts.</li></ul>\n<ul><li><strong>Export &amp; Citation:</strong> One-click exports to CSV (for Gephi network analysis), JSON-LD, and Zotero integration for seamless citation management.</li></ul>\n<ul><li><strong>Multilingual &amp; Inclusive Access:</strong> Leverages the _label property and multiple Name objects for screen-reader compatibility and multilingual support.</li></ul>\n<p>---</p>\n<h2 id=\"6-phased-development-roadmap\">🚀 6. Phased Development Roadmap</h2>\n<h3 id=\"phase-0-foundation-standards-weeks-1-2\"><strong>Phase 0: Foundation &amp; Standards (Weeks 1-2)</strong></h3>\n<ul><li>Define strict Linked Art JSON-LD patterns (Creation, Acquisition, Exhibition).</li></ul>\n<ul><li>Set up Docker infrastructure, Neo4j graph database, and API Gateway.</li></ul>\n<ul><li>Establish GitHub Actions for automated SHACL validation.</li></ul>\n<h3 id=\"phase-1-core-data-engines-apis-weeks-3-5\"><strong>Phase 1: Core Data Engines &amp; APIs (Weeks 3-5)</strong></h3>\n<ul><li>Build the <strong>Validation &amp; Production Microservice</strong> (Python/FastAPI + Crom).</li></ul>\n<ul><li>Build the <strong>Authority Reconciliation Microservice</strong> (Getty/Wikidata API wrappers).</li></ul>\n<ul><li>Develop the core ETL Transformation scripts for legacy data ingestion.</li></ul>\n<h3 id=\"phase-2-micro-frontends-tooling-weeks-6-9\"><strong>Phase 2: Micro-Frontends &amp; Tooling (Weeks 6-9)</strong></h3>\n<ul><li>Develop the <strong>Shared UI Component Library</strong> (&lt;LinkedDate /&gt;, &lt;IIIFViewer /&gt;).</li></ul>\n<ul><li>Build the <strong>Visual ETL Mapper</strong> (ReactFlow drag-and-drop interface).</li></ul>\n<ul><li>Build the <strong>Linked Art Form Builder</strong> and <strong>Dynamic Graph Explorer</strong>.</li></ul>\n<h3 id=\"phase-3-assembly-ui-pedagogy-weeks-10-12\"><strong>Phase 3: Assembly, UI &amp; Pedagogy (Weeks 10-12)</strong></h3>\n<ul><li>Develop the Next.js <strong>Dashboard Shell</strong> (Single Page Application).</li></ul>\n<ul><li>Integrate the micro-frontends into the shell via Module Federation.</li></ul>\n<ul><li>Build the public-facing discovery UI (Search, Timelines, Maps).</li></ul>\n<ul><li>Implement Zotero exports, StoryMap integrations, and &quot;Student Mode&quot; toggles.</li></ul>","updatedAt":"2018-10-20T01:46:40.000Z","checksum":"e23b890ecd2a6791d3fe70d6da8b5ac136edbd0764df0e880b0ab3c3963449d4","checksumPrefix":"e23b890ecd2a","anchorCount":14,"lineCount":162,"rawUrl":"/api/docs/content?path=linked-art%2FLinkedArtAppFeatures.md","htmlUrl":"/docs?doc=linked-art%2FLinkedArtAppFeatures.md","apiUrl":"/api/docs/content?path=linked-art%2FLinkedArtAppFeatures.md"}