Home

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>