Places

Introduction

Places are one of the foundational classes in the model. Events and activities occur at both a time and a place, objects of all sizes have locations, and people and organizations have associated locations where they reside or are otherwise associated with. Places are extents in space, independent of time or what may or may not be present in that space. For built works such as architecture and works that are fixed in location due to their media (a cave drawing for example), Place is a defining characteristic.

Places also form a core integration point with Geographical Information Systems (GIS) and map based user interfaces. By aligning with these other systems, we enable better usability and interactivity with our data.

Core Information

All of the core information for resources is available for Place, including identifiers, classifications, labels, names, statements and so forth.

It is recommended that external gazeteer systems be used for recording the spatial hierarchy of Places, however it is still useful to be able to position historical locations within their larger geospatial context. This uses the same partitioning pattern as all other classes in the model.

Example:

There is a city called Amsterdam in the Netherlands.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/place/amsterdam/1",
  "type": "Place",
  "_label": "Amsterdam",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300008389",
      "type": "Type",
      "_label": "City"
    }
  ],
  "identified_by": [
    {
      "type": "Name",
      "content": "Amsterdam"
    }
  ],
  "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": "Amsterdam is a city in the Netherlands"
    }
  ],
  "part_of": [
    {
      "id": "https://linked.art/example/place/netherlands",
      "type": "Place",
      "_label": "Netherlands",
      "classified_as": [
        {
          "id": "http://vocab.getty.edu/aat/300128207",
          "type": "Type",
          "_label": "Nation"
        }
      ]
    }
  ]
}

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(place/amsterdam/1) class O1 place; O1-- type -->O1_0[Place] class O1_0 classstyle; O1-- _label -->O1_4("''Amsterdam''") class O1_4 literal; O2(aat:300008389) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''City''") 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("''Amsterdam''") 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("''Amsterdam is a city in the Netherlands''") class O4_3 literal; O1-- referred_to_by -->O4 O7(place/netherlands) class O7 place; O7-- type -->O7_0[Place] class O7_0 classstyle; O7-- _label -->O7_3("''Netherlands''") class O7_3 literal; O8(aat:300128207) class O8 type; O8-- type -->O8_0[Type] class O8_0 classstyle; O8-- _label -->O8_3("''Nation''") class O8_3 literal; O7-- classified_as -->O8 O1-- part_of -->O7
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Geospatial Location

One of the expected user interface requirements for places is the ability to plot them on a map. In order to do this, or to calculate the geospatial overlap of places, it is useful to have a geometry that describes the place's boundaries in the real world. This could be very detailed, a simple bounding box within which the place fits, or a point close to the center of the area.

This is handled simply by associating a WKT string with the place using the defined_by property. A simple user interface for generating WKT representations is available from the Wicket Project.

Example:

A polygon that (approximately) defines the country of New Zealand.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/place/new_zealand/1",
  "type": "Place",
  "_label": "New Zealand",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300128207",
      "type": "Type",
      "_label": "Nation"
    }
  ],
  "defined_by": "POLYGON((165.74 -33.55, -179.96 -33.55, -179.96 -47.8, 165.74 -47.8, 165.74 -33.55))"
}

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(place/new_zealand/1) class O1 place; O1-- type -->O1_0[Place] class O1_0 classstyle; O1-- _label -->O1_4("''New Zealand''") class O1_4 literal; O2(aat:300128207) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Nation''") class O2_3 literal; O1-- classified_as -->O2 O1-- defined_by -->O1_6("''POLYGON((165.74 -33.55, -179.96 -33.55, -179.96 -47.8, 165.74 -47.8, 165.74 -33.55))''") class O1_6 literal;
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Geospatial Approximation

All recorded locations are approximate to some degree. It may be desirable to capture the exact location separately from a broader area that is known, especially when that approximation is very uncertain. If the place is the exact location of several events, and a name for the place is available but not exact geospatial coordinates or a full address, then this pattern is especially valuable. This is managed using the part_of construction -- the specific place is somewhere within the broader area.

Example:

Many art sales take place in auction houses over time, and while the city might be known, the exact address within the city might not be and it could be misleading to collect all of the art sales within the entire city together.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/place/amsterdam_auction_house/1",
  "type": "Place",
  "_label": "Christie's AMS",
  "identified_by": [
    {
      "type": "Name",
      "content": "Christie's Amsterdam Location"
    }
  ],
  "part_of": [
    {
      "id": "https://linked.art/example/place/amsterdam",
      "type": "Place",
      "_label": "Amsterdam"
    }
  ]
}

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(place/amsterdam_auction_house/1) class O1 place; O1-- type -->O1_0[Place] class O1_0 classstyle; O1-- _label -->O1_4("''Christie's AMS''") class O1_4 literal; O2( _ ) class O2 name; O2-- type -->O2_0[Name] class O2_0 classstyle; O2-- content -->O2_2("''Christie's Amsterdam Location''") class O2_2 literal; O1-- identified_by -->O2 O3(place/amsterdam) class O3 place; O3-- type -->O3_0[Place] class O3_0 classstyle; O3-- _label -->O3_3("''Amsterdam''") class O3_3 literal; O1-- part_of -->O3
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)

Buildings and "Immovable" Objects

It is easy to confuse places with the constructions that exist at the place. While rare, there are situations when buildings are moved between locations. The building, just like a painting, is thus modeled as an object that has a current location in space. Activities take place in the place, rather than in the object. The granularity of the place compared to the building may be different due to underlying data management.

This applies to any other "immovable" object as well, such as large stellae through pyramids, ruins, or any other constructed object that might otherwise be "permanently" at a particular location.

Example:

The Frank Lloyd Wright House was originally built in New Jersey, and subsequently moved to its current location in Arkansas.

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/object/flw_house/1",
  "type": "HumanMadeObject",
  "_label": "Frank Lloyd Wright House",
  "classified_as": [
    {
      "id": "http://vocab.getty.edu/aat/300004792",
      "type": "Type",
      "_label": "Building"
    }
  ],
  "identified_by": [
    {
      "type": "Name",
      "content": "Frank Lloyd Wright House"
    }
  ],
  "current_location": {
    "id": "https://linked.art/example/place/crystal_bridges",
    "type": "Place",
    "_label": "Crystal Bridges"
  }
}

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/flw_house/1) class O1 object; O1-- type -->O1_0[HumanMadeObject] class O1_0 classstyle; O1-- _label -->O1_4("''Frank Lloyd Wright House''") class O1_4 literal; O2(aat:300004792) class O2 type; O2-- type -->O2_0[Type] class O2_0 classstyle; O2-- _label -->O2_3("''Building''") 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("''Frank Lloyd Wright House''") class O3_2 literal; O1-- identified_by -->O3 O4(place/crystal_bridges) class O4 place; O4-- type -->O4_0[Place] class O4_0 classstyle; O4-- _label -->O4_3("''Crystal Bridges''") class O4_3 literal; O1-- current_location -->O4
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)