<?xml version='1.0' encoding='utf-8' ?> <!-- Document Type Definition for KOMET's XML conversation: KometML --> <!ELEMENT komet (request | response)> <!ELEMENT response (dataTree | editTree | error | resultTree | solverTree | success | valueList)> <!ELEMENT request (dataTree | editTree | register | resultTree | solverTree | unRegister | valueList | writeEditTree)> <!-- For Error handling the Server can create an error message embedded --> <!-- in KometML --> <!ELEMENT error EMPTY> <!ATTLIST error id CDATA #REQUIRED name CDATA #REQUIRED> <!-- Successful requests can cause the server to create a success --> <!-- message in KometML --> <!ELEMENT success EMPTY> <!ATTLIST success id CDATA #REQUIRED name CDATA #REQUIRED> <!-- The ResultTree Request consists of an empty resultTree tag, --> <!-- whereas the Response is populated with the tags: --> <!-- solver, subSolver, resultSet and result --> <!ELEMENT resultTree (solver*)> <!ATTLIST resultTree id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT solver (subSolver | resultSet)+> <!ATTLIST solver id CDATA #REQUIRED name CDATA #REQUIRED active CDATA #IMPLIED> <!ELEMENT subSolver (subSolver | resultSet)+> <!ATTLIST subSolver id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT resultSet (result)+> <!ATTLIST resultSet id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT result EMPTY> <!ATTLIST result id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #IMPLIED key CDATA #IMPLIED class CDATA #IMPLIED ioTtype CDATA #IMPLIED dataType CDATA #IMPLIED scope CDATA #IMPLIED unit CDATA #IMPLIED belongsTo CDATA #IMPLIED value CDATA #IMPLIED> <!-- The dataTree Request contains several item tags, --> <!-- the Response contains table tags, which contain the tags: --> <!-- column and keyColumn --> <!ELEMENT dataTree (item | table)+> <!ELEMENT table (keyColumn+, column+)> <!ATTLIST table id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED> <!ELEMENT column EMPTY> <!ATTLIST column id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED class CDATA #IMPLIED belongsTo CDATA #IMPLIED scope CDATA #IMPLIED unit CDATA #IMPLIED> <!ELEMENT keyColumn EMPTY> <!ATTLIST keyColumn id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED key CDATA #IMPLIED> <!ELEMENT item EMPTY> <!ATTLIST item class CDATA #REQUIRED belongsTo CDATA #REQUIRED scope CDATA #IMPLIED unit CDATA #IMPLIED> <!-- The valueList Request contains a values tag which holds the query --> <!-- statement and the number of columns that are columns selected --> <!-- The Response filles the values tag with the rows and columns --> <!-- returned by the the query: row and valueItem --> <!ELEMENT valueList (values)> <!ATTLIST valueList id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT values (row)+> <!ATTLIST values id CDATA #IMPLIED name CDATA #IMPLIED num CDATA #REQUIRED statement CDATA #REQUIRED> <!ELEMENT row (valueItem)+> <!ATTLIST row id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT valueItem EMPTY> <!ATTLIST valueItem id CDATA #IMPLIED name CDATA #IMPLIED value CDATA #REQUIRED> <!-- The SolverTree Request consists of an empty solverTree tag, --> <!-- whereas the Response is populated with the tags: --> <!-- solverSet and solverPgm --> <!ELEMENT solverTree (solverSet*)> <!ATTLIST solverTree id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT solverSet (solverPgm | solverSet)+> <!ATTLIST solverSet id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT solverPgm EMPTY> <!ATTLIST solverPgm id CDATA #REQUIRED name CDATA #REQUIRED prgName CDATA #IMPLIED> <!-- The writeSolverData Request is used to write back te edited --> <!-- Solver infomation to the database. This is only the information --> <!-- whether or not the solver should be started. Like the solverTree, --> <!-- it is populated with the tags: --> <!-- solverSet and solverPgm --> <!ELEMENT writeSolverData (solverSet*)> <!ATTLIST writeSolverData id CDATA #IMPLIED name CDATA #IMPLIED> <!-- The editTree Request consists of an empty editTree tag, whereas --> <!-- the Response is populated with the tags: --> <!-- editSolver, editSubSolver editTable and editItem --> <!ELEMENT editTree (editSolver*)> <!ATTLIST editTree id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT editSolver (editSubSolver | editTable)+> <!ATTLIST editSolver id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT editSubSolver (editSubSolver | editTable)+> <!ATTLIST editSubSolver id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT editTable (editItem)+> <!ATTLIST editTable id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED> <!ELEMENT editItem EMPTY> <!ATTLIST editItem id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED class CDATA #REQUIRED value CDATA #REQUIRED> <!-- The writeEditTree Request is used to write the edited values back --> <!-- to the database. Like the editTree, it is populated with the tags: --> <!-- editSolver, editSubSolver editTable and editItem --> <!ELEMENT writeEditTree (editSolver*)> <!ATTLIST eriteEditTree id CDATA #IMPLIED name CDATA #IMPLIED> <!-- These Tags implement the data structure needed for registering --> <!-- solvers, subsolvers resultsets and results --> <!-- Moreover, both solver dependencies and relations between tables --> <!-- (which are here defined as resultsets) can be modelled --> <!-- Each result encapsulates exactly one Ontology-Tag that describes --> <!-- the Ontology-Attributes stored in the [solver].owl file at the --> <!-- server side --> <!ELEMENT register (regSolver+)> <!ATTLIST register id CDATA #IMPLIED name CDATA #IMPLIED> <!ELEMENT regSolver ((regSubSolver | regResultSet)+, regRequiredResult*, regRelation*)> <!ATTLIST regSolver id CDATA #REQUIRED name CDATA #REQUIRED namespace CDATA #REQUIRED visible CDATA #REQUIRED> <!ELEMENT regSubSolver (regSubSolver | regResultSet)+> <!ATTLIST regSubSolver id CDATA #REQUIRED name CDATA #REQUIRED visible CDATA #REQUIRED> <!ELEMENT regResultSet (regResult)+> <!ATTLIST regResultSet id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED visible CDATA #REQUIRED editable CDATA #IMPLIED> <!ELEMENT regResult (regOntology)+> <!ATTLIST regResult id CDATA #REQUIRED name CDATA #REQUIRED dbName CDATA #REQUIRED key CDATA #REQUIRED visible CDATA #REQUIRED> <!ELEMENT regOntology EMPTY> <!ATTLIST regOntology class CDATA #REQUIRED ioType CDATA #REQUIRED dataType CDATA #REQUIRED scope CDATA #REQUIRED unit CDATA #REQUIRED belongsTo CDATA #REQUIRED accuracy CDATA #IMPLIED> <!ELEMENT regRelation (regForeignKey)+> <!ATTLIST regRelation id CDATA #REQUIRED sourceResultSetID CDATA #REQUIRED destinationResultSetID CDATA #REQUIRED> <!ELEMENT regForeignKey EMPTY> <!ATTLIST regForeignKey id CDATA #REQUIRED> <!ELEMENT regRequiredResult EMPTY> <!ATTLIST regRequiredResult class CDATA #REQUIRED belongsTo CDATA #REQUIRED scope CDATA #IMPLIED unit CDATA #IMPLIED accuracy CDATA #IMPLIED> <!-- The unRegister Request ist just empty tag pointing to the solver --> <!-- to be unregisterd with its id attribute --> <!ELEMENT unRegister EMPTY> <!ATTLIST unRegister id CDATA #REQUIRED>