[isidorus-cvs] r338 - in trunk/src: . model unit_tests

Lukas Giessmann lgiessmann at common-lisp.net
Fri Nov 12 21:57:52 UTC 2010


Author: lgiessmann
Date: Fri Nov 12 16:57:51 2010
New Revision: 338

Log:
added the new textgrid-TMCL as XTM 2.0 file

Added:
   trunk/src/unit_tests/textgrid.xtm
   trunk/src/unit_tests/textgrid_old.xtm
Modified:
   trunk/src/isidorus.asd
   trunk/src/model/trivial-queries.lisp

Modified: trunk/src/isidorus.asd
==============================================================================
--- trunk/src/isidorus.asd	(original)
+++ trunk/src/isidorus.asd	Fri Nov 12 16:57:51 2010
@@ -107,7 +107,9 @@
 				     "json"
 				     "threading"))
 	       (:module "unit_tests"
-			:components ((:static-file "dangling_topicref.xtm")
+			:components ((:static-file "textgrid.xtm")
+				     (:static-file "textgrid_old.xtm")
+				     (:static-file "dangling_topicref.xtm")
 				     (:static-file "inconsistent.xtm")               
 				     (:static-file "notificationbase.xtm")           
 				     (:static-file "notification_merge1.xtm")           

Modified: trunk/src/model/trivial-queries.lisp
==============================================================================
--- trunk/src/model/trivial-queries.lisp	(original)
+++ trunk/src/model/trivial-queries.lisp	Fri Nov 12 16:57:51 2010
@@ -338,4 +338,4 @@
     (declare (integer revision))
     (let ((all-supertypes (supertypes construct :revision revision)))
       (when (find supertype all-supertypes)
-	all-supertypes))))
\ No newline at end of file
+	all-supertypes))))

Added: trunk/src/unit_tests/textgrid.xtm
==============================================================================
--- (empty file)
+++ trunk/src/unit_tests/textgrid.xtm	Fri Nov 12 16:57:51 2010
@@ -0,0 +1,4826 @@
+<?xml version="1.0" encoding="utf-8"?>
+<tm:topicMap version="2.0" xmlns:tm="http://www.topicmaps.org/xtm/">
+  <!-- ===================================================================== -->
+  <!-- === TMCL meta-model topics ========================================== -->
+  <!-- ===================================================================== -->
+  <tm:topic id="topictype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-type"/>
+    <!-- naming of psis: Prague, March 25-27, 2008, page 12 -->
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="occurrencetype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="associationtype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="roletype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="nametype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="scopetype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/scope-type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- role types used to include the topictype metatypes in associations -->
+  <tm:topic id="topictype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="occurrencetype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="associationtype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="roletype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="otherroletype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/other-role-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="othertopictype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/other-topic-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="nametype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="scopetype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/scope-type-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- the constraint roletype -->
+  <tm:topic id="constraint-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/constraint-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- ===================================================================== -->
+  <!-- === TMCL model topics =============================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- the constraint topic is the common supertype of all constraint types
+       defined by TMCL. -->
+  <tm:topic id="constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- this occurrence type is used to type a single occurrence on each
+       constraint type. This occurrence holds the TMQL value used to 
+       evaluate constraint instances for validity. -->
+  <tm:topic id="validation-expression">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/validation-expression"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- the association type used to bind different components into a
+       constraint -->
+  <tm:topic id="applies-to">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/applies-to"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationtype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- the card min facet is used on many constraint types -->
+  <tm:topic id="card-min">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/card-min"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- the card max facet is used on many constraint types -->
+  <tm:topic id="card-max">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/card-max"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- the reg exp facet is used on many constraint types -->
+  <tm:topic id="regexp">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/reg-exp"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- the datatype facet is used on many constraint types -->
+  <tm:topic id="datatype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/datatype"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- ===================================================================== -->
+  <!-- === topics for super-subtype-associations (ako) ===================== -->
+  <!-- ===================================================================== -->
+
+  <tm:topic id="supertype-subtype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/iso13250/model/supertype-subtype"/>
+  </tm:topic>
+
+  <tm:topic id="supertype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/iso13250/model/supertype"/>
+  </tm:topic>
+
+  <tm:topic id="subtype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/iso13250/model/subtype"/>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === schema type and ?schema definitions ============================= -->
+  <!-- ===================================================================== -->
+
+  <!-- constraints can be bound to a schema -->
+  <tm:topic id="schema">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/schema"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- ===================================================================== -->
+  <!-- === TMCL constraint types =========================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- topictype-constraint -->
+  <tm:topic id="topictype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-type-constraint"/>
+  </tm:topic>
+  <!-- standard constraints doesn't own a validation-expression-occurrence: Prague, March 25-27, 2008, page 34-36 -->
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#topictype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- associationtype-constraint -->
+  <tm:topic id="associationtype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#associationtype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- roletype-constraint -->
+  <tm:topic id="roletype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#roletype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- occurrencetype-constraint -->
+  <tm:topic id="occurrencetype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#occurrencetype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- nametype-constraint -->
+  <tm:topic id="nametype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#nametype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- abstract-topictype-constraint -->
+  <tm:topic id="abstract-topictype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/abstract-topic-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#abstract-topictype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- exclusive-instance -->
+  <tm:topic id="exclusive-instance">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/exclusive-instance"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#exclusive-instance"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+  <!-- ===================================================================== -->
+  <!-- === subjectidentifier/locator constraints =========================== -->
+  <!-- ===================================================================== -->
+
+  <!-- subjectlocator-constraint -->
+  <tm:topic id="subjectlocator-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/subject-locator-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#subjectlocator-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier-constraint -->
+  <tm:topic id="subjectidentifier-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/subject-identifier-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#subjectidentifier-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === names/occurrences/associations/association roles ================ -->
+  <!-- ===================================================================== -->
+
+  <!-- topicname-constraint -->
+  <tm:topic id="topicname-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-name-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#topicname-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- topicoccurrence-constraint -->
+  <tm:topic id="topicoccurrence-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-occurrence-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- occurrencedatatype-constraint -->
+  <tm:topic id="occurrencedatatype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-datatype-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#occurrencedatatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- uniqueoccurrence-constraint -->
+  <tm:topic id="uniqueoccurrence-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/unique-occurrence-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#uniqueoccurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- associationrole-constraint -->
+  <tm:topic id="associationrole-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-role-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#associationrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- roleplayer-constraint -->
+  <tm:topic id="roleplayer-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-player-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#roleplayer-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- otherrole-constraint -->
+  <tm:topic id="otherrole-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/other-role-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === scopes ========================================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- nametypescope-constraint -->
+  <tm:topic id="nametypescope-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type-scope-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#nametypescope-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- occurrencetypescope-constraint -->
+  <tm:topic id="occurrencetypescope-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type-scope-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#occurrencetypescope-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- associationtypescope-constraint -->
+  <tm:topic id="associationtypescope-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type-scope-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#supertype-subtype"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#subtype"/>
+      </tm:type>
+      <tm:topicRef href="#associationtypescope-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#supertype"/>
+      </tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: type handling ==================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- only topics that are instances of topictype are allowed as topic
+       types -->
+  <tm:topic id="ttc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/ttc"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype-constraint"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of associationtype are allowed as
+       association types -->
+  <tm:topic id="atc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/atc"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationtype-constraint"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of roletype are allowed as
+       association role types -->
+  <tm:topic id="rtc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/rtc"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype-constraint"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of occurrencetype are allowed as
+       occurrence types -->
+  <tm:topic id="otc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/otc"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype-constraint"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of nametype are allowed as
+       name types -->
+  <tm:topic id="ntc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/ntc"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#nametype-constraint"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: base types ======================================= -->
+  <!-- ===================================================================== -->
+
+  <!-- ===================================================================== -->
+  <!-- === topictype service =============================================== -->
+  <!-- ===================================================================== -->
+  <tm:topic id="service">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+  
+  <!-- name types for the topictype service -->
+  <tm:topic id="service-name">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Name"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#nametype"/>
+    </tm:instanceOf>
+  </tm:topic>
+  
+  <!-- occurrence types for the topictype service-->
+  <tm:topic id="service-operation">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Operation"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-type">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-description">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Description"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-keywords">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Keywords"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="description-location-uri">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Description-Location-URI"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="inline-description-location">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Inline-Description-Location"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="description-location-body">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Description-Location-Body"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="target-namespace">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Target-Namespace"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="use-target-ns">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Use-Target-NS"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-owner">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Owner"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-identifier">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Identifier"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="textgrid-url">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Textgrid-URL"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="tg-approved">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/TG-Approved"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === topictype hash-object =========================================== -->
+  <!-- ===================================================================== -->
+  <tm:topic id="hash-object">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Hash-Object"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- occurrence types for the topic type hash-object -->
+  <tm:topic id="hash-type">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Hash-Type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="hash-key">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Hash-Key"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="hash-value">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Hash-Value"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="hash-environment">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Hash-Environment"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === topictype parameter ============================================ -->
+  <!-- ===================================================================== -->
+  <tm:topic id="parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- name types for the topic type parameter -->
+  <tm:topic id="parameter-name">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Name"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#nametype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- occurrence types for the topic type parameter -->
+  <tm:topic id="parameter-type">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-id">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-ID"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-param">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Param"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-mime-type">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Mime-Type"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-multiple">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Multiple"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-crud">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Crud"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-needs-b64-encoding">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Needs-B64-Encoding"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === topictype parameter-config ====================================== -->
+  <!-- ===================================================================== -->
+  <tm:topic id="parameter-config">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Config"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topictype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- name types for the topic type parameter -->
+  <tm:topic id="parameter-config-name">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Config-Name"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#nametype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- occurrence types for the topic type parameter -->
+  <tm:topic id="parameter-config-id">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Config-ID"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-config-default">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Config-Default"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-config-form">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Config-Form"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-config-data">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Config-Data"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencetype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === association type has-hash ======================================= -->
+  <!-- ===================================================================== -->
+
+  <!-- association has-hash -->
+  <tm:topic id="has-hash">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Has-Hash"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationtype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- roles -->
+  <tm:topic id="service-role">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Service-Role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="hash-role">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Hash-Role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === association type has-parameter ================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- association has-parameter -->
+  <tm:topic id="has-parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Has-parameter"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationtype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- roles -->
+  <!-- service role as in has-hash-->
+
+  <tm:topic id="parameter-role">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Parameter-Role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+
+  <!-- ===================================================================== -->
+  <!-- === association type has-config ===================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- association has-config -->
+  <tm:topic id="has-config">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Has-config"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationtype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <!-- roles -->
+  <!-- parameter role as in has-parameter-->
+
+  <tm:topic id="config-role">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/Config-role"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roletype"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: exclusive type constraint ======================== -->
+  <!-- ===================================================================== -->
+  
+  <!-- instances composed of the types service, hash-object, parameter,
+       parameter-config are not allowed-->  
+  <tm:topic id="exc">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/exc"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#exclusive-instance"/>
+    </tm:instanceOf>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: subjectIdentifier constraints ==================== -->
+  <!-- ===================================================================== -->
+  <!-- a topic of the type service has to have a psi of the form
+       "^http://textgrid.org/serviceregistry/service/.+$",
+       a topic of the type parameter has to have a psi of the form
+       "^http://textgrid.org/serviceregistry/parameter/.+$",
+       a topic of the type hash-object has to have a psi of the form
+       "^http://textgrid.org/serviceregistry/hash/.+$",
+       and a topic of the parameter-config poem has to have a psi of the form
+       "^http://some.where/psis/parameter-config/.+$".
+       further all topics can have mor psis of the form "^.+$" -->
+
+  <!-- subjectidentifier of service -->
+  <tm:topic id="sic-service">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/sic-service"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#subjectidentifier-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/service/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#sic-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier of hash-object -->
+  <tm:topic id="sic-hash-object">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/sic-hash-object"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#subjectidentifier-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/hash/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#sic-hash-object"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier of parameter -->
+  <tm:topic id="sic-parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/sic-parameter"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#subjectidentifier-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/parameter/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#sic-parameter"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier of parameter-config -->
+  <tm:topic id="sic-parameter-config">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/sic-parameter-config"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#subjectidentifier-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/parameter-config/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#sic-parameter-config"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: subjectLocator constraints ======================= -->
+  <!-- ===================================================================== -->
+  <!-- all instances of service, parameter, hash-object and parameter-config
+       are not allowed to own a subjectLocator -->
+
+  <tm:topic id="slc-all">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/slc-all"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#subjectlocator-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.*</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#slc-all"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#slc-all"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+  
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#slc-all"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+  
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#slc-all"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: name constraints ================================= -->
+  <!-- ===================================================================== -->
+  <!-- instances of the type service has to own a name of the type service-name.
+       it must be valid to the regular expression ".+".
+       instances of the type parameter has one name of the type parameter-name
+       with the regular expression ".+" -->
+
+  <!-- service service name -->
+  <tm:topic id="service-name-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-name-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicname-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#nametype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-name"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter parameter name -->
+  <tm:topic id="parameter-name-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-name-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicname-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#nametype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-name"/>
+    </tm:role>
+  </tm:association>
+  
+  <!-- parameter-config parameter-config name -->
+  <tm:topic id="parameter-config-name-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-config-name-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicname-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#nametype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-name"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: occurence constraints ============================ -->
+  <!-- ===================================================================== -->
+  <!-- the topictype service owns the foolowing occurrences:
+        *service-operation => xml:string => ".+" => {1}
+        *sericve-type => xml:string => ".+" => {1}
+        *service-description => xml:string => ".+" => {1}
+        *service-keywords => xml:string => ".+" => {0,1}
+        *description-location-uri => xml:anyUri => ".+" => {0,1}
+        *inline-description-location => xml:string => ".+" => {0,1}
+        *description-loction-body => xml:string => ".+" => {0,1}
+        *target-namespace => xml:string => ".+" => {0,1}
+        *use-target-ns => xml:Boolean => "(true)|(false)" => {0,1}
+        *service-owner => xml:string => ".+" => {1}
+        *service-identifier => xml:string => ".+" => {1} => unique-constraint
+        *textgrid-url => xml:anyUri => ".+" => {1}
+        *tg-approved => xml:Boolean => "(true)|(false)" => {1}
+       
+       the topictype hash-object owns the following occurrences:
+        *hash-type => xml:string => ".+" => {1}
+        *hash-key => xml:string => ".+" => {1}
+        *hash-value => xml:string => ".+" => {1}
+        *hash-environment => xml:string => ".+" => {1}
+        
+       the topictype parameter owns the following occurrences:
+        *parameter-type => xml:string => ".+" => {1}
+        *parameter-id => xml:string => ".+" => {1} => unique-constraint
+        *parameter-param => xml:string => ".+" => {1}
+        *parameter-mime-type => xml:string => ".+" => {1}
+        *parameter-multiple => xml:Boolean => "(true)|(false)" => {0,1}
+        *parameter-crud => xml:Boolean => "(true)|(false)" => {0,1}
+        *parameter-needs-b64-encoding => xml:Boolean => "(true)|(false)" => {1}
+        
+       the topictype parameter-config owns the following occurrences:
+        *parameter-config-id => xml:string => ".+" => {1} => unique-constraint
+        *parameter-config-default => xml:string => "(true)|(false)" => {0,1}
+        *parameter-config-form => xml:string => ".+" => {1}
+        *parameter-config-data => xml:string => ".+" => {0,1}-->
+
+  <!-- unique occurence constraint -->
+  <tm:topic id="unique-id-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/unique-id-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#uniqueoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.*</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+  
+  <!-- occurrence datatypes -->
+  <tm:topic id="string-datatype-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/string-datatype-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencedatatype-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#datatype"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#string</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="uri-datatype-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/uri-datatype-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencedatatype-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#datatype"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#anyUri</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="boolean-datatype-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/boolean-datatype-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#occurrencedatatype-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#datatype"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#boolean</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+  
+  <!-- service operation occurrence -->
+  <tm:topic id="service-operation-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-operation-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-operation-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-operation-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-operation"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-operation"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service type occurrence -->
+  <tm:topic id="service-type-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-type-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-type"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-type"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service description occurrence -->
+  <tm:topic id="service-description-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-description-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-description-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-description-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-description"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-description"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service keywords occurrence -->
+  <tm:topic id="service-keywords-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-keywords-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-keywords-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-keywords-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-keywords"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-keywords"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service description location uri occurrence -->
+  <tm:topic id="description-location-uri-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/description-location-uri-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-uri-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-uri-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-uri"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#uri-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-uri"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service inline description location occurrence -->
+  <tm:topic id="inline-description-location-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/inline-description-location-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(true)|(false)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#inline-description-location-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#inline-description-location-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#inline-description-location"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#inline-description-location"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service description location body occurrence -->
+  <tm:topic id="description-location-body-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/description-location-body-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-body-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-body-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-body"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#description-location-body"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service target namespace occurrence -->
+  <tm:topic id="target-namespace-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/target-namespace-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#target-namespace-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#target-namespace-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#target-namespace"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#target-namespace"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service use target ns occurrence -->
+  <tm:topic id="use-target-ns-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/use-target-ns-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(true)|(false)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#use-target-ns-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#use-target-ns-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#use-target-ns"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#use-target-ns"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service owner occurrence -->
+  <tm:topic id="service-owner-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-owner-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-owner-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-owner-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-owner"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-owner"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service identifier occurrence -->
+  <tm:topic id="service-identifier-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/service-identifier-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-identifier-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-identifier-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-identifier"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-identifier"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#unique-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#unique-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-identifier"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service textgrid url occurrence -->
+  <tm:topic id="textgrid-url-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/textgrid-url-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#textgrid-url-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#textgrid-url-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#textgrid-url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#uri-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#textgrid-url"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- service tg-approved occurrence -->
+  <tm:topic id="tg-approved-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/tg-approved-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(true)|(false)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#tg-approved-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#tg-approved-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#tg-approved"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#tg-approved"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- hash-object type occurrence -->
+  <tm:topic id="hash-type-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/hash-type-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-type"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-type"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- hash-object key occurrence -->
+  <tm:topic id="hash-key-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/hash-key-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-key-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-key-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-key"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-key"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- hash-object value occurrence -->
+  <tm:topic id="hash-value-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/hash-value-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-value-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-value-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-value"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-value"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- hash-object environment occurrence -->
+  <tm:topic id="hash-environment-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/hash-environment-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-environment-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-environment-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-environment"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-environment"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter type occurrence -->
+  <tm:topic id="parameter-type-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-type-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-type"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-type"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter id occurrence -->
+  <tm:topic id="parameter-id-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-id-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-id"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-id"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#unique-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#unique-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-id"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter param occurrence -->
+  <tm:topic id="parameter-param-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-param-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-param-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-param-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-param"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-param"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter mime type occurrence -->
+  <tm:topic id="parameter-mime-type-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-mime-type-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-mime-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-mime-type-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-mime-type"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-mime-type"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter multiple occurrence -->
+  <tm:topic id="parameter-multiple-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-multiple-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(true)|(false)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-multiple-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-multiple-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-multiple"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-multiple"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter crud occurrence -->
+  <tm:topic id="parameter-crud-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-crud-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(true)|(false)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-crud-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-crud-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-crud"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-crud"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter needs b64 encoding occurrence -->
+  <tm:topic id="parameter-needs-b64-encoding-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-needs-b64-encoding-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(false)|(true)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-needs-b64-encoding-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-needs-b64-encoding-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-needs-b64-encoding"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-needs-b64-encoding"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter-config id occurrence -->
+  <tm:topic id="parameter-config-id-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-config-id-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-id"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-id"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#unique-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#unique-id-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-id"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter-config default occurrence -->
+  <tm:topic id="parameter-config-default-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-config-default-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">(false)|(true)</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-default-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-default-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-default"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#boolean-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-default"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter-config form occurrence -->
+  <tm:topic id="parameter-config-form-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-config-form-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-form-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-form-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-form"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-form"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- parameter-config data occurrence -->
+  <tm:topic id="parameter-config-data-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-config-data-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#regexp"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-data-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-data-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-data"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#occurrencetype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config-data"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: association (-role) constraints ================== -->
+  <!-- ===================================================================== -->
+  <!-- the topictype service is related with the topictype hash-object via an
+       association of the type has-hash with the roles service-role|service and
+       hash-role|hash-object -->
+
+  <!-- the hash role has to appear exactly once in an association of type
+       has-hash -->
+  <tm:topic id="hash-role-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/hash-role-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationrole-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- the hash role owns a player of the type hash-object -->
+  <tm:topic id="hash-role-player-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/hash-role-player-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roleplayer-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- otherrole-constraint:
+       If there is a role of the type hash-role with a player of the type
+       hash-object there must be another role of the type service-role with
+       a player of the type service. -->
+  <tm:topic id="has-hash-otherrole-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/has-hash-otherrole-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#otherrole-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#hash-object"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#otherroletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-hash-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#othertopictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- the parameter role has to appear exactly once in an association of type
+       has-parameter -->
+  <tm:topic id="parameter-role-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-role-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationrole-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- the parameter role owns a player of the type hash-object -->
+  <tm:topic id="parameter-role-player-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/parameter-role-player-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roleplayer-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- otherrole-constraint:
+       If there is a role of the type parameter-role with a player of the type
+       parameter there must be another role of the type service-role with
+       a player of the type service. -->
+  <tm:topic id="has-parameter-otherrole-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/has-parameter-otherrole-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#otherrole-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#otherroletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#othertopictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- the config role has to appear exactly once in an association of type
+       has-config -->
+  <tm:topic id="config-role-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/config-role-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#associationrole-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- the config role owns a player of the type parameter-config -->
+  <tm:topic id="config-role-player-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/config-role-player-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#roleplayer-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- otherrole-constraint:
+       If there is a role of the type config-role with a player of the type
+       parameter-config there must be another role of the type parameter-role
+       with a player of the type parameter. -->
+  <tm:topic id="has-config-otherrole-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/metamodel/has-config-otherrole-constraint"/>
+    <tm:instanceOf>
+      <tm:topicRef href="#otherrole-constraint"/>
+    </tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+        <tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#associationtype-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#roletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#config-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#topictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-config"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#otherroletype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type>
+      <tm:topicRef href="#applies-to"/>
+    </tm:type>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#constraint-role"/>
+      </tm:type>
+      <tm:topicRef href="#has-config-otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type>
+        <tm:topicRef href="#othertopictype-role"/>
+      </tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+</tm:topicMap>
\ No newline at end of file

Added: trunk/src/unit_tests/textgrid_old.xtm
==============================================================================
--- (empty file)
+++ trunk/src/unit_tests/textgrid_old.xtm	Fri Nov 12 16:57:51 2010
@@ -0,0 +1,3282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tm:topicMap version="2.0" xmlns:tm="http://www.topicmaps.org/xtm/">
+  <!-- ======================================================================= -->
+  <!--  Isidorus                                                               -->
+  <!--  (c) 2008-2010 Marc Kuester, Christoph Ludwig, Lukas Georgieff          -->
+  <!--                                                                         -->
+  <!--  Isidorus is freely distributable under the LLGPL license.              -->
+  <!--  This ajax module uses the frameworks PrototypeJs and Scriptaculous,    -->
+  <!--  both are distributed under the MIT license.                            -->
+  <!--  You can find a detailed description in trunk/docs/LLGPL-LICENSE.txt,   -->
+  <!--  trunk/docs/LGPL-LICENSE.txt and in                                     -->
+  <!--  trunk/src/ajax/javascripts/external/MIT-LICENSE.txt.                   -->
+  <!-- ======================================================================= -->
+
+
+  <!-- ===================================================================== -->
+  <!-- === TMCL meta-model topics ========================================== -->
+  <!-- ===================================================================== -->
+  <tm:topic id="topictype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-type"/> <!-- naming of psis: Prague, March 25-27, 2008, page 12 -->
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="occurrencetype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="associationtype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="roletype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-type"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="nametype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="scopetype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/scope-type"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- role types used to include the topictype metatypes in associations -->
+  <tm:topic id="topictype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="occurrencetype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="associationtype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="roletype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="otherroletype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/other-role-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="othertopictype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/other-topic-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="nametype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="scopetype-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/scope-type-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- the constraint roletype -->
+  <tm:topic id="constraint-role">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/constraint-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- ===================================================================== -->
+  <!-- === TMCL model topics =============================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- the constraint topic is the common supertype of all constraint types
+       defined by TMCL. -->
+  <tm:topic id="constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+ 
+  <!-- this occurrence type is used to type a single occurrence on each
+       constraint type. This occurrence holds the TMQL value used to 
+       evaluate constraint instances for validity. -->
+  <tm:topic id="validation-expression">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/validation-expression"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- the association type used to bind different components into a
+       constraint -->
+  <tm:topic id="applies-to">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/applies-to"/>
+    <tm:instanceOf><tm:topicRef href="#associationtype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- the card min facet is used on many constraint types -->
+  <tm:topic id="card-min">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/card-min"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- the card max facet is used on many constraint types -->
+  <tm:topic id="card-max">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/card-max"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- the reg exp facet is used on many constraint types -->
+  <tm:topic id="regexp">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/reg-exp"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- the datatype facet is used on many constraint types -->
+  <tm:topic id="datatype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/datatype"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- ===================================================================== -->
+  <!-- === topics for super-subtype-associations (ako) ===================== -->
+  <!-- ===================================================================== -->
+
+  <tm:topic id="supertype-subtype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/iso13250/model/supertype-subtype"/>
+  </tm:topic>
+
+  <tm:topic id="supertype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/iso13250/model/supertype"/>
+  </tm:topic>
+
+  <tm:topic id="subtype">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/iso13250/model/subtype"/>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === schema type and schema definitions ============================== -->
+  <!-- ===================================================================== -->
+
+  <!-- constraints can be bound to a schema -->
+  <tm:topic id="schema">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/schema"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === TMCL constraint types =========================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- topictype-constraint -->
+  <tm:topic id="topictype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-type-constraint"/>
+  </tm:topic> <!-- standard constraints doesn't own a valiadtion-expression-occurrence: Prague, March 25-27, 2008, page 34-36 -->
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#topictype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- associationtype-constraint -->
+  <tm:topic id="associationtype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#associationtype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- roletype-constraint -->
+  <tm:topic id="roletype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#roletype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- occurrencetype-constraint -->
+  <tm:topic id="occurrencetype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#occurrencetype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- nametype-constraint -->
+  <tm:topic id="nametype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#nametype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- abstract-topictype-constraint -->
+  <tm:topic id="abstract-topictype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/abstract-topic-type-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#abstract-topictype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+    </tm:association>
+
+
+  <!-- exclusive-instance -->
+  <tm:topic id="exclusive-instance">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/exclusive-instance"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#exclusive-instance"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === subjectidentifier/locator constraints =========================== -->
+  <!-- ===================================================================== -->
+  
+  <!-- subjectlocator-constraint -->
+  <tm:topic id="subjectlocator-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/subject-locator-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#subjectlocator-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier-constraint -->
+  <tm:topic id="subjectidentifier-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/subject-identifier-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#subjectidentifier-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === names/occurrences/associations/association roles ================ -->
+  <!-- ===================================================================== -->
+
+  <!-- topicname-constraint -->
+  <tm:topic id="topicname-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-name-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#topicname-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- topicoccurrence-constraint -->
+  <tm:topic id="topicoccurrence-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/topic-occurrence-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#topicoccurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- occurrencedatatype-constraint -->
+  <tm:topic id="occurrencedatatype-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-datatype-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#occurrencedatatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- uniqueoccurrence-constraint -->
+  <tm:topic id="uniqueoccurrence-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/unique-occurrence-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#uniqueoccurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- associationrole-constraint -->
+  <tm:topic id="associationrole-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-role-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#associationrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- roleplayer-constraint -->
+  <tm:topic id="roleplayer-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/role-player-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#roleplayer-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- otherrole-constraint -->
+  <tm:topic id="otherrole-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/other-role-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#otherrole-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === scopes ========================================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- nametypescope-constraint -->
+  <tm:topic id="nametypescope-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/name-type-scope-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#nametypescope-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- occurrencetypescope-constraint -->
+  <tm:topic id="occurrencetypescope-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/occurrence-type-scope-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#occurrencetypescope-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- associationtypescope-constraint -->
+  <tm:topic id="associationtypescope-constraint">
+    <tm:subjectIdentifier href="http://psi.topicmaps.org/tmcl/association-type-scope-constraint"/>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#supertype-subtype"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#subtype"/></tm:type>
+      <tm:topicRef href="#associationtypescope-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#supertype"/></tm:type>
+      <tm:topicRef href="#constraint"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: type handling ==================================== -->
+  <!-- ===================================================================== -->
+
+  <!-- only topics that are instances of topictype are allowed as topic
+       types -->
+  <tm:topic id="ttc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/ttc"/>
+    <tm:instanceOf><tm:topicRef href="#topictype-constraint"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of associationtype are allowed as
+       association types -->
+  <tm:topic id="atc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/atc"/>
+    <tm:instanceOf><tm:topicRef href="#associationtype-constraint"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of roletype are allowed as
+       association role types -->
+  <tm:topic id="rtc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/rtc"/>
+    <tm:instanceOf><tm:topicRef href="#roletype-constraint"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of occurrencetype are allowed as
+       occurrence types -->
+  <tm:topic id="otc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/otc"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype-constraint"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- only topics that are instances of nametype are allowed as
+       name types -->
+  <tm:topic id="ntc">
+    <tm:subjectIdentifier href="http://some.where/constraint-psis/ntc"/>
+    <tm:instanceOf><tm:topicRef href="#nametype-constraint"/></tm:instanceOf>
+  </tm:topic>
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: base types ======================================= -->
+  <!-- ===================================================================== -->
+
+  <!-- service -->
+  <tm:topic id="service">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-name">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-name"/>
+    <tm:instanceOf><tm:topicRef href="#nametype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="description">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/description"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-type">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-type"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-environment">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-environment"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-key">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-key"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- url -->
+  <tm:topic id="url">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/url"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="url-content">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/url-content"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- parameter -->
+  <tm:topic id="parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/parameter"/>
+    <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="parameter-name">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/parameter-name"/>
+    <tm:instanceOf><tm:topicRef href="#nametype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- description is already defined for the topic-type "service" -->
+
+  <tm:topic id="default-value">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/default-value"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+  
+  <tm:topic id="necessary">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/necessary"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencetype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- association service - url -->
+  <tm:topic id="has-url">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/has-url"/>
+    <tm:instanceOf><tm:topicRef href="#associationtype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="service-role">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:topic id="url-role">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/url-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- association url - parameter -->
+  <tm:topic id="has-parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/has-parameter"/>
+    <tm:instanceOf><tm:topicRef href="#associationtype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- url-role is already defined for has-url associations -->
+  <tm:topic id="parameter-role">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/parameter-role"/>
+    <tm:instanceOf><tm:topicRef href="#roletype"/></tm:instanceOf>
+  </tm:topic>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: exclusive type constraint ======================== -->
+  <!-- ===================================================================== -->
+  <!-- same instances of the type service, url and parameter are not allowed -->
+  <tm:topic id="exc">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/exc"/>
+    <tm:instanceOf><tm:topicRef href="#exclusive-instance"/></tm:instanceOf>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#exc"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#description"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: subjectIdentifier constraints ==================== -->
+  <!-- ===================================================================== -->
+  <!-- topictype "service":
+         *psis: 1:1:"^http://textgrid.org/isidorus/.+/.+$"
+       topictype "url":
+         *psis: 1:1:"^http://textgrid.org/isidorus/url/.+$"
+       topictype "parameter"
+	 *psis: 1:1:"^http://textgrid.org/isidorus/parameter/.+$" -->
+
+  <!-- subjectidentifier of service -->
+  <tm:topic id="sic-service">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/sic-service"/>
+    <tm:instanceOf><tm:topicRef href="#subjectidentifier-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/.+/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#sic-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier of url -->
+  <tm:topic id="sic-url">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/sic-url"/>
+    <tm:instanceOf><tm:topicRef href="#subjectidentifier-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/url/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#sic-url"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- subjectidentifier of parameter -->
+  <tm:topic id="sic-parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/sic-parameter"/>
+    <tm:instanceOf><tm:topicRef href="#subjectidentifier-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^http://textgrid.org/serviceregistry/parameter/.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#sic-parameter"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: subjectLocator constraints ======================= -->
+  <!-- ===================================================================== -->
+  <!-- topictype "service":
+         *locators: 0
+       topictype "url":
+         *locators: 0
+       topictype "parameter"
+	 *locators: 0 -->
+
+  <tm:topic id="slc-service-url-parameter">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/slc-service-url-parameter"/>
+    <tm:instanceOf><tm:topicRef href="#subjectlocator-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.*$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#slc-service-url-parameter"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#slc-service-url-parameter"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#slc-service-url-parameter"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: name constraints ================================= -->
+  <!-- ===================================================================== -->
+  <!-- topictype "service":
+         *names: service-name:1:1:"^.+$"
+       topictype "param":
+         *names: param-name:1:1:"^.+$" -->
+
+  <!-- service-name -->
+  <tm:topic id="service-name-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-name-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicname-constraint"/></tm:instanceOf>
+        <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#nametype-role"/></tm:type>
+      <tm:topicRef href="#service-name"/>
+    </tm:role>
+  </tm:association>
+  
+  <!-- parameter-name -->
+  <tm:topic id="parameter-name-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/parameter-name-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicname-constraint"/></tm:instanceOf>
+        <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#parameter-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#parameter-name-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#nametype-role"/></tm:type>
+      <tm:topicRef href="#parameter-name"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: occurence constraints ============================ -->
+  <!-- ===================================================================== -->
+  <!-- topictype "service":
+         *occurrences: service-key:1:1:"^.+$":xml:string
+         *occurrences: description:0:1:".*":xml:string
+	 *occurrences: service-type:0:1:".*":xml:string
+	 *occurrences: service-environment:1:1:"^.+$":xml:string
+       topictype "url":
+         *occurrences: url-content:1:1:"^.+$"
+       topictype "param":
+         *occurrences: description:0:1:".*"
+         *occurrences: default-value:0:1:".*"
+         *occurrences: necessary:0:1"(true|TRUE|false|FALSE)":xml:boolean -->
+
+  <!-- service-key occurrence -->
+  <tm:topic id="service-key-occurrence-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-key-occurrence-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicoccurrence-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-key-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#service-key"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-key-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <!-- description occurrence -->
+  <tm:topic id="description-occurrence-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/description-occurrence-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicoccurrence-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.*</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#description-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#description"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#description-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#description-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- string datatype -->
+  <tm:topic id="string-datatype-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/string-datatype-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencedatatype-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#datatype"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#string</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#description"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#service-type"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#service-environment"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#default-value"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#string-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#service-key"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- anyUri datatype -->
+  <tm:topic id="anyUri-datatype-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/anyUri-datatype-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#occurrencedatatype-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#datatype"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#anyUri</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#anyUri-datatype-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#url-content"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- service-type occurrence -->
+  <tm:topic id="service-type-occurrence-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-type-occurrence-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicoccurrence-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.*$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-type-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#service-type"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-type-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- service-environment occurrence -->
+  <tm:topic id="service-environment-occurrence-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-environment-occurrence-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicoccurrence-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-environment-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#service-environment"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-environment-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- url-content occurrence -->
+  <tm:topic id="url-content-occurrence-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/url-content-occurrence-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicoccurrence-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.+$</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-content-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#url-content"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-content-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- default-value occurrence -->
+  <tm:topic id="default-value-occurrence-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/default-value-occurrence-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#topicoccurrence-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#regexp"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.*</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#default-value-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#occurrencetype-role"/></tm:type>
+      <tm:topicRef href="#default-value"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#default-value-occurrence-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+  
+  <tm:topic id="paraeter-necessary-constraint">
+	<tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/paraeter-necessary-constraint"/>
+	<tm:instanceOf>
+		<tm:topicRef href="#topicoccurrence-constraint"/>
+	</tm:instanceOf>
+	<tm:occurrence>
+		<tm:type>
+			<tm:topicRef href="#card-min"/>
+		</tm:type>
+		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">0</tm:resourceData>
+	</tm:occurrence>
+	<tm:occurrence>
+		<tm:type>
+			<tm:topicRef href="#card-max"/>
+		</tm:type>
+	<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+	</tm:occurrence>
+	<tm:occurrence>
+		<tm:type>
+			<tm:topicRef href="#regexp"/>
+		</tm:type>
+		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^(true)|(TRUE)|(false)|(FALSE)$</tm:resourceData>
+	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+	<tm:type>
+		<tm:topicRef href="#applies-to"/>
+	</tm:type>
+	<tm:role>
+		<tm:type>
+			<tm:topicRef href="#constraint-role"/>
+		</tm:type>
+		<tm:topicRef href="#paraeter-necessary-constraint"/>
+	</tm:role>
+	<tm:role>
+		<tm:type>
+			<tm:topicRef href="#topictype-role"/>
+		</tm:type>
+		<tm:topicRef href="#parameter"/>
+	</tm:role>
+  </tm:association>
+
+  <tm:association>
+	<tm:type>
+		<tm:topicRef href="#applies-to"/>
+	</tm:type>
+	<tm:role>
+		<tm:type>
+			<tm:topicRef href="#constraint-role"/>
+		</tm:type>
+		<tm:topicRef href="#paraeter-necessary-constraint"/>
+	</tm:role>
+	<tm:role>
+		<tm:type>
+			<tm:topicRef href="#occurrencetype-role"/>
+		</tm:type>
+		<tm:topicRef href="#necessary"/>
+	</tm:role>
+  </tm:association>
+
+<!--  Don't know what the following lines do -->
+ 
+<tm:topic id="boolean-datatype-constraint">
+<tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/boolean-datatype-constraint"/>
+<tm:instanceOf>
+<tm:topicRef href="#occurrencedatatype-constraint"/>
+</tm:instanceOf>
+<tm:occurrence>
+<tm:type>
+<tm:topicRef href="#datatype"/>
+</tm:type>
+<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#boolean</tm:resourceData>
+</tm:occurrence>
+</tm:topic>
+<tm:association>
+<tm:type>
+<tm:topicRef href="#applies-to"/>
+</tm:type>
+<tm:role>
+<tm:type>
+<tm:topicRef href="#constraint-role"/>
+</tm:type>
+<tm:topicRef href="#boolean-datatype-constraint"/>
+</tm:role>
+<tm:role>
+<tm:type>
+<tm:topicRef href="#occurrencetype-role"/>
+</tm:type>
+<tm:topicRef href="#necessary"/>
+</tm:role>
+</tm:association>  
+
+
+  <!-- ===================================================================== -->
+  <!-- === own datamodel: association (-role) constraints ================== -->
+  <!-- ===================================================================== -->
+  <!-- association "has-url":
+         *roles: service-role:service:1:1
+	 *roles: url-role:url:1:1
+       association "has-param"
+         *roles: url-role:url:1:1
+	 *roles: parameter-role:parameter:1:1 -->
+
+  <!-- the service-role has to appear exactly once in an association of type
+       has-url -->
+  <tm:topic id="service-role-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-role-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#associationrole-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#associationtype-role"/></tm:type>
+      <tm:topicRef href="#has-url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#roletype-role"/></tm:type>
+      <tm:topicRef href="#service-role"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- the service-role owns a player of the type servie -->
+  <tm:topic id="service-role-player-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/service-role-player-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#roleplayer-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#associationtype-role"/></tm:type>
+      <tm:topicRef href="#has-url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#service-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#roletype-role"/></tm:type>
+      <tm:topicRef href="#service-role"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- otherrole-constraint:
+       If there is a role of the type service-role with a player of the type
+       service there must be another role of the type url-role with a player
+       of the type url. -->
+  <tm:topic id="has-url-otherrole-constraint-for-service">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/has-url-otherrole-constraint-for-service"/>
+    <tm:instanceOf><tm:topicRef href="#otherrole-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+	<tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+	<tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-url-otherrole-constraint-for-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#associationtype-role"/></tm:type>
+      <tm:topicRef href="#has-url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-url-otherrole-constraint-for-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#roletype-role"/></tm:type>
+      <tm:topicRef href="#service-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-url-otherrole-constraint-for-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#service"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-url-otherrole-constraint-for-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#otherroletype-role"/></tm:type>
+      <tm:topicRef href="#url-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-url-otherrole-constraint-for-service"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#othertopictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- the url-role has to appear exactly once in an association of type
+       has-parameter -->
+  <tm:topic id="url-role-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/url-role-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#associationrole-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#associationtype-role"/></tm:type>
+      <tm:topicRef href="#has-parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-role-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#roletype-role"/></tm:type>
+      <tm:topicRef href="#url-role"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- the service-role owns a player of the type servie -->
+  <tm:topic id="url-role-player-constraint">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/url-role-player-constraint"/>
+    <tm:instanceOf><tm:topicRef href="#roleplayer-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-min"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type><tm:topicRef href="#card-max"/></tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#associationtype-role"/></tm:type>
+      <tm:topicRef href="#has-parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#url-role-player-constraint"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#roletype-role"/></tm:type>
+      <tm:topicRef href="#url-role"/>
+    </tm:role>
+  </tm:association>
+
+
+  <!-- otherrole-constraint:
+       If there is a role of the type url-role with a player of the type
+       url there must be another role of the type parameter-role with a player
+       of the type parameter. -->
+  <tm:topic id="has-parameter-otherrole-constraint-for-url">
+    <tm:subjectIdentifier href="http://textgrid.org/isidorus/tmcl/has-parameter-otherrole-constraint-for-url"/>
+    <tm:instanceOf><tm:topicRef href="#otherrole-constraint"/></tm:instanceOf>
+    <tm:occurrence>
+      <tm:type>
+	<tm:topicRef href="#card-min"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+    <tm:occurrence>
+      <tm:type>
+	<tm:topicRef href="#card-max"/>
+      </tm:type>
+      <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#unsignedInt">1</tm:resourceData>
+    </tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint-for-url"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#associationtype-role"/></tm:type>
+      <tm:topicRef href="#has-parameter"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint-for-url"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#roletype-role"/></tm:type>
+      <tm:topicRef href="#url-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint-for-url"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#topictype-role"/></tm:type>
+      <tm:topicRef href="#url"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint-for-url"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#otherroletype-role"/></tm:type>
+      <tm:topicRef href="#parameter-role"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#applies-to"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#constraint-role"/></tm:type>
+      <tm:topicRef href="#has-parameter-otherrole-constraint-for-url"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#othertopictype-role"/></tm:type>
+      <tm:topicRef href="#parameter"/>
+    </tm:role>
+  </tm:association>
+
+<!--=========================================================-->
+<!--Confserver Services-->
+<!--=========================================================-->
+
+<!--=========================================================-->
+<!--Production-->
+<!--schema-->
+  <tm:topic id="service-schema">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/schema"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>schema-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">schema</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-schema">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/schema"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">www.textgrid.info/schemas/textgrid-metadata_2008-07-24.xsd</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-schema"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-schema"/>
+    </tm:role>
+  </tm:association>
+
+<!--ns-->
+  <tm:topic id="service-ns">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/ns"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>ns-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">ns</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-ns">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/ns"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://textgrid.info/namespaces/metadata/core/2008-07-24</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-ns"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-ns"/>
+    </tm:role>
+  </tm:association>
+
+<!--workflow-->
+  <tm:topic id="service-workflow">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/workflow"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>workflow-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">workflow</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-workflow">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/workflow"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de/gwes/services/GWES</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-workflow"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-workflow"/>
+    </tm:role>
+  </tm:association>
+
+<!--authz-->
+  <tm:topic id="service-authz">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/authz"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>authz-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">authz</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-authz">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/authz"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/WebAuthN/WebAuthN.php</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="param-authZinstance">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/parameter/production/authZinstance"/>
+	<tm:instanceOf><tm:topicRef href="#parameter"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#parameter-name"/></tm:type>
+      		<tm:value>authZinstance</tm:value>
+    	</tm:name>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#default-value"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">textgridlab.org</tm:resourceData>
+    	</tm:occurrence>
+    <tm:occurrence>
+      		<tm:type><tm:topicRef href="#necessary"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#boolean">true</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-authz"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-authz"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-parameter"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-authz"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#parameter-role"/></tm:type>
+      <tm:topicRef href="#param-authZinstance"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgauth-->
+  <tm:topic id="service-tgauth">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/tgauth"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgauth-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgauth</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-tgauth">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/tgauth"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/tgauth/rbacSoap/tgextra.php</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-tgauth"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-tgauth"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgsearch-->
+  <tm:topic id="service-tgsearch">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/tgsearch"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgsearch-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgsearch</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-tgsearch">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/tgsearch"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/axis2/services/Metadata</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-tgsearch"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-tgsearch"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgcrud-->
+  <tm:topic id="service-tgcrud">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/tgcrud"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgcrud-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgcrud</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-tgcrud">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/tgcrud"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/axis2/services/TGCrudService</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-tgcrud"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-tgcrud"/>
+    </tm:role>
+  </tm:association>
+
+<!--logservice-->
+  <tm:topic id="service-logservice">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/logservice"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>logservice-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">logservice</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-logservice">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/logservice"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/axis2/services/textlog</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-logservice"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-logservice"/>
+    </tm:role>
+  </tm:association>
+
+<!--exist-->
+  <tm:topic id="service-exist">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/exist"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>exist-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">exist</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-exist">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/exist"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/exist/services/Query</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-exist"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-exist"/>
+    </tm:role>
+  </tm:association>
+
+<!--rdf-repository-->
+  <tm:topic id="service-rdf-repository">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/rdf-repository"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>rdf-repository-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">rdf-repository</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-rdf-repository">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/rdf-repository"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/openrdf-sesame/repositories/textgrid</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-rdf-repository"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-rdf-repository"/>
+    </tm:role>
+  </tm:association>
+
+<!--last-api-change-->
+  <tm:topic id="service-last-api-change">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/last-api-change"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>last-api-change-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">last-api-change</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-last-api-change">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/last-api-change"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">2009-01-21</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-last-api-change"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-last-api-change"/>
+    </tm:role>
+  </tm:association>
+
+<!--webpublish-->
+  <tm:topic id="service-webpublish">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/production/webpublish"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>webpublish-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">production</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">webpublish</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="url-webpublish">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/production/webpublish"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://textgrid-ws2.gwdg.de/teiPublisher/2/publish</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#service-webpublish"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#url-webpublish"/>
+    </tm:role>
+  </tm:association>
+
+<!--=========================================================-->
+<!--Testing-->
+<!--schema-->
+  <tm:topic id="testing-service-schema">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/schema"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>schema-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">schema</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-schema">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/schema"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">www.textgrid.info/schemas/textgrid-metadata_2008-07-24.xsd</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-schema"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-schema"/>
+    </tm:role>
+  </tm:association>
+
+<!--ns-->
+  <tm:topic id="testing-service-ns">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/ns"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>ns-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">ns</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-ns">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/ns"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://textgrid.info/namespaces/metadata/core/2008-07-24</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-ns"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-ns"/>
+    </tm:role>
+  </tm:association>
+
+<!--workflow-->
+  <tm:topic id="testing-service-workflow">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/workflow"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>workflow-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">workflow</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-workflow">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/workflow"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8083/gwes/services/GWES</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-workflow"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-workflow"/>
+    </tm:role>
+  </tm:association>
+
+<!--authz-->
+  <tm:topic id="testing-service-authz">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/authz"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>authz-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">authz</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-authz">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/authz"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/WebAuthN/WebAuthN.php</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-param-authZinstance">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/parameter/testing/authZinstance"/>
+	<tm:instanceOf><tm:topicRef href="#parameter"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#parameter-name"/></tm:type>
+      		<tm:value>authZinstance</tm:value>
+    	</tm:name>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#default-value"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">ingrid-8081</tm:resourceData>
+    	</tm:occurrence>
+    <tm:occurrence>
+      		<tm:type><tm:topicRef href="#necessary"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#boolean">true</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-authz"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-authz"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-parameter"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-authz"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#parameter-role"/></tm:type>
+      <tm:topicRef href="#testing-param-authZinstance"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgauth-->
+  <tm:topic id="testing-service-tgauth">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/tgauth"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgauth-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgauth</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-tgauth">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/tgauth"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de/rbac-8081/tgextra.php</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-tgauth"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-tgauth"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgsearch-->
+  <tm:topic id="testing-service-tgsearch">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/tgsearch"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgsearch-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgsearch</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-tgsearch">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/tgsearch"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8081/axis2/services/Metadata</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-tgsearch"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-tgsearch"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgcrud-->
+  <tm:topic id="testing-service-tgcrud">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/tgcrud"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgcrud-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgcrud</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-tgcrud">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/tgcrud"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8081/axis2/services/TGCrudService</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-tgcrud"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-tgcrud"/>
+    </tm:role>
+  </tm:association>
+
+<!--logservice-->
+  <tm:topic id="testing-service-logservice">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/logservice"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>logservice-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">logservice</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-logservice">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/logservice"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8081/axis2/services/textlog</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-logservice"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-logservice"/>
+    </tm:role>
+  </tm:association>
+
+<!--exist-->
+  <tm:topic id="testing-service-exist">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/exist"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>exist-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">exist</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-exist">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/exist"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8081/exist/services/Query</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-exist"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-exist"/>
+    </tm:role>
+  </tm:association>
+
+<!--rdf-repository-->
+  <tm:topic id="testing-service-rdf-repository">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/rdf-repository"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>rdf-repository-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">rdf-repository</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-rdf-repository">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/rdf-repository"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8082/openrdf-sesame/repositories/textgrid</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-rdf-repository"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-rdf-repository"/>
+    </tm:role>
+  </tm:association>
+
+<!--last-api-change-->
+  <tm:topic id="testing-service-last-api-change">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/last-api-change"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>last-api-change-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">last-api-change</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-last-api-change">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/last-api-change"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">2009-01-21</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-last-api-change"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-last-api-change"/>
+    </tm:role>
+  </tm:association>
+
+<!--webpublish-->
+  <tm:topic id="testing-service-webpublish">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/testing/webpublish"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>webpublish-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">testing</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">webpublish</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="testing-url-webpublish">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/testing/webpublish"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://textgrid-ws2.gwdg.de/teiPublisher/0/publish</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#testing-service-webpublish"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#testing-url-webpublish"/>
+    </tm:role>
+  </tm:association>
+
+<!--=========================================================-->
+<!--Development-->
+<!--schema-->
+  <tm:topic id="dev-service-schema">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/schema"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>schema-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">schema</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-schema">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/schema"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">www.textgrid.info/schemas/textgrid-metadata_2008-07-24.xsd</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-schema"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-schema"/>
+    </tm:role>
+  </tm:association>
+
+<!--ns-->
+  <tm:topic id="dev-service-ns">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/ns"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>ns-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">ns</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-ns">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/ns"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://textgrid.info/namespaces/metadata/core/2008-07-24</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-ns"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-ns"/>
+    </tm:role>
+  </tm:association>
+
+<!--workflow-->
+  <tm:topic id="dev-service-workflow">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/workflow"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>workflow-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">workflow</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-workflow">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/workflow"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8083/gwes/services/GWES</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-workflow"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-workflow"/>
+    </tm:role>
+  </tm:association>
+
+<!--authz-->
+  <tm:topic id="dev-service-authz">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/authz"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>authz-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">authz</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-authz">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/authz"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">https://textgridlab.org/Portal/WebAuthN.php</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-param-authZinstance">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/parameter/development/authZinstance"/>
+	<tm:instanceOf><tm:topicRef href="#parameter"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#parameter-name"/></tm:type>
+      		<tm:value>authZinstance</tm:value>
+    	</tm:name>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#default-value"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">ingrid-8082</tm:resourceData>
+    	</tm:occurrence>
+    <tm:occurrence>
+      		<tm:type><tm:topicRef href="#necessary"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#boolean">true</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-authz"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-authz"/>
+    </tm:role>
+  </tm:association>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-parameter"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-authz"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#parameter-role"/></tm:type>
+      <tm:topicRef href="#dev-param-authZinstance"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgauth-->
+  <tm:topic id="dev-service-tgauth">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/tgauth"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgauth-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgauth</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-tgauth">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/tgauth"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de/rbac-8082/tgextra.php</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-tgauth"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-tgauth"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgsearch-->
+  <tm:topic id="dev-service-tgsearch">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/tgsearch"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgsearch-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgsearch</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-tgsearch">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/tgsearch"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8082/axis2/services/Metadata</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-tgsearch"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-tgsearch"/>
+    </tm:role>
+  </tm:association>
+
+<!--tgcrud-->
+  <tm:topic id="dev-service-tgcrud">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/tgcrud"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>tgcrud-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">tgcrud</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-tgcrud">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/tgcrud"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8082/axis2/services/TGCrudService</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-tgcrud"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-tgcrud"/>
+    </tm:role>
+  </tm:association>
+
+<!--logservice-->
+  <tm:topic id="dev-service-logservice">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/logservice"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>logservice-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">logservice</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-logservice">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/logservice"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8082/axis2/services/textlog</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-logservice"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-logservice"/>
+    </tm:role>
+  </tm:association>
+
+<!--exist-->
+  <tm:topic id="dev-service-exist">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/exist"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>exist-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">exist</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-exist">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/exist"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8082/exist/services/Query</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-exist"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-exist"/>
+    </tm:role>
+  </tm:association>
+
+<!--rdf-repository-->
+  <tm:topic id="dev-service-rdf-repository">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/rdf-repository"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>rdf-repository-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">rdf-repository</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-rdf-repository">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/rdf-repository"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://ingrid.sub.uni-goettingen.de:8082/openrdf-sesame/repositories/textgrid</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-rdf-repository"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-rdf-repository"/>
+    </tm:role>
+  </tm:association>
+
+<!--last-api-change-->
+  <tm:topic id="dev-service-last-api-change">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/last-api-change"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>last-api-change-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">last-api-change</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-last-api-change">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/last-api-change"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">2009-01-21</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-last-api-change"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-last-api-change"/>
+    </tm:role>
+  </tm:association>
+
+<!--webpublish-->
+  <tm:topic id="dev-service-webpublish">
+    <tm:subjectIdentifier href="http://textgrid.org/serviceregistry/development/webpublish"/> 
+    <tm:instanceOf><tm:topicRef href="#service"/></tm:instanceOf>
+	<tm:name>
+      		<tm:type><tm:topicRef href="#service-name"/></tm:type>
+      		<tm:value>webpublish-name</tm:value>
+    	</tm:name>
+    	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-environment"/></tm:type> 
+    		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">development</tm:resourceData>
+    	</tm:occurrence>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#service-key"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">webpublish</tm:resourceData>
+   	 </tm:occurrence>
+  </tm:topic>
+
+  <tm:topic id="dev-url-webpublish">
+	<tm:subjectIdentifier href="http://textgrid.org/serviceregistry/url/development/webpublish"/>
+	<tm:instanceOf><tm:topicRef href="#url"/></tm:instanceOf>
+	<tm:occurrence>
+      		<tm:type><tm:topicRef href="#url-content"/></tm:type> 
+      		<tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#anyUri">http://textgrid-ws2.gwdg.de/teiPublisher/1/publish</tm:resourceData>
+    	</tm:occurrence>
+  </tm:topic>
+
+  <tm:association>
+    <tm:type><tm:topicRef href="#has-url"/></tm:type>
+    <tm:role>
+      <tm:type><tm:topicRef href="#service-role"/></tm:type>
+      <tm:topicRef href="#dev-service-webpublish"/>
+    </tm:role>
+    <tm:role>
+      <tm:type><tm:topicRef href="#url-role"/></tm:type>
+      <tm:topicRef href="#dev-url-webpublish"/>
+    </tm:role>
+  </tm:association>
+
+</tm:topicMap>
+




More information about the Isidorus-cvs mailing list