Skip to content

Commit

Permalink
feat(cellml): add validation for cellML 1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
bilalshaikh42 committed Apr 13, 2022
1 parent 9355bad commit f6adda9
Show file tree
Hide file tree
Showing 34 changed files with 3,624 additions and 1 deletion.
407 changes: 407 additions & 0 deletions biosimulators_utils/model_lang/cellml/cellml_1_1.xsd

Large diffs are not rendered by default.

41 changes: 41 additions & 0 deletions biosimulators_utils/model_lang/cellml/common/common-attribs.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1998/Math/MathML"
xmlns:xlink="http://www.w3.org/1999/xlink"
targetNamespace="http://www.w3.org/1998/Math/MathML"
elementFormDefault="qualified"
>

<xs:annotation>
<xs:documentation>
This is the common attributes module for MathML.
Author: St&#233;phane Dalmas, INRIA.
</xs:documentation>
</xs:annotation>


<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink-href.xsd"/>
<xs:import/> <!-- import any foreign namespace -->


<!-- The type of "class" is from the XHTML modularization with Schema
document -->
<xs:attributeGroup name="Common.attrib">
<xs:attribute name="class" type="xs:NMTOKENS"/>
<xs:attribute name="style" type="xs:string"/>
<xs:attribute name="xref" type="xs:IDREF"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute ref="xlink:href"/>
<!-- allow attributes from foreign namespaces, and don't check them -->
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:attributeGroup>

</xs:schema>
<!--
Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
of Technology, Institut National de Recherche en Informatique et en
Automatique, Keio University). All Rights Reserved. See
http://www.w3.org/Consortium/Legal/.
-->
130 changes: 130 additions & 0 deletions biosimulators_utils/model_lang/cellml/common/math.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1998/Math/MathML"
targetNamespace="http://www.w3.org/1998/Math/MathML"
elementFormDefault="qualified"
>

<xs:annotation>
<xs:documentation>
This is an XML Schema module defining the "math" element of MathML.
Author: St&#233;phane Dalmas, INRIA.
</xs:documentation>
</xs:annotation>

<!-- The four groups that govern a lot of things -->

<!-- currently very lax. Should be tightened from Chapter 5 -->

<xs:group name="Presentation-expr.class">
<xs:choice>
<xs:group ref="PresExpr.class"/>
<xs:group ref="ContExpr.class"/>
</xs:choice>
</xs:group>

<xs:group name="Content-expr.class">
<xs:choice>
<xs:group ref="ContExpr.class"/>
<xs:group ref="PresExpr.class"/>
</xs:choice>
</xs:group>

<xs:group name="PresExpr.class">
<xs:choice>
<xs:group ref="Presentation-token.class"/>
<xs:group ref="Presentation-layout.class"/>
<xs:group ref="Presentation-script.class"/>
<xs:group ref="Presentation-table.class"/>
<xs:element ref="mspace"/>
<xs:element ref="maction"/>
<xs:element ref="merror"/>
<xs:element ref="mstyle"/>
</xs:choice>
</xs:group>

<xs:group name="ContExpr.class">
<xs:choice>
<xs:group ref="Content-tokens.class"/>
<xs:group ref="Content-arith.class"/>
<xs:group ref="Content-functions.class"/>
<xs:group ref="Content-logic.class"/>
<xs:group ref="Content-constants.class"/>
<xs:group ref="Content-sets.class"/>
<xs:group ref="Content-relations.class"/>
<xs:group ref="Content-elementary-functions.class"/>
<xs:group ref="Content-calculus.class"/>
<xs:group ref="Content-linear-algebra.class"/>
<xs:group ref="Content-vector-calculus.class"/>
<xs:group ref="Content-statistics.class"/>
<xs:group ref="Content-constructs.class"/>
<xs:element ref="semantics"/>
</xs:choice>
</xs:group>

<!-- "math" -->

<xs:attributeGroup name="Browser-interface.attrib">
<xs:attribute name="baseline" type="xs:string"/>
<xs:attribute name="overflow" default="scroll">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="scroll"/>
<xs:enumeration value="elide"/>
<xs:enumeration value="truncate"/>
<xs:enumeration value="scale"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="altimg" type="xs:anyURI"/>
<xs:attribute name="alttext" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="height" type="xs:string"/>
<xs:attribute name="width" type="xs:string"/>
</xs:attributeGroup>

<xs:attributeGroup name="math.attlist">
<xs:attributeGroup ref="Browser-interface.attrib"/>
<xs:attribute name="macros" type="xs:string"/>
<!-- deprecated
<xs:attribute name="mode" type="xs:string"/>
-->
<xs:attribute name="display" default="inline">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="block"/>
<xs:enumeration value="inline"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:group name="math.content">
<xs:choice>
<!-- *** This region was not commented out in the original W3C version,
but has been commented out as the mathml:math element in
CellML does not allow presentation MathML elements.
<xs:group ref="PresExpr.class"/>
*** End of region commented out for CellML *** -->
<xs:group ref="ContExpr.class"/>
</xs:choice>
</xs:group>

<xs:complexType name="math.type">
<xs:group ref="math.content" minOccurs="0" maxOccurs="unbounded"/>
<xs:attributeGroup ref="math.attlist"/>
</xs:complexType>

<xs:element name="math" type="math.type"/>

</xs:schema>
<!--
Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
of Technology, Institut National de Recherche en Informatique et en
Automatique, Keio University). All Rights Reserved. See
http://www.w3.org/Consortium/Legal/.
-->
20 changes: 20 additions & 0 deletions biosimulators_utils/model_lang/cellml/common/xlink-href.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<schema targetNamespace="http://www.w3.org/1999/xlink"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<documentation xml:lang="en">
This schema provides the XLink href attribute for use in the MathML2
schema. Written by Max Froumentin, W3C.
</documentation>
</annotation>

<attribute name="href" type="anyURI"/>
</schema>


<!--
Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
of Technology, Institut National de Recherche en Informatique et en
Automatique, Keio University). All Rights Reserved. See
http://www.w3.org/Consortium/Legal/.
-->
90 changes: 90 additions & 0 deletions biosimulators_utils/model_lang/cellml/content/arith.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1998/Math/MathML"
targetNamespace="http://www.w3.org/1998/Math/MathML"
elementFormDefault="qualified"
>

<xs:annotation>
<xs:documentation>
This is an XML Schema module for the "arithmetic" operators of content
MathML.
Author: St&#233;phane Dalmas, INRIA.
</xs:documentation>
</xs:annotation>

<!-- a common type for all this -->

<xs:complexType name="Arith.type">
<xs:attributeGroup ref="Definition.attrib"/>
<xs:attributeGroup ref="Common.attrib"/>
</xs:complexType>

<!-- The elements -->

<xs:element name="abs" type="Arith.type"/>
<xs:element name="conjugate" type="Arith.type"/>
<xs:element name="arg" type="Arith.type"/>
<xs:element name="real" type="Arith.type"/>
<xs:element name="imaginary" type="Arith.type"/>

<xs:element name="floor" type="Arith.type"/>
<xs:element name="ceiling" type="Arith.type"/>

<xs:element name="power" type="Arith.type"/>
<xs:element name="root" type="Arith.type"/>

<xs:element name="minus" type="Arith.type"/>
<xs:element name="plus" type="Arith.type"/>
<xs:element name="sum" type="Arith.type"/>
<xs:element name="times" type="Arith.type"/>
<xs:element name="product" type="Arith.type"/>

<xs:element name="max" type="Arith.type"/>
<xs:element name="min" type="Arith.type"/>

<xs:element name="factorial" type="Arith.type"/>
<xs:element name="quotient" type="Arith.type"/>
<xs:element name="divide" type="Arith.type"/>
<xs:element name="rem" type="Arith.type"/>
<xs:element name="gcd" type="Arith.type"/>
<xs:element name="lcm" type="Arith.type"/>

<!-- And the group of everything -->

<xs:group name="Content-arith.class">
<xs:choice>
<xs:element ref="abs"/>
<xs:element ref="conjugate"/>
<xs:element ref="factorial"/>
<xs:element ref="arg"/>
<xs:element ref="real"/>
<xs:element ref="imaginary"/>
<xs:element ref="floor"/>
<xs:element ref="ceiling"/>
<xs:element ref="quotient"/>
<xs:element ref="divide"/>
<xs:element ref="rem"/>
<xs:element ref="minus"/>
<xs:element ref="plus"/>
<xs:element ref="times"/>
<xs:element ref="power"/>
<xs:element ref="root"/>
<xs:element ref="max"/>
<xs:element ref="min"/>
<xs:element ref="gcd"/>
<xs:element ref="lcm"/>
<xs:element ref="sum"/>
<xs:element ref="product"/>
</xs:choice>
</xs:group>

</xs:schema>
<!--
Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
of Technology, Institut National de Recherche en Informatique et en
Automatique, Keio University). All Rights Reserved. See
http://www.w3.org/Consortium/Legal/.
-->
Loading

0 comments on commit f6adda9

Please sign in to comment.