<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:sfpm="https://www.omg.org/spec/SFPM/20200202" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.omg.org/spec/SFPM/20200202">
  <xsd:import namespace="http://www.omg.org/spec/XMI/20131001" schemaLocation="http://www.omg.org/spec/XMI/20131001/XMI.xsd"/>
  <xsd:simpleType name="SemanticFormulationKind">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="AtomicFormulation"/>
      <xsd:enumeration value="SetProjection"/>
      <xsd:enumeration value="InstantiationFormulation"/>
      <xsd:enumeration value="LogicalNegation"/>
      <xsd:enumeration value="Conjunction"/>
      <xsd:enumeration value="Disjunction"/>
      <xsd:enumeration value="UniversalQuantification"/>
      <xsd:enumeration value="AtleastNQuantification"/>
      <xsd:enumeration value="ExistentialQuantification"/>
      <xsd:enumeration value="NumericRangeQuantification"/>
      <xsd:enumeration value="AtmostNQuantification"/>
      <xsd:enumeration value="ExactlyNQuantification"/>
      <xsd:enumeration value="ExactlyOneQuantification"/>
      <xsd:enumeration value="Objectification"/>
      <xsd:enumeration value="AggregationFormulation"/>
      <xsd:enumeration value="VerbConceptNominalization"/>
      <xsd:enumeration value="PropositionNominalization"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DiscernibilityLevel">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="VeryHigh"/>
      <xsd:enumeration value="High"/>
      <xsd:enumeration value="Medium"/>
      <xsd:enumeration value="Low"/>
      <xsd:enumeration value="VeryLow"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="Cluster">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="cluster" type="sfpm:Cluster"/>
      <xsd:element name="characteristic_section" type="sfpm:CharacteristicSection"/>
      <xsd:element name="sfp" type="sfpm:SFP"/>
      <xsd:element name="cwe_section" type="sfpm:CWESection"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Cluster" type="sfpm:Cluster"/>
  <xsd:complexType name="SFP">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="rootcause" type="sfpm:RootCause"/>
      <xsd:element name="injury" type="sfpm:Injury"/>
      <xsd:element name="cwe_section" type="sfpm:CWESection"/>
      <xsd:element name="injury_mapping_section" type="sfpm:InjuryMappingSection"/>
      <xsd:element name="cwe_mapping_section" type="sfpm:CWEMappingSection"/>
      <xsd:element name="canonical_section" type="sfpm:CanonicalSection"/>
      <xsd:element name="parameter_section" type="sfpm:ParameterSection"/>
      <xsd:element name="variation_section" type="sfpm:VariationSection"/>
      <xsd:element name="element_section" type="sfpm:ElementSection"/>
      <xsd:element name="characteristic_section" type="sfpm:CharacteristicSection"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="id" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="rootcause" type="xsd:string"/>
    <xsd:attribute name="injury" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="SFP" type="sfpm:SFP"/>
  <xsd:complexType name="Injury">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Injury" type="sfpm:Injury"/>
  <xsd:complexType name="RootCause">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="RootCause" type="sfpm:RootCause"/>
  <xsd:complexType name="Condition">
    <xsd:complexContent>
      <xsd:extension base="sfpm:DataflowElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Condition" type="sfpm:Condition"/>
  <xsd:complexType name="SharedCharacteristic">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
  </xsd:complexType>
  <xsd:element name="SharedCharacteristic" type="sfpm:SharedCharacteristic"/>
  <xsd:complexType name="SFPCatalog">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="cluster" type="sfpm:Cluster"/>
      <xsd:element name="property_section" type="sfpm:PropertySection"/>
      <xsd:element name="indicator_section" type="sfpm:IndicatorSection"/>
      <xsd:element name="vocabulary_section" type="sfpm:VocabularySection"/>
      <xsd:element name="context_section" type="sfpm:ContextSection"/>
      <xsd:element name="rootcause_section" type="sfpm:RootCauseSection"/>
      <xsd:element name="injury_section" type="sfpm:InjurySection"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="version" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="owner" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="SFPCatalog" type="sfpm:SFPCatalog"/>
  <xsd:complexType name="CWE">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="note" type="sfpm:Note"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="id" type="xsd:string" use="required"/>
    <xsd:attribute name="url" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="details" type="xsd:string" use="required"/>
    <xsd:attribute name="status" type="xsd:string" use="required"/>
    <xsd:attribute name="discernible" type="sfpm:DiscernibilityLevel" use="required"/>
  </xsd:complexType>
  <xsd:element name="CWE" type="sfpm:CWE"/>
  <xsd:complexType name="Parameter">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="variant" type="sfpm:Variant"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Parameter" type="sfpm:Parameter"/>
  <xsd:complexType name="SemanticFragment">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="designation" type="sfpm:Verbalization"/>
      <xsd:element name="meaning" type="sfpm:SemanticFormulation"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
  </xsd:complexType>
  <xsd:element name="SemanticFragment" type="sfpm:SemanticFragment"/>
  <xsd:complexType name="VerbConcept">
    <xsd:complexContent>
      <xsd:extension base="sfpm:VerbForm">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="definition" type="sfpm:SemanticFragment"/>
        </xsd:choice>
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="VerbConcept" type="sfpm:VerbConcept"/>
  <xsd:complexType name="NounConcept">
    <xsd:complexContent>
      <xsd:extension base="sfpm:VocabularyElement">
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="NounConcept" type="sfpm:NounConcept"/>
  <xsd:complexType name="SemanticFormulation">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="variable" type="sfpm:Variable"/>
      <xsd:element name="verb" type="sfpm:VerbForm"/>
      <xsd:element name="noun" type="sfpm:NounConcept"/>
      <xsd:element name="operand" type="sfpm:SemanticFormulation"/>
      <xsd:element name="binding" type="sfpm:RoleBinding"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="identificator" type="xsd:string" use="required"/>
    <xsd:attribute name="kind" type="sfpm:SemanticFormulationKind" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="verb" type="xsd:string"/>
    <xsd:attribute name="noun" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="SemanticFormulation" type="sfpm:SemanticFormulation"/>
  <xsd:complexType name="Variable">
    <xsd:complexContent>
      <xsd:extension base="sfpm:BindableTarget">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="range" type="sfpm:NounConcept"/>
          <xsd:element name="restriction" type="sfpm:SemanticFormulation"/>
        </xsd:choice>
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
        <xsd:attribute name="range" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Variable" type="sfpm:Variable"/>
  <xsd:complexType name="Resource">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ContextElement">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="interface" type="sfpm:API"/>
        </xsd:choice>
        <xsd:attribute name="kind" type="xsd:string" use="required"/>
        <xsd:attribute name="interface" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Resource" type="sfpm:Resource"/>
  <xsd:complexType name="Property">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SemanticElement">
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Property" type="sfpm:Property"/>
  <xsd:complexType name="Verbalization">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="text" type="xsd:string" use="required"/>
    <xsd:attribute name="sample" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Verbalization" type="sfpm:Verbalization"/>
  <xsd:complexType name="Operation">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ContextElement">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="interface" type="sfpm:API"/>
          <xsd:element name="output" type="sfpm:DataElement"/>
          <xsd:element name="input" type="sfpm:DataElement"/>
          <xsd:element name="resource" type="sfpm:Resource"/>
        </xsd:choice>
        <xsd:attribute name="interface" type="xsd:string"/>
        <xsd:attribute name="output" type="xsd:string"/>
        <xsd:attribute name="input" type="xsd:string"/>
        <xsd:attribute name="resource" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Operation" type="sfpm:Operation"/>
  <xsd:complexType name="DataElement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ContextElement">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="type" type="sfpm:DataType"/>
        </xsd:choice>
        <xsd:attribute name="type" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="DataElement" type="sfpm:DataElement"/>
  <xsd:complexType name="ReferencedContextElement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ClauseReference">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="element" type="sfpm:ContextElement"/>
        </xsd:choice>
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="element" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ReferencedContextElement" type="sfpm:ReferencedContextElement"/>
  <xsd:complexType abstract="true" name="ContextElement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SemanticElement">
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ContextElement" type="sfpm:ContextElement"/>
  <xsd:complexType name="RoleBinding">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="target" type="sfpm:BindableTarget"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="rolename" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="target" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="RoleBinding" type="sfpm:RoleBinding"/>
  <xsd:complexType name="API">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ContextElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="API" type="sfpm:API"/>
  <xsd:complexType name="Vocabulary">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="noun" type="sfpm:NounConcept"/>
      <xsd:element name="verb" type="sfpm:VerbConcept"/>
      <xsd:element name="individual" type="sfpm:IndividualConcept"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="version" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="url" type="xsd:string" use="required"/>
    <xsd:attribute name="owner" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Vocabulary" type="sfpm:Vocabulary"/>
  <xsd:complexType name="Variant">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="definition" type="sfpm:Property"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="definition" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="Variant" type="sfpm:Variant"/>
  <xsd:complexType abstract="true" name="DataflowElement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SemanticElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="DataflowElement" type="sfpm:DataflowElement"/>
  <xsd:complexType name="Note">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="text" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Note" type="sfpm:Note"/>
  <xsd:complexType name="CWEMapping">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="variant" type="sfpm:Variant"/>
      <xsd:element name="cwe" type="sfpm:CWE"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="variant" type="xsd:string"/>
    <xsd:attribute name="cwe" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="CWEMapping" type="sfpm:CWEMapping"/>
  <xsd:complexType name="InjuryMapping">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="variant" type="sfpm:Variant"/>
      <xsd:element name="injury" type="sfpm:Injury"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="variant" type="xsd:string"/>
    <xsd:attribute name="injury" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="InjuryMapping" type="sfpm:InjuryMapping"/>
  <xsd:complexType name="Decision">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ContextElement">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="input" type="sfpm:DataElement"/>
        </xsd:choice>
        <xsd:attribute name="input" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Decision" type="sfpm:Decision"/>
  <xsd:complexType abstract="true" name="BindableTarget">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
  </xsd:complexType>
  <xsd:element name="BindableTarget" type="sfpm:BindableTarget"/>
  <xsd:complexType name="IndividualConcept">
    <xsd:complexContent>
      <xsd:extension base="sfpm:BindableTarget">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="definition" type="sfpm:SemanticFragment"/>
        </xsd:choice>
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="IndividualConcept" type="sfpm:IndividualConcept"/>
  <xsd:complexType name="DataType">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ContextElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="DataType" type="sfpm:DataType"/>
  <xsd:complexType name="PropertySection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CommonSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="property" type="sfpm:Property"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="PropertySection" type="sfpm:PropertySection"/>
  <xsd:complexType name="IndicatorSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CommonSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="indicator" type="sfpm:Indicator"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="IndicatorSection" type="sfpm:IndicatorSection"/>
  <xsd:complexType name="VocabularySection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CommonSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="vocabulary" type="sfpm:Vocabulary"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="VocabularySection" type="sfpm:VocabularySection"/>
  <xsd:complexType name="CWESection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ClusterSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="cwe" type="sfpm:CWE"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CWESection" type="sfpm:CWESection"/>
  <xsd:complexType name="RootCauseSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CommonSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="rootcause" type="sfpm:RootCause"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="RootCauseSection" type="sfpm:RootCauseSection"/>
  <xsd:complexType name="InjurySection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CommonSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="injury" type="sfpm:Injury"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="InjurySection" type="sfpm:InjurySection"/>
  <xsd:complexType name="ParameterSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SFPSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="parameter" type="sfpm:Parameter"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ParameterSection" type="sfpm:ParameterSection"/>
  <xsd:complexType name="VariationSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SFPSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="variation" type="sfpm:Variation"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="VariationSection" type="sfpm:VariationSection"/>
  <xsd:complexType name="ElementSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SFPSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="element" type="sfpm:DataflowElement"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ElementSection" type="sfpm:ElementSection"/>
  <xsd:complexType name="CanonicalSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SFPSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="canonical" type="sfpm:CanonicalElement"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CanonicalSection" type="sfpm:CanonicalSection"/>
  <xsd:complexType name="ContextSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CommonSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="element" type="sfpm:ContextElement"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ContextSection" type="sfpm:ContextSection"/>
  <xsd:complexType name="InjuryMappingSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SFPSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="injury_mapping" type="sfpm:InjuryMapping"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="InjuryMappingSection" type="sfpm:InjuryMappingSection"/>
  <xsd:complexType name="CWEMappingSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SFPSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="cwe_mapping" type="sfpm:CWEMapping"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CWEMappingSection" type="sfpm:CWEMappingSection"/>
  <xsd:complexType name="CharacteristicSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ClusterSection">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="characteristic" type="sfpm:ReferencedContextElement"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CharacteristicSection" type="sfpm:CharacteristicSection"/>
  <xsd:complexType abstract="true" name="Section">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
  </xsd:complexType>
  <xsd:element name="Section" type="sfpm:Section"/>
  <xsd:complexType abstract="true" name="CommonSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:Section"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CommonSection" type="sfpm:CommonSection"/>
  <xsd:complexType abstract="true" name="SFPSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:Section"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SFPSection" type="sfpm:SFPSection"/>
  <xsd:complexType abstract="true" name="ClusterSection">
    <xsd:complexContent>
      <xsd:extension base="sfpm:Section"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ClusterSection" type="sfpm:ClusterSection"/>
  <xsd:complexType name="Indicator">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SemanticElement">
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Indicator" type="sfpm:Indicator"/>
  <xsd:complexType abstract="true" name="SemanticElement">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="definition" type="sfpm:SemanticFragment"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
  </xsd:complexType>
  <xsd:element name="SemanticElement" type="sfpm:SemanticElement"/>
  <xsd:complexType name="MitigatedSinkSegment">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CanonicalSegment"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="MitigatedSinkSegment" type="sfpm:MitigatedSinkSegment"/>
  <xsd:complexType name="MitigatedSourceSegment">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CanonicalSegment"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="MitigatedSourceSegment" type="sfpm:MitigatedSourceSegment"/>
  <xsd:complexType name="CanonicalForm">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CanonicalElement">
        <xsd:attribute name="name" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CanonicalForm" type="sfpm:CanonicalForm"/>
  <xsd:complexType name="Variation">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="variation" type="sfpm:Variation"/>
      <xsd:element name="variant" type="sfpm:Variant"/>
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="description" type="xsd:string" use="required"/>
    <xsd:attribute name="variant" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="Variation" type="sfpm:Variation"/>
  <xsd:complexType abstract="true" name="CanonicalSegment">
    <xsd:complexContent>
      <xsd:extension base="sfpm:ClauseReference">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="definition" type="sfpm:SemanticFragment"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CanonicalSegment" type="sfpm:CanonicalSegment"/>
  <xsd:complexType name="SinkStatement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:DataflowElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SinkStatement" type="sfpm:SinkStatement"/>
  <xsd:complexType name="SourceStatement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:DataflowElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SourceStatement" type="sfpm:SourceStatement"/>
  <xsd:complexType name="SinkSegment">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CanonicalSegment"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SinkSegment" type="sfpm:SinkSegment"/>
  <xsd:complexType name="SourceSegment">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CanonicalSegment"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SourceSegment" type="sfpm:SourceSegment"/>
  <xsd:complexType abstract="true" name="CanonicalElement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SemanticElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CanonicalElement" type="sfpm:CanonicalElement"/>
  <xsd:complexType abstract="true" name="VerbForm">
    <xsd:choice maxOccurs="unbounded" minOccurs="0">
      <xsd:element ref="xmi:Extension"/>
    </xsd:choice>
    <xsd:attribute ref="xmi:id"/>
    <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
  </xsd:complexType>
  <xsd:element name="VerbForm" type="sfpm:VerbForm"/>
  <xsd:complexType abstract="true" name="ClauseReference">
    <xsd:complexContent>
      <xsd:extension base="sfpm:VerbForm"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ClauseReference" type="sfpm:ClauseReference"/>
  <xsd:complexType name="PrimaryDataSegment">
    <xsd:complexContent>
      <xsd:extension base="sfpm:CanonicalSegment"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="PrimaryDataSegment" type="sfpm:PrimaryDataSegment"/>
  <xsd:complexType name="PrimaryDataStatement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:DataflowElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="PrimaryDataStatement" type="sfpm:PrimaryDataStatement"/>
  <xsd:complexType abstract="true" name="VocabularyElement">
    <xsd:complexContent>
      <xsd:extension base="sfpm:SemanticElement"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="VocabularyElement" type="sfpm:VocabularyElement"/>
</xsd:schema>
