The current example 4 is not valid JSON-LD if the title is defined in the context as a language map:
"title": {
"@id": "http://schema.org/name",
"@container": "@language"
}
This returns the following error in the JSON-LD Playground:
jsonld.SyntaxError: Invalid JSON-LD syntax; language map values must be strings.
Duplicating the language (map + language) also feels less than ideal in these examples.