<?xml version="1.0" encoding="UTF-8"?>
<!--
 XML Schema for common elements of Papillon dictionary.
 These elements are used to encode Papillon monolingual dictionaries
 and Papillon axies dictionary 
 
 Namespace = http://www-clips.imag.fr/geta/services/dml

 This schema is identified by the location:
 http://www-clips.imag.fr/geta/services/dml/papillon.xsd
  
 $Author: mangeot $ Mathieu MANGEOT-LEREBOURS Mathieu.Mangeot@imag.fr
 $Date: 2005/12/06 18:11:45 $
 $Revision: 1.100 $

 -->
<schema
  xmlns:d='http://www-clips.imag.fr/geta/services/dml'
  xmlns='http://www.w3.org/2001/XMLSchema'
  xmlns:xlink='http://www.w3.org/1999/xlink'
  targetNamespace='http://www-clips.imag.fr/geta/services/dml'>

<annotation>
  <documentation xml:lang="en">
 XML Schema for common elements of Papillon dictionary.
 These elements are used to encode Papillon monolingual dictionaries
 and Papillon axies dictionary 
 
 Namespace = http://www-clips.imag.fr/geta/services/dml

 This schema is identified by the location:
 http://www-clips.imag.fr/geta/services/dml/papillon.xsd             
  </documentation> 
</annotation>

<!--================ importing other schemas ================-->

<!-- importing parts of xlink recommendation for dml links -->
 <import 
  namespace='http://www.w3.org/1999/xlink' 
  schemaLocation='http://www-clips.imag.fr/geta/services/dml/xlink.xsd' />


<!--================ Redefining elements of other schemas ================-->
<!-- including dml schema for common DML elements used in the
dictionary
 -->
<redefine
 schemaLocation="http://www-clips.imag.fr/geta/services/dml/dml.xsd">

<!-- functionNameType type -->
<!-- redefinition of the name of the functions,
list of Meaning-Text theory base lexical functions -->

<!--simpleType name='functionNameType'-->
<!-- I don't redefine yet functionNameType because I don't know how to 
describe combination of lexical function eg: AntiMagn -->

<!-- headwordTypeType type -->
<!-- redefinition of the content of a headword -->
<complexType name="headwordType" mixed="true">
 <complexContent>
 <extension base="d:headwordType">
   <attribute name="ln" type="d:lexieNumberType"/>
 </extension>
 </complexContent>
</complexType>

<simpleType name='homographNumberType'>
<restriction base='d:homographNumberType'>
<!-- regular expression: roman numeral until 50 -->
<pattern value="[IVX]+"/> 
</restriction>
</simpleType>

<!-- DML element for groups of values of a lexical function -->
<complexType name='valgroupType'>
 <complexContent mixed="true">
 <extension base="d:valgroupType">
  <sequence>
  <element ref="d:comment" minOccurs="0" maxOccurs="1" />
  <element ref="d:value" minOccurs="1" maxOccurs="unbounded" />
  </sequence>
 <attribute name='merged' type="boolean" />
 </extension>
 </complexContent>
</complexType>

<complexType name="volumeType">
 <complexContent>
  <extension base="d:volumeType">
   <sequence>
    <!--element ref="d:lexie"  minOccurs='0' maxOccurs='unbounded' /-->
   </sequence>
  </extension>
 </complexContent>
</complexType>

<simpleType name="posType">
 <restriction base='d:posType'/>
</simpleType> 

</redefine>


<simpleType name='lexieNumberType'>
<restriction base='positiveInteger'/>
</simpleType> 

<simpleType name='functionNameTypeBasic'>
<!--restriction base='d:functionNameType'-->
<restriction base='string'>
<enumeration value="A0"/><!-- adjective A 0(law)=legal -->
<enumeration value="A1"/><!-- typical modifier for ith actant A 1(surprise)=surprised -->
<enumeration value="A2"/><!-- typical modifier for ith actant A 1(surprise)=surprised -->
<enumeration value="A3"/><!-- typical modifier for ith actant A 1(surprise)=surprised -->
<enumeration value="A4"/><!-- typical modifier for ith actant A 1(surprise)=surprised -->
<enumeration value="A5"/><!-- typical modifier for ith actant A 1(surprise)=surprised -->
<enumeration value="A6"/><!-- typical modifier for ith actant A 1(surprise)=surprised -->
<enumeration value="Able0"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Able1"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Able2"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Able3"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Able4"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Able5"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Able6"/><!-- adjective for capability of ith actant Able 1(read)=literate -->
<enumeration value="Adv0"/><!-- adverb Adv 0(honest)=honestly -->
<enumeration value="Adv1"/><!-- adverbial for ith actant Adv 1(dismay)=in dismay -->
<enumeration value="Adv2"/><!-- adverbial for ith actant Adv 1(dismay)=in dismay -->
<enumeration value="Adv3"/><!-- adverbial for ith actant Adv 1(dismay)=in dismay -->
<enumeration value="Adv4"/><!-- adverbial for ith actant Adv 1(dismay)=in dismay -->
<enumeration value="Adv5"/><!-- adverbial for ith actant Adv 1(dismay)=in dismay -->
<enumeration value="Adv6"/><!-- adverbial for ith actant Adv 1(dismay)=in dismay -->
<enumeration value="Anti"/><!-- antonym Anti(like)=dislike -->
<enumeration value="Bon"/><!-- "good" (expression of praise) Bon(advice)=sound -->
<enumeration value="Cap"/><!-- leader/chief Cap(school)=head -->
<enumeration value="Caus"/><!-- cause Caus(rise)=raise -->
<enumeration value="CausPredMinus"/><!-- cause to decrease CausPredMinus(price)=drop -->
<enumeration value="CausPredPlus"/><!-- cause to increase CausPredPlus(price)=increase -->
<enumeration value="Centr"/><!-- centre/middle Centr(problem)=crux -->
<enumeration value="Cont"/><!-- continue ContOper 1(influence)=maintain -->
<enumeration value="Contr"/><!-- contrastive term Contr(heaven)=earth -->
<enumeration value="Conv ij"/><!-- converse term Conv 21(more)=less -->
<enumeration value="Culm"/><!-- culmination Culm(anger)=paroxysm -->
<enumeration value="Degrad"/><!-- degrade, get worse Degrad(milk)=go/turn sour -->
<enumeration value="Equip"/><!-- team, crew Equip(hospital)=staff -->
<enumeration value="Excess"/><!-- function excessively Excess(heart)=palpitate -->
<enumeration value="Fact0"/><!-- be realized Fact 0(dream)=come true -->
<enumeration value="Fact1"/><!-- be realized Fact 0(dream)=come true -->
<enumeration value="Fact2"/><!-- be realized Fact 0(dream)=come true -->
<enumeration value="Figur"/><!-- standard metaphor Figur(smoke)=cloud -->
<enumeration value="Fin"/><!-- cease, stop FinOper 1(influence)=lose -->
<enumeration value="Func0"/><!-- nearly empty verb (keyword=subject) Func 0(silence)=reign -->
<enumeration value="Func1"/><!-- nearly empty verb (keyword=subject) Func 0(silence)=reign -->
<enumeration value="Func2"/><!-- nearly empty verb (keyword=subject) Func 0(silence)=reign -->
<enumeration value="Gener"/><!-- superordinate Gener(anger)=feeling -->
<enumeration value="Germ"/><!-- germ, core Germ(evil)=root -->
<enumeration value="Imper"/><!-- order, command Imper(silence)=shut up! -->
<enumeration value="Incep"/><!-- begin IncepFunc 0(war)=break out -->
<enumeration value="IncepPredMinus"/><!-- start to decrease IncepPredMinus(price)=fall -->
<enumeration value="IncepPredPlus"/><!-- start to increase IncepPredPlus(price)=skyrocket -->
<enumeration value="Instr"/><!-- typical preposition (=with the help of) Instr(car)=by -->
<enumeration value="Involv"/><!-- keyword = subject Involv(smell)=fill [the room] -->
<enumeration value="Labor ij"/><!-- nearly empty verb :- ith actant = subject- jth actant = direct object !Labor 12(consideration)=take into -->
<enumeration value="Liqu"/><!-- liquidate, delete Liqu(disease)=eradicate -->
<enumeration value="Loc ab"/><!-- locative prepositions Loc in(list)=on -->
<enumeration value="Loc ad"/><!-- locative prepositions Loc in(list)=on -->
<enumeration value="Loc in"/><!-- locative prepositions Loc in(list)=on -->
<enumeration value="Magn"/><!-- intensifier Magn(bachelor)=confirmed -->
<enumeration value="Manif"/><!-- be manifest Caus 1Manif(opinion)=express -->
<enumeration value="Minus"/><!-- less IncepPredMinus(price)=fall -->
<enumeration value="Mult"/><!-- regular group/set Mult(dog)=pack -->
<enumeration value="Nocer"/><!-- damage, attack Nocer(mosquito)=bite -->
<enumeration value="Obstr"/><!-- function with difficulty Obstr(voice)=falter -->
<enumeration value="Oper1"/><!-- nearly empty (support) verb (keyword=subject) Oper 1(attention)=pay -->
<enumeration value="Oper2"/><!-- nearly empty (support) verb (keyword=subject) Oper 1(attention)=pay -->
<enumeration value="Pejor"/><!-- worse CausPredPejor(prospect)=darken -->
<enumeration value="Perf"/><!-- perfective (completed action) S 1Perf(marry)=spouse -->
<enumeration value="Perm"/><!-- permit Perm 1Fact 0(passion)=succumb to -->
<enumeration value="Plus"/><!-- more IncepPredPlus(price)=skyrocket -->
<enumeration value="Pos0"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pos1"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pos2"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pos3"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pos4"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pos5"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pos6"/><!-- positive evaluation of ith actant Pos 2(opinion)=favorable -->
<enumeration value="Pred"/><!-- predicate (= to be) Pred(actor)=act -->
<enumeration value="Prepar"/><!-- prepare PreparFact 0(rifle)=load -->
<enumeration value="Propt"/><!-- typical preposition (= because of) Propt(fear)=for -->
<enumeration value="Prox"/><!-- on the verge of ProxFunc 0(storm)=approach -->
<enumeration value="Qual0"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qual1"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qual2"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qual3"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qual4"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qual5"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qual6"/><!-- Able i + highly probable Qual 1(device)=deceitful -->
<enumeration value="Qsyn"/><!-- quasi synonym QSyn(murder)=assassination -->
<enumeration value="Real1"/><!-- satisfy the requirements of Real 1(promise)=keep -->
<enumeration value="Real2,..."/><!-- satisfy the requirements of Real 1(promise)=keep -->
<enumeration value="Result"/><!-- result of an event Result(learn)=know -->
<enumeration value="S0"/><!-- noun S 0(die)=death -->
<enumeration value="S1"/><!-- typical noun for ith actant S 1(murder)=murderer -->
<enumeration value="S2"/><!-- typical noun for ith actant S 1(murder)=murderer -->
<enumeration value="S3"/><!-- typical noun for ith actant S 1(murder)=murderer -->
<enumeration value="S4"/><!-- typical noun for ith actant S 1(murder)=murderer -->
<enumeration value="S5"/><!-- typical noun for ith actant S 1(murder)=murderer -->
<enumeration value="S6"/><!-- typical noun for ith actant S 1(murder)=murderer -->
<enumeration value="S instr"/><!-- typical instrument S instr(paint)=brush -->
<enumeration value="S loc"/><!-- typical place S loc(lion)=den -->
<enumeration value="S med"/><!-- typical means S med(write)=ink -->
<enumeration value="S mod"/><!-- typical mode S mod(write)=handwriting -->
<enumeration value="S res"/><!-- typical result S res(copy v)=copy n -->
<enumeration value="Sing"/><!-- regular "portion" Sing(rice)=grain -->
<enumeration value="Son"/><!-- typical sound Son(elephant)=trumpet -->
<enumeration value="Sympt"/><!-- physical symptoms Degrad(speech) + Sympt 23(surprise)=be speechless -->
<enumeration value="Syn"/><!-- synonym Syn(help)=aid -->
<enumeration value="V0"/><!-- verb V 0(advice)=advise -->
<enumeration value="V1"/><!-- verb V 0(advice)=advise -->
<enumeration value="V2"/><!-- verb V 0(advice)=advise -->
<enumeration value="V3"/><!-- verb V 0(advice)=advise -->
<enumeration value="V4"/><!-- verb V 0(advice)=advise -->
<enumeration value="V5"/><!-- verb V 0(advice)=advise -->
<enumeration value="V6"/><!-- verb V 0(advice)=advise -->
<enumeration value="Ver"/><!-- as it should be Ver(excuse)=legitimate -->
<enumeration value="Unit"/><!-- unit of Unit(gravity)=g -->
</restriction>
</simpleType>




<!-- lftype attribute -->
<!-- this attribute is used to indicate if the sense of the lexical function 
is included in the lexical function lftype='merged' or not 
It is equivalent to the // sign in the DiCo format.
-->

<!-- value element -->
<!-- element for values of a lexical function -->
<element name="value">
 <complexType mixed='true'>
  <sequence>
    <element ref="d:reflexie" minOccurs='0' maxOccurs='1' />
    <element ref="d:fct-pattern" minOccurs='0' maxOccurs='1' />
    <element ref="d:fct-example" minOccurs='0' maxOccurs='1' />
  </sequence>
 </complexType>
</element>

<!--================ common definitions for monolingual dictionaries =======-->
<!-- Note: the elements specific to a dictionary/language have to be
redefined in a specific schema -->

<!-- lexie element -->
<!-- A lexie is an entry of a Papillon monolingual dictionary.
The structure of the entries, that is microstructure of the monolingual
dictionaries, is based on the structure used for the formal lexical
 database DiCo of the OLST laboratory at Universite de Montreal.

The encoding methodology is directly borrowed from the explanatory
 and combinatorial lexicology, which is part of the meaning-text
 theory elaborated by Igor Melc'uk and his colleagues. -->
<element name='lexie'>
 <complexType>
  <sequence>
   <element ref='d:headword' minOccurs='1' maxOccurs='1' />
   <element ref='d:writing' minOccurs='0' maxOccurs='1' />
   <element ref='d:reading' minOccurs='0' maxOccurs='1' />
   <element ref='d:pronunciation' minOccurs='0' maxOccurs='1' />
   <element ref='d:pos' minOccurs='1' maxOccurs='1' />
   <element ref='d:language-levels' minOccurs='1' maxOccurs='1' />
   <element ref='d:semantic-formula' minOccurs='1' maxOccurs='1' />
<!-- When the lexie is not a predicate, there is no governement-pattern.  -->
   <element ref='d:government-pattern' minOccurs='0' maxOccurs='1' />
   <element ref='d:lexical-functions' minOccurs='1' maxOccurs='1' />
   <element ref='d:examples' minOccurs='1' maxOccurs='1' />
   <element ref='d:full-idioms' minOccurs='1' maxOccurs='1' />
   <element ref='d:more-info' minOccurs='0' maxOccurs='1' />
   </sequence>
<!-- The attribute id is an internal unique id. It is hidden from the users.
If the lexie is deleted, its id remains. It can't be reused. It is
metalinguistic information. It has to be discussed if it is necessary to
write it in capital letters knowing that it does not exist in Japanese. -->   
   <attribute ref='d:id' use='required'/>
   <attribute name='frequency' type="string" use='optional'/>
  </complexType>
</element>
 
<!-- headword element -->
<!-- is a common DML element already declared
in the DML schema -->

<!-- writing element -->
<!-- This element is used to note the various writings of a headword.
For example, in Japanese, yomigana is the way to write
kanji in kana.-->
<element name='writing'>
<complexType mixed='true'>
<!-- encoding attribute -->
<!--notes what writing is used. -->
<attribute name='encoding' type='d:writingEncodingType' use='optional'/>
</complexType>
</element>

<!-- This type has to be redefined in dictionary specific schemata. -->
<simpleType name="writingEncodingType">
 <restriction base="string"/>
</simpleType>

<!-- reading element -->
<!-- This element is used to indicate a transcription of a writing system into
 another writing system.
Sometimes, the IPA can be too complex to read for a non specialist. Therefore, we
can also use a more simple phonetic transcription.
For example, in Japanese, romaji is a roman transcription of Japanese words.-->
<element name='reading'>
<complexType mixed='true'>
<!-- encoding attribute -->
<!-- notes what reading is used. -->
<attribute name='encoding' type='d:readingEncodingType' use='optional'/>
</complexType>
</element>

<!-- This type has to be redefined in dictionary specific schemata. -->
<simpleType name="readingEncodingType">
 <restriction base="string"/>
</simpleType>


<!-- pronunciation element -->
<!-- is a common DML element already declared
in the DML schema -->

<!-- pos element -->
<!-- is a common DML element already declared
in the DML schema -->

<!-- language-levels element -->
<!-- It has to be redefined into the language specific
schemas -->
<element name="language-levels">
 <complexType>
  <sequence>
   <element ref="d:politeness" minOccurs="0" maxOccurs="1" />
   <element ref="d:usage" minOccurs="0" maxOccurs="1" />
   <element ref="d:reference" minOccurs="0" maxOccurs="1" />
   <element ref="d:domain" minOccurs="0" maxOccurs="1" />
   <!-- added in order to validate Mutsuko's work -->
   <element ref="d:quantum" minOccurs="0" maxOccurs="1" />
  </sequence>
 </complexType>
</element>

<!-- politeness element -->
<!-- language level -->
<element name="politeness" type="d:politenessType"/>

<!-- politeness grade type -->
<!-- has to be redefined into the
language specific schemata -->
<simpleType name="politenessType">
 <restriction base="string" />
</simpleType>

<!-- usage element -->
<!-- language level -->
<element name="usage" type="d:usageType" />

<!-- usage grade type -->
<!-- has to be redefined into the
language specific schemata -->
<simpleType name="usageType">
 <restriction base="string" />
</simpleType>

<!-- reference element -->
<!-- language level -->
<element name="reference" type="d:referenceType" />

<!-- reference grade type -->
<!-- has to be redefined into the
language specific schemata -->
<simpleType name="referenceType">
 <restriction base="string" />
</simpleType>

<!-- quantum element -->
<!-- language level -->
<element name="quantum">
 <complexType mixed="true">
  <attribute name="grade" type="string"/> 
 </complexType>
</element>
<!-- semantic-formula element -->
<!-- comes from the meaning-text theory -->
<element name='semantic-formula'>
 <complexType>
  <sequence>
   <element ref='d:formula-label' minOccurs="1" maxOccurs="1"/>
   <element ref='d:formula' minOccurs="1" maxOccurs="1"/>
  </sequence>
 </complexType>
</element>

<!-- formula-label element -->
<!-- semantic label comes from the meaning-text theory.
Used to tag the semantic formula. -->
<element name='formula-label' type='d:formula-labelType' />


<!-- formula-labelType element -->
<!-- the list of labels must be redefined in language specific schemata-->
<simpleType name="formula-labelType">
 <restriction base="string" />
</simpleType>


<element name='formula'>
 <complexType mixed='true'>
   <sequence maxOccurs="unbounded">
  <choice>
   <element ref='d:sem-label' minOccurs='0' maxOccurs='1'/>
   <element ref='d:sem-actor' minOccurs='0' maxOccurs='unbounded'/>
 </choice>
    </sequence>
 </complexType>
</element>

<!-- actor element -->
<!-- comes from the meaning-text theory.
Used to tag the actors of the semantic formula
and the government pattern -->
<element name='sem-actor'>
 <complexType mixed="true">
  <sequence>
   <element ref='d:sem-label' minOccurs="0" maxOccurs="1"/>
   <element ref='d:sem-variable' minOccurs="0" maxOccurs="1"/>
   <element ref='d:synt-variable' minOccurs="0" maxOccurs="1"/>
   <element ref='d:surface-group' minOccurs="0" maxOccurs="1"/>
  </sequence>
 </complexType>
</element>

<!-- sem-label element -->
<!-- semantic label comes from the meaning-text theory.
Used to tag the semantic formula.
We should define a closed list of possible values -->
<element name='sem-label' type='d:sem-labelType' />

<!-- sem-labelType type -->
<!-- the list of labels must be redefined in language specific schemata-->
<simpleType name="sem-labelType">
 <restriction base="string" />
</simpleType>

<!-- sem-variable element -->
<!-- semantic variable comes from the meaning-text theory. -->
<element name='sem-variable' type='d:sem-variableType' />

<!-- sem-variableType type -->
<simpleType name="sem-variableType">
 <restriction base="string">
 <enumeration value="X"/>
 <enumeration value="Y"/>
 <enumeration value="Z"/>
 <enumeration value="U"/>
 <enumeration value="V"/>
 <enumeration value="W"/>
 </restriction>
</simpleType>


<!-- government-pattern element -->
<!-- comes from the meaning-text theory  -->
 <element name='government-pattern'>
  <complexType>
   <sequence>
    <element ref='d:mod' minOccurs='1' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

<!-- mod element -->
<!--  There might be more than one government pattern (we call them
   "modifications") for the same lexical unit. 
   We need a way to encode that. -->
 <element name='mod'>
  <complexType>
   <choice>
    <element ref='d:actor' minOccurs='1' maxOccurs='unbounded'/>
    <element ref='d:sem-actor' minOccurs='1' maxOccurs='unbounded'/>
   </choice>
<!-- number of the modification in the government pattern -->
 <attribute name='nb' type='positiveInteger' />
  </complexType>
 </element>

<!-- actor element -->
<!-- comes from the meaning-text theory.
Used to tag the actors of the semantic formula
and the government pattern -->
<element name='actor'>
 <complexType mixed="true">
 <sequence>
   <element ref="d:sem-variable" minOccurs="1" maxOccurs="1"/>
   <element ref="d:synt-variable" minOccurs="1" maxOccurs="1"/>
  <element ref="d:surface-group" minOccurs="0" maxOccurs="1"/>
 </sequence>
 </complexType>
</element>

<!-- synt-variable element -->
<!-- syntactical variable comes from the meaning-text theory. -->
<element name='synt-variable' type='d:synt-variableType' />

<!-- synt-variable type -->
<!-- syntactic variable comes from the meaning-text theory -->
<simpleType name="synt-variableType">
 <restriction base="string">
 <enumeration value="I"/>
 <enumeration value="II"/>
 <enumeration value="III"/>
 <enumeration value="IV"/>
 <enumeration value="V"/>
 <enumeration value="VI"/>
 </restriction>
</simpleType>

<element name='surface-group'>
 <complexType mixed="true">
 <sequence>
  <element ref="d:surface" minOccurs="0" maxOccurs="unbounded"/>
 </sequence>
 </complexType>
</element>

<!-- surface element -->
<!-- comes from the meaning-text theory.
Described the possible parts-of-speech groups of the surface actor -->
<element name='surface' type='d:surfaceType'/>

<!-- surface type -->
<!-- surface realisations of the semantic actants,
comes from the meaning-text theory.
This type may be redefined in language specific schemata.
Possible values are for French N, chez N, dans N, A-poss, de V-inf, envers N, etc. -->
<complexType name="surfaceType" mixed="true">
   <sequence>
    <element ref='d:reflexie' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
</complexType>

 
<!-- reflexie element -->
<!-- reference to another lexie with an xlink -->
  <element name='reflexie' type='d:objectRefType' />

<!-- lexical-functions element -->
<!-- comes from the meaning-text theory 
Lists all the lexical functions of the lexie -->
 <element name='lexical-functions'>
  <complexType>
   <sequence>
    <element ref='d:function' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

<!-- function element -->
<!-- is a common DML element already declared
in the DML schema -->

<!-- fct-example element -->
<!-- example in a lexical function -->
<element name='fct-example' type='string' />

<!-- fct-pattern element -->
<!-- government pattern in a lexical function -->
<element name='fct-pattern' type='string' />

<!-- examples element -->
<!-- lists some usage examples of a lexie -->
 <element name='examples'>
  <complexType>
   <sequence>
    <element ref='d:example' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>
 
 
<!-- example element -->
<!-- a usage example of a lexie -->
 <element name='example'>
  <complexType mixed='true'>
   <attribute ref="d:id"/>
  </complexType>
 </element>

<!-- examples element -->
<!-- lists some full idioms containing the lexie -->
 <element name='full-idioms'>
  <complexType>
   <sequence>
    <element ref='d:idiom' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

<!-- idiom element -->
<!-- a full idioms containing the lexie -->
 <element name='idiom'>
  <complexType mixed='true'>
   <attribute ref='d:id'/>
   <attribute ref='xlink:href'/>
  </complexType>
 </element>

<!-- more-info element -->
<!-- This element is used to store additional XML information for the lexie.
It contains typically, information from recuperated resources. -->
<element name='more-info'>
 <complexType>
  <sequence>
   <any 
    minOccurs="0" 
    maxOccurs="unbounded"
    processContents="skip"/>
<!-- If we want to validate elements and attributes for which it can obtain schema information, but it will not signal errors for those it cannot obtain any schema information. 
-->
<!--    processContents="lax"/-->
  </sequence>
 </complexType>
</element>


<!--================ definitions for the axie dictionary ==================-->
<!-- Note: elements whose content can vary e.g.: external-references,
have to be redefined in the schema specific to the axie volume -->

<!-- axie element -->
<!-- An axie is an interlingual link between lexies of different
languages. It consists also in links to other set of semantic symbols
following other theories like WordNet, UNL, etc. -->
 <element name='axie'>
 <complexType>
  <sequence>
   <element ref="d:semantic-cat" minOccurs='0' maxOccurs='1' />
   <element ref="d:language-links" minOccurs='0' maxOccurs='1' />
   <element ref="d:axi-refinements" minOccurs='0' maxOccurs='1' />
   <element ref="d:axi-generalizations" minOccurs='0' maxOccurs='1' />
   <element ref="d:axi-synonyms" minOccurs='0' maxOccurs='1' />
   <element ref="d:external-references" minOccurs='0' maxOccurs='1' />
  </sequence>
  <attribute ref='d:id' use='required'/>
  <attribute ref='d:history-ref' use='optional'/>
  <attribute ref='d:status' use='optional'/>
 </complexType>
</element>

<!-- semantic-cat element -->
<!-- semantic category of an axie -->
<element name="semantic-cat">
 <simpleType>
  <restriction base='string' >
   <enumeration value='entity' />
   <enumeration value='process' />
   <enumeration value='result' />
   <enumeration value='state' />
   <enumeration value='gloss' />
   <enumeration value='idiom' />
   <enumeration value='citation' />
   <enumeration value='proverb' />
 </restriction>
 </simpleType>
</element>

<!-- language-links element -->
<!-- This element contains the links from the axie to
the monolingual lexies. All the links to lexies of
one language are grouped into a language
element.
 -->
<element name='language-links'>
 <complexType>
  <sequence>
   <element ref="d:language" minOccurs='0' maxOccurs='unbounded' />
  </sequence>
 </complexType>
</element>


<element name="language">
 <complexType>
  <sequence>
   <element ref="d:reflexie" minOccurs="0" maxOccurs="unbounded"/>
   <element ref="d:refexample" minOccurs="0" maxOccurs="unbounded"/>
   <element ref="d:refidiom" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
  <attribute ref="d:lang"/>
 </complexType>
</element>

<!-- axi-refinements element -->
<!-- lists all the axies that refines this axie -->
   <element name="axi-refinements" type="d:refaxiesType" />

<!-- axi-generalizations element -->
<!-- lists all the axies that generalize this axie -->
   <element name="axi-generalizations" type="d:refaxiesType" />

<!-- axi-synonyms element -->
<!-- lists all the axies synonyms of this axie -->
   <element name="axi-synonyms" type="d:refaxiesType" />


<!-- refs type -->
<!-- lists all the axies synonyms of this axie -->
<complexType name="refsType">
 <sequence>
  <element ref="d:reflexie" minOccurs="0" maxOccurs="unbounded"/>
  <element ref="d:refexample" minOccurs="0" maxOccurs="unbounded"/>
  <element ref="d:refidiom" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>

<!-- refaxie element -->
<!-- reference to another axie with an xlink -->
<element name='refaxie' type='d:objectRefType' />

<element name="refexample" type="d:objectRefType"/>

<element name="refidiom" type="d:objectRefType" />

<!-- refaxies type -->
<!-- type that refers to another axie with an xlink -->
<complexType name="refaxiesType">
 <sequence>
  <element ref="d:refaxie"  minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>

<!-- external-references element -->
<!-- lists the external references of an axie.
Its content has to be redefined in the axies volume schema-->
<element name='external-references' type="d:external-referencesType" />

<complexType name="external-referencesType">
  <sequence/>
</complexType>

</schema>

