type AltDescription
  {
    source: String!
    description: String!
  }

interface Annotatable
  {
    annotations: [Annotation]
  }

type Annotation implements Annotatable
  {
    tag: Uriorcurie!
    value: String!
    extensions: [Extension]
    annotations: [Annotation]
  }

type ClassDefinition
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
    abstract: Boolean
    mixin: Boolean
    valuesFrom: [Uriorcurie]
    createdBy: Uriorcurie
    createdOn: Datetime
    lastUpdatedOn: Datetime
    modifiedBy: Uriorcurie
    status: Uriorcurie
    stringSerialization: String
    slots: [SlotDefinition]
    slotUsage: [SlotDefinition]
    attributes: [SlotDefinition]
    classUri: Uriorcurie
    subclassOf: Uriorcurie
    unionOf: [ClassDefinition]
    definingSlots: [SlotDefinition]
    treeRoot: Boolean
    isA: ClassDefinition
    mixins: [ClassDefinition]
    applyTo: [ClassDefinition]
  }

interface CommonMetadata
  {
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
  }

interface Definition
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
    isA: Definition
    abstract: Boolean
    mixin: Boolean
    mixins: [Definition]
    applyTo: [Definition]
    valuesFrom: [Uriorcurie]
    createdBy: Uriorcurie
    createdOn: Datetime
    lastUpdatedOn: Datetime
    modifiedBy: Uriorcurie
    status: Uriorcurie
    stringSerialization: String
  }

type Element implements Extensible, Annotatable, CommonMetadata
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
  }

type EnumDefinition
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
    codeSet: Uriorcurie
    codeSetTag: String
    codeSetVersion: String
    pvFormula: PvFormulaOptions
    permissibleValues: [PermissibleValue]
  }

type Example
  {
    value: String
    description: String
  }

interface Extensible
  {
    extensions: [Extension]
  }

type Extension
  {
    tag: Uriorcurie!
    value: String!
    extensions: [Extension]
  }

type LocalName
  {
    localNameSource: Ncname!
    localNameValue: String!
  }

type PermissibleValue implements Extensible, Annotatable, CommonMetadata
  {
    text: String!
    description: String
    meaning: Uriorcurie
    isA: PermissibleValue
    mixins: [PermissibleValue]
    extensions: [Extension]
    annotations: [Annotation]
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
  }

type Prefix
  {
    prefixPrefix: Ncname!
    prefixReference: Uri!
  }

type SchemaDefinition
  {
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
    id: Uri!
    version: String
    imports: [Uriorcurie]
    license: String
    prefixes: [Prefix]
    emitPrefixes: [Ncname]
    defaultCuriMaps: [String]
    defaultPrefix: String
    defaultRange: TypeDefinition
    subsets: [SubsetDefinition]
    types: [TypeDefinition]
    enums: [EnumDefinition]
    slots: [SlotDefinition]
    classes: [ClassDefinition]
    metamodelVersion: String
    sourceFile: String
    sourceFileDate: Datetime
    sourceFileSize: Integer
    generationDate: Datetime
    name: Ncname!
  }

type SlotDefinition
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
    abstract: Boolean
    mixin: Boolean
    valuesFrom: [Uriorcurie]
    createdBy: Uriorcurie
    createdOn: Datetime
    lastUpdatedOn: Datetime
    modifiedBy: Uriorcurie
    status: Uriorcurie
    stringSerialization: String
    singularName: String
    domain: ClassDefinition
    range: Element
    slotUri: Uriorcurie
    multivalued: Boolean
    inherited: Boolean
    readonly: String
    ifabsent: String
    required: Boolean
    recommended: Boolean
    inlined: Boolean
    inlinedAsList: Boolean
    key: Boolean
    identifier: Boolean
    designatesType: Boolean
    alias: String
    owner: Definition
    domainOf: [ClassDefinition]
    subpropertyOf: SlotDefinition
    symmetric: Boolean
    inverse: SlotDefinition
    isClassField: Boolean
    role: String
    isUsageSlot: Boolean
    usageSlotName: String
    minimumValue: Integer
    maximumValue: Integer
    pattern: String
    isA: SlotDefinition
    mixins: [SlotDefinition]
    applyTo: [SlotDefinition]
  }

type SubsetDefinition
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
  }

type TypeDefinition
  {
    name: String!
    title: String
    idPrefixes: [Ncname]
    definitionUri: Uriorcurie
    aliases: [String]
    localNames: [LocalName]
    mappings: [Uriorcurie]
    exactMappings: [Uriorcurie]
    closeMappings: [Uriorcurie]
    relatedMappings: [Uriorcurie]
    narrowMappings: [Uriorcurie]
    broadMappings: [Uriorcurie]
    extensions: [Extension]
    annotations: [Annotation]
    description: String
    altDescriptions: [AltDescription]
    deprecated: String
    todos: [String]
    notes: [String]
    comments: [String]
    examples: [Example]
    inSubset: [SubsetDefinition]
    fromSchema: Uri
    importedFrom: String
    seeAlso: [Uriorcurie]
    deprecatedElementHasExactReplacement: Uriorcurie
    deprecatedElementHasPossibleReplacement: Uriorcurie
    typeof: TypeDefinition
    base: String
    uri: Uriorcurie
    repr: String
    pattern: String
  }

type UniqueKey implements Extensible, Annotatable
  {
    uniqueKeySlots: [SlotDefinition]!
    extensions: [Extension]
    annotations: [Annotation]
  }


