Home

SDRule-ML XSD




<!--SDRule-L-->

<xs:element name="SDRule">

                <xs:complexType>

                                <xs:sequence>

                                                <xs:element ref="Object" maxOccurs="unbounded"/>

                                                <xs:element ref="Predicate" maxOccurs="unbounded"/>

                                                <xs:element ref="Constraint" minOccurs="0" maxOccurs="unbounded"/>

                                                <xs:choice maxOccurs="unbounded">

                                                                <xs:element ref="Rule"/>

                                                                <xs:element ref="Set"/>

                                                </xs:choice>

                                </xs:sequence>

                                <xs:attribute name="name" use="required"/>

                </xs:complexType>

</xs:element>

<xs:element name="Constraint">

                <xs:complexType>

                                <xs:choice>

                                                <xs:element ref="Value" maxOccurs="unbounded"/>

                                                <xs:element ref="Object_Role" maxOccurs="unbounded"/>

                                </xs:choice>

                                <xs:attribute name="Object" type="xs:NCName"/>

                                <xs:attribute name="type" type="xs:NCName" use="required"/>

                </xs:complexType>

</xs:element>

<xs:element name="Object">

                <xs:complexType mixed="true">

                                <xs:attribute name="Name" type="xs:NCName" use="optional"/>

                                <xs:attribute name="type" type="xs:NCName" use="optional"/>

                                <xs:attribute name="CI" type="xs:anyURI" use="optional"/>

                </xs:complexType>

</xs:element>

<xs:element name="Predicate">

                <xs:complexType mixed="true">

                                <xs:sequence>

                                                <xs:element ref="Object_Role" minOccurs="0" maxOccurs="unbounded"/>

                                </xs:sequence>

                                <xs:attribute name="id" type="xs:NCName"/>

                </xs:complexType>

</xs:element>

<xs:element name="Value" type="xs:NCName"/>

<xs:element name="Object_Role">

                <xs:complexType mixed="true">

                                <xs:choice minOccurs="0">

                                                <xs:element ref="Object"/>

                                </xs:choice>

                                <xs:attribute name="ID" type="xs:NCName"/>

                                <xs:attribute name="Object" type="xs:NCName"/>

                                <xs:attribute name="Role" type="xs:NCName"/>

                </xs:complexType>

</xs:element>

<xs:element name="Rule">

                <xs:complexType mixed="true">

                                <xs:choice minOccurs="0" maxOccurs="unbounded">

                                                <xs:element ref="Atom" maxOccurs="unbounded"/>

                                                <xs:element ref="head" minOccurs="0"/>

                                                <xs:element ref="body" minOccurs="0"/>

                                </xs:choice>

                                <xs:attribute name="Maximum" type="xs:NCName"/>

                                <xs:attribute name="Minimum" type="xs:integer"/>

                                <xs:attribute name="direction" type="xs:NCName"/>

                                <xs:attribute name="id" type="xs:NCName"/>

                                <xs:attribute name="type" type="xs:string"/>

                </xs:complexType>

</xs:element>

<xs:element name="body">

                <xs:complexType>

                                <xs:choice>

                                                <xs:element ref="Union"/>

                                                <xs:element ref="And"/>

                                                <xs:element ref="Equivalent"/>

                                                <xs:element ref="Neg"/>

                                                <xs:element ref="Or"/>

                                                <xs:element ref="Atom"/>

                                                <xs:element ref="Rule"/>

                                </xs:choice>

                </xs:complexType>

</xs:element>

<xs:element name="Or">

                <xs:complexType>

                                <xs:sequence>

                                                <xs:element ref="Atom" minOccurs="2" maxOccurs="unbounded"/>

                                </xs:sequence>

                </xs:complexType>

</xs:element>

<xs:element name="And">

                <xs:complexType>

                                <xs:sequence>

                                                <xs:element ref="Atom" minOccurs="2" maxOccurs="unbounded"/>

                                </xs:sequence>

                </xs:complexType>

</xs:element>

<xs:element name="Equivalent">

                <xs:complexType>

                                <xs:sequence>

                                                <xs:element ref="Atom" maxOccurs="unbounded"/>

                                </xs:sequence>

                </xs:complexType>

</xs:element>

<xs:element name="Neg">

                <xs:complexType>

                                <xs:sequence maxOccurs="unbounded">

                                                <xs:element ref="Atom"/>

                                </xs:sequence>

                </xs:complexType>

</xs:element>

<xs:element name="head">

                <xs:complexType>

                                <xs:choice>

                                                <xs:element ref="Atom"/>

                                                <xs:element ref="And"/>

                                                <xs:element ref="Or"/>

                                                <xs:element ref="Neg"/>

                                                <xs:element ref="Rule"/>

                                </xs:choice>

                </xs:complexType>

</xs:element>

                <xs:element name="Set">

                <xs:complexType mixed="true">

                                <xs:sequence>

                                                <xs:element ref="Predicate" minOccurs="0" maxOccurs="unbounded"/>

                                </xs:sequence>

                                <xs:attribute name="id" type="xs:NCName"/>

                                <xs:attribute name="name"/>

                </xs:complexType>

</xs:element>

<xs:element name="Atom">

                <xs:complexType mixed="true">

                                <xs:choice minOccurs="0" maxOccurs="unbounded">

                                                <xs:element ref="Object" minOccurs="0"/>

                                                <xs:element ref="Predicate" minOccurs="0"/>

                                                <xs:element ref="Rule"/>

                                                <xs:element ref="Set" minOccurs="0"/>

                                                <xs:element ref="Value" minOccurs="0"/>

                                </xs:choice>

                </xs:complexType>

</xs:element>

<xs:element name="Union">

                <xs:complexType>

                                <xs:choice minOccurs="0" maxOccurs="unbounded">

                                                <xs:element ref="Atom"/>

                                                <xs:element ref="Union"/>

                                </xs:choice>

                </xs:complexType>

</xs:element>