{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.twindev.org/json-ld/JsonLdExpandedTermDefinition",
	"title": "JsonLdExpandedTermDefinition",
	"description": "An expanded term definition is used to describe the mapping between a term\nand its expanded identifier, as well as other properties of the value\nassociated with the term when it is used as key in a node object.",
	"allOf": [
		{
			"type": "object",
			"properties": {
				"@type": {
					"anyOf": [
						{
							"const": "@id"
						},
						{
							"const": "@json"
						},
						{
							"const": "@none"
						},
						{
							"const": "@vocab"
						},
						{
							"type": "string"
						}
					]
				},
				"@language": {
					"type": "string"
				},
				"@index": {
					"type": "string"
				},
				"@context": {
					"$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinition"
				},
				"@prefix": {
					"type": "boolean"
				},
				"@propagate": {
					"type": "boolean"
				},
				"@protected": {
					"type": "boolean"
				}
			}
		},
		{
			"anyOf": [
				{
					"type": "object",
					"properties": {
						"@id": {
							"anyOf": [
								{
									"type": "string"
								},
								{
									"type": "array",
									"items": {
										"type": "string"
									}
								},
								{
									"type": "null"
								}
							]
						},
						"@nest": {
							"anyOf": [
								{
									"const": "@nest"
								},
								{
									"type": "string"
								}
							]
						},
						"@container": {
							"anyOf": [
								{
									"anyOf": [
										{
											"const": "@list"
										},
										{
											"const": "@set"
										},
										{
											"$ref": "https://schema.twindev.org/json-ld/JsonLdContainerType"
										}
									]
								},
								{
									"type": "array",
									"items": {
										"anyOf": [
											{
												"const": "@list"
											},
											{
												"const": "@set"
											},
											{
												"$ref": "https://schema.twindev.org/json-ld/JsonLdContainerType"
											}
										]
									}
								},
								{
									"$ref": "https://schema.twindev.org/json-ld/JsonLdContainerTypeArray"
								},
								{
									"type": "null"
								}
							]
						}
					}
				},
				{
					"type": "object",
					"properties": {
						"@reverse": {
							"type": "string"
						},
						"@container": {
							"anyOf": [
								{
									"const": "@set"
								},
								{
									"const": "@index"
								},
								{
									"type": "null"
								}
							]
						}
					},
					"required": ["@reverse"]
				}
			]
		}
	]
}
