Install Folio

bin/console folio:pull --dataset smith/aaa

Link Types

Forward Reverse Links
per created obj
created
obj created_by per
created_by
6,862
coll contains obj
contains
obj belongs_to coll
belongs_to
9,652

Observed Schema

Name Core Type Rows
dto_audio obj audio 1
dto_coll_collection coll collection 2,449
dto_object obj object 6,512
dto_per_org per org 589
dto_per_person per person 739
dto_photograph obj photograph 1
dto_slide obj slide 1

Archive Docs

Folio Metadata json
{
    "folio": {
        "code": "smith/aaa",
        "label": "Archives of American Art",
        "dataset_key": "smith/aaa",
        "row_count": 10292
    },
    "cores": [
        {
            "code": "coll",
            "label": null,
            "row_count": 2449
        },
        {
            "code": "obj",
            "label": null,
            "row_count": 6515
        },
        {
            "code": "per",
            "label": null,
            "row_count": 1328
        }
    ],
    "dtoTables": [
        {
            "id": "smith/aaa:dto_audio",
            "name": "dto_audio",
            "kind": "dto",
            "core_code": "obj",
            "dto_type": "audio",
            "label": "Audio",
            "description": "Sound recordings: oral histories, music, radio broadcasts, and field recordings.",
            "row_count": 1
        },
        {
            "id": "smith/aaa:dto_coll_collection",
            "name": "dto_coll_collection",
            "kind": "dto",
            "core_code": "coll",
            "dto_type": "collection",
            "label": "Collection",
            "description": "A collection / series \u2014 an aggregation of items rather than a single object.\nTwo producers: the \"folio of folios\" (each row is a whole folio) and aggregators like the\nSmithsonian that expose collections and series alongside objects. Unlike a generic item, a\ncollection is browsed by its dataset-level descriptors \u2014 provider, country, language, size \u2014\nso those are promoted to facets here. `subjects` (a parent facet) carries the dtoType mix.\n/",
            "row_count": 2449
        },
        {
            "id": "smith/aaa: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": 6512
        },
        {
            "id": "smith/aaa:dto_per_org",
            "name": "dto_per_org",
            "kind": "dto",
            "core_code": "per",
            "dto_type": "org",
            "label": "Org",
            "description": "Concrete BaseItemDto for subjects whose content type is unknown or mixed.\nUse when no domain-specific DTO subclass applies.\n/",
            "row_count": 589
        },
        {
            "id": "smith/aaa:dto_per_person",
            "name": "dto_per_person",
            "kind": "dto",
            "core_code": "per",
            "dto_type": "person",
            "label": "Person",
            "description": "People associated with collection records: creators, contributors, subjects, interviewees, performers, and other named agents.",
            "row_count": 739
        },
        {
            "id": "smith/aaa:dto_photograph",
            "name": "dto_photograph",
            "kind": "dto",
            "core_code": "obj",
            "dto_type": "photograph",
            "label": "Photograph",
            "description": null,
            "row_count": 1
        },
        {
            "id": "smith/aaa:dto_slide",
            "name": "dto_slide",
            "kind": "dto",
            "core_code": "obj",
            "dto_type": "slide",
            "label": "Slide",
            "description": null,
            "row_count": 1
        }
    ],
    "views": [
        "dto_audio",
        "dto_coll_collection",
        "dto_object",
        "dto_per_org",
        "dto_per_person",
        "dto_photograph",
        "dto_slide"
    ],
    "generatedAt": "2026-06-29T18:01:17+00:00",
    "metadata": {
        "archivePreparedAt": "2026-06-29T18:01:16+00:00",
        "schema": {
            "tables": 10,
            "properties": 58
        },
        "views": {
            "views": 7
        }
    }
}
Overview md
# Folio smith/aaa

Archives of American Art

- Dataset key: `smith/aaa`
- Rows: 10,292
- Cores: 3
- Observed DTO tables: 7

## Cores

| Core | Label | Rows |
| --- | --- | ---: |
| `coll` | coll | 2,449 |
| `obj` | obj | 6,515 |
| `per` | per | 1,328 |
Observed Schema md
# Observed Schema

## `dto_audio`

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

Sound recordings: oral histories, music, radio broadcasts, and field recordings.

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `contentType` | `?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. |
| `title` | `?string` |  | dcterms:title |
| `description` | `?string` |  | dcterms:description — short curatorial text from the source institution |
| `year` | `?int` | filterable, facet, sortable | Coverage/production year. |
| `creators` | `?array` |  | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |
| `hasTranscription` | `bool` |  |  |

## `dto_coll_collection`

- Core: `coll`
- DTO type: `collection`
- Rows: 2,449

A collection / series — an aggregation of items rather than a single object.
Two producers: the "folio of folios" (each row is a whole folio) and aggregators like the
Smithsonian that expose collections and series alongside objects. Unlike a generic item, a
collection is browsed by its dataset-level descriptors — provider, country, language, size —
so those are promoted to facets here. `subjects` (a parent facet) carries the dtoType mix.
/

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `contentType` | `?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. |
| `title` | `?string` |  | dcterms:title |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |

## `dto_object`

- Core: `obj`
- DTO type: `object`
- Rows: 6,512

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` |  |  |
| `contentType` | `?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. |
| `title` | `?string` |  | dcterms:title |
| `description` | `?string` |  | dcterms:description — short curatorial text from the source institution |
| `year` | `?int` | filterable, facet, sortable | Coverage/production year. |
| `creators` | `?array` |  | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |
| `accession` | `?string` |  | MuseumVocab::ACCESSION — local accession / catalog number |

## `dto_per_org`

- Core: `per`
- DTO type: `org`
- Rows: 589

Concrete BaseItemDto for subjects whose content type is unknown or mixed.
Use when no domain-specific DTO subclass applies.
/

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `contentType` | `?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. |
| `title` | `?string` |  | dcterms:title |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |

## `dto_per_person`

- Core: `per`
- DTO type: `person`
- Rows: 739

People associated with collection records: creators, contributors, subjects, interviewees, performers, and other named agents.

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` | searchable, sortable |  |
| `contentType` | `?string` | filterable, facet |  |
| `name` | `?string` | searchable, sortable |  |
| `source` | `string` |  |  |
| `confidence` | `?float` |  |  |

## `dto_photograph`

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

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `contentType` | `?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. |
| `title` | `?string` |  | dcterms:title |
| `description` | `?string` |  | dcterms:description — short curatorial text from the source institution |
| `creators` | `?array` |  | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Genre specific terms (TGM) e.g. "Portrait photographs", "Architectural photographs". A facet. |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |

## `dto_slide`

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

| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` |  |  |
| `contentType` | `?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. |
| `title` | `?string` |  | dcterms:title |
| `description` | `?string` |  | dcterms:description — short curatorial text from the source institution |
| `year` | `?int` | filterable, facet, sortable | Coverage/production year. |
| `creators` | `?array` |  | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Genre specific terms (TGM) e.g. "Portrait photographs", "Architectural photographs". A facet. |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` |  | Source of this data: import \| ai \| ocr \| human |
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_audio limit 20;
```

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

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

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

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

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

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