You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2022/10/06 09:33:54 UTC

[isis] 02/03: ISIS-2965 : copying changed schemas in website

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 2.0.0-M8
in repository https://gitbox.apache.org/repos/asf/isis.git

commit fb189679b9b94581afeaadc76b5337a2966c182c
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 6 10:31:14 2022 +0100

    ISIS-2965 : copying changed schemas in website
---
 .../supplemental-ui/schema/common/common-2.0.xsd   | 476 +++++++-------
 antora/supplemental-ui/schema/common/common.xsd    | 478 +++++++-------
 .../schema/metamodel/metamodel-2.0.xsd             | 691 +++++++++++---------
 .../supplemental-ui/schema/metamodel/metamodel.xsd | 693 ++++++++++++---------
 4 files changed, 1270 insertions(+), 1068 deletions(-)

diff --git a/antora/supplemental-ui/schema/common/common-2.0.xsd b/antora/supplemental-ui/schema/common/common-2.0.xsd
index 356d5ff7b3..b8a7e867b6 100644
--- a/antora/supplemental-ui/schema/common/common-2.0.xsd
+++ b/antora/supplemental-ui/schema/common/common-2.0.xsd
@@ -1,226 +1,252 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<xs:schema targetNamespace="http://isis.apache.org/schema/common"
-           elementFormDefault="qualified"
-           xmlns="http://isis.apache.org/schema/common"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:complexType name="valueDto">
-        <xs:choice minOccurs="0" maxOccurs="1">
-            <xs:element name="string" type="xs:string"/>
-            <xs:element name="byte" type="xs:byte"/>
-            <xs:element name="short" type="xs:short"/>
-            <xs:element name="int" type="xs:int"/>
-            <xs:element name="long" type="xs:long"/>
-            <xs:element name="float" type="xs:float"/>
-            <xs:element name="double" type="xs:double"/>
-            <xs:element name="boolean" type="xs:boolean"/>
-            <xs:element name="char" type="xs:string"/>
-            <xs:element name="bigInteger" type="xs:integer"/>
-            <xs:element name="bigDecimal" type="xs:decimal"/>
-            <!-- java.time -->
-            <xs:element name="localDate" type="xs:date"/>
-            <xs:element name="localDateTime" type="xs:dateTime"/>
-            <xs:element name="localTime" type="xs:time"/>
-            <xs:element name="offsetTime" type="xs:time"/>
-            <xs:element name="offsetDateTime" type="xs:dateTime"/>
-            <xs:element name="zonedDateTime" type="xs:dateTime"/>
-            <!-- joda -->
-            <xs:element name="jodaDateTime" type="xs:dateTime"/>
-            <xs:element name="jodaLocalDate" type="xs:date"/>
-            <xs:element name="jodaLocalTime" type="xs:time"/>
-            <xs:element name="jodaLocalDateTime" type="xs:dateTime"/>
-            <!--  -->
-            <xs:element name="timestamp" type="xs:dateTime"/>
-            <xs:element name="enum" type="enumDto"/>
-            <xs:element name="reference" type="oidDto"/>
-            <xs:element name="collection" type="collectionDto"/>
-            <xs:element name="blob" type="blobDto"/>
-            <xs:element name="clob" type="clobDto"/>
-        </xs:choice>
-    </xs:complexType>
-
-    <xs:complexType name="oidDto">
-        <xs:attribute name="type" type="xs:string"/>
-        <xs:attribute name="id" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="collectionDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="type" use="required" type="valueType"/>
-        <xs:attribute name="null" use="optional" type="xs:boolean"/>
-    </xs:complexType>
-
-    <xs:complexType name="blobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="bytes" type="xs:hexBinary"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="clobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="chars" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="oidsDto">
-        <xs:annotation>
-            <xs:documentation>A list of OIDs
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="enumDto">
-        <xs:sequence>
-            <xs:element name="enumType" type="xs:string"/>
-            <xs:element name="enumName" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-
-    <xs:simpleType name="valueType">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="string"/>
-            <xs:enumeration value="byte"/>
-            <xs:enumeration value="short"/>
-            <xs:enumeration value="int"/>
-            <xs:enumeration value="long"/>
-            <xs:enumeration value="float"/>
-            <xs:enumeration value="double"/>
-            <xs:enumeration value="boolean"/>
-            <xs:enumeration value="char"/>
-            <xs:enumeration value="bigInteger"/>
-            <xs:enumeration value="bigDecimal"/>
-            <xs:enumeration value="javaSqlTimestamp"/>
-            <!-- java.time -->
-            <xs:enumeration value="localDateTime"/>
-            <xs:enumeration value="localDate"/>
-            <xs:enumeration value="localTime"/>
-            <xs:enumeration value="offsetDateTime"/>
-            <xs:enumeration value="offsetTime"/>
-            <xs:enumeration value="zonedDateTime"/>
-            <!-- joda -->
-            <xs:enumeration value="jodaDateTime"/>
-            <xs:enumeration value="jodaLocalDate"/>
-            <xs:enumeration value="jodaLocalTime"/>
-            <xs:enumeration value="jodaLocalDateTime"/>
-            <!--  -->
-            <xs:enumeration value="enum"/>
-            <xs:enumeration value="reference"/>
-            <xs:enumeration value="collection"/>
-            <xs:enumeration value="blob"/>
-            <xs:enumeration value="clob"/>
-            <xs:enumeration value="void">
-                <xs:annotation>
-                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:complexType name="periodDto">
-        <xs:annotation>
-            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="startedAt" type="xs:dateTime">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time started.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="differenceDto">
-        <xs:annotation>
-            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-        </xs:sequence>
-        <xs:attribute name="before" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The initial quantity.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="after" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:complexType>
-
-    <xs:complexType name="valueWithTypeDto">
-        <xs:annotation>
-            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="valueDto">
-                <xs:attribute name="type" use="required" type="valueType"/>
-                <xs:attribute name="null" use="optional" type="xs:boolean"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-
-    <xs:simpleType name="interactionType" >
-        <xs:annotation>
-            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="action_invocation" />
-            <xs:enumeration value="property_edit" />
-        </xs:restriction>
-    </xs:simpleType>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/common"
+           elementFormDefault="qualified"
+           xmlns="http://isis.apache.org/schema/common"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+           jaxb:extensionBindingPrefixes="xjc"
+           jaxb:version="1.0">
+           
+	<xs:annotation>
+	   <xs:appinfo>
+	      <jaxb:globalBindings generateIsSetMethod="false">
+	          <xjc:serializable uid="1"/>
+	      </jaxb:globalBindings>
+	   </xs:appinfo>
+	</xs:annotation>
+
+    <xs:complexType name="valueDto">
+        <xs:choice minOccurs="0" maxOccurs="1">
+            <xs:element name="string" type="xs:string"/>
+            <xs:element name="byte" type="xs:byte"/>
+            <xs:element name="short" type="xs:short"/>
+            <xs:element name="int" type="xs:int"/>
+            <xs:element name="long" type="xs:long"/>
+            <xs:element name="float" type="xs:float"/>
+            <xs:element name="double" type="xs:double"/>
+            <xs:element name="boolean" type="xs:boolean"/>
+            <xs:element name="char" type="xs:string"/>
+            <xs:element name="bigInteger" type="xs:integer"/>
+            <xs:element name="bigDecimal" type="xs:decimal"/>
+
+            <!-- temporal types -->
+            <xs:element name="localDate" type="xs:date"/>
+            <xs:element name="localDateTime" type="xs:dateTime"/>
+            <xs:element name="localTime" type="xs:time"/>
+            <xs:element name="offsetTime" type="xs:time"/>
+            <xs:element name="offsetDateTime" type="xs:dateTime"/>
+            <xs:element name="zonedDateTime" type="xs:dateTime"/>
+            
+            <!-- complex types -->
            <xs:element name="enum" type="enumDto"/>
+            <xs:element name="reference" type="oidDto"/>
+            <xs:element name="collection" type="collectionDto"/>
+            <xs:element name="composite" type="typedTupleDto"/>
+            <xs:element name="blob" type="blobDto"/>
+            <xs:element name="clob" type="clobDto"/>
+        </xs:choice>
+    </xs:complexType>
+
+	<xs:complexType name="typedTupleDto">
+        <xs:annotation>
+            <xs:documentation>A fixed-size ordered list of named type/value pairs.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="elements" type="namedValueWithTypeDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="xs:string"/>
+        <xs:attribute name="cardinality" use="required" type="xs:int"/>
+    </xs:complexType>
+
+    <xs:complexType name="oidDto">
+        <xs:attribute name="type" type="xs:string"/>
+        <xs:attribute name="id" type="xs:string"/>
+    </xs:complexType>
+
+    <xs:complexType name="collectionDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="valueType"/>
+        <xs:attribute name="null" use="optional" type="xs:boolean"/>
+    </xs:complexType>
+
+    <xs:complexType name="blobDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="bytes" type="xs:hexBinary"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="clobDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="chars" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="oidsDto">
+        <xs:annotation>
+            <xs:documentation>A list of OIDs
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="enumDto">
+        <xs:sequence>
+            <xs:element name="enumType" type="xs:string"/>
+            <xs:element name="enumName" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:simpleType name="valueType">
+        <xs:restriction base="xs:string">
+        	<xs:enumeration value="void">
+                <xs:annotation>
+                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="string"/>
+            <xs:enumeration value="byte"/>
+            <xs:enumeration value="short"/>
+            <xs:enumeration value="int"/>
+            <xs:enumeration value="long"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="double"/>
+            <xs:enumeration value="boolean"/>
+            <xs:enumeration value="char"/>
+            <xs:enumeration value="bigInteger"/>
+            <xs:enumeration value="bigDecimal"/>
+            <!-- temporal types -->
+            <xs:enumeration value="localDateTime"/>
+            <xs:enumeration value="localDate"/>
+            <xs:enumeration value="localTime"/>
+            <xs:enumeration value="offsetDateTime"/>
+            <xs:enumeration value="offsetTime"/>
+            <xs:enumeration value="zonedDateTime"/>
+            <!-- complex types -->
+            <xs:enumeration value="enum"/>
+            <xs:enumeration value="reference"/>
+            <xs:enumeration value="collection"/>
+            <xs:enumeration value="composite"/>
+            <xs:enumeration value="blob"/>
+            <xs:enumeration value="clob"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:complexType name="periodDto">
+        <xs:annotation>
+            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="startedAt" type="xs:dateTime">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time started.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="differenceDto">
+        <xs:annotation>
+            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+        </xs:sequence>
+        <xs:attribute name="before" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The initial quantity.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="after" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="valueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueDto">
+                <xs:attribute name="type" use="required" type="valueType"/>
+                <xs:attribute name="null" use="optional" type="xs:boolean"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+    
+    <xs:complexType name="namedValueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Defines a named value, a tuple of: name, type and value.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueWithTypeDto">
+                <xs:attribute name="name" use="required" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:simpleType name="interactionType" >
+        <xs:annotation>
+            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="action_invocation" />
+            <xs:enumeration value="property_edit" />
+        </xs:restriction>
+    </xs:simpleType>
+
 </xs:schema>
\ No newline at end of file
diff --git a/antora/supplemental-ui/schema/common/common.xsd b/antora/supplemental-ui/schema/common/common.xsd
index b654d0ccf7..b8a7e867b6 100644
--- a/antora/supplemental-ui/schema/common/common.xsd
+++ b/antora/supplemental-ui/schema/common/common.xsd
@@ -1,226 +1,252 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<xs:schema targetNamespace="http://isis.apache.org/schema/common"
-           elementFormDefault="qualified"
-           xmlns="http://isis.apache.org/schema/common"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:complexType name="valueDto">
-        <xs:choice minOccurs="0" maxOccurs="1">
-            <xs:element name="string" type="xs:string"/>
-            <xs:element name="byte" type="xs:byte"/>
-            <xs:element name="short" type="xs:short"/>
-            <xs:element name="int" type="xs:int"/>
-            <xs:element name="long" type="xs:long"/>
-            <xs:element name="float" type="xs:float"/>
-            <xs:element name="double" type="xs:double"/>
-            <xs:element name="boolean" type="xs:boolean"/>
-            <xs:element name="char" type="xs:string"/>
-            <xs:element name="bigInteger" type="xs:integer"/>
-            <xs:element name="bigDecimal" type="xs:decimal"/>
-            <!-- java.time -->
-            <xs:element name="localDate" type="xs:date"/>
-            <xs:element name="localDateTime" type="xs:dateTime"/>
-            <xs:element name="localTime" type="xs:time"/>
-            <xs:element name="offsetTime" type="xs:time"/>
-            <xs:element name="offsetDateTime" type="xs:dateTime"/>
-            <xs:element name="zonedDateTime" type="xs:dateTime"/>
-            <!-- joda -->
-            <xs:element name="jodaDateTime" type="xs:dateTime"/>
-            <xs:element name="jodaLocalDate" type="xs:date"/>
-            <xs:element name="jodaLocalTime" type="xs:time"/>
-            <xs:element name="jodaLocalDateTime" type="xs:dateTime"/>
-            <!--  -->
-            <xs:element name="timestamp" type="xs:dateTime"/>
-            <xs:element name="enum" type="enumDto"/>
-            <xs:element name="reference" type="oidDto"/>
-            <xs:element name="collection" type="collectionDto"/>
-            <xs:element name="blob" type="blobDto"/>
-            <xs:element name="clob" type="clobDto"/>
-        </xs:choice>
-    </xs:complexType>
-
-    <xs:complexType name="oidDto">
-        <xs:attribute name="type" type="xs:string"/>
-        <xs:attribute name="id" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="collectionDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="type" use="required" type="valueType"/>
-        <xs:attribute name="null" use="optional" type="xs:boolean"/>
-    </xs:complexType>
-
-    <xs:complexType name="blobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="bytes" type="xs:hexBinary"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="clobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="chars" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="oidsDto">
-        <xs:annotation>
-            <xs:documentation>A list of OIDs
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="enumDto">
-        <xs:sequence>
-            <xs:element name="enumType" type="xs:string"/>
-            <xs:element name="enumName" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-
-    <xs:simpleType name="valueType">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="string"/>
-            <xs:enumeration value="byte"/>
-            <xs:enumeration value="short"/>
-            <xs:enumeration value="int"/>
-            <xs:enumeration value="long"/>
-            <xs:enumeration value="float"/>
-            <xs:enumeration value="double"/>
-            <xs:enumeration value="boolean"/>
-            <xs:enumeration value="char"/>
-            <xs:enumeration value="bigInteger"/>
-            <xs:enumeration value="bigDecimal"/>
-            <xs:enumeration value="javaSqlTimestamp"/>
-            <!-- java.time -->
-            <xs:enumeration value="localDateTime"/>
-            <xs:enumeration value="localDate"/>
-            <xs:enumeration value="localTime"/>
-            <xs:enumeration value="offsetDateTime"/>
-            <xs:enumeration value="offsetTime"/>
-            <xs:enumeration value="zonedDateTime"/>
-            <!-- joda -->
-            <xs:enumeration value="jodaDateTime"/>
-            <xs:enumeration value="jodaLocalDate"/>
-            <xs:enumeration value="jodaLocalTime"/>
-            <xs:enumeration value="jodaLocalDateTime"/>
-            <!--  -->
-            <xs:enumeration value="enum"/>
-            <xs:enumeration value="reference"/>
-            <xs:enumeration value="collection"/>
-            <xs:enumeration value="blob"/>
-            <xs:enumeration value="clob"/>
-            <xs:enumeration value="void">
-                <xs:annotation>
-                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:complexType name="periodDto">
-        <xs:annotation>
-            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="startedAt" type="xs:dateTime">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time started.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="differenceDto">
-        <xs:annotation>
-            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-        </xs:sequence>
-        <xs:attribute name="before" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The initial quantity.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="after" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:complexType>
-
-    <xs:complexType name="valueWithTypeDto">
-        <xs:annotation>
-            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="valueDto">
-                <xs:attribute name="type" use="required" type="valueType"/>
-                <xs:attribute name="null" use="optional" type="xs:boolean"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-
-    <xs:simpleType name="interactionType" >
-        <xs:annotation>
-            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="action_invocation" />
-            <xs:enumeration value="property_edit" />
-        </xs:restriction>
-    </xs:simpleType>
-
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/common"
+           elementFormDefault="qualified"
+           xmlns="http://isis.apache.org/schema/common"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+           jaxb:extensionBindingPrefixes="xjc"
+           jaxb:version="1.0">
+           
+	<xs:annotation>
+	   <xs:appinfo>
+	      <jaxb:globalBindings generateIsSetMethod="false">
+	          <xjc:serializable uid="1"/>
+	      </jaxb:globalBindings>
+	   </xs:appinfo>
+	</xs:annotation>
+
+    <xs:complexType name="valueDto">
+        <xs:choice minOccurs="0" maxOccurs="1">
+            <xs:element name="string" type="xs:string"/>
+            <xs:element name="byte" type="xs:byte"/>
+            <xs:element name="short" type="xs:short"/>
+            <xs:element name="int" type="xs:int"/>
+            <xs:element name="long" type="xs:long"/>
+            <xs:element name="float" type="xs:float"/>
+            <xs:element name="double" type="xs:double"/>
+            <xs:element name="boolean" type="xs:boolean"/>
+            <xs:element name="char" type="xs:string"/>
+            <xs:element name="bigInteger" type="xs:integer"/>
+            <xs:element name="bigDecimal" type="xs:decimal"/>
+
+            <!-- temporal types -->
+            <xs:element name="localDate" type="xs:date"/>
+            <xs:element name="localDateTime" type="xs:dateTime"/>
+            <xs:element name="localTime" type="xs:time"/>
+            <xs:element name="offsetTime" type="xs:time"/>
+            <xs:element name="offsetDateTime" type="xs:dateTime"/>
+            <xs:element name="zonedDateTime" type="xs:dateTime"/>
+            
+            <!-- complex types -->
            <xs:element name="enum" type="enumDto"/>
+            <xs:element name="reference" type="oidDto"/>
+            <xs:element name="collection" type="collectionDto"/>
+            <xs:element name="composite" type="typedTupleDto"/>
+            <xs:element name="blob" type="blobDto"/>
+            <xs:element name="clob" type="clobDto"/>
+        </xs:choice>
+    </xs:complexType>
+
+	<xs:complexType name="typedTupleDto">
+        <xs:annotation>
+            <xs:documentation>A fixed-size ordered list of named type/value pairs.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="elements" type="namedValueWithTypeDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="xs:string"/>
+        <xs:attribute name="cardinality" use="required" type="xs:int"/>
+    </xs:complexType>
+
+    <xs:complexType name="oidDto">
+        <xs:attribute name="type" type="xs:string"/>
+        <xs:attribute name="id" type="xs:string"/>
+    </xs:complexType>
+
+    <xs:complexType name="collectionDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="valueType"/>
+        <xs:attribute name="null" use="optional" type="xs:boolean"/>
+    </xs:complexType>
+
+    <xs:complexType name="blobDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="bytes" type="xs:hexBinary"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="clobDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="chars" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="oidsDto">
+        <xs:annotation>
+            <xs:documentation>A list of OIDs
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="enumDto">
+        <xs:sequence>
+            <xs:element name="enumType" type="xs:string"/>
+            <xs:element name="enumName" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:simpleType name="valueType">
+        <xs:restriction base="xs:string">
+        	<xs:enumeration value="void">
+                <xs:annotation>
+                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="string"/>
+            <xs:enumeration value="byte"/>
+            <xs:enumeration value="short"/>
+            <xs:enumeration value="int"/>
+            <xs:enumeration value="long"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="double"/>
+            <xs:enumeration value="boolean"/>
+            <xs:enumeration value="char"/>
+            <xs:enumeration value="bigInteger"/>
+            <xs:enumeration value="bigDecimal"/>
+            <!-- temporal types -->
+            <xs:enumeration value="localDateTime"/>
+            <xs:enumeration value="localDate"/>
+            <xs:enumeration value="localTime"/>
+            <xs:enumeration value="offsetDateTime"/>
+            <xs:enumeration value="offsetTime"/>
+            <xs:enumeration value="zonedDateTime"/>
+            <!-- complex types -->
+            <xs:enumeration value="enum"/>
+            <xs:enumeration value="reference"/>
+            <xs:enumeration value="collection"/>
+            <xs:enumeration value="composite"/>
+            <xs:enumeration value="blob"/>
+            <xs:enumeration value="clob"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:complexType name="periodDto">
+        <xs:annotation>
+            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="startedAt" type="xs:dateTime">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time started.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="differenceDto">
+        <xs:annotation>
+            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+        </xs:sequence>
+        <xs:attribute name="before" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The initial quantity.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="after" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="valueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueDto">
+                <xs:attribute name="type" use="required" type="valueType"/>
+                <xs:attribute name="null" use="optional" type="xs:boolean"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+    
+    <xs:complexType name="namedValueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Defines a named value, a tuple of: name, type and value.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueWithTypeDto">
+                <xs:attribute name="name" use="required" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:simpleType name="interactionType" >
+        <xs:annotation>
+            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="action_invocation" />
+            <xs:enumeration value="property_edit" />
+        </xs:restriction>
+    </xs:simpleType>
+
+</xs:schema>
\ No newline at end of file
diff --git a/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd b/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd
index b5d37b71da..9aa2afd29a 100644
--- a/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd
+++ b/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd
@@ -1,311 +1,386 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<xs:schema targetNamespace="http://isis.apache.org/schema/metamodel"
-           elementFormDefault="qualified"
-           xmlns="http://isis.apache.org/schema/metamodel"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:element name="metamodelDto">
-        <xs:complexType>
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">
-                <xs:element ref="domainClassDto"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="domainClassDto">
-        <xs:complexType>
-            <xs:annotation>
-                <xs:documentation>Represents a domain class.
-                    Corresponds to ObjectSpecification in the internal metamodel.
-                </xs:documentation>
-            </xs:annotation>
-            <xs:complexContent>
-                <xs:extension base="facetHolder">
-                    <xs:sequence>
-                        <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
-                            <xs:annotation>
-                                <xs:documentation>The major version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
-                            <xs:annotation>
-                                <xs:documentation>The minor version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="properties" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The properties, if any, of this domain class.  This will include any mixin properties.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="prop" type="property" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="collections" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The collections, if any, of this domain class.  This will include any mixin collections.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="coll" type="collection" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="actions" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The actions, if any, of this domain class.  This will include any mixin actions.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="act" type="action" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                    </xs:sequence>
-                    <xs:attribute name="id" type="xs:ID">
-                        <xs:annotation>
-                            <xs:documentation>The fully qualified class name of the underlying Java class.
-                                This is declared as 'xs:ID' so can be referenced elsewhere (using 'xs:IDREF')
-
-                                In the internal metamodel, corresponds to ObjectSpecification#getFullIdentifier()
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                    <xs:attribute name="service" type="xs:boolean">
-                        <xs:annotation>
-                            <xs:documentation>Whether this is a domain service</xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                </xs:extension>
-            </xs:complexContent>
-        </xs:complexType>
-    </xs:element>
-
-
-    <xs:complexType name="member">
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/metamodel"
+           elementFormDefault="qualified"
+           xmlns="http://isis.apache.org/schema/metamodel"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="metamodelDto">
+        <xs:complexType>
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">
+                <xs:element ref="domainClassDto"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="domainClassDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a domain class.
+                    Corresponds to ObjectSpecification in the internal metamodel.
+                </xs:documentation>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="facetHolder">
+                    <xs:sequence>
+                        <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
+                            <xs:annotation>
+                                <xs:documentation>The major version of the schema that an XML instance was created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
+                            <xs:annotation>
+                                <xs:documentation>The minor version of the schema that an XML instance was created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="properties" minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The properties, if any, of this domain class.  This will include any mixin properties.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="prop" type="property" minOccurs="0" maxOccurs="unbounded"/>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="collections" minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The collections, if any, of this domain class.  This will include any mixin collections.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="coll" type="collection" minOccurs="0" maxOccurs="unbounded"/>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="actions" minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The actions, if any, of this domain class.  This will include any mixin actions.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="act" type="action" minOccurs="0" maxOccurs="unbounded"/>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                    <xs:attribute name="id" type="xs:ID">
+                        <xs:annotation>
+                            <xs:documentation>The fully qualified class name of the underlying Java class.
+                                This is declared as 'xs:ID' so can be referenced elsewhere (using 'xs:IDREF')
+
+                                In the internal metamodel, corresponds to ObjectSpecification#getFullIdentifier()
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                    <xs:attribute name="service" type="xs:boolean">
+                        <xs:annotation>
+                            <xs:documentation>Whether this is a domain service</xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+
+    <xs:complexType name="member">
+    	<xs:annotation>
+    		<xs:documentation>
+    			Represents a member of a class (property, collection or
+    			action). Corresponds to ObjectMember in the internal
+    			metamodel.
+    		</xs:documentation>
+    	</xs:annotation>
+    	<xs:complexContent>
+    		<xs:extension base="facetHolder">
+    			<xs:attribute name="id" type="xs:string">
+    				<xs:annotation>
+    					<xs:documentation>
+    						The id of the member, which should be unique
+    						within the domain class. NB: this assumes no
+    						overloading of method names.
+    					</xs:documentation>
+    				</xs:annotation>
+    			</xs:attribute>
+    			<xs:attribute name="mixedIn" type="xs:boolean" use="required">
+    				<xs:annotation>
+    					<xs:documentation>
+    						Whether the member (action, property or collection) is mixed in.
+    					</xs:documentation>
+    				</xs:annotation>
+    			</xs:attribute>
+    		</xs:extension>
+    	</xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="property">
+        <xs:annotation>
+            <xs:documentation>Represents a property of a domain class.
+                Corresponds to OneToOneAssociation in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the type of this property, eg a String or a Customer.
+                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="collection">
+        <xs:annotation>
+            <xs:documentation>Represents a collection of a domain class.
+                Corresponds to OneToManyAssociation in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the _element_ type of this collection, eg a String or a Customer.
+                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="action">
+        <xs:annotation>
+            <xs:documentation>Represents an action of a domain class.
+                Corresponds to ObjectAction in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="returnType" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to) the return type of this action, eg a String or a Customer.
+                                Corresponds to ObjectAction#getReturnType() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="params">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="param" type="param" minOccurs="0" maxOccurs="unbounded"/>
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="param">
+        <xs:annotation>
+            <xs:documentation>Represents the parameter of an action
+                Corresponds to ObjectActionParameter in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>(A reference to) the type of this action parameter, eg a String or a Customer.
+                                For vector parameters, this is the element types of the collection parameter.
+                                Corresponds to ObjectActionParameter#getSpecification() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The id of the parameter, which should be unique within the action.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="scalarParam">
+        <xs:annotation>
+            <xs:documentation>Represents a parameter of an action
+                Corresponds to OneToOneActionParameter in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="vectorParam">
+        <xs:annotation>
+            <xs:documentation>Represents a multi-valued parameter of an action
+                Corresponds to OneToManyActionParameter in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+	<xs:complexType name="facetHolder">
+		<xs:annotation>
+			<xs:documentation>
+				Corresponds to FacetHolder interface in the internal metamodel.
+			</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="metamodelElement">
+				<xs:sequence>
+					<xs:element name="facets" minOccurs="0">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="facet" type="facet" minOccurs="0"
+									maxOccurs="unbounded" />
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="facet">
+		<xs:annotation>
+			<xs:documentation>
+				Describes a facet of the metamodel, for example whether
+				an action can be disabled, or the name of a class.
+				Corresponds to Facet interface in the internal
+				metamodel.
+			</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="metamodelElement">
+				<xs:sequence>
+					<xs:element name="attr" type="facetAttr" minOccurs="0"
+						maxOccurs="unbounded" />
				</xs:sequence>
+				<xs:attribute name="id" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>
+							The facet type (fqcn) that is common to a set of
+							concrete facet implementations. These ids are
+							usually known to the framework for there well
+							defined semantics within the programming model.
+						</xs:documentation>
+					</xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="fqcn" type="xs:string" />
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="facetAttr">
+		<xs:annotation>
+			<xs:documentation>
+				Describes an attribute of a facet of the metamodel, as a
+				simple key/value pair of strings (the key is modelled as
+				an attribute of the value).
+			</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="metamodelElement">
+				<xs:attribute name="name" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>
+							The name of the attribute, unique across all
+							facet attributes of a facet.
+						</xs:documentation>
+					</xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="value" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>
+							The value of the attribute.
+						</xs:documentation>
+					</xs:annotation>
+				</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="annotation">
+        <xs:annotation>
+            <xs:documentation>Not part of the metamodel. Enables export tools to add arbitrary meta data.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The value of the annotation.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name annotation.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+	<xs:complexType name="metamodelElement">
         <xs:annotation>
-            <xs:documentation>Represents a member of a class (property, collection or action).
-                Corresponds to ObjectMember in the internal metamodel.
-            </xs:documentation>
+        	<xs:documentation>Common ancestor of facet and facetHolder.</xs:documentation>
         </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the member, which should be unique within the domain class.
-                            NB: this assumes no overloading of method names.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="property">
-        <xs:annotation>
-            <xs:documentation>Represents a property of a domain class.
-                Corresponds to OneToOneAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the type of this property, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="collection">
-        <xs:annotation>
-            <xs:documentation>Represents a collection of a domain class.
-                Corresponds to OneToManyAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the _element_ type of this collection, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="action">
-        <xs:annotation>
-            <xs:documentation>Represents an action of a domain class.
-                Corresponds to ObjectAction in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="returnType" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to) the return type of this action, eg a String or a Customer.
-                                Corresponds to ObjectAction#getReturnType() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                    <xs:element name="params">
-                        <xs:complexType>
-                            <xs:sequence>
-                                <xs:element name="param" type="param" minOccurs="0" maxOccurs="unbounded"/>
-                            </xs:sequence>
-                        </xs:complexType>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="param">
-        <xs:annotation>
-            <xs:documentation>Represents the parameter of an action
-                Corresponds to ObjectActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>(A reference to) the type of this action parameter, eg a String or a Customer.
-                                For vector parameters, this is the element types of the collection parameter.
-                                Corresponds to ObjectActionParameter#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the parameter, which should be unique within the action.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="scalarParam">
-        <xs:annotation>
-            <xs:documentation>Represents a parameter of an action
-                Corresponds to OneToOneActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="vectorParam">
-        <xs:annotation>
-            <xs:documentation>Represents a multi-valued parameter of an action
-                Corresponds to OneToManyActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="facetHolder">
-        <xs:annotation>
-            <xs:documentation>Corresponds to FacetHolder interface in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="facets" minOccurs="0">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="facet" type="facet" minOccurs="0" maxOccurs="unbounded"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="facet">
-        <xs:annotation>
-            <xs:documentation>Describes a facet of the metamodel, for example whether an action can be disabled, or the name of a class.
-                Corresponds to Facet interface in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="attr" type="facetAttr" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="id" type="xs:string">
-        	<xs:annotation>
-        		<xs:documentation>The facet type (fqcn) that is common to a set of concrete 
-					facet implementations. These ids are usually known to the framework for 
-					there well defined semantics within the programming model.
-				</xs:documentation>
-        	</xs:annotation></xs:attribute>
-        <xs:attribute name="fqcn" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="facetAttr">
-        <xs:annotation>
-            <xs:documentation>Describes an attribute of a facet of the metamodel, as a simple key/value pair of strings (the key is modelled as an attribute of the value).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:annotation>
-                    <xs:documentation>The value of the attribute, unique across all facet attributes of a facet.
-                    </xs:documentation>
-                </xs:annotation>
-                <xs:attribute name="name" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The name of the attribute, unique across all facet attributes of a facet.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-
-
+        <xs:sequence>
+			<xs:element name="annotations" minOccurs="0">
+				<xs:annotation>
+					<xs:documentation>Not part of the metamodel. Enables export tools
+						to add arbitrary meta data.</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="asList" type="annotation"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+    
 </xs:schema>
\ No newline at end of file
diff --git a/antora/supplemental-ui/schema/metamodel/metamodel.xsd b/antora/supplemental-ui/schema/metamodel/metamodel.xsd
index 035bfe5db4..9aa2afd29a 100644
--- a/antora/supplemental-ui/schema/metamodel/metamodel.xsd
+++ b/antora/supplemental-ui/schema/metamodel/metamodel.xsd
@@ -1,311 +1,386 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<xs:schema targetNamespace="http://isis.apache.org/schema/metamodel"
-           elementFormDefault="qualified"
-           xmlns="http://isis.apache.org/schema/metamodel"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:element name="metamodelDto">
-        <xs:complexType>
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">
-                <xs:element ref="domainClassDto"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="domainClassDto">
-        <xs:complexType>
-            <xs:annotation>
-                <xs:documentation>Represents a domain class.
-                    Corresponds to ObjectSpecification in the internal metamodel.
-                </xs:documentation>
-            </xs:annotation>
-            <xs:complexContent>
-                <xs:extension base="facetHolder">
-                    <xs:sequence>
-                        <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
-                            <xs:annotation>
-                                <xs:documentation>The major version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
-                            <xs:annotation>
-                                <xs:documentation>The minor version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="properties" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The properties, if any, of this domain class.  This will include any mixin properties.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="prop" type="property" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="collections" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The collections, if any, of this domain class.  This will include any mixin collections.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="coll" type="collection" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="actions" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The actions, if any, of this domain class.  This will include any mixin actions.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="act" type="action" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                    </xs:sequence>
-                    <xs:attribute name="id" type="xs:ID">
-                        <xs:annotation>
-                            <xs:documentation>The fully qualified class name of the underlying Java class.
-                                This is declared as 'xs:ID' so can be referenced elsewhere (using 'xs:IDREF')
-
-                                In the internal metamodel, corresponds to ObjectSpecification#getFullIdentifier()
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                    <xs:attribute name="service" type="xs:boolean">
-                        <xs:annotation>
-                            <xs:documentation>Whether this is a domain service</xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                </xs:extension>
-            </xs:complexContent>
-        </xs:complexType>
-    </xs:element>
-
-
-    <xs:complexType name="member">
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/metamodel"
+           elementFormDefault="qualified"
+           xmlns="http://isis.apache.org/schema/metamodel"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="metamodelDto">
+        <xs:complexType>
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">
+                <xs:element ref="domainClassDto"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="domainClassDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a domain class.
+                    Corresponds to ObjectSpecification in the internal metamodel.
+                </xs:documentation>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="facetHolder">
+                    <xs:sequence>
+                        <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
+                            <xs:annotation>
+                                <xs:documentation>The major version of the schema that an XML instance was created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
+                            <xs:annotation>
+                                <xs:documentation>The minor version of the schema that an XML instance was created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="properties" minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The properties, if any, of this domain class.  This will include any mixin properties.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="prop" type="property" minOccurs="0" maxOccurs="unbounded"/>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="collections" minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The collections, if any, of this domain class.  This will include any mixin collections.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="coll" type="collection" minOccurs="0" maxOccurs="unbounded"/>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="actions" minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The actions, if any, of this domain class.  This will include any mixin actions.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="act" type="action" minOccurs="0" maxOccurs="unbounded"/>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                    <xs:attribute name="id" type="xs:ID">
+                        <xs:annotation>
+                            <xs:documentation>The fully qualified class name of the underlying Java class.
+                                This is declared as 'xs:ID' so can be referenced elsewhere (using 'xs:IDREF')
+
+                                In the internal metamodel, corresponds to ObjectSpecification#getFullIdentifier()
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                    <xs:attribute name="service" type="xs:boolean">
+                        <xs:annotation>
+                            <xs:documentation>Whether this is a domain service</xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+
+    <xs:complexType name="member">
+    	<xs:annotation>
+    		<xs:documentation>
+    			Represents a member of a class (property, collection or
+    			action). Corresponds to ObjectMember in the internal
+    			metamodel.
+    		</xs:documentation>
+    	</xs:annotation>
+    	<xs:complexContent>
+    		<xs:extension base="facetHolder">
+    			<xs:attribute name="id" type="xs:string">
+    				<xs:annotation>
+    					<xs:documentation>
+    						The id of the member, which should be unique
+    						within the domain class. NB: this assumes no
+    						overloading of method names.
+    					</xs:documentation>
+    				</xs:annotation>
+    			</xs:attribute>
+    			<xs:attribute name="mixedIn" type="xs:boolean" use="required">
+    				<xs:annotation>
+    					<xs:documentation>
+    						Whether the member (action, property or collection) is mixed in.
+    					</xs:documentation>
+    				</xs:annotation>
+    			</xs:attribute>
+    		</xs:extension>
+    	</xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="property">
+        <xs:annotation>
+            <xs:documentation>Represents a property of a domain class.
+                Corresponds to OneToOneAssociation in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the type of this property, eg a String or a Customer.
+                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="collection">
+        <xs:annotation>
+            <xs:documentation>Represents a collection of a domain class.
+                Corresponds to OneToManyAssociation in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the _element_ type of this collection, eg a String or a Customer.
+                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="action">
+        <xs:annotation>
+            <xs:documentation>Represents an action of a domain class.
+                Corresponds to ObjectAction in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="returnType" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to) the return type of this action, eg a String or a Customer.
+                                Corresponds to ObjectAction#getReturnType() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="params">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="param" type="param" minOccurs="0" maxOccurs="unbounded"/>
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="param">
+        <xs:annotation>
+            <xs:documentation>Represents the parameter of an action
+                Corresponds to ObjectActionParameter in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>(A reference to) the type of this action parameter, eg a String or a Customer.
+                                For vector parameters, this is the element types of the collection parameter.
+                                Corresponds to ObjectActionParameter#getSpecification() in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The id of the parameter, which should be unique within the action.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="scalarParam">
+        <xs:annotation>
+            <xs:documentation>Represents a parameter of an action
+                Corresponds to OneToOneActionParameter in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="vectorParam">
+        <xs:annotation>
+            <xs:documentation>Represents a multi-valued parameter of an action
+                Corresponds to OneToManyActionParameter in the internal metamodel.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+	<xs:complexType name="facetHolder">
+		<xs:annotation>
+			<xs:documentation>
+				Corresponds to FacetHolder interface in the internal metamodel.
+			</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="metamodelElement">
+				<xs:sequence>
+					<xs:element name="facets" minOccurs="0">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="facet" type="facet" minOccurs="0"
+									maxOccurs="unbounded" />
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="facet">
+		<xs:annotation>
+			<xs:documentation>
+				Describes a facet of the metamodel, for example whether
+				an action can be disabled, or the name of a class.
+				Corresponds to Facet interface in the internal
+				metamodel.
+			</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="metamodelElement">
+				<xs:sequence>
+					<xs:element name="attr" type="facetAttr" minOccurs="0"
+						maxOccurs="unbounded" />
				</xs:sequence>
+				<xs:attribute name="id" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>
+							The facet type (fqcn) that is common to a set of
+							concrete facet implementations. These ids are
+							usually known to the framework for there well
+							defined semantics within the programming model.
+						</xs:documentation>
+					</xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="fqcn" type="xs:string" />
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="facetAttr">
+		<xs:annotation>
+			<xs:documentation>
+				Describes an attribute of a facet of the metamodel, as a
+				simple key/value pair of strings (the key is modelled as
+				an attribute of the value).
+			</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="metamodelElement">
+				<xs:attribute name="name" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>
+							The name of the attribute, unique across all
+							facet attributes of a facet.
+						</xs:documentation>
+					</xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="value" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>
+							The value of the attribute.
+						</xs:documentation>
+					</xs:annotation>
+				</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="annotation">
+        <xs:annotation>
+            <xs:documentation>Not part of the metamodel. Enables export tools to add arbitrary meta data.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The value of the annotation.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name annotation.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+	<xs:complexType name="metamodelElement">
         <xs:annotation>
-            <xs:documentation>Represents a member of a class (property, collection or action).
-                Corresponds to ObjectMember in the internal metamodel.
-            </xs:documentation>
+        	<xs:documentation>Common ancestor of facet and facetHolder.</xs:documentation>
         </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the member, which should be unique within the domain class.
-                            NB: this assumes no overloading of method names.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="property">
-        <xs:annotation>
-            <xs:documentation>Represents a property of a domain class.
-                Corresponds to OneToOneAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the type of this property, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="collection">
-        <xs:annotation>
-            <xs:documentation>Represents a collection of a domain class.
-                Corresponds to OneToManyAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the _element_ type of this collection, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="action">
-        <xs:annotation>
-            <xs:documentation>Represents an action of a domain class.
-                Corresponds to ObjectAction in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="returnType" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to) the return type of this action, eg a String or a Customer.
-                                Corresponds to ObjectAction#getReturnType() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                    <xs:element name="params">
-                        <xs:complexType>
-                            <xs:sequence>
-                                <xs:element name="param" type="param" minOccurs="0" maxOccurs="unbounded"/>
-                            </xs:sequence>
-                        </xs:complexType>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="param">
-        <xs:annotation>
-            <xs:documentation>Represents the parameter of an action
-                Corresponds to ObjectActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>(A reference to) the type of this action parameter, eg a String or a Customer.
-                                For vector parameters, this is the element types of the collection parameter.
-                                Corresponds to ObjectActionParameter#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the parameter, which should be unique within the action.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="scalarParam">
-        <xs:annotation>
-            <xs:documentation>Represents a parameter of an action
-                Corresponds to OneToOneActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="vectorParam">
-        <xs:annotation>
-            <xs:documentation>Represents a multi-valued parameter of an action
-                Corresponds to OneToManyActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="facetHolder">
-        <xs:annotation>
-            <xs:documentation>Corresponds to FacetHolder interface in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="facets" minOccurs="0">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="facet" type="facet" minOccurs="0" maxOccurs="unbounded"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="facet">
-        <xs:annotation>
-            <xs:documentation>Describes a facet of the metamodel, for example whether an action can be disabled, or the name of a class.
-                Corresponds to Facet interface in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="attr" type="facetAttr" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="id" type="xs:string">
-        	<xs:annotation>
-        		<xs:documentation>The facet type (fqcn) that is common to a set of concrete
-					facet implementations. These ids are usually known to the framework for
-					there well defined semantics within the programming model.
-				</xs:documentation>
-        	</xs:annotation></xs:attribute>
-        <xs:attribute name="fqcn" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="facetAttr">
-        <xs:annotation>
-            <xs:documentation>Describes an attribute of a facet of the metamodel, as a simple key/value pair of strings (the key is modelled as an attribute of the value).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:annotation>
-                    <xs:documentation>The value of the attribute, unique across all facet attributes of a facet.
-                    </xs:documentation>
-                </xs:annotation>
-                <xs:attribute name="name" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The name of the attribute, unique across all facet attributes of a facet.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-
-
-</xs:schema>
+        <xs:sequence>
+			<xs:element name="annotations" minOccurs="0">
+				<xs:annotation>
+					<xs:documentation>Not part of the metamodel. Enables export tools
+						to add arbitrary meta data.</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="asList" type="annotation"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+    
+</xs:schema>
\ No newline at end of file