<?xml version="1.0"?>

<!DOCTYPE tp SYSTEM "http://nb.vse.cz/~svabo/patomat/tp/tp.dtd" [
    <!ENTITY ar "http://www.ontologydesignpatterns.org/cp/owl/agentrole.owl#" >
    <!ENTITY or "http://www.ontologydesignpatterns.org/cp/owl/objectrole.owl#" >
    <!ENTITY ann "http://nb.vse.cz/~svabo/patomat/schemas/annotationschema.owl#" >
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
]>

<tp xmlns="http://nb.vse.cz/~svabo/patomat/tp/tp-schema.xsd">
  <op1>
    <entity_declarations>              
      <placeholder type="Class">?A</placeholder>
      <placeholder type="Class">?B</placeholder>          
      <entity type="Class">&or;Object</entity>
      <entity type="Class">&or;Role</entity>
      <entity type="ObjectProperty">&or;hasRole</entity>
      <entity type="ObjectProperty">&or;isRoleOf</entity>      
      <entity type="Class">&ar;Agent</entity>
    </entity_declarations>
    <axioms>    
      <axiom>?B subClassOf ?A</axiom>      
      <axiom>&or;isRoleOf range &or;Object</axiom>
      <axiom>&or;hasRole domain &or;Object</axiom>
      <axiom>&or;hasRole range &or;Role</axiom>
      <axiom>&or;isRoleOf domain &or;Role</axiom>
      <axiom>&ar;Agent subClassOf &or;Object</axiom>
      <axiom>&ar;Agent disjointWith &or;Role</axiom>      
    </axioms>
  </op1>
  <op2>
    <entity_declarations>
      <placeholder type="Class">?C</placeholder>
      <placeholder type="Class">?D</placeholder>
      <entity type="Class">&or;Object</entity>      
      <placeholder type="ObjectProperty">?p</placeholder>
      <placeholder type="ObjectProperty">?q</placeholder>      
      <entity type="Class">&ar;Agent</entity>
    </entity_declarations>
    <axioms>    
      <axiom>?C subClassOf &ar;Agent</axiom>      
      <axiom>?D subClassOf &owl;Thing</axiom>                        
      <axiom>&ar;Agent subClassOf &or;Object</axiom>      
      <axiom>?q range &or;Object</axiom>
      <axiom>?q domain &owl;Thing</axiom>      
      <axiom>?p range &owl;Thing</axiom> 
      <axiom>?p domain &or;Object</axiom>
    </axioms>
  </op2>
  <pt>    
    <eq op1="?A" op2="?C"/>
    <eq op1="?B" op2="?D" />
    <ntp entity="?p">&ann;hasRole</ntp>
    <ntp entity="?q">&ann;isRoleOf</ntp>
    <eq op1="&or;Object" op2="&or;Object"/>        
    <eq op1="&ar;Agent" op2="&ar;Agent"/>
  </pt>
</tp>