<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://ii5.ap.siedlce.pl/entish"
 xmlns="http://ii5.ap.siedlce.pl/entish"
 elementFormDefault="qualified">
 <xsd:include schemaLocation="formula.xsd"/>
<!-- 
    The schema for introducing new concepts, i.e., types, relation, and function names to the language Entish. 
    Authors: S. Ambroszkiewicz, D. Mikulowski, and D. Pawluczuk 
    http://www.ipipan.waw.pl/mas 
    Last modified April 2, 2003
-->
 <xsd:element name="definitions">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="typeDefinition" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="relationDefinition" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="functionDefinition" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
   
 <xsd:element name="typeDefinition">
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="definiens">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="typeName"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
       <xsd:element name="definiendum">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="documentation"/>
           </xsd:sequence>
	     </xsd:complexType>
       </xsd:element>
     </xsd:sequence>
   </xsd:complexType>
 </xsd:element>

<!-- 
    Note that in the following relationDefinition as well as in the 
    functionDefinition the variables occurring in the element definiens 
    MUST be the same as all variables occurring in the element formula 
    (resp. element term) of the element definiendum, and vice versa. 
-->

 <xsd:element name="relationDefinition">
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="definiens"> 
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="relationName"/>
             <xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
       <xsd:element name="definiendum">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="formula" minOccurs="0"/>
             <xsd:element ref="documentation"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
     </xsd:sequence>
   </xsd:complexType>
 </xsd:element>

 <xsd:element name="functionDefinition">
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="definiens"> 
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="functionName"/> 
             <xsd:element ref="typeName"/> 
	         <xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
       <xsd:element name="definiendum">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="term" minOccurs="0"/>
             <xsd:element ref="documentation"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
     </xsd:sequence>          
   </xsd:complexType>
 </xsd:element>

 <xsd:element name="documentation">
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="humanInfo" type="xsd:string"/>
       <xsd:element name="appiInfo" minOccurs="0">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:any/> 
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
     </xsd:sequence>
   </xsd:complexType>
 </xsd:element>

</xsd:schema>

