GDoc Predicate Schemas

From Gcube Wiki
Jump to: navigation, search


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://gcube-system.org/namespaces/contentmanagement/contentmanager" xmlns:tns="http://gcube-system.org/namespaces/contentmanagement/contentmanager" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <xs:element name="anytype" type="tns:anyPredicate"/>
 
  <xs:element name="atleast" type="tns:atLeast"/>
 
  <xs:element name="bool" type="tns:bool"/>
 
  <xs:element name="calendar" type="tns:calendar"/>
 
  <xs:element name="date" type="tns:date"/>
 
  <xs:element name="edgePredicate" type="tns:edgePredicate"/>
 
  <xs:element name="leafPredicate" type="tns:leafPredicate"/>
 
  <xs:element name="many" type="tns:many"/>
 
  <xs:element name="num" type="tns:num"/>
 
  <xs:element name="one" type="tns:one"/>
 
  <xs:element name="only" type="tns:only"/>
 
  <xs:element name="opt" type="tns:opt"/>
 
  <xs:element name="rid" type="tns:rid"/>
 
  <xs:element name="t" type="tns:treePredicate"/>
 
  <xs:element name="text" type="tns:text"/>
 
  <xs:complexType name="anyPredicate">
    <xs:sequence/>
  </xs:complexType>
 
  <xs:complexType name="atLeast">
    <xs:complexContent>
      <xs:extension base="tns:edgePredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="edgePredicate" abstract="true">
    <xs:sequence>
      <xs:element name="l" type="xs:QName" minOccurs="0"/>
      <xs:choice>
        <xs:element ref="tns:t"/>
        <xs:element ref="tns:num"/>
        <xs:element ref="tns:bool"/>
        <xs:element ref="tns:text"/>
        <xs:element ref="tns:date"/>
        <xs:element ref="tns:calendar"/>
        <xs:element ref="tns:rid"/>
        <xs:element ref="tns:anytype"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="cond" type="xs:boolean" use="required"/>
  </xs:complexType>
 
  <xs:complexType name="treePredicate">
    <xs:sequence>
      <xs:element name="id" type="tns:leafPredicate" minOccurs="0"/>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="tns:one"/>
        <xs:element ref="tns:many"/>
        <xs:element ref="tns:only"/>
        <xs:element ref="tns:atleast"/>
        <xs:element ref="tns:opt"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
 
  <xs:complexType name="leafPredicate" abstract="true">
    <xs:choice>
      <xs:element ref="any"/>
      <xs:element ref="all"/>
      <xs:element ref="either"/>
      <xs:element ref="not"/>
      <xs:element ref="same"/>
      <xs:element ref="more"/>
      <xs:element ref="less"/>
      <xs:element ref="tns:rid"/>
      <xs:element ref="beforeDate"/>
      <xs:element ref="afterDate"/>
      <xs:element ref="before"/>
      <xs:element ref="after"/>
      <xs:element ref="match"/>
    </xs:choice>
  </xs:complexType>
 
  <xs:complexType name="rid">
    <xs:complexContent>
      <xs:extension base="tns:leafPredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="one">
    <xs:complexContent>
      <xs:extension base="tns:edgePredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="many">
    <xs:complexContent>
      <xs:extension base="tns:edgePredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="only">
    <xs:complexContent>
      <xs:extension base="tns:edgePredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="opt">
    <xs:complexContent>
      <xs:extension base="tns:edgePredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="num">
    <xs:complexContent>
      <xs:extension base="tns:leafPredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="bool">
    <xs:complexContent>
      <xs:extension base="tns:leafPredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="text">
    <xs:complexContent>
      <xs:extension base="tns:leafPredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="date" final="extension restriction">
    <xs:complexContent>
      <xs:extension base="tns:leafPredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="calendar" final="extension restriction">
    <xs:complexContent>
      <xs:extension base="tns:leafPredicate">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="predicates">
    <xs:sequence/>
  </xs:complexType>
</xs:schema>
 
  <xs:element name="after" type="after"/>
 
  <xs:element name="afterDate" type="afterDate"/>
 
  <xs:element name="all" type="all"/>
 
  <xs:element name="any" type="anyValue"/>
 
  <xs:element name="before" type="before"/>
 
  <xs:element name="beforeDate" type="beforeDate"/>
 
  <xs:element name="either" type="either"/>
 
  <xs:element name="less" type="less"/>
 
  <xs:element name="match" type="match"/>
 
  <xs:element name="more" type="more"/>
 
  <xs:element name="not" type="not"/>
 
  <xs:element name="same" type="same"/>
 
  <xs:complexType name="anyValue">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="baseConstraint" abstract="true">
    <xs:sequence/>
  </xs:complexType>
 
  <xs:complexType name="all">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="any"/>
            <xs:element ref="all"/>
            <xs:element ref="either"/>
            <xs:element ref="not"/>
            <xs:element ref="same"/>
            <xs:element ref="more"/>
            <xs:element ref="less"/>
            <xs:element ref="beforeDate"/>
            <xs:element ref="afterDate"/>
            <xs:element ref="before"/>
            <xs:element ref="after"/>
            <xs:element ref="match"/>
          </xs:choice>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="either">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="any"/>
            <xs:element ref="all"/>
            <xs:element ref="either"/>
            <xs:element ref="not"/>
            <xs:element ref="same"/>
            <xs:element ref="more"/>
            <xs:element ref="less"/>
            <xs:element ref="beforeDate"/>
            <xs:element ref="afterDate"/>
            <xs:element ref="before"/>
            <xs:element ref="after"/>
            <xs:element ref="match"/>
          </xs:choice>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="not">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:choice>
          <xs:element ref="any"/>
          <xs:element ref="all"/>
          <xs:element ref="either"/>
          <xs:element ref="not"/>
          <xs:element ref="same"/>
          <xs:element ref="more"/>
          <xs:element ref="less"/>
          <xs:element ref="beforeDate"/>
          <xs:element ref="afterDate"/>
          <xs:element ref="before"/>
          <xs:element ref="after"/>
          <xs:element ref="match"/>
        </xs:choice>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="same">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="as" type="xs:anyType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="more">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="than" type="xs:double"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="less">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="than" type="xs:double"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="beforeDate">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="than" type="xs:dateTime" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="afterDate">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="than" type="xs:dateTime" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="before">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="than" type="xs:dateTime" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="after">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="than" type="xs:dateTime" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="match">
    <xs:complexContent>
      <xs:extension base="baseConstraint">
        <xs:sequence>
          <xs:element name="regex" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>