Table of Contents
It is useful to have some common baseline patterns to follow when using a very open ontology, like CIDOC-CRM. From working with datasets from across many different museums, the following patterns have been agreed on as useful ways to think about our cultural data.
These patterns are presented below with examples of how they are used in practice, but these are not intended to be exhaustive. The documentation for the different resource types will include more information about how they are used in different circumstances.
Core Properties
There are a few core properties that every resource should have for it to be a useful part of the world of Linked Open Data:
id
captures the URI that identifies the object. Every resource must have exactly one id, and it must be an HTTP URI.type
captures the class of the object, orrdf:type
in RDF. Every resource must have exactly one class. This allows software to align the data model with an internal, object oriented class based implementation.label
captures a human readable label for the object as a string. Every resource should have exactly one label.
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/object/14", "type": "ManMadeObject", "label": "Example Object" }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Types / Classifications
The CRM is a framework that must be extended via additional vocabularies and ontologies to be useful. The provided mechanism for doing this is the predicate crm:P2_has_type
, mapped as classified_as
in the model. The semantics of crm:P2_has_type
are closer to "is classified as" or perhaps "has semantic tag", rather than "is an instance of the class" like rdf:type
(mapped as type
in the model). The type
field is used for CRM defined classes, and as few other extensions as possible.
While any external vocabulary of terms can be used, the Getty Vocabularies are used whenever possible for consistency. The set of terms that have been identified as useful from those vocabularies is listed in the community best-practices.
Use cases for this pattern are in almost every example, but include:
- The object being an art object
- The type of an art object being a painting
- The type of a description being a materials statement
- The type of an identifier being an accession number
- The type of an organization being a museum
- The type of a place being a gallery
Example:
The type of the object (an instance of ManMadeObject
) is a painting (aat:300033618):
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/object/15", "type": "ManMadeObject", "label": "Simple Example Painting", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300033618", "type": "Type", "label": "Painting" }, { "id": "http://vocab.getty.edu/aat/300133025", "type": "Type", "label": "Artwork" } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Parts
Describing the hierarchy of parts of resources is a core pattern for having increasingly granular or specific descriptions. These partitionings are sometimes immediately obvious (the frame is part of the painting) and sometimes rather abstract (the concept of oak is part of the broader concept of wood).
Objects
Objects can be partitioned into separate pieces, with more specific information provided about each piece. The individual pieces do not need to be physically separated or even separable from the whole, just objectively defined.
Use cases for this pattern include:
- Different measurements of the size of the parts of the object
- Different materials for parts of the object
- Specific descriptions of parts of the object
- Recombining a physically distributed object into a single description
- The physical pages of a manuscript
Example:
A painting (aat:300033618) is made of watercolor paint (aat:300015045) on a support (aat:300014844) made of canvas (aat:300014078):
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/object/16", "type": "ManMadeObject", "label": "Example Painting", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300033618", "type": "Type", "label": "Painting" }, { "id": "http://vocab.getty.edu/aat/300133025", "type": "Type", "label": "Artwork" } ], "made_of": [ { "id": "http://vocab.getty.edu/aat/300015045", "type": "Material", "label": "watercolors" } ], "part": [ { "id": "https://linked.art/example/object/16/part/1", "type": "ManMadeObject", "label": "Canvas Support", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300014844", "type": "Type", "label": "Support" } ], "made_of": [ { "id": "http://vocab.getty.edu/aat/300014078", "type": "Material", "label": "canvas" } ] } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Time Periods and Events
In order to make assertions about events or time periods that occur within some larger context, the same pattern of asserting a part-of/has-part relationship is useful.
Use cases for this pattern include:
- The display of an exhibition at a specific venue, as part of the exhibition as a whole
- The auctioning of a specific lot, as part of the auction as a whole
- The activity of taking inventory, as part of the actions taken over the period of curation of the collection
- The payment of a cost, as part of a purchase activity
Example:
An auction (aat:300054751) consists of many activities in which a particular lot is auctioned:
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/activity/15", "type": "Activity", "label": "Example Auction", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300054751", "type": "Type", "label": "Auctioning" } ], "part": [ { "id": "https://linked.art/example/activity/15/part/1", "type": "Activity", "label": "Example Auction of Lot" } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Locations
Locations can be made more specific by saying that the smaller region is part of the larger region.
Use cases for this pattern include:
- A city (where an event takes place, for example) is part of a country
- A gallery (where an object is on display, for example) is part of the museum premises
- A region (where an artist was born, for example) is part of a country
Example:
The "W02" gallery (aat:300240057) is part of the museum, which is in Los Angeles (tgn:7023900-place):
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/place/6", "type": "Place", "label": "Example Museum Building", "part": [ { "id": "https://linked.art/example/place/6/part/1", "type": "Place", "label": "Gallery W204", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300240057", "type": "Type", "label": "Gallery" } ] } ], "part_of": [ { "id": "http://vocab.getty.edu/tgn/7023900-place", "type": "Place", "label": "Los Angeles" } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Use of Gazeteers
It is preferable to rely on linked controlled vocabulary systems that include hierarchies whenever possible, rather than duplicating the geographical structure into the metadata of other resources.
Information / Linguistic Objects
The model makes a distinction between the abstract information content and the physical carriers of that content. Using this separation, we can distinguish between the textual or otherwise semantic partitioning of the content (such as chapter, verse or scene) and the physical partitioning of the carriers of that content, using the Object model described above.
Use cases for this pattern include:
- The content of the sales ledger is divided into rows (which refer to objects)
- The content of the tryptych is divided into three scenes (which are depicted on the panels)
- The content of the manuscript is divided into chapters
Example:
The content of the first ledger from a dealer's records contains the content of the first row of that ledger.
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/text/6", "type": "LinguisticObject", "label": "Content of Ledger 1", "part": [ { "id": "https://linked.art/example/text/6/part/1", "type": "LinguisticObject", "label": "Content of Row 1" } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Concept Hierarchy
Similarly, concepts can be arranged in parent/child hierarchies where the parent concepts include all of the child concepts.
Use cases for this pattern include:
- The concept of wood includes the concept of oak
- The concept of paintings includes the concept of portraits
Example:
The concept of being the side of an object (aat:300404461) is part of the concept of being some portion of an object (aat:300190691).
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/object/17", "type": "ManMadeObject", "label": "Side of an Object", "classified_as": [ { "id": "https://linked.art/example/Type/aat:300404461", "type": "Type", "label": "Sides", "part_of": [ { "id": "https://linked.art/example/Type/aat:300190691", "type": "Type", "label": "Object portions" } ] } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Organizations
Organizations are modeled as Groups which can have members that are part of that group. The members can themselves be groups, allowing a hierarchy to be created in the same way as for parts of the classes above. Note that this pattern uses member
rather than part
, as instances of both Group
and Person
share the same membership relationship, rather than a strict partitioning.
Use cases for this pattern include:
- Departments as part of an Organization
Example:
The Paintings Department (aat:300263534) is part of the Example Museum (aat:300312281)
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/group/7", "type": "Group", "label": "Example Museum Organization", "member": [ { "id": "https://linked.art/example/group/7/part/1", "type": "Group", "label": "Paintings Department", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300263534", "type": "Type", "label": "Department" } ] } ], "classified_as": [ { "id": "http://vocab.getty.edu/aat/300312281", "type": "Type", "label": "Museum" } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Membership in a Collection
Collections are modeled as Aggregations of objects. Aggregations are conceptual sets of resources. Like member
for participation in Groups, this is also not strict partitioning as any resource can be part of an Aggregation, and the same Aggregation can include many different types of resource. Instead of part
, we use the term aggregates
.
Use cases for this pattern include:
- A collection of artworks
- An auction Lot of objects
- A set of related concepts
Example:
A Painting is a member of the Paintings Collection.
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/set/6", "type": "Aggregation", "label": "Paintings Collection", "aggregates": [ { "id": "https://linked.art/example/object/18", "type": "ManMadeObject", "label": "Example Painting", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300033618", "type": "Type", "label": "Painting" } ] } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)
Statements about a Resource
In many cases, current data does not support the level of specificity that the full ontology assumes. For example, instead of a completely modeled set of parts with materials, many museum collection management systems allow only a single human-readable string for the "medium" or "materials statement". The same is true in many other situations, including rights or allowable usage statements, dimensions, edition statements and so forth. Any time that there is a description of the resource that has a more exact scope than just a general description, then this pattern can be used to record that descriptive text.
The pattern makes use of the Linguistic Object class -- a class for resources that identify a particular piece of textual content. These Linguistic Objects can then refer to any other resource to state what the content is about. They maintain the statement itself in the value
property, and the language of the statement (if known) in the language
property.
Use cases for this pattern include:
- General description of the resource
- Materials statement for an object
- Attribution statement for an image
- Biography for a person
- Dimensions statement for a part of an object
Example:
Having only a textual description of the materials in English, the value "Oil on Canvas"
is recorded as referring to the painting as a "materials" (aat:300010358) statement:
{ "@context": "https://linked.art/ns/v1/linked-art.json", "id": "https://linked.art/example/object/19", "type": "ManMadeObject", "label": "Example Painting on Canvas", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300033618", "type": "Type", "label": "Painting" }, { "id": "http://vocab.getty.edu/aat/300133025", "type": "Type", "label": "Artwork" } ], "referred_to_by": [ { "id": "https://linked.art/example/object/19/statement/1", "type": "LinguisticObject", "content": "Oil on Canvas", "classified_as": [ { "id": "http://vocab.getty.edu/aat/300010358", "type": "Type", "label": "Material Statement" }, { "id": "http://vocab.getty.edu/aat/300418049", "type": "Type", "label": "Brief Text" } ], "language": [ { "id": "http://vocab.getty.edu/aat/300388277", "type": "Language", "label": "English" } ] } ] }
JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)