That is a helpful site, and easier to get to grips with, but as far as I can see there is still the problem of things like the Production of an object being in a separate class. Looking at the JSON-LD for an item using the Omeka-S API I can see that the fields one can add through the normal editing interface tend to look like this:
"dcterms:title": [
{
"type": "literal",
"property_id": 1,
"property_label": "Title",
"is_public": true,
"@value": "coats (Embroidered and stitched green velvet coat)"
}
],
That is for a single literal value. If it’s a repeated literal, it is similar. If we want, we can create concepts such as a material as an Omeka item. Then from the object end the JSON-LD would look like this (first is a literal, second is a linked resource):
"cidoc:P45_consists_of": [
{
"type": "literal",
"property_id": 451,
"property_label": "consists of",
"is_public": true,
"@value": "copper alloy"
},
{
"type": "resource",
"property_id": 451,
"property_label": "consists of",
"is_public": true,
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/items/16095",
"value_resource_id": 16095,
"value_resource_name": "items",
"url": null,
"display_title": "Bronze"
}
],
But that is quite a simple example, where the linked concept is describable by the single term “Bronze”. If you look at the structure for the Production of an item on the linked.art website we see that the basic object has a “produced_by” property but that includes things like the timespan of the production event, where it took place, and who carried it out:
{
"@context": "https://linked.art/ns/v1/linked-art.json",
"id": "https://linked.art/example/object/nightwatch/5",
"type": "HumanMadeObject",
"_label": "Night Watch by Rembrandt",
"produced_by": {
"type": "Production",
"timespan": {
"type": "TimeSpan",
"_label": "1642",
"begin_of_the_begin": "1642-01-01T00:00:00Z",
"end_of_the_end": "1642-12-31T23:59:59Z"
},
"took_place_at": [
{
"id": "https://linked.art/example/place/amsterdam",
"type": "Place",
"_label": "Amsterdam"
}
],
"carried_out_by": [
{
"id": "https://linked.art/example/person/rembrandt",
"type": "Person",
"_label": "Rembrandt"
}
]
}
}
Clearly in Omeka I could create an item which is of class Production and attach the time, place and actor there, and then link from my object to the Production resource. But then by default none of the production information would appear in the JSON-LD for the object as retrieved in the API and non of the production information would appear to the user when viewing the object in Omeka. There would be a link to the Production resource, but what user would find it convenient to follow such a link just to find out that the item was made in Amsterdam by Rembrandt?
We have, however, experimented with the mapping module, and I see that in the JSON-LD for a point associated with an item, we have a more complex structure than for the ordinary literals and resource links:
"o-module-mapping:mapping": {
"@context": "https://caxton-test.durham.ac.uk/omeka-s/api-context",
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/mappings/3348",
"@type": "o-module-mapping:Map",
"o:id": 3348,
"o:item": {
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/items/16026",
"o:id": 16026
},
"o-module-mapping:bounds": "65 ,25 ,75 ,35"
},
"o-module-mapping:feature": [
{
"@context": "https://caxton-test.durham.ac.uk/omeka-s/api-context",
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/mapping_features/4641",
"@type": "o-module-mapping:Feature",
"o:id": 4641,
"o:item": {
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/items/16026",
"o:id": 16026
},
"o:media": null,
"o:label": null,
"o-module-mapping:geography-type": "Point",
"o-module-mapping:geography-coordinates": [
53,
32
]
},
{
"@context": "https://caxton-test.durham.ac.uk/omeka-s/api-context",
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/mapping_features/4642",
"@type": "o-module-mapping:Feature",
"o:id": 4642,
"o:item": {
"@id": "https://caxton-test.durham.ac.uk/omeka-s/api/items/16026",
"o:id": 16026
},
"o:media": null,
"o:label": null,
"o-module-mapping:geography-type": "Point",
"o-module-mapping:geography-coordinates": [
70,
30
]
}
]
This shows that via a module you can add more complex structured data to an object. I suppose this means that it would be possible to write something so that the CIDOC (or linked.art) Production class can be attached directly to the main object, with the module responsible for providing editing facilities for the Production attributes, including being able to add a Timespan which is itself subsidiary to the Production object. The module would also need to provide code for rendering them on the end-user interface.
If Omeka S were able to do that in a more general manner, attaching appropriate subsidiary nested classes as part of the main item, that would be a much more natural approach for use cases like ours. Would that be possible, and has anyone else developed anything like this?