{
  "enumDefs": [],
  "structDefs": [],
  "classificationDefs": [
    {
      "name": "SpineObject",
      "superTypes": [],
      "description": "SpineObject is a classification to say the term represents a type of object. The spine object model adds the relationships that enable a glossary to contain the definition of spine objects that can be used to control access to data, and then guide the design of new data stores and APIs. Note that a term may be a spine object and/or a spine attribute and/or an object identifier at the same time.",
      "typeVersion": "1.0",
      "entityTypes": [
        "GlossaryTerm"
      ]
    },
    {
      "name": "SpineAttribute",
      "superTypes": [],
      "description": "SpineAttribute is a classification to say the term represents a type of attribute that is common for a spine object. Note that a term may be a spine object and/or a spine attribute and/or an object identifier at the same time.",
      "typeVersion": "1.0",
      "entityTypes": [
        "GlossaryTerm"
      ]
    },
    {
      "name": "ObjectIdentifier",
      "superTypes": [],
      "description": "ObjectIdentifier is a classification saying that a term is typically an identifier for a spine object. Note that a term may be a spine object and/or a spine attribute and/or an object identifier at the same time.",
      "typeVersion": "1.0",
      "entityTypes": [
        "GlossaryTerm"
      ]
    }
  ],
  "entityDefs": [],
  "relationshipDefs": [
    {
      "name": "TermHASARelationship",
      "typeVersion": "1.0",
      "description": "TermHASARelationship is a term relationship between a term representing a SpineObject and a term representing a SpineAttribute.",
      "endDef1": {
        "name": "attributes",
        "type": "GlossaryTerm",
        "cardinality": "SET",
        "isContainer": true
      },
      "endDef2": {
        "name": "objects",
        "type": "GlossaryTerm",
        "cardinality": "SET"
      },
      "relationshipCategory": "AGGREGATION",
      "propagateTags": "NONE",
      "attributeDefs": [
        {
          "name": "description",
          "description": "The description field can be used to add details about the relationship.",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "status",
          "typeName": "TermRelationshipStatus",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "steward",
          "description": "The steward is the person responsible for assessing the relationship and deciding if it should be approved or not.",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "source",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        }
      ]
    },
    {
      "name": "TermISATYPEOFRelationship",
      "typeVersion": "1.0",
      "description": "TermISATYPEOFRelationship is a term relationship between two SpineObjects saying that one is the subtype (specialisation) of the other.",
      "endDef1": {
        "name": "supertypes",
        "type": "GlossaryTerm",
        "cardinality": "SET"
      },
      "endDef2": {
        "name": "subtypes",
        "type": "GlossaryTerm",
        "cardinality": "SET"
      },
      "relationshipCategory": "ASSOCIATION",
      "propagateTags": "NONE",
      "attributeDefs": [
        {
          "name": "description",
          "description": "The description field can be used to add details about the relationship.",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "status",
          "typeName": "TermRelationshipStatus",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "steward",
          "description": "The steward is the person responsible for assessing the relationship and deciding if it should be approved or not.",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "source",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        }
      ]
    },
    {
      "name": "TermTYPEDBYRelationship",
      "typeVersion": "1.0",
      "description": "TermTYPEDBYRelationship is a term relationship between a SpineAttribute and a SpineObject to say that the SpineAttribute is implemented using a type represented by the SpineObject.",
      "endDef1": {
        "name": "typedAttributes",
        "type": "GlossaryTerm",
        "cardinality": "SET"
      },
      "endDef2": {
        "name": "types",
        "type": "GlossaryTerm",
        "cardinality": "SET"
      },
      "relationshipCategory": "ASSOCIATION",
      "propagateTags": "NONE",
      "attributeDefs": [
        {
          "name": "description",
          "description": "The description field can be used to add details about the relationship.",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "status",
          "typeName": "TermRelationshipStatus",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "steward",
          "description": "The steward is the person responsible for assessing the relationship and deciding if it should be approved or not.",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        },
        {
          "name": "source",
          "typeName": "string",
          "cardinality": "SINGLE",
          "isIndexable": true,
          "isOptional": true
        }
      ]
    }
  ]
}
