{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:ConstraintNode",
  "title": "ConstraintNode",
  "description": "The ConstraintNode type is provided to support usecases in which a node in a structured data graph is described with properties which appear to describe a single entity, but are being used in a situation where they serve a more abstract purpose. A [[ConstraintNode]] can be described using [[constraintProperty]] and [[numConstraints]]. These constraint properties can serve a\n    variety of purposes, and their values may sometimes be understood to indicate sets of possible values rather than single, exact and specific values.",
  "type": "object",
  "allOf": [
    {
      "description": "A utility class that serves as the umbrella for a number of 'intangible' things such as quantities, structured values, etc.",
      "$ref": "schema:Intangible"
    }
  ],
  "properties": {
    "constraintProperty": {
      "description": "Indicates a property used as a constraint. For example, in the definition of a [[StatisticalVariable]]. The value is a property, either from within Schema.org or from other compatible (e.g. RDF) systems such as DataCommons.org or Wikidata.org. ",
      "oneOf": [
        {
          "anyOf": [
            { "type": "string", "format": "uri" },
            { "$ref": "schema:Property" }
          ]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "$ref": "schema:Property" }
            ]
          }
        }
      ]
    },
    "numConstraints": {
      "description": "Indicates the number of constraints property values defined for a particular [[ConstraintNode]] such as [[StatisticalVariable]]. This helps applications understand if they have access to a sufficiently complete description of a [[StatisticalVariable]] or other construct that is defined using properties on template-style nodes.",
      "oneOf": [
        { "type": "integer" },
        { "type": "array", "items": { "type": "integer" } }
      ]
    }
  }
}
