object/run/1 matches the site
A painted textile called "RÜN", where the linen was hand-woven by Sarah Parke and then painted by Mark Barrow.
C#
public static HumanMadeObject RUN_1_Multiple_Artists()
{
var run = new HumanMadeObject()
.WithContext()
.WithId("https://linked.art/example/object/run/1")
.WithLabel("RUN")
.WithClassifiedAs(Aat.Painting, Aat.TypeOfWork);
run.ProducedBy = new Production()
{
Part = [
new Production()
{
Technique = [Aat.Term("300054216", "Painting")],
CarriedOutBy = [
new Person()
.WithId("https://linked.art/example/person/barrow")
.WithLabel("Mark Barrow")
]
},
new Production()
{
Technique = [Aat.Term("300053643", "hand weaving")],
CarriedOutBy = [
new Person()
.WithId("https://linked.art/example/person/parke")
.WithLabel("Sarah Parke")
]
}
]
};
return run;
}
- Metatype classification The second argument classifies the first, not the object: WithClassifiedAs(Aat.Description, Aat.Statement) says this is a Description, and Description is a kind of Statement. The Plain C# form shows the nesting.
- Terms outside the registry The vocabulary registry holds only the terms linked.art itself publishes, so a dataset's own concepts, places and people are written with Aat.Term, Tgn.Place and Ulan.Person, giving the id and the label.
var humanMadeObject = new HumanMadeObject
{
Context = ["https://linked.art/ns/v1/linked-art.json"],
Id = "https://linked.art/example/object/run/1",
Label = "RUN",
ProducedBy = new Production
{
Part =
[
new Production
{
CarriedOutBy =
[
new Person
{
Id = "https://linked.art/example/person/barrow",
Label = "Mark Barrow",
},
],
Technique = [Aat.Term("300054216", "Painting")],
},
new Production
{
CarriedOutBy =
[
new Person
{
Id = "https://linked.art/example/person/parke",
Label = "Sarah Parke",
},
],
Technique = [Aat.Term("300053643", "hand weaving")],
},
],
},
ClassifiedAs =
[
new Type("http://vocab.getty.edu/aat/300033618", "Painting")
{
ClassifiedAs = [Aat.TypeOfWork],
},
],
};
Generated from the object the example builds: every property that is set, as object initialisers, with the vocabulary constants where a term is in the registry. The fluent helpers are a convenience, not a requirement; this form and the one as written produce the same JSON.
JSON from the C#
{
"@context": "https://linked.art/ns/v1/linked-art.json",
"id": "https://linked.art/example/object/run/1",
"type": "HumanMadeObject",
"_label": "RUN",
"produced_by": {
"type": "Production",
"part": [
{
"type": "Production",
"carried_out_by": [
{
"id": "https://linked.art/example/person/barrow",
"type": "Person",
"_label": "Mark Barrow"
}
],
"technique": [
{
"id": "http://vocab.getty.edu/aat/300054216",
"type": "Type",
"_label": "Painting"
}
]
},
{
"type": "Production",
"carried_out_by": [
{
"id": "https://linked.art/example/person/parke",
"type": "Person",
"_label": "Sarah Parke"
}
],
"technique": [
{
"id": "http://vocab.getty.edu/aat/300053643",
"type": "Type",
"_label": "hand weaving"
}
]
}
]
},
"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"
}
]
}
]
} JSON on linked.art
{
"@context": "https://linked.art/ns/v1/linked-art.json",
"id": "https://linked.art/example/object/run/1",
"type": "HumanMadeObject",
"_label": "RUN",
"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"
}
]
}
],
"produced_by": {
"type": "Production",
"part": [
{
"type": "Production",
"technique": [
{
"id": "http://vocab.getty.edu/aat/300054216",
"type": "Type",
"_label": "Painting"
}
],
"carried_out_by": [
{
"id": "https://linked.art/example/person/barrow",
"type": "Person",
"_label": "Mark Barrow"
}
]
},
{
"type": "Production",
"technique": [
{
"id": "http://vocab.getty.edu/aat/300053643",
"type": "Type",
"_label": "hand weaving"
}
],
"carried_out_by": [
{
"id": "https://linked.art/example/person/parke",
"type": "Person",
"_label": "Sarah Parke"
}
]
}
]
}
} Comparison
The two documents are equivalent (property order ignored, array order significant).