Linked Art API: Assigned Relationship Structure

Introduction

It is often useful to have direct relationships between entities, such as objects that have some (unstated) relationship to each other, inter-personal relationships that are too convoluted to express semantically, or just an arbitrary set of recommendations for other entities that might be of interest to a consuming application and its users. In order to manage such arbitrary, non-semantic relationships, the AttributeAssignment activity is used to convey this relationship, with the optional assigned_property to give the relationship type if known.

Property Definitions

The relationship assignment data structure has the following properties.

Properties of Assignments

Property Name Datatype Requirement Description
id string Optional If present, the value MUST be a URI identifying the assignment, from which a representation of the assignment can be retrieved
type string Required The class for the assignment, which MUST be the value "AttributeAssignment"
_label string Recommended A human readable label for the assignment, intended for developers
_complete boolean Optional Non-Semantic. If there is an id property with a URI, and there is more information about the attribute assignment available from the representation at that URI, then _complete MUST be present with a value of false to inform the consuming application that it might want to retrieve it
identified_by array Recommended An array of json objects, each of which is a name of the assignment and MUST follow the requirements for Name, or an identifier for the assignment and MUST follow the requirements for Identifier
classified_as array Recommended An array of json objects, each of which is a further classification of the assignment and MUST follow the requirements for Type
referred_to_by array Optional An array of json objects, each of which is an embedded statement about the assignment
carried_out_by array Optional An array of json objects, each of which is a reference to a Person or Group which made the assignment
timespan json object Optional A json object which describes when the relationship was assigned, and MUST follow the requirements for timespans
assigned array Required An array of json objects, each of which is a reference to another entity that is related to the current one (SHOULD NOT be used with Dimension or Identifier assignments)
assigned_property string Optional A string which is either a URI, or resolves to a URI via a context document, for the specific relationship between the main entity and the entity referenced in assigned
motivated_by array Optional An array of json objects, each of which is a reference to another entity which caused or motivated the assignment
used_specific_object array Optional An array of json objects, each of which is a reference to another endpoint that was instrumental in the assignment

Property Diagram

diagram

Incoming Properties

Relationship Assignment instances are typically found as the object of the following properties. This list is not exhaustive, but is intended to cover the likely cases.

Property Name Source Endpoint Description
attributed_by All Endpoints A list of Relationship Assignments for the entity
assigned_by Dimension, Identifer The activity of assigning the dimension or identifier to the entity

Example

A Human-Made Object instance:

{
  "@context": "https://linked.art/ns/v1/linked-art.json",
  "id": "https://linked.art/example/object/4",
  "type": "HumanMadeObject",
  "_label": "Painting of a Fish",
  "attributed_by": [
    {
      "type": "AttributeAssignment",
      "classified_as": [
        {
          "id": "http://example.org/types/recommending",
          "type": "Type",
          "_label": "Recommendation"
        }
      ],
      "identified_by": [
        {
          "type": "Name",
          "classified_as": [
            {
              "id": "http://vocab.getty.edu/aat/300404669",
              "type": "Type",
              "_label": "Display Title"
            }
          ],
          "content": "Related Object: Another Painting of a Fish"
        }
      ],
      "carried_out_by": [
        {
          "id": "https://linked.art/example/person/1",
          "type": "Person",
          "_label": "Curator"
        }
      ],
      "assigned": [
        {
          "id": "https://linked.art/example/object/5",
          "type": "HumanMadeObject",
          "_label": "Another Painting of a Fish"
        }
      ]
    }
  ]
}

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/4) class O1 object; O1-- type -->O1_0[HumanMadeObject] class O1_0 classstyle; O1-- _label -->O1_4("''Painting of a Fish''") class O1_4 literal; O2( _ ) class O2 event; O2-- type -->O2_0[AttributeAssignment] class O2_0 classstyle; O3(http://example.org/types/recommending) class O3 type; O3-- type -->O3_0[Type] class O3_0 classstyle; O3-- _label -->O3_3("''Recommendation''") class O3_3 literal; O2-- classified_as -->O3 O4( _ ) class O4 name; O4-- type -->O4_0[Name] class O4_0 classstyle; O5(aat:300404669) class O5 type; O5-- type -->O5_0[Type] class O5_0 classstyle; O5-- _label -->O5_3("''Display Title''") class O5_3 literal; O4-- classified_as -->O5 O4-- content -->O4_3("''Related Object: Another Painting of a Fish''") class O4_3 literal; O2-- identified_by -->O4 O6(person/1) class O6 actor; O6-- type -->O6_0[Person] class O6_0 classstyle; O6-- _label -->O6_3("''Curator''") class O6_3 literal; O2-- carried_out_by -->O6 O7(object/5) class O7 object; O7-- type -->O7_0[HumanMadeObject] class O7_0 classstyle; O7-- _label -->O7_3("''Another Painting of a Fish''") class O7_3 literal; O2-- assigned -->O7 O1-- attributed_by -->O2
Other Representations: JSON-LD (raw) | JSON-LD (playground) | Turtle (raw) | Turtle (styled)