{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "https://purl.imsglobal.org/spec/case/v1p1/schema/json/case_v1p1_cfassociationset-jsonschema1.json",
  "title" : "JSON Schema for the CFAssociationSet class.",
  "description" : "This is the container for a collection of CFAssociations. There must be at least one CFAssociation. Note that the association can be between CFDocuments or between CFItems.",
  "type" : "object",
  "properties" : {
    "CFItem" : {
      "$ref" : "#/$defs/CFItem"
    },
    "CFAssociations" : {
      "type" : "array",
      "minItems" : 1,
      "items" : {
        "$ref" : "#/$defs/CFPckgAssociation"
      }
    }
  },
  "required" : [ "CFItem", "CFAssociations" ],
  "additionalProperties" : false,
  "$defs" : {
    "CFPckgAssociation" : {
      "description" : "This is the container for the data about the relationship between two CFDocuments or between two CFItems within the context of a CFPackage.",
      "type" : "object",
      "properties" : {
        "identifier" : {
          "description" : "An unambiguous, synthetic, globally unique identifier for the CFAssociation. This is the primary way in which the exchange identification is achieved.",
          "$comment" : "Origin: UUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). The form of the GUID is a Universally Unique Identifier (UUID) of 16 hexadecimal characters (lower case) in the format 8-4-4-4-12. All permitted versions (1-5) and variants (1-2) are supported.",
          "type" : "string",
          "format" : "uuid"
        },
        "associationType" : {
          "description" : "The type of association. This uses an extensible enumerated vocabulary. Changed in CASE 1.1.",
          "$comment" : "Origin: CFAssociationTypeExtEnum (Union); The data-type for the 'associationType' attribute for the CFPckgAssociation. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention. Changed in CASE 1.1.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "isChildOf", "isPeerOf", "isPartOf", "exactMatchOf", "precedes", "isRelatedTo", "replacedBy", "exemplar", "hasSkillLevel", "isTranslationOf" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "sequenceNumber" : {
          "description" : "This is used to order associated objects. Associations can be created through mapping rather than strict hierarchy. As such the presentation of the list cannot be ordered by the objects in the list. They may be different based on the parent being viewed. Use of this property for sequencing is preferred over the use of the 'listEnumeration' property in the CFPckgItem class. ",
          "$comment" : "Origin: Integer (PrimitiveType)",
          "type" : "integer"
        },
        "uri" : {
          "description" : "An unambiguous reference to the CFAssociation using a network-resolvable URI.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "originNodeURI" : {
          "$ref" : "#/$defs/LinkGenURI"
        },
        "destinationNodeURI" : {
          "$ref" : "#/$defs/LinkGenURI"
        },
        "CFAssociationGroupingURI" : {
          "$ref" : "#/$defs/LinkURI"
        },
        "lastChangeDateTime" : {
          "description" : "A system generated timestamp of the most recent change to this record. This conforms to ISO 8601 dateTime definition [ISO 8601].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "notes" : {
          "description" : "A new attribute added in Version 1.1. Information about the CFAssociation.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "extensions" : {
          "$ref" : "#/$defs/CFAssociationExtension"
        }
      },
      "required" : [ "identifier", "associationType", "uri", "originNodeURI", "destinationNodeURI", "lastChangeDateTime" ],
      "additionalProperties" : false
    },
    "CFAssociationExtension" : {
      "description" : "The container for the proprietary extensions to the CFAssociation class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "LinkURI" : {
      "description" : "A container for the information that is used to achieve the link data reference.",
      "type" : "object",
      "properties" : {
        "title" : {
          "description" : "A human readable title for the associated object.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "identifier" : {
          "description" : "An unambiguous, synthetic, globally unique identifier (UUID) for the associated object.",
          "$comment" : "Origin: UUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). The form of the GUID is a Universally Unique Identifier (UUID) of 16 hexadecimal characters (lower case) in the format 8-4-4-4-12. All permitted versions (1-5) and variants (1-2) are supported.",
          "type" : "string",
          "format" : "uuid"
        },
        "uri" : {
          "description" : "A network-resolvable URI pointing to the authoritative reference for the associated object.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        }
      },
      "required" : [ "title", "identifier", "uri" ],
      "additionalProperties" : false
    },
    "CFItem" : {
      "description" : "This is the container for the CFItem data outside of the context of a CFPackage. This is the content that either describes a specific competency (learning objective) or describes a grouping of competencies within the taxonomy of a Competency Framework Document. ",
      "type" : "object",
      "properties" : {
        "CFDocumentURI" : {
          "$ref" : "#/$defs/LinkURI"
        },
        "identifier" : {
          "description" : "An unambiguous, synthetic, globally unique identifier for the CFItem. This is the primary way in which the exchange identification is achieved.",
          "$comment" : "Origin: UUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). The form of the GUID is a Universally Unique Identifier (UUID) of 16 hexadecimal characters (lower case) in the format 8-4-4-4-12. All permitted versions (1-5) and variants (1-2) are supported.",
          "type" : "string",
          "format" : "uuid"
        },
        "fullStatement" : {
          "description" : "The text of the statement. The textual content that either describes a specific competency or describes a less granular group of competencies within the taxonomy of the standards document. In Version 1.1 the data-type was changed from NormalizedString.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "alternativeLabel" : {
          "description" : "An alternate 'term' for Competency.  Some institutions may want to render their achievements as outcomes, or objectives, etc.  Semantically they are the same as Competencies, but diversity of terms is used.  This allows for the flexibility for the institution to define their own term for 'Competency' and not being locked into it.  ",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "CFItemType" : {
          "description" : "The textual label identifying the class of the statement as designated by the promulgating body.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "uri" : {
          "description" : "An unambiguous reference to the CFItem using a network-resolvable URI.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "humanCodingScheme" : {
          "description" : "A human-referenceable code designated by the publisher to identify the item among learning standard items.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "listEnumeration" : {
          "description" : "A set of one or more alphanumeric characters and/or symbol denoting the positioning of the statement being described in a sequential listing of statements. Use of the 'sequenceNumber' in the CFPckgAssociation class is preferred over the use of this property for sequencing.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "abbreviatedStatement" : {
          "description" : "An abbreviated version of the Full Statement.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "conceptKeywords" : {
          "type" : "array",
          "items" : {
            "description" : "The significant topicality of the CFItem using free-text keywords and phrases.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "conceptKeywordsURI" : {
          "$ref" : "#/$defs/LinkURI"
        },
        "notes" : {
          "description" : "Information about the derivation of a CFItem statement.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "subject" : {
          "type" : "array",
          "items" : {
            "description" : "A new attribute added in Version 1.1. The topic or academic subject of the Item (this should use some appropriate K-12, HE, etc. based vocabulary).",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "subjectURI" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LinkURI"
          }
        },
        "language" : {
          "description" : "The default language of the text used for the content in the learning standard document (use ISO 639-2 [ISO 639]).",
          "$comment" : "Origin: Language (PrimitiveType)",
          "type" : "string"
        },
        "educationLevel" : {
          "type" : "array",
          "items" : {
            "description" : "The education level, grade level or primary instructional level at which a CFItem is intended",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "CFItemTypeURI" : {
          "$ref" : "#/$defs/LinkURI"
        },
        "licenseURI" : {
          "$ref" : "#/$defs/LinkURI"
        },
        "statusStartDate" : {
          "description" : "The date the CFItem status started.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "statusEndDate" : {
          "description" : "The date the CFItem status ended or changed to another status.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "lastChangeDateTime" : {
          "description" : "A system generated timestamp of the most recent change to this record. This conforms to ISO 8601 dateTime definition [ISO 8601].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "extensions" : {
          "$ref" : "#/$defs/CFItemExtension"
        }
      },
      "required" : [ "CFDocumentURI", "identifier", "fullStatement", "uri", "lastChangeDateTime" ],
      "additionalProperties" : false
    },
    "LinkGenURI" : {
      "description" : "A container for the information that is used to achieve the link data reference.",
      "type" : "object",
      "properties" : {
        "title" : {
          "description" : "A human readable title for the associated object.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "identifier" : {
          "description" : "An unambiguous, synthetic, globally unique identifier (this may or may not be a UUID) for the associated object.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "uri" : {
          "description" : "A network-resolvable URI pointing to the authoritative reference for the associated object.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "targetType" : {
          "description" : "This is a new attribute added in Version 1.1. It is used to identify the type of the referenced association i.e. this MAY NOT be a CASE Framework.",
          "$comment" : "Origin: TargetTypeExtEnum (Union); The data-type for the 'targetType' attribute for a generic Link URI. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "CASE" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        }
      },
      "required" : [ "title", "identifier", "uri" ],
      "additionalProperties" : false
    },
    "CFItemExtension" : {
      "description" : "The container for the proprietary extensions to the CFItem class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}