Install Folio

bin/console folio:pull --dataset mus/fortepan

Link Types

Forward Reverse Links
No link types loaded.

Observed Schema

Name Core Type Rows
dto_object obj object 1
dto_photograph obj photograph 218,680

Archive Docs

Folio Metadata json
{
    "folio": {
        "code": "mus/fortepan",
        "label": "Fortepan",
        "dataset_key": "mus/fortepan",
        "row_count": 218681
    },
    "cores": [
        {
            "code": "obj",
            "label": null,
            "row_count": 218681
        }
    ],
    "dtoTables": [
        {
            "id": "mus/fortepan:dto_object",
            "name": "dto_object",
            "kind": "dto",
            "core_code": "obj",
            "dto_type": "object",
            "label": "Artifact",
            "description": "Three-dimensional physical objects and artifacts that do not fit a more specific type: tools, vessels, garments, specimens, etc.",
            "row_count": 1
        },
        {
            "id": "mus/fortepan:dto_photograph",
            "name": "dto_photograph",
            "kind": "dto",
            "core_code": "obj",
            "dto_type": "photograph",
            "label": "Photograph",
            "description": null,
            "row_count": 218680
        }
    ],
    "views": [
        "dto_object",
        "dto_photograph"
    ],
    "generatedAt": "2026-07-10T15:36:38+00:00",
    "metadata": {
        "archivePreparedAt": "2026-07-10T15:36:37+00:00",
        "schema": {
            "tables": 3,
            "properties": 40
        },
        "views": {
            "views": 2
        }
    }
}
Overview md
# Folio mus/fortepan

Fortepan

- Dataset key: `mus/fortepan`
- Rows: 218,681
- Cores: 1
- Observed DTO tables: 2

## Cores

| Core | Label | Rows |
| --- | --- | ---: |
| `obj` | obj | 218,681 |
Observed Schema md
# Observed Schema

## `dto_object`

- Core: `obj`
- DTO type: `object`
- Rows: 1

Three-dimensional physical objects and artifacts that do not fit a more specific type: tools, vessels, garments, specimens, etc.

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `sourceUrl` | `?string` |  |  |
| `contentType` | `?string` |  |  |
| `aggregator` | `?string` |  |  |
| `stage` | `?string` | filterable, facet | Pipeline processing stage (raw / normalized / enriched). A facet so you can filter to enriched items; later this can be made dev-only. |
| `year` | `?int` | filterable, facet, sortable | Coverage/production year. |
| `citation` | `?string` |  | ItemField::CITATION — canonical URL or attribution string for the record |
| `citationUrl` | `?string` |  | ItemField::CITATION_URL — deep link back to the source record (e.g. the NARA catalog page). Rendered as the "Original" link on the folio item page. |
| `rightsUri` | `?string` | filterable, facet | dcterms:license URI (rightsstatements.org). Also a facet: some sources (e.g. Cleveland) carry the rights value as a short licence code here rather than a URI (CC0 / Copyrighted), and that splits a collection cleanly. NOTE: if a subclass DTO redeclares this property, repeat #[Field] — PHP attributes are not inherited on a redeclared property. / |
| `country` | `?string` | filterable, facet |  |
| `latitude` | `?float` |  |  |
| `longitude` | `?float` |  |  |
| `iiifBase` | `?string` |  | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `largeImageUrl` | `?string` |  |  |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |
| `aiTasks` | `?array` | filterable, facet | Distinct AI tasks applied to this item or any of its images — e.g. observe, analyze, ocr_mistral, enrich_from_hires, info. Derived from the item's claim sources during the folio build (normalized, 'ai:' prefix stripped). A multi-value facet, so you can filter to "items that had analysis" etc. Finer-grained than {@see $stage}: 'enriched' alone can't distinguish observe-only from observe+analyze. / |

## `dto_photograph`

- Core: `obj`
- DTO type: `photograph`
- Rows: 218,680

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `sourceUrl` | `?string` |  |  |
| `contentType` | `?string` |  |  |
| `aggregator` | `?string` |  |  |
| `stage` | `?string` | filterable, facet | Pipeline processing stage (raw / normalized / enriched). A facet so you can filter to enriched items; later this can be made dev-only. |
| `description` | `?string` |  | dcterms:description — short curatorial text from the source institution |
| `denseSummary` | `?string` |  | ai:denseSummary — ≤ 400 char retrieval-optimised summary. Entity-rich, factual, no filler. Used by Meilisearch /chat, RAG, chatbots. / |
| `year` | `?int` | filterable, facet, sortable | Coverage/production year. |
| `citation` | `?string` |  | ItemField::CITATION — canonical URL or attribution string for the record |
| `citationUrl` | `?string` |  | ItemField::CITATION_URL — deep link back to the source record (e.g. the NARA catalog page). Rendered as the "Original" link on the folio item page. |
| `rightsUri` | `?string` | filterable, facet | dcterms:license URI (rightsstatements.org). Also a facet: some sources (e.g. Cleveland) carry the rights value as a short licence code here rather than a URI (CC0 / Copyrighted), and that splits a collection cleanly. NOTE: if a subclass DTO redeclares this property, repeat #[Field] — PHP attributes are not inherited on a redeclared property. / |
| `subjects` | `?array` | filterable, facet | dcterms:subject — keyword/topical subjects (incl. AI keywords). A sidebar facet. |
| `country` | `?string` | filterable, facet |  |
| `city` | `?string` | filterable, facet |  |
| `latitude` | `?float` |  |  |
| `longitude` | `?float` |  |  |
| `iiifBase` | `?string` |  | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `largeImageUrl` | `?string` |  |  |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |
| `donor` | `?string` | filterable, facet | Who contributed the photo to the archive (e.g. the Fortepan donor). A sidebar facet. |
| `aiTasks` | `?array` | filterable, facet | Distinct AI tasks applied to this item or any of its images — e.g. observe, analyze, ocr_mistral, enrich_from_hires, info. Derived from the item's claim sources during the folio build (normalized, 'ai:' prefix stripped). A multi-value facet, so you can filter to "items that had analysis" etc. Finer-grained than {@see $stage}: 'enriched' alone can't distinguish observe-only from observe+analyze. / |
| `creators` | `?array` |  | dcterms:creator — array of names |
Query Guide md
# Query Guide

This folio stores canonical rows in `item` and observed field metadata in `schema_table` / `schema_property`.

```sql
select * from schema_table where kind = 'dto';
select * from schema_property where table_id = ? order by position;
select local_id, label, dto_type, dto_data, extras from item limit 20;
```

Convenience views are generated from observed DTO fields:

```sql
select * from dto_object limit 20;
```

```sql
select * from dto_photograph limit 20;
```