<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="seim" nsURI="http://www.irt-saintexupery.com/seim/0.1" nsPrefix="seim">
  <eAnnotations source="http://www.eclipse.org/OCL/Import">
    <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
  </eAnnotations>
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//GraphElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" upperBound="-1"
        eType="#//Element" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//BorderElement">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" lowerBound="1"
        eType="#//PortDirection"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Link" eSuperTypes="#//GraphElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="src" eType="#//Port"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dst" eType="#//Port"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="GraphElement" abstract="true" interface="true"
      eSuperTypes="#//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="Property" abstract="true" interface="true"
      eSuperTypes="#//IdentifiedElement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="keyNotNull"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="keyNotNull" value="not(key.oclIsUndefined()) and key &lt;> ''"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="BasicProperty" abstract="true" interface="true"
      eSuperTypes="#//Property"/>
  <eClassifiers xsi:type="ecore:EClass" name="IntegerProperty" eSuperTypes="#//BasicProperty">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
        defaultValueLiteral="0"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="StringProperty" eSuperTypes="#//BasicProperty">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="''"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="BooleanProperty" eSuperTypes="#//BasicProperty">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        defaultValueLiteral="false"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ReferenceProperty" eSuperTypes="#//Property">
    <eStructuralFeatures xsi:type="ecore:EReference" name="ref" lowerBound="1" eType="#//PropertyHolder"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PropertyHolder" abstract="true" interface="true"
      eSuperTypes="#//NamedElement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="uniqueKeys"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="uniqueKeys" value="properties->forAll(p1, p2 | p1 &lt;> p2 implies p1.key &lt;> p2.key)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
        eType="#//Property" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" interface="true"
      eSuperTypes="#//IdentifiedElement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="nameNotEmpty"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="nameNotEmpty" value="name &lt;> ''"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="IdentifiedElement" abstract="true" interface="true">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="uidNotEmpty"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="uidNotEmpty" value="uid &lt;> ''"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        changeable="false" unsettable="true" iD="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PortDirection">
    <eLiterals name="UNSPECIFIED" value="3"/>
    <eLiterals name="IN"/>
    <eLiterals name="OUT" value="1"/>
    <eLiterals name="INOUT" value="2"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//PropertyHolder">
    <eStructuralFeatures xsi:type="ecore:EReference" name="modelElements" upperBound="-1"
        eType="#//GraphElement" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="BorderElement" abstract="true" interface="true"
      eSuperTypes="#//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" interface="true"
      eSuperTypes="#//PropertyHolder"/>
</ecore:EPackage>