<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE Document [
  <!ENTITY ppl  "http://example.com/people#">
  <!ENTITY cpt  "http://example.com/concepts#">
  <!ENTITY dc   "http://purl.org/dc/terms/">
  <!ENTITY rif  "http://www.w3.org/2007/rif#">
  <!ENTITY func "http://www.w3.org/2007/rif-builtin-function#">
  <!ENTITY pred "http://www.w3.org/2007/rif-builtin-predicate#">
  <!ENTITY xs   "http://www.w3.org/2001/XMLSchema#">
]>

<Document
    xmlns="http://www.w3.org/2007/rif#"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <payload>
     <Group>
      <id>
        <Const type="&rif;iri">http://sample.org</Const>
      </id>
     <meta>
      <Frame>
        <object>
          <Const type="&rif;local">pd</Const>
        </object>
        <slot ordered="yes">
          <Const type="&rif;iri">&dc;publisher</Const>
          <Const type="&rif;iri">http://www.w3.org/</Const>
        </slot>
        <slot ordered="yes">
          <Const type="&rif;iri">&dc;date</Const>
          <Const type="&xs;date">2009-05-20</Const>
        </slot>
      </Frame>
    </meta>
    <sentence>
     <Group>
      <id><Const type="xsd:string">chickenRule</Const></id>
      <sentence>
       <Forall>
        <declare><Var>chicken</Var></declare>
        <declare><Var>potato</Var></declare>
        <declare><Var>weight</Var></declare>
        <pattern>
         <And>
          <formula>
           <Member>
            <instance><Var>chicken</Var></instance>
             <class><Const type="rif:iri">http://example.com/2008/joe#chicken.Chicken</Const></class>
           </Member>
          </formula>        
          <formula>
           <Exists>
            <declare><Var>age</Var></declare>        
            <formula>
             <And>
              <formula>
               <Frame>
                <object><Var>chicken</Var></object>
                <slot ordered="yes"> 
                  <Const type="rif:iri">age</Const>
                  <Var>age</Var>
                </slot>
               </Frame>
              </formula>
              <formula>
               <External>
                <content>
                 <Atom>    
                  <op><Const type="rif:iri">&pred;numeric-greater-than</Const></op>
                  <args ordered="yes">
                   <Var>age</Var>
                   <Const type="xsd:decimal">8</Const>
                  </args>
                 </Atom>
                </content>
               </External>
              </formula>  
             </And>
            </formula>
           </Exists>
          </formula>
          <formula>
             <Atom>
              <op>
               <Const type="rif:iri">http://example.com/2008/joe#owns</Const>
              </op>
              <args ordered="yes">
               <Var>chicken</Var>
               <Var>potato</Var>
              </args>
             </Atom>
            </formula> 
            <formula>
             <Exists>
              <declare><Var>weight</Var></declare>
              <formula>
               <And>
                <formula>
		         <Member>
                  <instance><Var>potato</Var></instance>
                  <class><Const type="rif:iri">http://example.com/2008/joe#Potato</Const></class>
		         </Member>
                </formula>					
                <formula>
                 <Frame>
                  <object><Var>potato</Var></object>
                  <slot ordered="yes"> 
                   <Const type="rif:iri">weight</Const>
                   <Var>weight</Var>
                  </slot>
                 </Frame>
                </formula>
                <formula>
                 <External>
                  <content>
                   <Atom>    
                    <op><Const type="rif:iri">&pred;numeric-greater-than</Const></op>
                    <args ordered="yes">
                     <Var>weight</Var>
                     <External>
                      <content>
                       <Expr>
                        <op><Const type="rif:iri">&pred;numeric-divide</Const></op>
                        <args ordered="yes">
                         <Var>age</Var>
                         <Const type="xsd:decimal">2</Const>
                        </args> 
                       </Expr>
                      </content>
                     </External>    
                    </args>
                   </Atom>
                  </content>
                 </External>
                </formula> 
               </And>
              </formula>
             </Exists>
            </formula> 
         </And>
        </pattern>
        <formula>
         <Implies>
          <if>
           <And>
            <formula>
             <External>
              <content>
               <Atom>
                <op><Const type="rif:iri">&pred;RifUtil.string_not_equals</Const></op>
                <args ordered="yes">
                 <Const type="xsd:string">Tuesday</Const>
                 <External>
                  <content>
                   <Expr>
                    <op><Const type="rif:iri">&func;RifUtil.today</Const></op>
                   </Expr>
                  </content>
                 </External>    
                </args>
               </Atom>
              </content>
             </External>
            </formula>
            <formula>
             <INeg>
              <formula>
               <External>
                <content>
                 <Atom>
                  <op><Const type="rif:iri">&func;foxAlarm</Const></op>
                 </Atom>
                </content>
               </External>
              </formula>  
             </INeg>
            </formula>
           </And>
          </if>
          <then>
            <Do>
           	 <actionVar ordered="yes">
              <Var>allowance</Var>
               <Frame> 
                <object><Var>chicken</Var></object>
                <slot ordered="yes"> 
                 <Const type="rif:iri">allowance</Const>
                 <Var>allowance</Var>
                 </slot>
               </Frame>
             </actionVar>
             <actions ordered="yes">
              <Execute>
               <target>
                <Atom>
                 <op><Const type="rif:iri">&pred;mash</Const></op>
                 <args ordered="yes">
                  <Var>potato</Var>
                 </args>
                </Atom>
               </target> 
              </Execute>
              <Retract>
               <target>
                <Var>potato</Var>
               </target> 
              </Retract>
              <Retract>
               <target>
                <Atom>
                 <op><Const type="rif:iri">&pred;owns</Const></op>
                 <args ordered="yes">
                  <Var>chicken</Var>
                  <Var>potato</Var>
                 </args>
                </Atom>
               </target>
              </Retract>
              <Retract>
               <target>
                <Frame>      
                 <object> <Var>chicken</Var></object>
                 <slot ordered="yes"> 
                  <Const type="rif:iri">allowance</Const>
                  <Var>allowance</Var>
                 </slot>
                </Frame>
               </target> 
              </Retract>
             </actions>
            </Do>
           </then>
          </Implies>
         </formula>                    
        </Forall>
       </sentence>
      </Group>
     </sentence>  
    </Group>
   </payload>   
</Document>                  