Concepts

Introduction

Concepts are an important aspect of Linked Art, and encompass "units of thought" from classifications of objects or other entities, to languages, materials and beyond. For the most part, Linked Art leverages the Getty's Art and Architecture Thesaurus (AAT) for concepts rather than defining our own, however the model only requires the use of AAT terms in a very limited number of situations.

When it is useful or necessary to define a new concept, or to redefine an existing one in order to add new information, then we can fully describe them using this part of the model, rather than merely reference an external URI.

Concept Classes

There are five core classes for concepts:

All of the classes above are used in the regular type property, but care should be taken to use the right class whenever possible rather than always falling back to Type.

Example:

A minimal record for a concept of a Painting.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/concept/painting/1",
  "type": "Type",
  "_label": "Painting"
}

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(concept/painting/1) class O1 type; O1-- type -->O1_0[Type] class O1_0 classstyle; O1-- _label -->O1_4("''Painting''") class O1_4 literal;
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Importance of Equivalents

If new information is to be added to an existing concept, or it is needed as a record in a local system without changes, then including references with the equivalent property to existing identifiers for the new record for the concept is very important for semantic interoperability. This is described also in the basic patterns and in the record reference API pattern but bears repeating here.

This applies both in the new concept record, as in the example below, but also in any reference from another record to that record.

Example 1:

A local record that sets a different primary name, but is equivalent to the AAT concept.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/concept/painting/2",
  "type": "Type",
  "_label": "Local Copy of Painting",
  "identified_by": [
    {
      "type": "Name",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300404670",
          "type": "Type",
          "_label": "Primary Name"
        }
      ],
      "content": "Painting"
    }
  ],
  "equivalent": [
    {
      "id": "http://vocab.getty.edu/aat/300033618",
      "type": "Type",
      "_label": "painting (visual works)"
    }
  ]
}

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(concept/painting/2) class O1 type; O1-- type -->O1_0[Type] class O1_0 classstyle; O1-- _label -->O1_4("''Local Copy of Painting''") class O1_4 literal; O2( _ ) class O2 name; O2-- type -->O2_0[Name] class O2_0 classstyle; O3(aat:300404670) class O3 type; O3-- type -->O3_0[Type] class O3_0 classstyle; O3-- _label -->O3_3("''Primary Name''") class O3_3 literal; O2-- classified_as -->O3 O2-- content -->O2_3("''Painting''") class O2_3 literal; O1-- identified_by -->O2 O4(aat:300033618) class O4 type; O4-- type -->O4_0[Type] class O4_0 classstyle; O4-- _label -->O4_3("''painting (visual works)''") class O4_3 literal; O1-- equivalent -->O4
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Example 2:

The Night Watch is a painting, using the local record with an equivalent of the AAT concept.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/object/nightwatch/52",
  "type": "HumanMadeObject",
  "_label": "Night Watch by Rembrandt",
  "classified_as": [
    {
      "id": "https://linked.art/example/concept/painting",
      "type": "Type",
      "_label": "Local Copy of Painting",
      "equivalent": [
        {
          "id": "http://vocab.getty.edu/aat/300033618",
          "type": "Type",
          "_label": "painting (visual art)"
        }
      ]
    }
  ]
}

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(object/nightwatch/52) class O1 object; O1-- type -->O1_0[HumanMadeObject] class O1_0 classstyle; O1-- _label -->O1_4("''Night Watch by Rembrandt''") class O1_4 literal; O2(concept/painting) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Local Copy of Painting''") class O2_3 literal; O3(aat:300033618) class O3 type; O3-- type -->O3_0[Type] class O3_0 classstyle; O3-- _label -->O3_3("''painting (visual art)''") class O3_3 literal; O2-- equivalent -->O3 O1-- classified_as -->O2
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Partitioning versus Classification

When it comes to concepts, it is easy to confuse the distinction between the concept being a part of a broader concept, and being classified as a type of concept. The broader concept is a concept that the narrower concept is part of, along with others. The broader concept is a more general concept than the narrower one. For example visual works is a broader or more general concept than the concept of paintings, animals is a more general concept than mammals, European is a more general concept than Dutch.

Conversely a second concept that classifies the first would be one that categorizes it but doesn't encompass it directly. For example, type of work is the category for the concept of painting, taxonomic rank would be a category for mammals, and nationality would be a category for Dutch. These concepts that categorize other concepts are often called "meta-types" and are also discussed in the base patterns.

Concepts can, and should, have both broader terms and classifications, as demonstrated in the above examples.

Example:

The concept of painting is a type of work, and has a broader concept of visual artworks.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/concept/painting/3",
  "type": "Type",
  "_label": "Local Copy of Painting",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300435443",
      "type": "Type",
      "_label": "type of work"
    }
  ],
  "equivalent": [
    {
      "id": "http://vocab.getty.edu/aat/300033618",
      "type": "Type",
      "_label": "painting (visual works)"
    }
  ],
  "broader": [
    {
      "id": "http://vocab.getty.edu/aat/300191086",
      "type": "Type",
      "_label": "visual works"
    }
  ]
}

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(concept/painting/3) class O1 type; O1-- type -->O1_0[Type] class O1_0 classstyle; O1-- _label -->O1_4("''Local Copy of Painting''") class O1_4 literal; O2(aat:300435443) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''type of work''") class O2_3 literal; O1-- classified_as -->O2 O3(aat:300033618) class O3 type; O3-- type -->O3_0[Type] class O3_0 classstyle; O3-- _label -->O3_3("''painting (visual works)''") class O3_3 literal; O1-- equivalent -->O3 O4(aat:300191086) class O4 type; O4-- type -->O4_0[Type] class O4_0 classstyle; O4-- _label -->O4_3("''visual works''") class O4_3 literal; O1-- broader -->O4
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Concept Schemes and Sets

Another way to group concepts is within a concept scheme (such as AAT), or within a set of concepts that have been collected together for some purpose. The set of concepts might be created to collect together concepts that have a certain usage but aren't within a single hierarchical structure, such as types of statement, object or work. Concepts can be in multiple sets at once, and those sets can also be arranged hierarchically. This grouping is a third, completely orthogonal way to arrange concepts beyond partitioning and classifying.

Example:

The concept of painting is in the Local Concept Scheme.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/concept/painting/4",
  "type": "Type",
  "_label": "Local Copy of Painting",
  "member_of": [
    {
      "id": "https://linked.art/example/set/conceptScheme",
      "type": "Set",
      "_label": "Local Concept Scheme"
    }
  ]
}

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(concept/painting/4) class O1 type; O1-- type -->O1_0[Type] class O1_0 classstyle; O1-- _label -->O1_4("''Local Copy of Painting''") class O1_4 literal; O2(set/conceptScheme) class O2 infoobj; O2-- type -->O2_0[Set] class O2_0 classstyle; O2-- _label -->O2_3("''Local Concept Scheme''") class O2_3 literal; O1-- member_of -->O2
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Creation and Influences

Some concepts are the coordination or compilation of other concepts or entities. For example the concept "history of France" could be thought of as being the concept "history" as it relates to the place "France". Or the concept "history of France, 20th century" would be the same with an additional related period of time.

As these related entities are not necessarily also concepts, they cannot be part of the narrower/broader hierarchy -- the "history of France" concept cannot have a broader relationship to France, because France is an instance of Place, not of Type.

In order to manage these sorts of relationships, we use the influenced_by property of the Creation of the concept, which can refer to any entity.

Example:

The concept "history of France" is influenced by the concept of "history" and the place "France".

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/concept/historyFrance/1",
  "type": "Type",
  "_label": "History of France",
  "created_by": {
    "type": "Creation",
    "influenced_by": [
      {
        "id": "https://linked.art/example/concept/history",
        "type": "Type",
        "_label": "History"
      },
      {
        "id": "https://linked.art/example/place/france",
        "type": "Place",
        "_label": "France"
      }
    ]
  }
}

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(concept/historyFrance/1) class O1 type; O1-- type -->O1_0[Type] class O1_0 classstyle; O1-- _label -->O1_4("''History of France''") class O1_4 literal; O2( _ ) class O2 event; O2-- type -->O2_0[Creation] class O2_0 classstyle; O3(concept/history) class O3 type; O3-- type -->O3_0[Type] class O3_0 classstyle; O3-- _label -->O3_3("''History''") class O3_3 literal; O2-- influenced_by -->O3 O4(place/france) class O4 place; O4-- type -->O4_0[Place] class O4_0 classstyle; O4-- _label -->O4_3("''France''") class O4_3 literal; O2-- influenced_by -->O4 O1-- created_by -->O2
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Alignment with SKOS

This model is heavily influenced by and highly compatible with SKOS the Simple Knowledge Organization System specification from the W3C. Concepts in Linked Art could easily be skos:Concepts, with different types of name (called labels in skos), descriptions/notes, narrower and broader concepts and other relationships. Coordinated concepts are managed through the creation influences pattern. Concept Schemes in SKOS are modeled as Sets in Linked Art.

As such, any SKOS described concept should be able to be transformed to Linked Art with minimal difficulty.