{
  "content": {
    "blocks": [
      {
        "caption": "Which kinds each relation may point at.",
        "kind": "mermaid",
        "text": "flowchart LR\n    n_relation_conflicts_with[\"conflicts_with\"]\n    n_relation_enables[\"enables\"]\n    n_relation_reinforces[\"reinforces\"]\n    n_relation_requires[\"requires\"]\n    n_relation_tensions_with[\"tensions_with\"]\n    n_anti_pattern[\"anti-pattern\"]\n    n_metric[\"metric\"]\n    n_quality_attribute[\"quality-attribute\"]\n    n_principle[\"principle\"]\n    n_constraint[\"constraint\"]\n    n_capability[\"capability\"]\n    n_activity[\"activity\"]\n    n_pattern[\"pattern\"]\n    n_mechanism[\"mechanism\"]\n    n_technique[\"technique\"]\n    n_approach[\"approach\"]\n    n_model[\"model\"]\n    n_artifact[\"artifact\"]\n    n_style[\"style\"]\n    n_relation_conflicts_with --> n_anti_pattern\n    n_relation_enables --> n_metric\n    n_relation_enables --> n_quality_attribute\n    n_relation_enables --> n_principle\n    n_relation_enables --> n_constraint\n    n_relation_enables --> n_capability\n    n_relation_enables --> n_activity\n    n_relation_enables --> n_pattern\n    n_relation_enables --> n_mechanism\n    n_relation_enables --> n_technique\n    n_relation_enables --> n_approach\n    n_relation_enables --> n_model\n    n_relation_enables --> n_artifact\n    n_relation_enables --> n_style\n    n_relation_reinforces --> n_metric\n    n_relation_reinforces --> n_quality_attribute\n    n_relation_reinforces --> n_principle\n    n_relation_reinforces --> n_constraint\n    n_relation_reinforces --> n_capability\n    n_relation_reinforces --> n_activity\n    n_relation_reinforces --> n_pattern\n    n_relation_reinforces --> n_mechanism\n    n_relation_reinforces --> n_technique\n    n_relation_reinforces --> n_approach\n    n_relation_reinforces --> n_model\n    n_relation_reinforces --> n_artifact\n    n_relation_reinforces --> n_style\n    n_relation_requires --> n_metric\n    n_relation_requires --> n_quality_attribute\n    n_relation_requires --> n_principle\n    n_relation_requires --> n_constraint\n    n_relation_requires --> n_capability\n    n_relation_requires --> n_activity\n    n_relation_requires --> n_pattern\n    n_relation_requires --> n_mechanism\n    n_relation_requires --> n_technique\n    n_relation_requires --> n_approach\n    n_relation_requires --> n_model\n    n_relation_requires --> n_artifact\n    n_relation_requires --> n_style\n    n_relation_tensions_with --> n_metric\n    n_relation_tensions_with --> n_quality_attribute\n    n_relation_tensions_with --> n_principle\n    n_relation_tensions_with --> n_constraint\n    n_relation_tensions_with --> n_capability\n    n_relation_tensions_with --> n_activity\n    n_relation_tensions_with --> n_pattern\n    n_relation_tensions_with --> n_mechanism\n    n_relation_tensions_with --> n_technique\n    n_relation_tensions_with --> n_approach\n    n_relation_tensions_with --> n_model\n    n_relation_tensions_with --> n_artifact\n    n_relation_tensions_with --> n_style"
      }
    ],
    "icon": "bi-tag",
    "id": "the-relation-ranges",
    "intro": "The relation ranges say which kinds each edge relation may point at. The polarity law says that one relation, conflicts with, points only at anti-patterns, and the slots the ranges constrain are derived in [principles are typed](/software-architecture/principles#principles-are-typed) on the architecture page.",
    "subsections": [
      {
        "blocks": [
          {
            "entries": [
              {
                "description": "[anti-pattern](/records/kind/anti-pattern)",
                "term": "Kinds in range"
              }
            ],
            "kind": "glossary"
          }
        ],
        "id": "relation-conflicts_with",
        "title": "conflicts_with"
      },
      {
        "blocks": [
          {
            "entries": [
              {
                "description": "[metric](/records/kind/metric), [quality-attribute](/records/kind/quality-attribute), [principle](/records/kind/principle), [constraint](/records/kind/constraint), [capability](/records/kind/capability), [activity](/records/kind/activity), [pattern](/records/kind/pattern), [mechanism](/records/kind/mechanism), [technique](/records/kind/technique), [approach](/records/kind/approach), [model](/records/kind/model), [artifact](/records/kind/artifact), [style](/records/kind/style)",
                "term": "Kinds in range"
              }
            ],
            "kind": "glossary"
          }
        ],
        "id": "relation-enables",
        "title": "enables"
      },
      {
        "blocks": [
          {
            "entries": [
              {
                "description": "[metric](/records/kind/metric), [quality-attribute](/records/kind/quality-attribute), [principle](/records/kind/principle), [constraint](/records/kind/constraint), [capability](/records/kind/capability), [activity](/records/kind/activity), [pattern](/records/kind/pattern), [mechanism](/records/kind/mechanism), [technique](/records/kind/technique), [approach](/records/kind/approach), [model](/records/kind/model), [artifact](/records/kind/artifact), [style](/records/kind/style)",
                "term": "Kinds in range"
              }
            ],
            "kind": "glossary"
          }
        ],
        "id": "relation-reinforces",
        "title": "reinforces"
      },
      {
        "blocks": [
          {
            "entries": [
              {
                "description": "[metric](/records/kind/metric), [quality-attribute](/records/kind/quality-attribute), [principle](/records/kind/principle), [constraint](/records/kind/constraint), [capability](/records/kind/capability), [activity](/records/kind/activity), [pattern](/records/kind/pattern), [mechanism](/records/kind/mechanism), [technique](/records/kind/technique), [approach](/records/kind/approach), [model](/records/kind/model), [artifact](/records/kind/artifact), [style](/records/kind/style)",
                "term": "Kinds in range"
              }
            ],
            "kind": "glossary"
          }
        ],
        "id": "relation-requires",
        "title": "requires"
      },
      {
        "blocks": [
          {
            "entries": [
              {
                "description": "[metric](/records/kind/metric), [quality-attribute](/records/kind/quality-attribute), [principle](/records/kind/principle), [constraint](/records/kind/constraint), [capability](/records/kind/capability), [activity](/records/kind/activity), [pattern](/records/kind/pattern), [mechanism](/records/kind/mechanism), [technique](/records/kind/technique), [approach](/records/kind/approach), [model](/records/kind/model), [artifact](/records/kind/artifact), [style](/records/kind/style)",
                "term": "Kinds in range"
              }
            ],
            "kind": "glossary"
          }
        ],
        "id": "relation-tensions_with",
        "title": "tensions_with"
      }
    ],
    "title": "The relation ranges"
  },
  "graph": {
    "narrative": true,
    "requires": [],
    "teaches": [],
    "traces": []
  },
  "href": "https://banes-lab.com/ontology/schema#the-relation-ranges",
  "number": "248",
  "page": "ontology",
  "ref": "chapter:/ontology/schema#the-relation-ranges",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/software-architecture/principles#principles-are-typed",
          "json": "https://banes-lab.com/json/software-architecture/principles/principles-are-typed",
          "label": "Principles are typed",
          "markdown": "https://banes-lab.com/software-architecture/principles/principles-are-typed.md",
          "ref": "chapter:/software-architecture/principles#principles-are-typed"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-anti-pattern",
          "json": "https://banes-lab.com/json/records/kind/anti-pattern",
          "label": "anti-pattern",
          "markdown": "https://banes-lab.com/records/kind/anti-pattern.md",
          "ref": "kind:anti-pattern"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-metric",
          "json": "https://banes-lab.com/json/records/kind/metric",
          "label": "metric",
          "markdown": "https://banes-lab.com/records/kind/metric.md",
          "ref": "kind:metric"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-quality-attribute",
          "json": "https://banes-lab.com/json/records/kind/quality-attribute",
          "label": "quality-attribute",
          "markdown": "https://banes-lab.com/records/kind/quality-attribute.md",
          "ref": "kind:quality-attribute"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-principle",
          "json": "https://banes-lab.com/json/records/kind/principle",
          "label": "principle",
          "markdown": "https://banes-lab.com/records/kind/principle.md",
          "ref": "kind:principle"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-constraint",
          "json": "https://banes-lab.com/json/records/kind/constraint",
          "label": "constraint",
          "markdown": "https://banes-lab.com/records/kind/constraint.md",
          "ref": "kind:constraint"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-capability",
          "json": "https://banes-lab.com/json/records/kind/capability",
          "label": "capability",
          "markdown": "https://banes-lab.com/records/kind/capability.md",
          "ref": "kind:capability"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-activity",
          "json": "https://banes-lab.com/json/records/kind/activity",
          "label": "activity",
          "markdown": "https://banes-lab.com/records/kind/activity.md",
          "ref": "kind:activity"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-pattern",
          "json": "https://banes-lab.com/json/records/kind/pattern",
          "label": "pattern",
          "markdown": "https://banes-lab.com/records/kind/pattern.md",
          "ref": "kind:pattern"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-mechanism",
          "json": "https://banes-lab.com/json/records/kind/mechanism",
          "label": "mechanism",
          "markdown": "https://banes-lab.com/records/kind/mechanism.md",
          "ref": "kind:mechanism"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-technique",
          "json": "https://banes-lab.com/json/records/kind/technique",
          "label": "technique",
          "markdown": "https://banes-lab.com/records/kind/technique.md",
          "ref": "kind:technique"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-approach",
          "json": "https://banes-lab.com/json/records/kind/approach",
          "label": "approach",
          "markdown": "https://banes-lab.com/records/kind/approach.md",
          "ref": "kind:approach"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-model",
          "json": "https://banes-lab.com/json/records/kind/model",
          "label": "model",
          "markdown": "https://banes-lab.com/records/kind/model.md",
          "ref": "kind:model"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-artifact",
          "json": "https://banes-lab.com/json/records/kind/artifact",
          "label": "artifact",
          "markdown": "https://banes-lab.com/records/kind/artifact.md",
          "ref": "kind:artifact"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#kind-style",
          "json": "https://banes-lab.com/json/records/kind/style",
          "label": "style",
          "markdown": "https://banes-lab.com/records/kind/style.md",
          "ref": "kind:style"
        }
      ],
      "relation": "links-to"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/software-architecture/principles#principles-are-typed",
          "json": "https://banes-lab.com/json/software-architecture/principles/principles-are-typed",
          "label": "Principles are typed",
          "markdown": "https://banes-lab.com/software-architecture/principles/principles-are-typed.md",
          "ref": "chapter:/software-architecture/principles#principles-are-typed"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "route": null,
  "section": "the-relation-ranges",
  "summary": "The relation ranges say which kinds each edge relation may point at.",
  "tab": "schema",
  "title": "The relation ranges",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology/schema#the-forces",
      "json": "https://banes-lab.com/json/ontology/schema/the-forces",
      "label": "The forces",
      "markdown": "https://banes-lab.com/ontology/schema/the-forces.md",
      "ref": "chapter:/ontology/schema#the-forces"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology/schema#the-vocabulary-example-shape",
      "json": "https://banes-lab.com/json/ontology/schema/the-vocabulary-example-shape",
      "label": "Example shapes",
      "markdown": "https://banes-lab.com/ontology/schema/the-vocabulary-example-shape.md",
      "ref": "chapter:/ontology/schema#the-vocabulary-example-shape"
    }
  },
  "up": {
    "href": "https://banes-lab.com/ontology/schema",
    "json": "https://banes-lab.com/json/api/pages/ontology/schema",
    "label": "Ontology · Schema",
    "markdown": "https://banes-lab.com/api/pages/ontology/schema.md",
    "ref": "api:/ontology/schema"
  }
}
