{
	"title": "Schema for JSON-LD",
	"$schema": "http://json-schema.org/draft-04/schema#",
	"definitions":
	{
		"context":
		{
			"additionalProperties": true,
			"properties":
			{
				"@context":
				{
					"description": "Used to define the short-hand names that are used throughout a JSON-LD document.",
					"type":
					[
						"object",
						"string",
						"array",
						"null"
					]
				}
			}
		},
		"graph":
		{
			"additionalProperties": true,
			"properties":
			{
				"@graph":
				{
					"description": "Used to express a graph.",
					"type":
					[
						"array",
						"object"
					],
					"additionalItems":
					{
						"anyOf":
						[
							{
								"$ref": "#/definitions/common"
							}
						]
					}
				}
			}
		},
		"common":
		{
			"additionalProperties":
			{
				"anyOf":
				[
					{
						"$ref": "#/definitions/common"
					}
				]
			},
			"properties":
			{
				"@id":
				{
					"description": "Used to uniquely identify things that are being described in the document with IRIs or blank node identifiers.",
					"type": "string",
					"format": "uri"
				},
				"@value":
				{
					"description": "Used to specify the data that is associated with a particular property in the graph.",
					"type":
					[
						"string",
						"boolean",
						"number",
						"null"
					]
				},
				"@language":
				{
					"description": "Used to specify the language for a particular string value or the default language of a JSON-LD document.",
					"type":
					[
						"string",
						"null"
					]
				},
				"@type":
				{
					"description": "Used to set the data type of a node or typed value.",
					"type":
					[
						"string",
						"null"
					],
					"enum":
					[
						"@id"
					]
				},
				"@container":
				{
					"description": "Used to set the default container type for a term.",
					"type":
					[
						"string",
						"null"
					],
					"enum":
					[
						"@list",
						"@index",
						"@set"
					]
				},
				"@list":
				{
					"description": "Used to express an ordered set of data."
				},
				"@set":
				{
					"description": "Used to express an unordered set of data and to ensure that values are always represented as arrays."
				},
				"@reverse":
				{
					"description": "Used to express reverse properties.",
					"type":
					[
						"string",
						"object",
						"null"
					],
					"additionalProperties":
					{
						"anyOf":
						[
							{
								"$ref": "#/definitions/common"
							}
						]
					}
				},
				"@base":
				{
					"description": "Used to set the base IRI against which relative IRIs are resolved",
					"type":
					[
						"string",
						"null"
					],
					"format": "uri"
				},
				"@vocab":
				{
					"description": "Used to expand properties and values in @type with a common prefix IRI",
					"type":
					[
						"string",
						"null"
					],
					"format": "uri"
				}
			}
		}
	},
	"anyOf":
	[
		{
			"$ref": "#/definitions/context"
		},
		{
			"$ref": "#/definitions/graph"
		},
		{
			"$ref": "#/definitions/common"
		}
	],
	"type":
	[
		"object",
		"array"
	],
	"additionalProperties": true
}