{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"$id": "https://www.semantic-mediawiki.org/wiki/Help:Schema/Type/PROPERTY_PROFILE_SCHEMA",
	"type": "object",
	"title": "Property profile validation schema",
	"required": [
		"type",
		"profile"
	],
	"properties": {
		"type": {
			"$id": "#/properties/type",
			"type": "string",
			"enum": [
				"PROPERTY_PROFILE_SCHEMA"
			],
			"title": "Schema type",
			"default": "PROPERTY_PROFILE_SCHEMA"
		},
		"title_prefix": {
			"$id": "#/properties/title_prefix",
			"type": "string",
			"enum": [
				"Profile"
			],
			"title": "Title prefix"
		},
		"manifest_version": {
			"$id": "#/properties/manifest_version",
			"type": "number",
			"title": "Manifest version",
			"default": 1
		},
		"tags": {
			"$id": "#/properties/tags",
			"type": "array",
			"title": "tags",
			"default": null,
			"items": {
				"$id": "#/properties/tags/items",
				"type": "string",
				"title": "tags, keywords etc.",
				"default": "",
				"pattern": "^(.*)$"
			}
		},
		"profile": {
			"$id": "#/properties/profile",
			"type": "object",
			"title": "Available profile options",
			"minProperties": 1,
			"properties": {
				"sequence_map": {
					"$ref": "#/definitions/sequence_map"
				},
				"range_group": {
					"$ref": "#/definitions/range_group"
				},
				"range_control": {
					"$ref": "#/definitions/range_control"
				}
			},
			"additionalProperties": false
		}
	},
	"definitions": {
		"sequence_map": {
			"$id": "#/definitions/sequence_map",
			"type": "boolean",
			"default": false,
			"title": "Whether to store annotation values in the order of the input or not"
		},
		"range_group": {
			"$id": "#/definitions/range_group",
			"type": "object",
			"patternProperties": {
				"^(.*)$": {
					"$ref": "#/definitions/range_group_field_value"
				}
			}
		},
		"range_group_field_value": {
			"$id": "#/definitions/range_group_field_value",
			"type": "string",
			"default": false,
			"pattern": "^(.*)(\\.\\.\\.)(.*)$"
		},
		"range_control": {
			"$id": "#/definitions/range_control",
			"type": "object",
			"properties": {
				"min_interval": {
					"type": "number",
					"title": "Number to define the minimum range required for the values"
				},
				"step_size": {
					"type": "number",
					"title": "Specifies the size of increment between values"
				},
				"precision": {
					"type": "number",
					"title": "Specifies a number of digits after the decimal point"
				},
				"uncertainty": {
					"type": "number",
					"title": "Specifies a number of uncertainty for the minimum and maximum range value"
				}
			},
			"additionalProperties": false,
			"required": [
				"min_interval",
				"step_size",
				"precision"
			]
		}
	}
}