{
	"id": "PropertyValueSpecification.json",
	"title": "Property Value Specification",
	"description": "A Property value specification.",
	"media": {"type": "application/json;profile=http://schema.org/PropertyValueSpecification"},
	"allOf": [{"$ref": "Thing.json"}, {"$ref": "Intangible.json"}],
	"type": "object",
	"properties": {
		"defaultValue": {"$ref": "#/definitions/defaultValue"},
		"maxValue": {"$ref": "#/definitions/maxValue"},
		"minValue": {"$ref": "#/definitions/minValue"},
		"multipleValues": {
			"oneOf": [
				{"$ref": "#/definitions/multipleValues"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/multipleValues"}
				}
			]
		},
		"readonlyValue": {
			"oneOf": [
				{"$ref": "#/definitions/readonlyValue"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/readonlyValue"}
				}
			]
		},
		"stepValue": {"$ref": "#/definitions/stepValue"},
		"valueMaxLength": {
			"oneOf": [
				{"$ref": "#/definitions/valueMaxLength"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/valueMaxLength"}
				}
			]
		},
		"valueMinLength": {
			"oneOf": [
				{"$ref": "#/definitions/valueMinLength"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/valueMinLength"}
				}
			]
		},
		"valueName": {
			"oneOf": [
				{"$ref": "#/definitions/valueName"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/valueName"}
				}
			]
		},
		"valuePattern": {
			"oneOf": [
				{"$ref": "#/definitions/valuePattern"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/valuePattern"}
				}
			]
		},
		"valueRequired": {
			"oneOf": [
				{"$ref": "#/definitions/valueRequired"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/valueRequired"}
				}
			]
		}
	},
	"definitions": {
		"array": {
			"type": "array",
			"items": {"$ref": "#"}
		},
		"defaultValue": {
			"title": "Default Value",
			"description": "The default value of the input.  For properties that expect a literal, the default is a literal value, for properties that expect an object, it's an ID reference to one of the current values.",
			"anyOf": [{"type": "string"}, {"$ref": "Thing.json#/definitions/possibleRef"}]
		},
		"maxValue": {
			"title": "Max Value",
			"description": "The upper value of some characteristic or property.",
			"type": "number"
		},
		"minValue": {
			"title": "Min Value",
			"description": "The lower value of some characteristic or property.",
			"type": "number"
		},
		"multipleValues": {
			"title": "Multiple Values",
			"description": "Whether multiple values are allowed for the property.  Default is false.",
			"type": "boolean"
		},
		"possibleRef": {
			"oneOf": [
				{"$ref": "#"},
				{
					"type": "string",
					"format": "uri",
					"links": [{
						"rel": "full",
						"href": "{+$}"
					}]
				}
			]
		},
		"possibleRefArray": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/possibleRef"}
				},
				{
					"type": "string",
					"format": "uri",
					"links": [{
						"rel": "full",
						"href": "{+$}"
					}]
				}
			]
		},
		"readonlyValue": {
			"title": "Readonly Value",
			"description": "Whether or not a property is mutable.  Default is false. Specifying this for a property that also has a value makes it act similar to a \"hidden\" input in an HTML form.",
			"type": "boolean"
		},
		"stepValue": {
			"title": "Step Value",
			"description": "The stepValue attribute indicates the granularity that is expected (and required) of the value in a PropertyValueSpecification.",
			"type": "number"
		},
		"valueMaxLength": {
			"title": "Value Max Length",
			"description": "Specifies the allowed range for number of characters in a literal value.",
			"type": "number"
		},
		"valueMinLength": {
			"title": "Value Min Length",
			"description": "Specifies the minimum allowed range for number of characters in a literal value.",
			"type": "number"
		},
		"valueName": {
			"title": "Value Name",
			"description": "Indicates the name of the PropertyValueSpecification to be used in URL templates and form encoding in a manner analogous to HTML's input@name.",
			"type": "string"
		},
		"valuePattern": {
			"title": "Value Pattern",
			"description": "Specifies a regular expression for testing literal values according to the HTML spec.",
			"type": "string"
		},
		"valueRequired": {
			"title": "Value Required",
			"description": "Whether the property must be filled in to complete the action.  Default is false.",
			"type": "boolean"
		}
	}
}