Collections and Sets

Introduction

There are many use cases for grouping resources together, often of the same class but sometimes of varying types. These use cases are exemplified in the sections below, and range from the set of objects in an auction lot, to dealer inventories and museum collections, exhibitions, a set of related concepts, or the set of people that share a common feature such as gender or nationality.

In order to cover all of the use cases with a consistent pattern, we introduce a new Set class from outside of CIDOC-CRM. This avoids issues with sets of resources with different types, and the semantics of the identity of objects and collections. If an equivalent class is added into the core CIDOC-CRM ontology in the future, a new major version of the specification will change to using it.

Sets

Core Features

Sets are conceptual groupings, rather than physical ones. The set of objects in a virtual exhibition or simply the set of a person's favorite objects never change their physical state by being part of the Set or not. They are, thus, created by a Creation, not by a Production.

Like any core resource, Set must have an id and type, are likely to have additional classifications, and can have Identifiers and Names. They can have statements made about them, and have member resources. These member resources are included via the member property rather than part, or via member_of from the included resource to the Set.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/set/3",
  "type": "Set",
  "_label": "Example Collection",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300025976",
      "type": "Type",
      "_label": "Collection"
    }
  ],
  "identified_by": [
    {
      "type": "Name",
      "content": "Example Collection"
    }
  ],
  "referred_to_by": [
    {
      "type": "LinguisticObject",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300435416",
          "type": "Type",
          "_label": "Description",
          "classified_as": [
            {
              "id": "http://vocab.getty.edu/aat/300418049",
              "type": "Type",
              "_label": "Brief Text"
            }
          ]
        }
      ],
      "content": "This is a lovely little collection"
    }
  ],
  "created_by": {
    "type": "Creation",
    "timespan": {
      "type": "TimeSpan",
      "begin_of_the_begin": "1954-01-01",
      "end_of_the_end": "1955-01-01"
    }
  },
  "member": [
    {
      "type": "HumanMadeObject",
      "_label": "Example Painting",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300033618",
          "type": "Type",
          "_label": "Painting",
          "classified_as": [
            {
              "id": "http://vocab.getty.edu/aat/300435443",
              "type": "Type",
              "_label": "Type of Work"
            }
          ]
        }
      ]
    }
  ]
}

graph TD classDef object stroke:black,fill:#E1BA9C,rx:20px,ry:20px; classDef actor stroke:black,fill:#FFBDCA,rx:20px,ry:20px; classDef type stroke:red,fill:#FAB565,rx:20px,ry:20px; classDef name stroke:orange,fill:#FEF3BA,rx:20px,ry:20px; classDef dims stroke:black,fill:#c6c6c6,rx:20px,ry:20px; classDef infoobj stroke:#907010,fill:#fffa40,rx:20px,ry:20px classDef timespan stroke:blue,fill:#ddfffe,rx:20px,ry:20px classDef place stroke:#3a7a3a,fill:#aff090,rx:20px,ry:20px classDef event stroke:#1010FF,fill:#96e0f6,rx:20px,ry:20px classDef literal stroke:black,fill:#f0f0e0; classDef classstyle stroke:black,fill:white; O1(set3) class O1 infoobj; O1-- type -->O1_0[Set] class O1_0 classstyle; O1-- _label -->O1_4("''Example Collection''") class O1_4 literal; O2(aat:300025976) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Collection''") class O2_3 literal; O1-- classified_as -->O2 O3( _ ) class O3 name; O3-- type -->O3_0[Name] class O3_0 classstyle; O3-- content -->O3_2("''Example Collection''") class O3_2 literal; O1-- identified_by -->O3 O4( _ ) class O4 infoobj; O4-- type -->O4_0[LinguisticObject] class O4_0 classstyle; O5(aat:300435416) class O5 type; O5-- type -->O5_0[Type] class O5_0 classstyle; O5-- _label -->O5_3("''Description''") class O5_3 literal; O6(aat:300418049) class O6 type; O6-- type -->O6_0[Type] class O6_0 classstyle; O6-- _label -->O6_3("''Brief Text''") class O6_3 literal; O5-- classified_as -->O6 O4-- classified_as -->O5 O4-- content -->O4_3("''This is a lovely little collection''") class O4_3 literal; O1-- referred_to_by -->O4 O7( _ ) class O7 event; O7-- type -->O7_0[Creation] class O7_0 classstyle; O8( _ ) class O8 timespan; O8-- type -->O8_0[TimeSpan] class O8_0 classstyle; O8-- begin_of_the_begin -->O8_2("''1954-01-01''") class O8_2 literal; O8-- end_of_the_end -->O8_3("''1955-01-01''") class O8_3 literal; O7-- timespan -->O8 O1-- created_by -->O7 O9( _ ) class O9 object; O9-- type -->O9_0[HumanMadeObject] class O9_0 classstyle; O9-- _label -->O9_2("''Example Painting''") class O9_2 literal; O10(aat:300033618) class O10 type; O10-- type -->O10_0[Type] class O10_0 classstyle; O10-- _label -->O10_3("''Painting''") class O10_3 literal; O11(aat:300435443) class O11 type; O11-- type -->O11_0[Type] class O11_0 classstyle; O11-- _label -->O11_3("''Type of Work''") class O11_3 literal; O10-- classified_as -->O11 O9-- classified_as -->O10 O1-- member -->O9
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Collections of Objects

Sets can be used to describe the set of objects that make up a curated collection. This is not necessarily the set of objects that the institution owns, as there could be objects which are looked after but owned by some other organization or individual, nor the set of objects that the institution has custody over, as objects being loaned to other organizations for exhibitions are still part of the conceptual collection of objects. The details of the relationship between the object and the institution are recorded on the object, and the Set simply records which objects are thought of as being part of the collection. Objects can be thought of as being part of multiple collections at the same time -- the private owner's personal collection and the museum's public collection. So while the majority of objects are both owned by and in the custody of the organization, this is not certain and should not be inferred. The Set is created by the organization or person that abstractly manages the collected objects.

This pattern can be used for any type of organization that manages objects, from museums and archives to individuals and art dealers.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/set/4",
  "type": "Set",
  "_label": "Collection of Example Museum",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300025976",
      "type": "Type",
      "_label": "Collection"
    }
  ],
  "created_by": {
    "type": "Creation",
    "carried_out_by": [
      {
        "type": "Group",
        "_label": "Example Museum",
        "classified_as": [
          {
            "id": "http://vocab.getty.edu/aat/300312281",
            "type": "Type",
            "_label": "Museum"
          }
        ]
      }
    ]
  },
  "member": [
    {
      "type": "HumanMadeObject",
      "_label": "Example Painting",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300033618",
          "type": "Type",
          "_label": "Painting",
          "classified_as": [
            {
              "id": "http://vocab.getty.edu/aat/300435443",
              "type": "Type",
              "_label": "Type of Work"
            }
          ]
        }
      ]
    }
  ]
}

graph TD classDef object stroke:black,fill:#E1BA9C,rx:20px,ry:20px; classDef actor stroke:black,fill:#FFBDCA,rx:20px,ry:20px; classDef type stroke:red,fill:#FAB565,rx:20px,ry:20px; classDef name stroke:orange,fill:#FEF3BA,rx:20px,ry:20px; classDef dims stroke:black,fill:#c6c6c6,rx:20px,ry:20px; classDef infoobj stroke:#907010,fill:#fffa40,rx:20px,ry:20px classDef timespan stroke:blue,fill:#ddfffe,rx:20px,ry:20px classDef place stroke:#3a7a3a,fill:#aff090,rx:20px,ry:20px classDef event stroke:#1010FF,fill:#96e0f6,rx:20px,ry:20px classDef literal stroke:black,fill:#f0f0e0; classDef classstyle stroke:black,fill:white; O1(set4) class O1 infoobj; O1-- type -->O1_0[Set] class O1_0 classstyle; O1-- _label -->O1_4("''Collection of Example Museum''") class O1_4 literal; O2(aat:300025976) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Collection''") class O2_3 literal; O1-- classified_as -->O2 O3( _ ) class O3 event; O3-- type -->O3_0[Creation] class O3_0 classstyle; O4( _ ) class O4 actor; O4-- type -->O4_0[Group] class O4_0 classstyle; O4-- _label -->O4_2("''Example Museum''") class O4_2 literal; O5(aat:300312281) class O5 type; O5-- type -->O5_0[Type] class O5_0 classstyle; O5-- _label -->O5_3("''Museum''") class O5_3 literal; O4-- classified_as -->O5 O3-- carried_out_by -->O4 O1-- created_by -->O3 O6( _ ) class O6 object; O6-- type -->O6_0[HumanMadeObject] class O6_0 classstyle; O6-- _label -->O6_2("''Example Painting''") class O6_2 literal; O7(aat:300033618) class O7 type; O7-- type -->O7_0[Type] class O7_0 classstyle; O7-- _label -->O7_3("''Painting''") class O7_3 literal; O8(aat:300435443) class O8 type; O8-- type -->O8_0[Type] class O8_0 classstyle; O8-- _label -->O8_3("''Type of Work''") class O8_3 literal; O7-- classified_as -->O8 O6-- classified_as -->O7 O1-- member -->O6
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Departmental Collections

Institutions are often split up into departments, each of which will manage a part of the overall collection. These parts of the collection are managed as separate Sets, rather than a tree structure within a single resource. It is useful to be able to describe the properties of the object in each of the contexts, and allow a separate structure of inventory management from organizational chart. The department might also conceive of further sets of their objects, without any direct correspondence and likely with the same object being part of more than one set at the same time.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/set/5",
  "type": "Set",
  "_label": "Collection of Example Museum's Paintings Department",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300025976",
      "type": "Type",
      "_label": "Collection"
    }
  ],
  "created_by": {
    "type": "Creation",
    "carried_out_by": [
      {
        "type": "Group",
        "_label": "Paintings Department",
        "classified_as": [
          {
            "id": "http://vocab.getty.edu/aat/300263534",
            "type": "Type",
            "_label": "Department"
          }
        ],
        "member_of": [
          {
            "type": "Group",
            "_label": "Example Museum",
            "classified_as": [
              {
                "id": "http://vocab.getty.edu/aat/300312281",
                "type": "Type",
                "_label": "Museum"
              }
            ]
          }
        ]
      }
    ]
  },
  "member": [
    {
      "type": "HumanMadeObject",
      "_label": "Example Painting",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300033618",
          "type": "Type",
          "_label": "Painting",
          "classified_as": [
            {
              "id": "http://vocab.getty.edu/aat/300435443",
              "type": "Type",
              "_label": "Type of Work"
            }
          ]
        }
      ]
    }
  ]
}

graph TD classDef object stroke:black,fill:#E1BA9C,rx:20px,ry:20px; classDef actor stroke:black,fill:#FFBDCA,rx:20px,ry:20px; classDef type stroke:red,fill:#FAB565,rx:20px,ry:20px; classDef name stroke:orange,fill:#FEF3BA,rx:20px,ry:20px; classDef dims stroke:black,fill:#c6c6c6,rx:20px,ry:20px; classDef infoobj stroke:#907010,fill:#fffa40,rx:20px,ry:20px classDef timespan stroke:blue,fill:#ddfffe,rx:20px,ry:20px classDef place stroke:#3a7a3a,fill:#aff090,rx:20px,ry:20px classDef event stroke:#1010FF,fill:#96e0f6,rx:20px,ry:20px classDef literal stroke:black,fill:#f0f0e0; classDef classstyle stroke:black,fill:white; O1(set5) class O1 infoobj; O1-- type -->O1_0[Set] class O1_0 classstyle; O1-- _label -->O1_4("''Collection of Example Museum's Paintings Department''") class O1_4 literal; O2(aat:300025976) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Collection''") class O2_3 literal; O1-- classified_as -->O2 O3( _ ) class O3 event; O3-- type -->O3_0[Creation] class O3_0 classstyle; O4( _ ) class O4 actor; O4-- type -->O4_0[Group] class O4_0 classstyle; O4-- _label -->O4_2("''Paintings Department''") class O4_2 literal; O5(aat:300263534) class O5 type; O5-- type -->O5_0[Type] class O5_0 classstyle; O5-- _label -->O5_3("''Department''") class O5_3 literal; O4-- classified_as -->O5 O6( _ ) class O6 actor; O6-- type -->O6_0[Group] class O6_0 classstyle; O6-- _label -->O6_2("''Example Museum''") class O6_2 literal; O7(aat:300312281) class O7 type; O7-- type -->O7_0[Type] class O7_0 classstyle; O7-- _label -->O7_3("''Museum''") class O7_3 literal; O6-- classified_as -->O7 O4-- member_of -->O6 O3-- carried_out_by -->O4 O1-- created_by -->O3 O8( _ ) class O8 object; O8-- type -->O8_0[HumanMadeObject] class O8_0 classstyle; O8-- _label -->O8_2("''Example Painting''") class O8_2 literal; O9(aat:300033618) class O9 type; O9-- type -->O9_0[Type] class O9_0 classstyle; O9-- _label -->O9_3("''Painting''") class O9_3 literal; O10(aat:300435443) class O10 type; O10-- type -->O10_0[Type] class O10_0 classstyle; O10-- _label -->O10_3("''Type of Work''") class O10_3 literal; O9-- classified_as -->O10 O8-- classified_as -->O9 O1-- member -->O8
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Other Uses

The set of objects in an auction lot are also modeled as a Set. These are not curated in the same way as a museum collection, and are not necessarily ever brought together physically, but are being put up for auction as a single entity. Similarly, the set of objects used in an exhibition is also modeled as a Set.

Collection Specific Information

Information about a resource that is specific to the context of the set that they are part of, such as the accession number of an object for that particular collection, can be described using the AttributeAssignment patterns described in the page about assertions.

Collections over Time

Collections are not static over time but instead change as objects are acquired and sold, stolen or given to new owners. Recording these states results in some complexity, as we still want to be able to refer to objects in a previous context, rather than just their current context. It is useful, for example, to record the accession or stock number of an object in previous collections or as assigned by dealerships and auction houses. For collections that never change once finished, this isn't a problem. The object can be considered to always be part of the auction lot. However for museum or dealer collections, it is important to distinguish between the objects that are currently part of that collection and the objects that have ever been part of the collection.

Much of the time this is an unnecessary complication that can be safely ignored, as the information systems only know about the current state. If it is important, then read on.

Adding and Removing Resources

Objects are rarely added and removed from collections without further contextual information, there is almost always some larger activity that results in the change. The ownership of the object is transferred to the organization which prompts it to be accessioned into the collection, and subsequently an accession number Identifier as assigned to it.

There are two activities, Addition and Removal, which mirror the same activities of Joining and Leaving for members of Groups. These may be included in the object representation, to further expand upon the member_of relationship.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/object/27",
  "type": "HumanMadeObject",
  "_label": "Painting",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300033618",
      "type": "Type",
      "_label": "Painting",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300435443",
          "type": "Type",
          "_label": "Type of Work"
        }
      ]
    },
    {
      "id": "http://vocab.getty.edu/aat/300133025",
      "type": "Type",
      "_label": "Artwork"
    }
  ],
  "member_of": [
    {
      "type": "Set",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300025976",
          "type": "Type",
          "_label": "Collection"
        }
      ]
    }
  ],
  "added_member_by": [
    {
      "type": "Addition",
      "timespan": {
        "type": "TimeSpan",
        "begin_of_the_begin": "1954-01-01T00:00:00Z",
        "end_of_the_end": "1955-01-01T00:00:00Z"
      },
      "carried_out_by": [
        {
          "type": "Person",
          "_label": "Museum Registrar"
        }
      ],
      "added_to": {
        "type": "Set"
      }
    }
  ]
}

graph TD classDef object stroke:black,fill:#E1BA9C,rx:20px,ry:20px; classDef actor stroke:black,fill:#FFBDCA,rx:20px,ry:20px; classDef type stroke:red,fill:#FAB565,rx:20px,ry:20px; classDef name stroke:orange,fill:#FEF3BA,rx:20px,ry:20px; classDef dims stroke:black,fill:#c6c6c6,rx:20px,ry:20px; classDef infoobj stroke:#907010,fill:#fffa40,rx:20px,ry:20px classDef timespan stroke:blue,fill:#ddfffe,rx:20px,ry:20px classDef place stroke:#3a7a3a,fill:#aff090,rx:20px,ry:20px classDef event stroke:#1010FF,fill:#96e0f6,rx:20px,ry:20px classDef literal stroke:black,fill:#f0f0e0; classDef classstyle stroke:black,fill:white; O1(object27) class O1 object; O1-- type -->O1_0[HumanMadeObject] class O1_0 classstyle; O1-- _label -->O1_4("''Painting''") class O1_4 literal; O2(aat:300033618) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Painting''") class O2_3 literal; O3(aat:300435443) class O3 type; O3-- type -->O3_0[Type] class O3_0 classstyle; O3-- _label -->O3_3("''Type of Work''") class O3_3 literal; O2-- classified_as -->O3 O1-- classified_as -->O2 O4(aat:300133025) class O4 type; O4-- type -->O4_0[Type] class O4_0 classstyle; O4-- _label -->O4_3("''Artwork''") class O4_3 literal; O1-- classified_as -->O4 O5( _ ) class O5 infoobj; O5-- type -->O5_0[Set] class O5_0 classstyle; O6(aat:300025976) class O6 type; O6-- type -->O6_0[Type] class O6_0 classstyle; O6-- _label -->O6_3("''Collection''") class O6_3 literal; O5-- classified_as -->O6 O1-- member_of -->O5 O7( _ ) class O7 event; O7-- type -->O7_0[Addition] class O7_0 classstyle; O8( _ ) class O8 timespan; O8-- type -->O8_0[TimeSpan] class O8_0 classstyle; O8-- begin_of_the_begin -->O8_2("''1954-01-01T00:00:00Z''") class O8_2 literal; O8-- end_of_the_end -->O8_3("''1955-01-01T00:00:00Z''") class O8_3 literal; O7-- timespan -->O8 O9( _ ) class O9 actor; O9-- type -->O9_0[Person] class O9_0 classstyle; O9-- _label -->O9_2("''Museum Registrar''") class O9_2 literal; O7-- carried_out_by -->O9 O10( _ ) class O10 infoobj; O10-- type -->O10_0[Set] class O10_0 classstyle; O7-- added_to -->O10 O1-- added_member_by -->O7
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)