<!-- Graphic notation v. 0.7.9 -->

<!ELEMENT graphicNotation (properties, nodes, edges?, viewOptions?, semanticController?, viewBuilder?)>
<!-- 
  "version" attribute contains version of the language
  "appVersion" attribute contains version of BioUML that has created this file -->
<!ATTLIST graphicNotation
  version               CDATA       "0.7.9"
  appVersion            CDATA       "0.7.9"
>


<!-- =================================================================== -->
<!-- Properties - definition of properties for all types of diagram      -->
<!-- elements used by the graphic notation.                              -->
<!--                                                                     -->
<!-- Possible property types:                                            -->
<!--  - simple types: boolean, int, double, String                       -->
<!--  - special types: pen, brush, size                                  -->
<!--  - array                                                            -->
<!--  - composite                                                        -->
<!-- =================================================================== -->

<!ELEMENT properties (property*)>

<!ELEMENT property (tags?)>
<!ATTLIST property
  name                  CDATA       #REQUIRED 
  type                  CDATA       #REQUIRED  
  short-description     CDATA       #IMPLIED 
  value                 CDATA        
>

<!ELEMENT tags (tag+)>
<!ELEMENT tag>
<!ATTLIST tag
  name                  CDATA       #REQUIRED 
  value                 CDATA       #IMPLIED 
>

<!ELEMENT propertyRef>
<!ATTLIST propertyRef
  name                  CDATA       #REQUIRED 
  value                 CDATA        
>


<!-- =================================================================== -->
<!-- Nodes and edges                                                     -->
<!-- =================================================================== -->

<!ELEMENT nodes (node+)>
<!ELEMENT node  (propertyRef*)>
<!ATTLIST node
  type                  CDATA       #REQUIRED 
  kernelType            CDATA
  icon                  CDATA       #IMPLIED 
  isCompartment         CDATA       #IMPLIED 
>

<!ELEMENT edges (edge+)>
<!ELEMENT edge  (propertyRef*)>
<!ATTLIST edge
  type                  CDATA       #REQUIRED 
  kernelType            CDATA
  icon                  CDATA       #IMPLIED 
>

<!-- =================================================================== -->
<!-- ViewOptions, ViewBuilder                                            -->
<!-- =================================================================== -->

<!ELEMENT viewOptions (property*)>
<!ATTLIST viewOptions
>

<!ELEMENT viewBuilder (nodeView*)>
<!ATTLIST viewBuilder
  prototype             CDATA       #REQUIRED 
>

<!ELEMENT nodeView>
<!ATTLIST nodeview
  type                  CDATA       #REQUIRED 
>


<!-- =================================================================== -->
<!-- Semantic controller                                                 -->
<!-- =================================================================== -->

<!ELEMENT semanticController (canAccept?, isResizable?, move?)>
<!ATTLIST semanticController
  prototype             CDATA       #REQUIRED 
>

<!ELEMENT canAccept>
<!ELEMENT isResizable>
<!ELEMENT move>


<!-- =================================================================== -->
<!-- Icons                                                               -->
<!-- =================================================================== -->

<!ELEMENT icons (icon*)>

<!ELEMENT icon>
<!ATTLIST icon
  name                  CDATA       #REQUIRED 
>


<!-- =================================================================== -->
<!-- Examples                                                            -->
<!-- =================================================================== -->

<!ELEMENT examples (example*)>

<!ELEMENT example (diagram)>
<!ATTLIST example
  name                  CDATA       #REQUIRED 
>
