Install Folio
bin/console folio:pull --dataset smith/hmsg
Objects
obj
Link Types
| Forward | Reverse | Links |
|---|---|---|
|
per
created
obj
created
|
obj
created_by
per
created_by
|
452 |
|
coll
contains
obj
contains
|
obj
belongs_to
coll
belongs_to
|
544 |
Observed Schema
| Name | Core | Type | Rows |
|---|---|---|---|
| dto_coll_collection | coll | collection | 9 |
| dto_drawing | obj | drawing | 108 |
| dto_object | obj | object | 28 |
| dto_painting | obj | painting | 159 |
| dto_per_org | per | org | 4 |
| dto_per_person | per | person | 69 |
| dto_photograph | obj | photograph | 75 |
| dto_print | obj | 12 | |
| dto_sculpture | obj | sculpture | 67 |
Archive Docs
Folio Metadata
json
{
"folio": {
"code": "smith/hmsg",
"label": "Hirshhorn Museum and Sculpture Garden",
"dataset_key": "smith/hmsg",
"row_count": 531
},
"cores": [
{
"code": "coll",
"label": null,
"row_count": 9
},
{
"code": "obj",
"label": null,
"row_count": 449
},
{
"code": "per",
"label": null,
"row_count": 73
}
],
"dtoTables": [
{
"id": "smith/hmsg: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": 9
},
{
"id": "smith/hmsg:dto_drawing",
"name": "dto_drawing",
"kind": "dto",
"core_code": "obj",
"dto_type": "drawing",
"label": "Drawing",
"description": "DTO for drawn works: pencil, ink, charcoal, watercolour, pastel, etc.\nCovers any work where drawing is the primary medium.\nSubclass for more specific drawn types (CartoonDto, SketchDto, etc.)\n/",
"row_count": 108
},
{
"id": "smith/hmsg: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": 28
},
{
"id": "smith/hmsg:dto_painting",
"name": "dto_painting",
"kind": "dto",
"core_code": "obj",
"dto_type": "painting",
"label": "Painting",
"description": "A painting \u2014 oil, tempera, acrylic, watercolour, fresco, etc., where paint is the primary medium.\nAn ArtworkDto (style/movement) over PhysicalObjectDto's material/dimensions/weight.\n/",
"row_count": 159
},
{
"id": "smith/hmsg: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": 4
},
{
"id": "smith/hmsg: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": 69
},
{
"id": "smith/hmsg:dto_photograph",
"name": "dto_photograph",
"kind": "dto",
"core_code": "obj",
"dto_type": "photograph",
"label": "Photograph",
"description": null,
"row_count": 75
},
{
"id": "smith/hmsg:dto_print",
"name": "dto_print",
"kind": "dto",
"core_code": "obj",
"dto_type": "print",
"label": "Print",
"description": "DTO for drawn works: pencil, ink, charcoal, watercolour, pastel, etc.\nCovers any work where drawing is the primary medium.\nSubclass for more specific drawn types (CartoonDto, SketchDto, etc.)\n/",
"row_count": 12
},
{
"id": "smith/hmsg:dto_sculpture",
"name": "dto_sculpture",
"kind": "dto",
"core_code": "obj",
"dto_type": "sculpture",
"label": "Sculpture",
"description": "A sculpture \u2014 a three-dimensional physical artwork (statue, bust, relief, statuette, \u2026).\nAn artwork (style/movement via ArtworkDto) with the structured material / dimensions / weight\nrecords from PhysicalObjectDto. Promoted from generic ArtifactDto so sculptures are categorized\nand facetable; sculpture-specific fields (cast/edition, foundry, patina) can be added as needed.\n/",
"row_count": 67
}
],
"views": [
"dto_coll_collection",
"dto_drawing",
"dto_object",
"dto_painting",
"dto_per_org",
"dto_per_person",
"dto_photograph",
"dto_print",
"dto_sculpture"
],
"generatedAt": "2026-06-29T18:03:34+00:00",
"metadata": {
"archivePreparedAt": "2026-06-29T18:03:34+00:00",
"schema": {
"tables": 12,
"properties": 128
},
"views": {
"views": 9
}
}
}
Overview
md
# Folio smith/hmsg Hirshhorn Museum and Sculpture Garden - Dataset key: `smith/hmsg` - Rows: 531 - Cores: 3 - Observed DTO tables: 9 ## Cores | Core | Label | Rows | | --- | --- | ---: | | `coll` | coll | 9 | | `obj` | obj | 449 | | `per` | per | 73 |
Observed Schema
md
# Observed Schema
## `dto_coll_collection`
- Core: `coll`
- DTO type: `collection`
- Rows: 9
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_drawing`
- Core: `obj`
- DTO type: `drawing`
- Rows: 108
DTO for drawn works: pencil, ink, charcoal, watercolour, pastel, etc.
Covers any work where drawing is the primary medium.
Subclass for more specific drawn types (CartoonDto, SketchDto, etc.)
/
| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` | | |
| `sourceUrl` | `?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 |
| `credit` | `?string` | | Credit line / acknowledgment, e.g. "Gift of the Brooklyn Museum of Art, Paul F. Walter Collection". |
| `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. |
| `rights` | `?string` | | dcterms:rights |
| `creators` | `?array` | | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `iiifBase` | `?string` | | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `thumbnailUrl` | `?string` | | |
| `largeImageUrl` | `?string` | | |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` | | Source of this data: import \| ai \| ocr \| human |
| `dimensions` | `?array` | | MuseumVocab::DIMENSIONS — structured dimension records. Each entry: {height?, width?, length?, depth?, radius?, units, name?} where height/width/length/depth/radius are numeric values in `units` (e.g. "cm", "in", "mm"). `name` is an optional label like "framed", "sight", "with mount", etc. Producers should emit only the keys present on the source record. / |
| `dimensionsRaw` | `?string` | | Original free-text dimensions string from the source, kept as a fallback when the normalizer cannot fully parse it (e.g. fractional inches, museum-specific shorthand). Templates may render this verbatim when `$dimensions` is empty. / |
| `accession` | `?string` | | MuseumVocab::ACCESSION — local accession / catalog number |
## `dto_object`
- Core: `obj`
- DTO type: `object`
- Rows: 28
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` | | |
| `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 |
| `credit` | `?string` | | Credit line / acknowledgment, e.g. "Gift of the Brooklyn Museum of Art, Paul F. Walter Collection". |
| `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. |
| `rights` | `?string` | | dcterms:rights |
| `creators` | `?array` | | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `iiifBase` | `?string` | | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `thumbnailUrl` | `?string` | | |
| `largeImageUrl` | `?string` | | |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` | | Source of this data: import \| ai \| ocr \| human |
| `dimensions` | `?array` | | MuseumVocab::DIMENSIONS — structured dimension records. Each entry: {height?, width?, length?, depth?, radius?, units, name?} where height/width/length/depth/radius are numeric values in `units` (e.g. "cm", "in", "mm"). `name` is an optional label like "framed", "sight", "with mount", etc. Producers should emit only the keys present on the source record. / |
| `dimensionsRaw` | `?string` | | Original free-text dimensions string from the source, kept as a fallback when the normalizer cannot fully parse it (e.g. fractional inches, museum-specific shorthand). Templates may render this verbatim when `$dimensions` is empty. / |
| `accession` | `?string` | | MuseumVocab::ACCESSION — local accession / catalog number |
## `dto_painting`
- Core: `obj`
- DTO type: `painting`
- Rows: 159
A painting — oil, tempera, acrylic, watercolour, fresco, etc., where paint is the primary medium.
An ArtworkDto (style/movement) over PhysicalObjectDto's material/dimensions/weight.
/
| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` | | |
| `sourceUrl` | `?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 |
| `credit` | `?string` | | Credit line / acknowledgment, e.g. "Gift of the Brooklyn Museum of Art, Paul F. Walter Collection". |
| `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. |
| `rights` | `?string` | | dcterms:rights |
| `creators` | `?array` | | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `iiifBase` | `?string` | | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `thumbnailUrl` | `?string` | | |
| `largeImageUrl` | `?string` | | |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` | | Source of this data: import \| ai \| ocr \| human |
| `dimensions` | `?array` | | MuseumVocab::DIMENSIONS — structured dimension records. Each entry: {height?, width?, length?, depth?, radius?, units, name?} where height/width/length/depth/radius are numeric values in `units` (e.g. "cm", "in", "mm"). `name` is an optional label like "framed", "sight", "with mount", etc. Producers should emit only the keys present on the source record. / |
| `dimensionsRaw` | `?string` | | Original free-text dimensions string from the source, kept as a fallback when the normalizer cannot fully parse it (e.g. fractional inches, museum-specific shorthand). Templates may render this verbatim when `$dimensions` is empty. / |
| `accession` | `?string` | | MuseumVocab::ACCESSION — local accession / catalog number |
## `dto_per_org`
- Core: `per`
- DTO type: `org`
- Rows: 4
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: 69
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: 75
| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` | | |
| `sourceUrl` | `?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 |
| `credit` | `?string` | | Credit line / acknowledgment, e.g. "Gift of the Brooklyn Museum of Art, Paul F. Walter Collection". |
| `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. |
| `rights` | `?string` | | dcterms:rights |
| `creators` | `?array` | | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Genre specific terms (TGM) e.g. "Portrait photographs", "Architectural photographs". A facet. |
| `iiifBase` | `?string` | | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `thumbnailUrl` | `?string` | | |
| `largeImageUrl` | `?string` | | |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` | | Source of this data: import \| ai \| ocr \| human |
## `dto_print`
- Core: `obj`
- DTO type: `print`
- Rows: 12
DTO for drawn works: pencil, ink, charcoal, watercolour, pastel, etc.
Covers any work where drawing is the primary medium.
Subclass for more specific drawn types (CartoonDto, SketchDto, etc.)
/
| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` | | |
| `sourceUrl` | `?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 |
| `credit` | `?string` | | Credit line / acknowledgment, e.g. "Gift of the Brooklyn Museum of Art, Paul F. Walter Collection". |
| `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. |
| `rights` | `?string` | | dcterms:rights |
| `creators` | `?array` | | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `iiifBase` | `?string` | | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `thumbnailUrl` | `?string` | | |
| `largeImageUrl` | `?string` | | |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` | | Source of this data: import \| ai \| ocr \| human |
| `dimensions` | `?array` | | MuseumVocab::DIMENSIONS — structured dimension records. Each entry: {height?, width?, length?, depth?, radius?, units, name?} where height/width/length/depth/radius are numeric values in `units` (e.g. "cm", "in", "mm"). `name` is an optional label like "framed", "sight", "with mount", etc. Producers should emit only the keys present on the source record. / |
| `dimensionsRaw` | `?string` | | Original free-text dimensions string from the source, kept as a fallback when the normalizer cannot fully parse it (e.g. fractional inches, museum-specific shorthand). Templates may render this verbatim when `$dimensions` is empty. / |
| `accession` | `?string` | | MuseumVocab::ACCESSION — local accession / catalog number |
## `dto_sculpture`
- Core: `obj`
- DTO type: `sculpture`
- Rows: 67
A sculpture — a three-dimensional physical artwork (statue, bust, relief, statuette, …).
An artwork (style/movement via ArtworkDto) with the structured material / dimensions / weight
records from PhysicalObjectDto. Promoted from generic ArtifactDto so sculptures are categorized
and facetable; sculpture-specific fields (cast/edition, foundry, patina) can be added as needed.
/
| Field | Type | Flags | Description |
| --- | --- | --- | --- |
| `id` | `?string` | | |
| `sourceUrl` | `?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 |
| `credit` | `?string` | | Credit line / acknowledgment, e.g. "Gift of the Brooklyn Museum of Art, Paul F. Walter Collection". |
| `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. |
| `rights` | `?string` | | dcterms:rights |
| `creators` | `?array` | | dcterms:creator — array of names |
| `genreSpecific` | `?array` | filterable, facet | Specific genre/form terms (MODS genre @specific) — e.g. ["Albumen prints"]. A facet. |
| `iiifBase` | `?string` | | IIIF Image API base URL — use for AI vision and imgProxy resizing |
| `thumbnailUrl` | `?string` | | |
| `largeImageUrl` | `?string` | | |
| `pageCount` | `?int` | sortable | Number of pages in the document. |
| `source` | `string` | | Source of this data: import \| ai \| ocr \| human |
| `dimensions` | `?array` | | MuseumVocab::DIMENSIONS — structured dimension records. Each entry: {height?, width?, length?, depth?, radius?, units, name?} where height/width/length/depth/radius are numeric values in `units` (e.g. "cm", "in", "mm"). `name` is an optional label like "framed", "sight", "with mount", etc. Producers should emit only the keys present on the source record. / |
| `dimensionsRaw` | `?string` | | Original free-text dimensions string from the source, kept as a fallback when the normalizer cannot fully parse it (e.g. fractional inches, museum-specific shorthand). Templates may render this verbatim when `$dimensions` is empty. / |
| `accession` | `?string` | | MuseumVocab::ACCESSION — local accession / catalog number |
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_coll_collection limit 20; ``` ```sql select * from dto_drawing limit 20; ``` ```sql select * from dto_object limit 20; ``` ```sql select * from dto_painting 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_print limit 20; ``` ```sql select * from dto_sculpture limit 20; ```