{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.twindev.org/json-ld/JsonLdValueObject",
	"title": "JsonLdValueObject",
	"description": "A value object is used to explicitly associate a type or a language with a value\nto create a typed value or a language-tagged string and possibly associate a base direction.",
	"allOf": [
		{
			"type": "object",
			"properties": {
				"@index": {
					"type": "string"
				},
				"@context": {
					"$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionRoot"
				}
			}
		},
		{
			"anyOf": [
				{
					"type": "object",
					"properties": {
						"@value": {
							"anyOf": [
								{
									"type": "null"
								},
								{
									"type": "boolean"
								},
								{
									"type": "number"
								},
								{
									"type": "string"
								}
							]
						},
						"@language": {
							"type": "string"
						},
						"@direction": {
							"anyOf": [
								{
									"const": "ltr"
								},
								{
									"const": "rtl"
								},
								{
									"type": "null"
								}
							]
						}
					},
					"required": ["@value"]
				},
				{
					"type": "object",
					"properties": {
						"@value": {
							"anyOf": [
								{
									"type": "null"
								},
								{
									"type": "boolean"
								},
								{
									"type": "number"
								},
								{
									"type": "string"
								}
							]
						},
						"@type": {
							"type": "string"
						}
					},
					"required": ["@value", "@type"]
				},
				{
					"type": "object",
					"properties": {
						"@value": {
							"anyOf": [
								{
									"type": "null"
								},
								{
									"type": "boolean"
								},
								{
									"type": "number"
								},
								{
									"type": "string"
								},
								{
									"$ref": "https://schema.twindev.org/json-ld/JsonLdJsonObject"
								},
								{
									"$ref": "https://schema.twindev.org/json-ld/JsonLdJsonArray"
								}
							]
						},
						"@type": {
							"const": "@json"
						}
					},
					"required": ["@value", "@type"]
				}
			]
		}
	]
}
