SDT XSD
<?xml version="1.0" encoding="UTF-8"?>
<!--version 0.8, Sept.10, 2009, By Yan Tang, VUB STARLab-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="SDT">
<xs:annotation>
<xs:documentation>the root element </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="purpose"/>
<xs:element ref="MetaSDT" minOccurs="0"/>
<xs:element ref="condition"/>
<xs:element ref="action"/>
<xs:element ref="content"/>
<xs:element ref="annotation"/>
<xs:element ref="SDTRules"/>
</xs:sequence>
<xs:attribute name="title" type="xs:string" use="optional"/>
<xs:attribute name="date" type="xs:date" use="required"/>
<xs:attribute name="author" type="xs:string" use="optional"/>
<xs:attribute name="conditionNbr" type="xs:unsignedInt" use="required"/>
<xs:attribute name="actionNbr" type="xs:unsignedInt" use="required"/>
<xs:attribute name="columnNbr" type="xs:unsignedInt" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="purpose">
<xs:annotation>
<xs:documentation>purpose of the semantic decision table</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MetaSDT">
<xs:annotation>
<xs:documentation>the SDTs that contain the meta rules of this SDT</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="MetaSDTFile" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MetaSDTFile">
<xs:annotation>
<xs:documentation>file locations of meta SDTs</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="condition">
<xs:annotation>
<xs:documentation>conditions of the decision table</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="label" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="action">
<xs:annotation>
<xs:documentation>actions of the decision table</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="label" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="label">
<xs:annotation>
<xs:documentation>the label of the decision item - condition or action</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="content">
<xs:annotation>
<xs:documentation>the table content</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="cell" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>a table cell</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="cell">
<xs:annotation>
<xs:documentation>a table row</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="xposition" type="xs:int" use="required"/>
<xs:attribute name="yposition" type="xs:int" use="required"/>
<xs:attribute name="item" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="annotation">
<xs:annotation>
<xs:documentation>annotation result</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="annotated" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="annotated">
<xs:annotation>
<xs:documentation>an annotated item</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="DecisionItem"/>
<xs:element ref="Target"/>
</xs:sequence>
<xs:attribute name="time" type="xs:dateTime" use="optional"/>
<xs:attribute name="relation" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="DecisionItem">
<xs:annotation>
<xs:documentation>decision item that is mapped to a concept in an ontology</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Target">
<xs:annotation>
<xs:documentation>the mapped concept in the ontology</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="context" type="xs:string" use="required"/>
<xs:attribute name="URI" type="xs:anyURI" use="optional" default="http://starlab.vub.ac.be/DOGMA"/>
<xs:attribute name="conceptName" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="SDTRules">
<xs:annotation>
<xs:documentation>sdt rules include commitment in ORM ML and ORM+</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0">
<xs:element ref="SDRule" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="FileName" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<!--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:string"/>
<xs:attribute name="type" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Object">
<xs:complexType mixed="true">
<xs:attribute name="Name" type="xs:string" use="optional"/>
<xs:attribute name="type" type="xs:string" 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:string"/>
</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:string"/>
<xs:attribute name="Object" type="xs:string"/>
<xs:attribute name="Role" type="xs:string"/>
</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:integer" use="optional"/>
<xs:attribute name="Minimum" type="xs:integer" use="optional"/>
<xs:attribute name="direction" type="xs:string" use="required"/>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
</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:string" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</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>
</xs:schema>
