{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://law.arxo.io/schema/import-mapping.schema.json",
  "type": "object",
  "properties": {
    "format": {
      "const": "arxo.import.mapping/0.1"
    },
    "version": {
      "type": "string"
    },
    "project": {
      "type": "string"
    },
    "revision": {
      "type": "string"
    },
    "logic": {
      "type": "string"
    },
    "profile": {
      "enum": [
        "positive_rules/0.1",
        "positive_closure/0.1",
        "knowledge_graph/0.1"
      ]
    },
    "package": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "version",
        "namespace"
      ],
      "additionalProperties": false
    },
    "types": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "owner": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "label"
        ],
        "additionalProperties": false
      }
    },
    "predicates": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "empirical",
              "institutional"
            ]
          },
          "owner": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "label",
          "kind"
        ],
        "additionalProperties": false
      }
    },
    "reifications": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "binders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "owner": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "label",
          "binders"
        ],
        "additionalProperties": false
      }
    },
    "imports": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "content_hash": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "namespace",
          "content_hash"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "format",
    "version",
    "project",
    "revision",
    "logic",
    "profile",
    "package",
    "types",
    "predicates",
    "reifications"
  ],
  "additionalProperties": false
}
