Baseline Patterns

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 the datasets of almost 20 museums, the following patterns have been agreed on as useful ways to think about our 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:

{
  "@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 in specific circumstances. The mechanism for doing this provided by the CRM is the predicate crm:P2_has_type, referred to as classified_as in the JSON-LD representation. The semantics of crm:P2_has_type are thus closer to "is classified as" or perhaps "has semantic tag", rather than "is an instance of the class".

It is useful to compare this with the predicate rdf:type, or type in the JSON-LD representation, which is the formal class of the resource. This is used almost exclusively for the CRM defined classes, with as few 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 used in the model is listed here.

Use cases for this pattern are in almost every example, but include:

Example:

The type of the object (an instance of CRM's ManMadeObject class) 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": ["aat:300033618","aat:300133025"]
}

JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)

Parts

The CRM allows the partitioning of many sorts of object, including those that are of most interest to the community. In particular,

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:

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": ["aat:300033618","aat:300133025"], 
  "made_of": [
    {"id": "aat:300015045","type": "Material","label": "watercolor"}
  ], 
  "part": [
    {
      "id": "https://linked.art/example/object/16/part/1", 
      "type": "ManMadeObject", 
      "label": "Canvas Support", 
      "classified_as": ["aat:300014844"], 
      "made_of": [{"id": "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:

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/7", 
  "type": "Activity", 
  "label": "Example Auction", 
  "classified_as": ["aat:300054751"], 
  "consists_of": [
    {
      "id": "https://linked.art/example/activity/7/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:

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", 
  "spatially_within": [
    {"id": "tgn:7023900-place","type": "Place","label": "Los Angeles"}
  ], 
  "spatially_contains": [
    {
      "id": "https://linked.art/example/place/6/part/1", 
      "type": "Place", 
      "label": "Gallery W204", 
      "classified_as": ["aat:300240057"]
    }
  ]
}

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

CIDOC-CRM 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:

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", 
  "includes": [
    {
      "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)

Organizations

Organizations are modeled as groups in CIDOC-CRM, 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.

Use cases for this pattern include:

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": ["aat:300263534"]
    }
  ], 
  "classified_as": ["aat:300312281"]
}

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 CIDOC-CRM 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.

The same pattern is used for similar resources, such as Names and Titles.

Example use cases for this pattern include:

Example:

Having only a textual description of the materials, 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/17", 
  "type": "ManMadeObject", 
  "label": "Example Painting on Canvas", 
  "classified_as": ["aat:300033618","aat:300133025"], 
  "referred_to_by": [
    {
      "id": "https://linked.art/example/object/17/statement/1", 
      "type": "LinguisticObject", 
      "value": "Oil on Canvas", 
      "classified_as": ["aat:300010358"]
    }
  ]
}

JSON-LD (Raw) | JSON-LD (Playground) | Turtle (Raw) | Turtle (Styled)

Language of Content

Note that the pattern for providing the language of the content is currently under discussion, as to whether to use the Linked Open Data friendly method of language tags, or the CIDOC-CRM specific method of P72_has_language.